چکیده:
در مدل سازی شیئ گرای نرم افزار با استفاده از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) یک دیاگرام کلاس همراه با رابطههای تناظر یکطرفته و دو طرفه، تجمع و تعمیم میباشد.