چکیده: در مدل سازی شیئ گرای نرم افزار با استفاده از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) یک دیاگرام کلاس همراه با رابطههای تناظر یکطرفته و دو طرفه، تجمع و تعمیم میباشد.
2-2 دیاگرامهای توالی برای نمایش تعامل بین چندین شیء، دو نوع دیاگرام توسط uml ارائه شده است دیاگرام توالی و دیاگرام همکاری.
دیاگرام توالی برروی زمانبندی و توالی انجام فعالیتها تأکید دارد.
این دیاگرام تناظر بین اشیائی را نشان نمیدهد.
بنابراین ارتباط بین فرستنده و گیرنده پیام به طور صریح بیان نمیگردد.
یک نمودار توالی دارای دو بعد میباشد: بعد عمودی، زمان را نشان میدهد و بعدر افقی اشیاء مختلف را نشان میدهد.
به طور نرمال زمان به سمت پایین افزایش مییابد.
تعامل بین اشیاء از طریق فرستنده وگیرنده یک پیام، مشخص میگردد.
پیامهایی که اشیاء را ایجاد میکنند و یا از بین میبرند، نقش مهمی در چک سازگاری مدلها دارند.
از آنجایی که دیاگرامهای همکاری بدون از دست دادن اطلاعات قابل تبدیل به دیاگرامهای توالی هستند، بنابراین بررسی سازگاری بر روی دیاگرامهای توالی صورت میگیرد.
2-2-2 عناصر دیاگرام توالی اشیائی که در دیاگرام توالی شرکت میکنند، شبیه کلاسهای دیاگرام کلاس نمایش داده میشوند، زیرا آنها نمونه هایی از کلاسها میباشند.
بصورت معمول، هر شیء در دیاگرام توالی به فرمتobjoutname/rolename : classname نمایش داده میشود.
اگر تنها یک role برای اشیاء یک کلاس متصور باشد در آنصورت rolename میتواند حذف گردد.
اما نام نقش به کار رفته باید با نقش به کار رفته برای این تعامل هماهنگی داشته باشد.
در اسناد UML آورده شده است که نام شیء ، نام نقش و نام کلاس قابل حذف شدن میباشند، اما برای بررسی سازگاری دیاگرامها نیاز است که حداقل نام کلاس در دیاگرام توالی وجود داشته باشد.
خط زندگی وجود یک شیء را نمایش میدهد.
اگر یک شیء را طول زمان در دیاگرام توالی ایجاد گردد خط زندگی آن شیء از آن نقطه زمانی شروع می شود و در صورتی که یک شیء از بین برود خط زندگی آن شیء پایان یافته و علامت(x) در انتهای آن قرار میگیرد.
تعامل بین اشیاء از طریق پیامها محقق میگردد.
یک پیام دارای یک فرستنده و یک گیرنده میباشد و دارای یک برچسب میباشد، که عملیاتی را که باید انجام شود، مشخص میکند.
عملیات درخواست شده توسط یک پیام، باید درگیرنده موجود باشد، یعنی در لیست عملیات کلاس گیرنده باشد و یا به ارث رسیده باشد، از طرفی برای فرستنده پیام آشکار باشد.
همچنین یک رابطه بین فرستنده و گیرنده باید وجود داشته باشد.
جهت این رابط باید از فرستنده به گیرنده باشد.
یک پیام بصورت یک کمان که از خط زندگی فرستنده شروع میشود و به خط زندگی گیرنده ختم میگردد، نمایش داده میشود.
بر چسب پیام معمولاً بصورت زیر میباشد.
Return-value:=message-name(argument-list) برای مقادیر بازگشتی میتوان از متغیرها استفاده کرد.
سه نوع مختلف از پیام وجود دارد: 1- پیامهای بین دو شیء موجود: که با کمانی از خط زندگی شیء فرستنده به خط زندگی شیء گیرنده نشان داده میشوند.
2- پیام ایجاد یک شیء: این پیامها به صورت یک کمان از خط زندگی فرستنده به ابتدای خط زندگی شییء که ایجاد میگردد نشان داده میشوند.
3- پیامهایی که یک شیء را از بین میبرند: این پیامها به صورت یک کمان از فرستنده به انتهای خط زندگی گیرنده که با علامت(x) مشخص شده است، نمایش داده میشوند.
شکل (2-2) دیاگرام توالی کلاس مربوط به دیاگرام کلاس شکل (1-2) را نشان میدهد.
هر سه نوع پیام در این شکل نمایش داده شدهاند.
4ـ نمایش دیاگرامهای کلاس و توالی با استفاده از گرافهای نوع ویژگی و گرامرهای گراف گونه برای بررسی سازگاری دیاگرامهای کلاس و توالی درUML، در ابتدا این دیاگرامها به به گرافهای نوع ویژگی و گرامرهای گراف گونه تبدیل میگردند.
برای تبدیل دیاگرامها تنها دیاگرامهایی که از نظر املایی درست هسنتد، در نظر گرفته شدهاند.
1ـ4 نمایش دیاگرام کلاس به شکل گراف کلاس و قیود چندتایی اجزاء یک دیاگرام کلاس مثل ویژگیهای کلاس و عملیات آن بصورت یک گراف کلاس نمایش داده میشوند.
چندتایی در روابط تناظر بصورت قیود چندتایی نمایش داده میشود.
این قیود یا بصورت قیود منفی هستند و یا بصورت قیود عمومی ، که بعداً شرح داده خواهند شد.
1-1-4 گراف کلاس یک