دسته بندی | فنی و مهندسی |
فرمت فایل | doc |
حجم فایل | 28 کیلو بایت |
تعداد صفحات فایل | 40 |
مقاله بررسی UML و کاربرد آن در 40 صفحه ورد قابل ویرایش
فهرست
چکیده
مقدمه
دیاگرام uml
دیاگرامهای کلاس
تعریف
عناصرهای دیاگرام کلاس
دیاگرامهای توالی
عناصر دیاگرامهای توالی
گراف کلاس
نمایش دیاگرام کلاس به گراف کلاس و قبود چندتایی
قبود چندتایی
قید کلی
قید عدم وجود
نمایش دیاگرامهای توالی توسط گرامرهای گرافگونه
پیامهای بین دو شیء موجود:
پیامهایی که یک شیء جدید را ایجاد میکنند:
پیامهای که باعث از بین رفتن یک شیء میگردند
آنالیز سازگاری بین ندیاگرامهای کلاس و توالی
چک وجود
چک آشکاری
چک چندتایی
الگوریتمهای چک سازگاری
چک وجود و چک آشکاری
الگروریتم چک چندتایی
چک قانون با قیود کلی
چک قوانین با قیود عدم وجود
چکیده
مقدمه
بررسی معیار کامل بود و سازگاری
دیاگرامهای حالت UML
آنالیز ایستا
حالتها و انتقالها
گاردها
انتقالهای ترکیبی
آنالیز دسترسی
تبدیل گراف
قوانین
قانون در روش Double Pushowt
قوانین در روش Single Pushout
قانون معکوس
کاربرد قانون
کاربرد شرایط
گرامر گراف گونه
مقدمه ای بر مفاهیم گرافهای نوع ویژگی
گرافها
مورفیزم
چکیده:
در مدلسازی شیئگرای نرم افزار با استفاده ازUML چهرههایی مختلف یک سیستم با استفاده از دیاگرامهای مختلف نمایش داده میشوند. ساختار پایدار سیستم از طریق دیاگرامهای کلاس واکنش بین قطعات مختلف مدل از طریق دیاگرامهای کنش مثل دیاگرامهای توالی و دیاگرانمهای همکاری نمایش داده میشود. بنابراین یک مدل کامل شامل چندین دیاگرام از انواع مختلف میباشد. بنابراین سازگاری بین دیاگرامهای مختلف از اهمیت بسیاری برخوردار است.
در این مقاله آنالیز سازگاری بین دیاگرامهای گلاس و توالی با استفاده از گرافهای نوع ویژگی و تبدیلات آنها شرح داده شده است. اگر بخواهیم به طور صریح بگوییم دیاگرامهای کلاس به گرافهای نوع ویژگی که به آنها گرافهای کلاس میگوییم تبدیل میگردند.همچنین چندتاییها به قیودی تبدیل میگردند که به آنها قیود چندتایی میگوییم. دیاگرامهای توالی توسط یک گرامر گرافگونه نمایش داده میشوند که به آنها گرامرهای گرافگونه کنش میگویم.
آنالیز سازگاری شامل موارد “ وجودی” ، “ آشکاری” و “ چند تایی” میگردد برای آنالیز سازگاری از تکنیکهای جبری موجود، برای گرامرهای گرافگونه استفاده شده است.
1ـ ممقدمه
برای ایجاد یک سیستم جدید واعمال تغییرات در یک سیستم موجود در ابتدا باید کارکرد آن سیستم تعیین گردد. درحقیقت ساختار ایستا و پویای سیستم باید کاملاً مشخص و مدلسازی گردد. بنابراین واجب است، عناصری برای نمایش ساختار داخلی، رفتار سیستم و کنش بین قطعات مختلف آن در نظر گرفته شوند. در صورتی که از یک متد شیئگرا استفاده کنیم، در آنصورت UML برای نمایش و مدلسازی سیستم و قطعات آن انتخاب مناسبی است. UML چند نوع مختلف دیاگرام را که هر کدام سیستم را از زاویهای خاص نمایش میدهند،. تعریف میکند. هر دیاگرام یا ساختار ایستای سیستم، یا رفتار داخلی آن و یا کنش بین قطعات مختلف را نمایش میدهد. بنابراین مدل کامل سیستم شامل چندین دیاگرام از انواع مختلف میباشد. علاوه براینکه دیاگرامها از نظر املایی باید درست باشد و همچنین هر یک به تنهای سازگار باشند، دیاگرامهایی که از یک نوع نیستند، نیز باید با هم سازگار باشند. برای آنالیز سازگاری دیاگرامهای کلاس و توالی از گرافهای نوع ویژگی و تبدیلات آنها استفاده شده است.
برای درک بهتر راه حل ارائه شده در بخش بعد، ابتدا دیاگرامهای کلاس و توالی و ویژگیهایی که باید بررسی گردند، مورد مطالعه قرار می گیرند.
دیاگرامهای UML
UML یک زبان مدلسازی یکپارچه می باشد ،که برای مدلسازی انواع سیستم های نرم افزاری مبتنی بر متدولوژی شیئی گرا در نظر گرفته شده است . این زبان برای تشریح ، نمایش ،ساخت و X مستند سازی سیستم های نرم افزاری مورد استفاده قرار می گیرد. نسخه1-1 UML در نوامبر 1997 توسطOMG مورد قبول واقع شده است و نسخه 3-1 آن از مارس 1999در دسترس میباشد. به خاطر استفاده فراوان این زبان در صنعت و تحقیقات این زبان بصورت استاندارد در آمده است.
1-2- دیاگرامهای کلاس
1-1-2- تعریف
دیاگرامهای کلاس ساختار ایستای سیستم را نمایش میدهند، یعنی عناصر موجود در سیستم، ساختار داخلی آنها و ارتباط آنها با سایر عناصر سیستم را مشخص می کنند. عناصر سیستم بصورت کلاس در دیاگرام کلاس نمایش داده میشوند.
چند نوع مارتباط ایستا بین کلاسها وجود دارد یعنی تناظر، مجتمع، ترکیب، وابستگی و تعمیم .
مفهوم بستهها در UML یک مکانیزم درختی برای گروهبندی کلاسها، به دست میدهد. ساختار داخلی کلاسها با لیستهایی از متدها و ویژگیها نمایش داده میشود. جزئیات بیشتر عناصر مدل در بخش بعد تشریح شده اند. وابسته به سطح مجرد سازی و پیچیدگی سیستم ، عناصر کمتر و یا بیشتری مورد بررسی قرار می گیرند.
2-1-2 عناصر دیاگرامهای کلاس
یک کلاس یک شرح برای مجموعة اشیائی است ،که دارای یک ساختار ، رفتار ، ارتباطها و معنی می باشند. هر کلاس دارای یک نام می باشد و می تواند متعلق به یک بسته باشد.
اشیائی که از یک کلاس هستند دارای یک لیست ویژگیها و یک لیست متدهای یکسان میباشند،اماL1 مقادیر ویژگیها ممکن است متفاوت باشند. یک دیاگرام کلاس میتواند دارای اشیایی باشد، که نمونههایی از کلاسها میباشند. شکل معمول تعریف یک ویژگی بصورت زیر میباشد.
Visibility name : type ?? expression
نوع ویژگی (type- expression) توسط UML تعریف نمیشود و این مقدار وابسته به زبان میباشد در حقیقت نوع متغیر، برای زبانی است، که در نهایت کلاس مورد نظر در آن ایجاد و پیادهسازی خواهد شد. ممکن است کلاسهای موجود در دیاگرام کلاس به عنوان نوع متغیر برای ویژگیها مورد استفاده قرار گیرند. این زمانی است که یک ویژگی یک مرجع برای یک شیء از آن کلاس نگهداری میکند. آشکاری ویژگیها شامل یکی از موارد protecded(#) , public(+) و prirate(-) میباشد. ویژگیهای عمونی (public) برای سایر کلاسها قابل دسترس هستند،ویژگیهای محافظت شده تنها برای اشیاء همان کلاس و یا زیرکلاسهای آن قابل دسترس میباشند و ویژگیهای خصوصی(( prirate تنها برای خود شیء قابل دسترس میباشند. سایر جزئیات مثل مقادیر اولیه، چند تایی و رشتههای مربوط به ویژگی ها ، همگی اختیاری هستند.
یک متد در UMLتوسط یک رشته که به شکل زیر میباشد تعریف میگردد.
Visitility name (parameter
Visibility name (parameter – list): return-type-expression
لیست پارامترهای هر متد شامل یکسری پارامتر میباشد که همگی دارای فرمتی به شکل زیر هستند.
Name: type-expression
آشکاری متدها همانند ویژگیها مورد بررسی قرار میگیرد. متدی که یک عملیات را محقق میسازد دارای همان خصوصیات عملیات میباشد و البته دارای یک بدنه پیادهسازی میباشد که عملیات را پیادهسازی میکند.
کلاسها بصورت درختی توسط بستهها ؟؟سازماندهی میگردند.
هر کلاس حداکثر به یک بسته تعلق دارد و بسته به نوع آشکاری آن قابل دستیابی از طرف سایر بستهها میباشد.
ساختاری بین کلاسها از طریق روابط تناظر و تعمیم نشان داده میشود. یک کمان بیانگر ارتباط ساختاری یک شیء از کلاس مبدأ با یک شیء از کلاس مقصد میباشد. یک رابطه تناظر دو طرفه که بصورت یک خط نشان میدهد. این ارتباط ساختاری به ایت معنی است که شیء مبدأ به راحتی به شیء مقصد دسترسی پیدا میکند دلیل این امر آن است که شیء مبدأ یک مرجع به شیء مقصد را در خود نگهداری میکند. رابط تناظر معمولاً بایزی میباشند اما میتوان روابط تناظر چندگانه را نیز داست. روابط چندگانه در این مقاله بررسی نمیگردند.
از طرفی بصورت تئوری امکان وجود چند رابطه تناظر بین دو کلاس وجود دارد. اما در برخی موارد این مسأله تمکن است نیک دیاگرام ناسازگار ختم گردد.
روابط تجمع و ترکیت انواع خاصی از ناظر هستند که رابطه "بخشی از" را نمایش میدهند. باری نمایش این روابط انتقال خط واصل بین د رکلاس یک لوزی قرار داده نمیشود که در رابطه ترکیب این لوزی توپر و در رابطه تجمع این لوزی تو خالی میباشد. رابطه تجمع به طور کلی رابطه کل و جزء را نمایش میدهد.
یک رابطه ترکیب یک رابطه قویتر نسبت به تجمع میباشد و به این معنی است، که جزء در نظر گرفته برای ترکیب تنها برای ترکیب میباشد و نمیتواند جزء شیء دیگری باشد. این بدان معنی است، که تمام اجزای یک ترکیب هنگام از بین رفتن ترکیب از بین میروند.
یک رابطه تعمیم بین دوکلاس برای نمایش ارث بری کلاس فرزند از کلاس پدر میباشد. تمام ویژگیها و عملیات کلاس پدر به کلاس فرزند به ارث میرسد. از طرفی کلاس فرزند ، خود می تواند عملیات و ویژگیهای خود را داشته باشد. رابطه تعمیم امکان جایگزینی را محقق میسازد. یعنی در جایی که یک نمونه از کلاس پدر مورد نیاز است، میتواند یک نمونه از کلاس فرزند مورد استفاده قرار بگیرد. اما عکس این عمل ممکن نیست، یعنی یک نمونه از کلاس پدر نمیتواند جایگزین یک نمونه از کلاس فرزند گردد. در روابط تعمیم حلقه ممکن نیست این در حالی است، که حلقه برای روابط تناظر مجاز میباشد.
uml امکان ارثبری یگانه و چند گانه را ممکن ساخته است. در طول این مقاله تنها ارثبری یگانه مورد بررسی قرار میگیرد، اما ارثبری چندگانه مشکلی برای چک سازگاری نیست.
uml رابطه تناظر را همراه با دو انتهای آن در نظر میگیرد. بنابراین امکان اضافه کردن ویژگیهای مربوط به دو انتهای یک رابطه تناظر در نظر گرفته شده است.
با افزودن یک Rolename به یک سمت رابطه، اشیاء کلاس آن سمت یک نام بدست میآورند، که توسط اشیاء کلاس سمت دیگر مورد استفاده قرار میگیرد.
چندتایی درنظر گرفته شده برای هر ارتباط تعداد اشیائی را که توسط آن رابطه با شیء مورد نظر در ارتباط هستند، تعیین میکند.
چندتایی یک بازه از اعداد غیر منفی است که بصورت (حد بالا…حد پایین) میباشد. حد پایین صفر به این معنی است که شیء نیازی به یک مرجع ندارد. از طرف دیگر حد پایین 1 وجود شیء متناظر را قطعی میکند، یعنی حداقل یک مرجع برای شیء متناظر باید وجود داشته باشد. جدول(x) مقادیر ممکن باری بازة چندتایی را نمایش میدهد.
ممکن است دیاگرام کلاس با توجه به چند تایی ها منجر به یک دیاگرام شیء تهی گردد و یا ناسازگاری بوجود آید. آشکاری یک رابطه تناظر میتواند محدود گردد. این کار با استفاده از کلمات کلیدی protected (#) , Public (+) و یا private (-) صورت میگیرد. این کلمات کلیدی دسترسی و استفاده از rolename ها را محدود میسازند. مفهوم این کلمات کلیدی همانند آن چیزی است، که برای ویژگیها گفته شده است . شکل(X) یک دیاگرام کلاس همراه با رابطههای تناظر یکطرفته و دو طرفه، تجمع و تعمیم میباشد.
4-4 الگوریتمهای چک سازگاری
ایده اصلی در این الگوریتمها به این شکل است، که تمام گرافهای ایجاد شده توسط گرامر گرافگونه باید در قیود چندتایی صدق کنند و با گراف کلاس سازگار باشند. الگوریتم اصلی قوانین مطرح شده در شرط کنترلی را یکی یکی در نظر گرفته و الگوریتمهای مربوط به چک وجود، چک آشکاری و چک چندتایی را اجرا میکند.
دراینجا دو الگوریتم ارائه شده است الگوریتم اول مربوط به چک وجود و آشکاری میباشد وم الگوریتم دوم برای چک چندتایی در نظر گرفته شده است
پس از اینکه هر دو الگوریتم برای یک قانون اجرا شدند، آن قانون روی گراف فعلی اجرا میگردد. گراف فعلی برای اولین قانون همان گراف شروع میباشد.
در صورتی که الگوریتم چک وجود و آشکاری با خطا و مواجه شود، در آنصورت آن قانون برروی گراف فعلی قابل اجرا نمیباشد.
الگوریتم با گراف شروع، آغاز میگردد. دراین مرحله وجود نقشها و کلاسها به همراه ارتباط آنها و چندتایی ها مورد بررسی قرار میگیرند. به دلیل اینکه ما از دیاگرامهای کامل استفاده میکنیم، بنابراین گراف شرومع خالی و یا دارای ندهای مستقل میباشد.
ندهای مستقل ندهای هستند که هیچ ومابستگی چندتایی به یکدیگر نداترند.الگوریتم 5-4-1 چک وجود و چک آشکاری
این الگوریتم یک قانون از گرامرگراف گونه و گراف کلاس را مورد استفاده قرارمیدهد. قوانین درگرامرگرافگونه بصورت L ® R نمایش داده می شوند، که L وR هر دو گراف هستند. این الگوریتم بر اساس وجود مورفیزمهایی بین گرافهای LوR و گراف کلاس (CG) می باشد.در حقیقت باید مومرفیزمهایCG , R®CG ® L وجود داشته باشند و البته این مورفیزمها باید کامل باشند.
قسمت اصلی این الگوریتم بر اساس جزئیات ویژگیهای موجود درمورفیزم میباشد. نوع ویژگیها ، نام کلاسها، نقشها و مجموعههای ویژگیها وعملیات بصورت صریح تعریف شده اند و در مورفیزم مورد استفاده قرار میگیرند. تنها مشکلی که در این بخش موجود دارد، چک آشکاری است. چک وجود از طریق مورفیزم به راحتی قابل دستیابی است، ولی چک آشکاری با توجه به وجود بستهها ، نقشها، ویژگیها و عملیات بصورت فرمال امکان پذیر نیست و در این مقاله ارائه نشده است . شکل (1-5) یک چک وجود ناموفق را نشان میدهد. در این شکل قسمت سمت راست قانون( R ) با گراف کلاس دارای مورفیزم نیست .
5-4-2 الگروریتم چک چندتایی
این الگوریتم از یک قانون، مجموعه قیود چندتایی و گراف فعلی استفاده میکند. این الگوریتم از دو الگوریتم که وابسته به نوع قید چندتایی میباشند، استفاده میکند. هر قانون باید با تمامی قیود چندتایی چک شود.
- چک قانون با قیود کلی
این الگوریتم یک قانون بصورت L®R و یک قید کلی بصورت P®C را گرفته و حد پایین یک چندتایی را بررسی میکند. برای چک حد پایین، باید تمام تداخل های مناسب بین R و P بدست آیند.یک تداخل مناسب گفته میشود، اگر ندهای ایجاد شدة جدید در R با بخشی ازP تداخل داشته باشند و یا اگر قانون بخشی را حذف میکند، آن بخش مورد نیاز C باشد. به این ترتیب یک مجموعه از تداخلها ایجاد میگردد. هرتداخل O باید با قانون p®C گسترش یابد. به این ترتیب یک مجموعه ازگسترشهایی به نام H بدست میآید. اگر بتنوان قانون را بصورت معکوس بر یکی از این گسترشها اعمال کرد. بدون اینکه شرایط را زیر پا گذاشت، درآنصورت سازگاری اثبات میگردد.
شکل (2-5) یک چک ناموفق برای حد پایین چندتایی را نشان میدهد. در این مثال حد پایین مورد بررسی این است، که کلاس B حداقل با یک کلاس C در ارتباط میباشد.O تنها تداخل ممکن میباشد و عکس قانون برای گسترش H قابل اعمال نیست، به این ترتیب ناسازگاری با قیود کلی چندتایی مورد بررسی قرار میگیرد.
- چک قوانین با قیود عدم وجود
این الگوریتم یک قانون به شکل R L ® و قید عدم وجود N را گرفته و حد بالای یک چندتایی را چک میکند. در این الگوریتم هم، تمام تداخلهای مناسب قسمت سمت راست قانون (R) و قید عدم وجود (N) بدست می آیند. یک تداخل مناسب است اگر قسمتهای جدید ایجاد شده در R با قید عدم وجود تداخل داشته و از طرفی امکان اعمال قانون بصورت معگوس بر روی آن ومجود داشته باشد.
نتیجه اعمال این الگوریتم بدست آمدن چندین قید کاربردی منفی میباشد. یک ناسازگاری زمانی حاصل می گردد، که نتوان قانون را با توجه به قیود بدست آمده بر روی گراف فعلی اعمال کرد. این زمانی رخ میدهد، که یک مورفیزم از قید کاربردی منفی به گراف فعلی وجود داشته باشد. شکل (3-5) یک چک ناموفق برای حد بالای یک چندتایی را نشان میدهد. استفاده از قانون با قید کاربردی منفی به همراه گراف فعلی S” امکان پذیر نیست. زیرا مومرفیزم بین َL و S” وجود دارد.