چکیده: در مدل سازی شیئ گرای نرم افزار با استفاده از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 گراف کلاس یک گراف کلاس ،بسته ها ، کلاسها و روابط بین آنها را نمایش می دهد.
هر کلاس به یک نُد از نوع کلاس تبدیل می گردد.
نام کلاس در ویژگی name ذخیره می گردد.
نام بسته ها همراه با نام کلاسها به کار می روند شکل نمایش نام کلاسها به همراه نام بستهها معمولاً بصورت زیر میباشد.
Packaye:: subpackage::class name ویژگیها و عملیات کلاسها بصورت دو مجموعه از چندتاییهای مرتب نمایش داده میشوند.
این مجموعهها جزء ویژگیهای یک ند به حساب میآیند و با نامهای operations , attribntes شناخته میشوند.
لیست پارامترهای یک عملیات خود بصورت یک چندتایی نمایش داده میشود که شامل نام پارامتر و نوع آن میباشد.
شکل (1-4) یک کلاس در UML و متناظر آن بصورت گراف را نمایش میدهد.
شکل 1-4 همانطور که در شکل دیده میشود لیست ویژگیها شامل سه تایی های مرتب میباشد که خود شامل آشکاری، نام و نوع ویژگیهای کلاس میباشند.
روابط تناظر، تجمع و ترکیب که جهت دار میباشند، بصورت یک کمان از ند کلاس مبدأ به ند کلاس مقصد نشان داده میشوند.
سایر ویژگیهای یک رابطه: مثل نام رولهای مبدأ و مقصد و آشکاری آنها می توانند بصورت ویژگیهایی برای یک یال گراف کلاس تعریف شوند.
همچنین نوع رابطه (تناظر، تجمع و ترکیب) نیز میتواند بصورت یک ویژگی برای یک یال در نظر گرفته شود، ولی این ویژگی برای بررسی سازگاری دیاگرامها به کار نمیآید.
روابط دو طرفه در دیاگرام کلاس تبدیل به دو یال یا جهتهای مختلف میشوند، که در گراف کلاس ظاهر میگردند.
همانطورکه قبلاً گفته شد، تنها روابط دودویی در این مقاله مورد بررسی قرار میگیرند .
شکل (2-4) یک مثال از تبدیل دیاگرام کلاس به گراف کلاس را نمایش میدهد.
در این شکل یک رابطه یک طرفه و یک رابطه دو طرفه، همراه با ویژگیهای روابط نشان داده شده است.
رابطه تعمیم توسط یک نوع دیگری از یال نمایش داده میشود.
تفاوت بین یالها درگراف کلاس از طریق ویژگی آنها مشخص میگردد.
به عنوان مثال، نوع یال برای روابط تناظر، تجمع و ترکیب برابرassociation type و باری رابطه تعمین برابر generalization type میباشد.
یال مورد نظر برای رابطه تعمیم بصورت یک کمان از ند مربوط به کلاس فرزند به ند مربوط به کلاس مقصد نشان داده میشود.
خاصیت جایگزینی برای رابطه تعمیم وجود دارد، یعنی در جایی که نیاز به کلاس پدر وجود داشته باشد میتوان از کلاس فرزند استفاده کرد.
بنابراین تمام روابط تناظر موجود برای پدر به فرزند به ارث میرسد.
از طرفی تمام ویژگیها و عملیات کلاس پدر به کلاس فرزند به ارث میرسد.
بنابراین مقادیر موجود در ویژگیهای operations , attribates از ند مربوط به کلاس پدربه مقادیر موجود در این ویژگیها در ند مربوط به کلاس فرزند افزوده میگردد.
در صورتی که تشابه اسمی وجود داشته باشد ویژگیها و عملیاتی که تشابه اسمی دارند افزوده نمیگردند.
قیود چندتایی چندتایی های مربوط به روابط تناظر تبدیل به قیود چندتایی میگردند.
برای این منظور از قیود گرافیکی وقیود کاربردی استفاده میگردد.
همانطور که از بخشهای قبل میدانیم، یک چندتایی به شکل n…m ( ) این معنی است که تعداد مراجع حداقل به تعداد n میباشند و حداکثر برابرm میباشند.
در این قسمت چندتایی n...m را بصورت دو قانون مجزا نمایش میدهیم .
قید کلی حد پایین n بصورت یک قید کلی بیان میگردد، یعنی این قانون حالتی را که همیشه وجود دارد را نشان میدهد.
این شامل دوگراف به نامهای p و c میگردد.
گراف p شامل ند مربوط به کلاس مبدأ میگردد.
گراف c شامل همان ند به همراه ندهایی از کلاس مقصد میگردد، که تعداد آنها برابر n میباشد.
در گراف c از ند مبدأ به هر یک از ندهای مربوط به ند مقصد یک یال درنظر گرفته میشود، که منتاظر با رابطه مورد نظر در دیاگرام کلاس میباشد.
تمام ویژگیهای مربوط به این رابطه، بصورت ویژگیهای این یال در نظر گرفته می شوند.
ویژگیهای operations , attributes بصورت کامل برای ندهای مقصد در نظر گرفته میشوند.
به این ترتیب قید کلی برای یک چندتایی حاصل میگردد.
برای حد پایین صفر چنین قیدی ایجاد نمیگردد.
زیرا بی معنی میباشد.
قید عدم وجود حد بالای یک چندتایی از طریق یک قید منفی، یعنی حالتی که نباید رخ دهد کنترل میگردد.
این ساختار یک مرجع بیشتر از حد بالای ؟؟
در برمیگیرد.
این قید توسط یک گراف به نام N نمایش داده میشود.
این گراف شامل یک ند به ازای مبدأ رابطه و m+1 ند به ازای شیء مقصد میباشد.
به هر شیء مقصد، یک یال از شیء مبدأ متصل می شود که میتواند تمام ویژگیهای مربوط به یک رابطه تناظر ار داشته باشد.
حد بالای (*) به صورت یک قید عدم وجود نمایش داده نمی شود.
شکل (6-4) یک نمونه از رابطه تناظر و قید عدم وجود برای حد بالای آنرا نمایش میدهد.
2-4 نمایش دیاگرامهای توالی توسط گرامرهای گرافگونه یک دیاگرام توالی توسط یک گرامر گرافگونه نمایش داده میشود.
یک گرامر گرافگونه شامل یک گراف شروع، یک مجموعه محدود از قوانین و یک شرط کنترل میباشد، که توالی کاربرد قوانین را نشان میدهد.
گراف شروع شامل تمامی اشیائی میگردد، که قبل از ارسال اولین پیام در دیاگرام توالی وجود دارند.
ویژگیهای operations , attributes برای هر ند شامل تمام ویژگیها و عملیات یک کلاس میباشند.
هر قانون در گرامر گراف گونه مختص یک پیام در دیاگرام توالی میباشد.
در بخش 2ـ2ـ2 دیدیدم که سه نوع مختلف از پیام وجود دارد.
قوانین گرامری مربوط به این سه نوع پیام دراین بخش توضیح داده شدهاند.
قوانین مطرح شده دراین بخش بصوت میباشند که G 1 و G2 هر دو گراف میباشند.
پیامهای بین دو شیء موجود: قسمت سمت چپ این قانون شامل یک ند به ازای هر شیء می باشد.
یک کمان از فرستنده به گیرنده پیام نیز وجود دارد.
قسمت سمت راست شامل همان ندها و کمان میگردد، با این تفاوت که ویژگی operations در ند گیرنده شامل تمام عملیات قبلی بعلاوه چند تایی مربوط به عملیات فراخوانی شده توسط پیام میباشد.
همچنین ویژگی attributes در فرستنده پیام شامل مقادیر قبلی بعلاوه چند تایی مربوط به مقدار برگشتی و پارامترهای عملیات فراخوانی شده میباتشد.
شکل 7-4 یک نمونه پیام ارسال شده بین دو شیء موجود و قانون گرامری مربوط به آن را نمایش می دهد.
پیامهایی که یک شیء جدید را ایجاد میکنند: قسمت سمت چپ این قانون تنها شامل یک ند برای فرستنده پیام میگردد.
قسمت سمت راست شامل ند فرستنده و ند گیرنده پیام میباشد.
پیام ارسال شده بصورت یک کمان از فرستنده به گیرنده نمایش داده میشود.
ویژگی operations برای شیء گیرنده ( که جدیداً ایجاد تشده است ) شامل تمام عملیات آن شیء به همراه یک چند تایی برای سازنده (Constructor) شیء میباشد.
همچنین ویژگی attributes در فرستنده شامل مقادیر قبلی به همراه یک چندتایی برای مقدار بازگشتی و پارامترها میباشد.
پیامهای که باعث از بین رفتن یک شیء میگردند قسمت سمت چپ این قانون شامل ندهای فرستنده و گیرنده پیام میباشد.
ویژگی Attributes در ند فرستنده شامل ویژگیهای موجود درگراف کلاس بعلاوه چندتایی های مربوط به مقدار بازگشتی و پارامترهای عملیات فراخوانی شده میباشد.
از طرفی مجموعه عملیات گیرنده (operntiojns) شامل مقادیر موجود در گراف کلاس بعلاوه عملیات فراخوانده شده توسط پیام (Destructor) میباشد.
قسمت سمت راست قانون تنها شامل یک ند می باشد یعنی ند مربوط به کلاس فرستنده پیام که ویژگی آن شامل مقدار بازگشتی و پارامترهای عملیات فراخوانده شده میباشد.
شرط کنترلی Rn) ؛….
؛ R2 ؛(R1 برای گرامر گرافگونه باعث میگردد، قوانین به همان ترتیب که پیامها در دیاگرام توالی آمده اند، مورد استفاده قرار بگیرند.
5ـ آنالیز سازگاری بین ندیاگرامهای کلاس و توالی چک سازگاری بین مدلهای UML در این مقاله، مبتنی بر گرافهای نوع ویژگی و گرامرهای گرافگونه میباشد.
بنابراین قبل از انجام آنالیز، دیاگرامهای کلاس و توالی باید به فرمهای مربوط به خود تبدیل شوند.
دراین بخش سه نوع چک سازگاری درنظر گرفته شده است: وجود، آشکاری و چندتایی، که الگوریتمهای آنها در بخشهای بعدی ارائه می گردند.
چک وجود برای بررسی سازگاری دیاگرامهای کلاس و توالی، در ابتدا باید بررسی گردد، که آیا تمام کلاسهای استفاده شده در دیاگرام توالی، در دیاگرام کلاس وجود دارند و یا خیر.
همچنین باید بررسی گردد، آیا کلاسهای به کار رفته در دیاگرام توالی، دارای نقشها، ویژگیها و عملیات به کار برده شده میباشند و یا خیر.
از طرفی به ازاء هر پیام ارسال شده در دیاگرام توالی، باید بررسی گردد، که آیا رابطه تناظر متناظر با آن در دیارگرام کلاس وجود دارد و یا خیر .
دو نوع حالت برای وجود رابطه بین دو کلاس وجود دارد: در حالت اول یک رابطه مستقیم بین دو کلاس وجود دارد، که در آنصورت یک مرجع از شیء گیرنده در شیء فرستنده وجود دارد و به عنوان یک ویژگی در شیء فرستنده ذخیره میگردد.
حالت دوم وجود یک رابطه غیر مستقیم بین دو کلاس میباشد.
این رابطه از طریق کلاسهای دیگر حاصل میگردد.
روابط غیر مستقیم در این مقاله مورد بررسی قرار نمیگیرند.
چک آشکاری آنچیزی که برای یک دیاگرام توالی اهمیت دارد، این است که کلاسها، ویژگیها و عملیات به کار رفته در آن همگی آشکاری لازم را داشته باشند.
این آشکاری با توجه به آشکاری کلاسها در بستهها، آشکاری در دو انتهای روابط تناظر و آشکاری ویژگیها و عملیات کلاسها مورد بررسی قرار میگیرد.
5-3 چک چندتایی پیامهای موجود در دیاگرام توالی میتوانند یک شیء ار ایجاد و یا حذف کنند.ایجاد یک شیء به معنی ایجاد یک ؟؟
جدید برای شیء فرستنده است .
از طرفی برای حذف یک شیء باید یک لینک وجود داشته باشد.
با از بین رفتن شیء، لینک مربوط به آن شیء نیز از بین میرود.
منظور از لینک، مرجع شیء ایجاد شده و یا حذف شده در شی ء فرستنده پیام می باشد.
بنابراین تعداد لینک ها درطول زمان تغییر میکنند و این نکته ایست، که باید در دیاگرام توالی مورد توجه قرار بگیرد.
چندتاییها در دیاگرامهای کلاس در حقیقت تعداد این لینکها را محدود کرده و به عبارتی محدوده آنها از مشخص میکنند.
این مقادیر باید بررسی گردند، زیرا ممکن است یک شیء بیش ازحد ممکن دارای لینک باشد و یا به اندازه کافی نداشته باشد.
یک نکته دیگر که درمورد دیاگرامهای توالی باید مورد توجه قرار بگیرد، این است، که این دیاگرامها تنها بخشی از توالی درسیستم را نمایش میدهند، بنابراین ممکن است، که چک چندتایی برای دیاگرامهای ناقص درست جواب ندهد.
برای این منظور دو راه حل وجود: یا دیاگرامهای کامل را در نظر گرفت و یا شریط جانبی را در چک چندتایی مورد نظرقرار داد.
در این مقاله دیاگرامهای کامل در نظر گرفته شدهاند.
الگوریتمهای چک سازگاری ایده اصلی در این الگوریتمها به این شکل است، که تمام گرافهای ایجاد شده توسط گرامر گرافگونه باید در قیود چندتایی صدق کنند و با گراف کلاس سازگار باشند.
الگوریتم اصلی قوانین مطرح شده در شرط کنترلی را یکی یکی در نظر گرفته و الگوریتمهای مربوط به چک وجود، چک آشکاری و چک چندتایی را اجرا میکند.
دراینجا دو الگوریتم ارائه شده است الگوریتم اول مربوط به چک وجود و آشکاری میباشد وم الگوریتم دوم برای چک چندتایی در نظر گرفته شده است پس از اینکه هر دو الگوریتم برای یک قانون اجرا شدند، آن قانون روی گراف فعلی اجرا میگردد.
گراف فعلی برای اولین قانون همان گراف شروع میباشد.
در صورتی که الگوریتم چک وجود و آشکاری با خطا و مواجه شود، در آنصورت آن قانون برروی گراف فعلی قابل اجرا نمیباشد.
الگوریتم با گراف شروع، آغاز میگردد.
دراین مرحله وجود نقشها و کلاسها به همراه ارتباط آنها و چندتایی ها مورد بررسی قرار میگیرند.
به دلیل اینکه ما از دیاگرامهای کامل استفاده میکنیم، بنابراین گراف شرومع خالی و یا دارای ندهای مستقل میباشد.
ندهای مستقل ندهای هستند که هیچ ومابستگی چندتایی به یکدیگر نداترند.الگوریتم 5-4-1 چک وجود و چک آشکاری این الگوریتم یک قانون از گرامرگراف گونه و گراف کلاس را مورد استفاده قرارمیدهد.
قوانین درگرامرگرافگونه بصورت L R نمایش داده می شوند، که L وR هر دو گراف هستند.
این الگوریتم بر اساس وجود مورفیزمهایی بین گرافهای LوR و گراف کلاس (CG) می باشد.در حقیقت باید مومرفیزمهایCG , RCG L وجود داشته باشند و البته این مورفیزمها باید کامل باشند.
قسمت اصلی این الگوریتم بر اساس جزئیات ویژگیهای موجود درمورفیزم میباشد.
نوع ویژگیها ، نام کلاسها، نقشها و مجموعههای ویژگیها وعملیات بصورت صریح تعریف شده اند و در مورفیزم مورد استفاده قرار میگیرند.
تنها مشکلی که در این بخش موجود دارد، چک آشکاری است.
چک وجود از طریق مورفیزم به راحتی قابل دستیابی است، ولی چک آشکاری با توجه به وجود بستهها ، نقشها، ویژگیها و عملیات بصورت فرمال امکان پذیر نیست و در این مقاله ارائه نشده است .
شکل (1-5) یک چک وجود ناموفق را نشان میدهد.
در این شکل قسمت سمت راست قانون( R ) با گراف کلاس دارای مورفیزم نیست .
5-4-2 الگروریتم چک چندتایی این الگوریتم از یک قانون، مجموعه قیود چندتایی و گراف فعلی استفاده میکند.
این الگوریتم از دو الگوریتم که وابسته به نوع قید چندتایی میباشند، استفاده میکند.
هر قانون باید با تمامی قیود چندتایی چک شود.
- چک قانون با قیود کلی این الگوریتم یک قانون بصورت LR و یک قید کلی بصورت PC را گرفته و حد پایین یک چندتایی را بررسی میکند.
برای چک حد پایین، باید تمام تداخل های مناسب بین R و P بدست آیند.یک تداخل مناسب گفته میشود، اگر ندهای ایجاد شده جدید در R با بخشی ازP تداخل داشته باشند و یا اگر قانون بخشی را حذف میکند، آن بخش مورد نیاز C باشد.
به این ترتیب یک مجموعه از تداخلها ایجاد میگردد.
هرتداخل O باید با قانون pC گسترش یابد.
به این ترتیب یک مجموعه ازگسترشهایی به نام H بدست میآید.
اگر بتنوان قانون را بصورت معکوس بر یکی از این گسترشها اعمال کرد.
بدون اینکه شرایط را زیر پا گذاشت، درآنصورت سازگاری اثبات میگردد.
شکل (2-5) یک چک ناموفق برای حد پایین چندتایی را نشان میدهد.
در این مثال حد پایین مورد بررسی این است، که کلاس B حداقل با یک کلاس C در ارتباط میباشد.O تنها تداخل ممکن میباشد و عکس قانون برای گسترش H قابل اعمال نیست، به این ترتیب ناسازگاری با قیود کلی چندتایی مورد بررسی قرار میگیرد.
- چک قوانین با قیود عدم وجود این الگوریتم یک قانون به شکل R L و قید عدم وجود N را گرفته و حد بالای یک چندتایی را چک میکند.
در این الگوریتم هم، تمام تداخلهای مناسب قسمت سمت راست قانون (R) و قید عدم وجود (N) بدست می آیند.
یک تداخل مناسب است اگر قسمتهای جدید ایجاد شده در R با قید عدم وجود تداخل داشته و از طرفی امکان اعمال قانون بصورت معگوس بر روی آن ومجود داشته باشد.
نتیجه اعمال این الگوریتم بدست آمدن چندین قید کاربردی منفی میباشد.
یک ناسازگاری زمانی حاصل می گردد، که نتوان قانون را با توجه به قیود بدست آمده بر روی گراف فعلی اعمال کرد.
این زمانی رخ میدهد، که یک مورفیزم از قید کاربردی منفی به گراف فعلی وجود داشته باشد.
شکل (3-5) یک چک ناموفق برای حد بالای یک چندتایی را نشان میدهد.
استفاده از قانون با قید کاربردی منفی به همراه گراف فعلی S” امکان پذیر نیست.
زیرا مومرفیزم بین َL و S” وجود دارد.
چکیده این مقاله ابزارها و روشهایی را برای آنالیز دیاگرامهای حالت معرفی میکند.
دو نوع آنالیز ارائه شده است.
اولین روش کامل بودن و سازگاری را با توجه به ساختار ایستای دیاگرام بررسی میکند.
بنابراین نیازی به ایجاد گراف دسترسی وجود ندارد.
این روش برای سیستمهای بزرگ هم قابل استفاده است.
روش دوم بصورت دینامیک دیاگرام را آنالیز کرده و ویژگی قابل دسترس بودن را بررسی میکند.
این روش برای قسمتهای هسته ایی سیستم مورد استفاده قرار میگیرد.
همچنین دو روش پیاده سازی بررسی شده است و استفاده از ابزارها توسط یک مثال بیان شده است.
مقدمه زندگی امروزه ما به شدت تخت تأثیر و کنترل سیستمهای کامپیوتری میباشد.
بنابراین امن بودن سیستمهای کنترلی از اهمیت بسیار بالایی برخوردار میباشد.
همچنان که پیچیدگی این سیستمها افزایش مییابد، وظیفه مهندسان در طراحی و ارزیابی آنها افزایش مییابد نیاز به طراحی صحیح باعث ایجاد روشها و زبانهای جدید شده است.
این زبانها باید دارای چندین ویژگی باشند.
اول اینکه در برگیرنده بسیاری از مفاهیم بوده و بسادگی قابل یادگیری باشند.
از طرفی به طرز تفکر مهندسان نزدیک باشد، تا استفاده ازآن به سهولت امکانپذیر باشد.
دوّم آنکه تأکید و تصدیق آن بصورت فرمال امکان پذیر باشد.
که این نیازمند یک بیان مبتنی بر ریاضی میباشد.
سوّم آنکه بصورت نرم افزاری قابل پشتیبانی باشد، یعنی بتوان ابزارهای مناسبی برای توسعه، که مبتنی براینگونه زبانها میباشند، ایجاد کرد.UML بسیاری از این ویژگیها را دارا میباشد.
UML یک زبان شییء گرا برای تعیین، نمایش، تولید و مستند سازی چهره های مختلف یک سیستم میباشد.
از UML می توان برای طراحی سیستمهای کنترلی کوچک تا سیستم های توزیع شده بزرگ استفاده کرد.
متأسفانه UML اغلب ناسازگار، ناقص و مبهم میباشد.
خطاهای موجود درمدلسازی سیستم مشکلات و هزینههای بسیاری را در فازهای بعدی تولید ایجاد می کند.
از طرفی در سیستمهای کنترلی ممکن است خطاهایی رخ دهند که امنیت سیستم را به خطر میاندازند.
بنابراین چک کردن صحت جزئیات سیستم در فازهای اولیه توسعه از اهمیت بسیار بالایی برخوردار است (حیاتی است).
در این مقاله برخی از موارد کامل بودن و سازگاری را در مدلهای UML مورد بررسی قرار میدهیم.
تأکید بر رروی یکی از بخشهای رفتاری UML میباشد یعنی دیاگرام حالت.
دیاگرامهای حالت یکی از پیچیده ترین بخشهای UML میباشند، که به دلیل ساختار درختی و کهروندی در آنها نیاز به روشهای خاصی برای تصدیق صحت آنها میباشد.
در این مقاله تأکید بر روی سیستمهای کنترلی میباشد.
در اینگونه سیستمها کنترل کننده مداماً با حوادثی (events) در ارتباط است، که از طریق حس کننده ها برای آن ارسال میگردد و از طرفی در قبال هر حادثه فعالیتی (Action) را انجام میدهد.
دیاگرام حالت به ما امکان میدهد تا علاوه بر نمایش حالتهای درونی سیستم، فعالیتهای انجام شده درقبال حوادث مختلف را نمایش دهیم.