تارا فایل

تحقیق uml و کاربرد آن


UML و کاربرد آن

چکیده:
در مدلسازی شیئ گرای نرم افزار با استفاده از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 از ند مربوط به کلاس پدربه مقادیر موجود در این ویژگیها در ند مربوط به کلاس فرزند افزوده می گردد. در صورتی که تشابه اسمی وجود داشته باشد ویژگیها و عملیاتی که تشابه اسمی دارند افزوده نمی گردند.
4-1-2 قیود چندتایی
چند تایی های مربوط به روابط تناظر تبدیل به قیود چند تایی می گردند. برای این منظور از قیود گرافیکی وقیود کاربردی استفاده می گردد. همانطور که از بخشهای قبل می دانیم، یک چند تایی به شکل 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 هر دو گراف می باشند.
1- پیامهای بین دو شیء موجود:
قسمت سمت چپ این قانون شامل یک ند به ازای هر شیء می باشد. یک کمان از فرستنده به گیرنده پیام نیز وجود دارد. قسمت سمت راست شامل همان ندها و کمان می گردد، با این تفاوت که ویژگی operations در ند گیرنده شامل تمام عملیات قبلی بعلاوه چند تایی مربوط به عملیات فراخوانی شده توسط پیام می باشد. همچنین ویژگی attributes در فرستنده پیام شامل مقادیر قبلی بعلاوه چند تایی مربوط به مقدار برگشتی و پارامترهای عملیات فراخوانی شده می باتشد. شکل 7-4 یک نمونه پیام ارسال شده بین دو شیء موجود و قانون گرامری مربوط به آن را نمایش می دهد.
2- پیامهایی که یک شیء جدید را ایجاد می کنند:
قسمت سمت چپ این قانون تنها شامل یک ند برای فرستنده پیام می گردد. قسمت سمت راست شامل ند فرستنده و ند گیرنده پیام می باشد. پیام ارسال شده بصورت یک کمان از فرستنده به گیرنده نمایش داده می شود. ویژگی operations برای شیء گیرنده ( که جدیداً ایجاد تشده است ) شامل تمام عملیات آن شیء به همراه یک چند تایی برای سازنده (Constructor) شیء می باشد. همچنین ویژگی attributes در فرستنده شامل مقادیر قبلی به همراه یک چند تایی برای مقدار بازگشتی و پارامترها می باشد.
پیامهای که باعث از بین رفتن یک شیء می گردند
قسمت سمت چپ این قانون شامل ندهای فرستنده و گیرنده پیام می باشد.
ویژگی Attributes در ند فرستنده شامل ویژگیهای موجود درگراف کلاس بعلاوه چند تایی های مربوط به مقدار بازگشتی و پارامترهای عملیات فراخوانی شده می باشد. از طرفی مجموعه عملیات گیرنده (operntiojns) شامل مقادیر موجود در گراف کلاس بعلاوه عملیات فراخوانده شده توسط پیام (Destructor) می باشد. قسمت سمت راست قانون تنها شامل یک ند می باشد یعنی ند مربوط به کلاس فرستنده پیام که ویژگی آن شامل مقدار بازگشتی و پارامترهای عملیات فراخوانده شده می باشد.
شرط کنترلی Rn) ؛…. ؛ R2 ؛(R1 برای گرامر گراف گونه باعث می گردد، قوانین به همان ترتیب که پیامها در دیاگرام توالی آمده اند، مورد استفاده قرار بگیرند.
5ـ آنالیز سازگاری بین ندیاگرامهای کلاس و توالی
چک سازگاری بین مدلهای UML در این مقاله، مبتنی بر گرافهای نوع ویژگی و گرامرهای گراف گونه می باشد. بنابراین قبل از انجام آنالیز، دیاگرامهای کلاس و توالی باید به فرمهای مربوط به خود تبدیل شوند. دراین بخش سه نوع چک سازگاری درنظر گرفته شده است: وجود، آشکاری و چند تایی، که الگوریتمهای آنها در بخشهای بعدی ارائه می گردند.
5-1 چک وجود
برای بررسی سازگاری دیاگرامهای کلاس و توالی، در ابتدا باید بررسی گردد، که آیا تمام کلاسهای استفاده شده در دیاگرام توالی، در دیاگرام کلاس وجود دارند و یا خیر. همچنین باید بررسی گردد، آیا کلاسهای به کار رفته در دیاگرام توالی، دارای نقشها، ویژگیها و عملیات به کار برده شده می باشند و یا خیر. از طرفی به ازاء هر پیام ارسال شده در دیاگرام توالی، باید بررسی گردد، که آیا رابطه تناظر متناظر با آن در دیارگرام کلاس وجود دارد و یا خیر . دو نوع حالت برای وجود رابطه بین دو کلاس وجود دارد: در حالت اول یک رابطه مستقیم بین دو کلاس وجود دارد، که در آنصورت یک مرجع از شیء گیرنده در شیء فرستنده وجود دارد و به عنوان یک ویژگی در شیء فرستنده ذخیره می گردد. حالت دوم وجود یک رابطه غیر مستقیم بین دو کلاس می باشد. این رابطه از طریق کلاسهای دیگر حاصل می گردد. روابط غیر مستقیم در این مقاله مورد بررسی قرار نمی گیرند.
5-2 چک آشکاری
آنچیزی که برای یک دیاگرام توالی اهمیت دارد، این است که کلاسها، ویژگیها و عملیات به کار رفته در آن همگی آشکاری لازم را داشته باشند.
این آشکاری با توجه به آشکاری کلاسها در بسته ها، آشکاری در دو انتهای روابط تناظر و آشکاری ویژگیها و عملیات کلاسها مورد بررسی قرار می گیرد.
5-3 چک چند تایی
پیامهای موجود در دیاگرام توالی می توانند یک شیء ار ایجاد و یا حذف کنند.ایجاد یک شیء به معنی ایجاد یک ؟؟ جدید برای شیء فرستنده است . از طرفی برای حذف یک شیء باید یک لینک وجود داشته باشد. با از بین رفتن شیء، لینک مربوط به آن شیء نیز از بین می رود. منظور از لینک، مرجع شیء ایجاد شده و یا حذف شده در شی ء فرستنده پیام می باشد.
بنابراین تعداد لینک ها درطول زمان تغییر می کنند و این نکته ایست، که باید در دیاگرام توالی مورد توجه قرار بگیرد.
چندتاییها در دیاگرامهای کلاس در حقیقت تعداد این لینک ها را محدود کرده و به عبارتی محدوده آنها از مشخص می کنند. این مقادیر باید بررسی گردند، زیرا ممکن است یک شیء بیش ازحد ممکن دارای لینک باشد و یا به اندازه کافی نداشته باشد.
یک نکته دیگر که درمورد دیاگرامهای توالی باید مورد توجه قرار بگیرد، این است، که این دیاگرامها تنها بخشی از توالی درسیستم را نمایش می دهند، بنابراین ممکن است، که چک چند تایی برای دیاگرامهای ناقص درست جواب ندهد. برای این منظور دو راه حل وجود: یا دیاگرامهای کامل را در نظر گرفت و یا شریط جانبی را در چک چند تایی مورد نظرقرار داد. در این مقاله دیاگرامهای کامل در نظر گرفته شده اند.
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" وجود دارد.
چکیده
این مقاله ابزارها و روشهایی را برای آنالیز دیاگرامهای حالت معرفی می کند. دو نوع آنالیز ارائه شده است. اولین روش کامل بودن و سازگاری را با توجه به ساختار ایستای دیاگرام بررسی می کند. بنابراین نیازی به ایجاد گراف دسترسی وجود ندارد. این روش برای سیستمهای بزرگ هم قابل استفاده است. روش دوم بصورت دینامیک دیاگرام را آنالیز کرده و ویژگی قابل دسترس بودن را بررسی می کند. این روش برای قسمتهای هسته ایی سیستم مورد استفاده قرار می گیرد. همچنین دو روش پیاده سازی بررسی شده است و استفاده از ابزارها توسط یک مثال بیان شده است.

مقدمه
زندگی امروزه ما به شدت تخت تاثیر و کنترل سیستمهای کامپیوتری می باشد. بنابراین امن بودن سیستمهای کنترلی از اهمیت بسیار بالایی برخوردار می باشد. همچنان که پیچیدگی این سیستمها افزایش می یابد، وظیفه مهندسان در طراحی و ارزیابی آنها افزایش می یابد نیاز به طراحی صحیح باعث ایجاد روشها و زبانهای جدید شده است. این زبانها باید دارای چندین ویژگی باشند. اول اینکه در برگیرنده بسیاری از مفاهیم بوده و بسادگی قابل یادگیری باشند. از طرفی به طرز تفکر مهندسان نزدیک باشد، تا استفاده از آن به سهولت امکانپذیر باشد. دوّم آنکه تاکید و تصدیق آن بصورت فرمال امکان پذیر باشد. که این نیازمند یک بیان مبتنی بر ریاضی میباشد. سوّم آنکه بصورت نرم افزاری قابل پشتیبانی باشد، یعنی بتوان ابزارهای مناسبی برای توسعه، که مبتنی براینگونه زبانها می باشند، ایجاد کرد.UML بسیاری از این ویژگیها را دارا میباشد. UML یک زبان شییء گرا برای تعیین، نمایش، تولید و مستند سازی چهره های مختلف یک سیستم می باشد. از UML می توان برای طراحی سیستمهای کنترلی کوچک تا سیستم های توزیع شده بزرگ استفاده کرد. متاسفانه UML اغلب ناسازگار، ناقص و مبهم می باشد. خطاهای موجود درمدلسازی سیستم مشکلات و هزینه های بسیاری را در فازهای بعدی تولید ایجاد می کند. از طرفی در سیستمهای کنترلی ممکن است خطاهایی رخ دهند که امنیت سیستم را به خطر می اندازند. بنابراین چک کردن صحت جزئیات سیستم در فازهای اولیه توسعه از اهمیت بسیار بالایی برخوردار است (حیاتی است).
در این مقاله برخی از موارد کامل بودن و سازگاری را در مدلهای UML مورد بررسی قرار می دهیم. تاکید بر رروی یکی از بخشهای رفتاری UML می باشد یعنی دیاگرام حالت. دیاگرامهای حالت یکی از پیچیده ترین بخشهای UML می باشند، که به دلیل ساختار درختی و کهروندی در آنها نیاز به روشهای خاصی برای تصدیق صحت آنها می باشد. در این مقاله تاکید بر روی سیستمهای کنترلی می باشد. در اینگونه سیستمها کنترل کننده مداماً با حوادثی (events) در ارتباط است، که از طریق حس کننده ها برای آن ارسال می گردد و از طرفی در قبال هر حادثه فعالیتی (Action) را انجام می دهد. دیاگرام حالت به ما امکان می دهد تا علاوه بر نمایش حالتهای درونی سیستم، فعالیتهای انجام شده درقبال حوادث مختلف را نمایش دهیم.
2- بررسی معیار کامل بود و سازگاری
مهمترین معیارهایی که در رابطه با یک Specification مطرح می باشند، دکامل بودن (Completenex) و سازکاری می باشد (Consistency). کامل بودن برای یک سیستم کنترلی به این معنی است، که به ازای هر رشته ورودی ممکن (شامل تغیرات زمانی، یعنی سیگنالهای زود، دیر و یا تاخیر) یک جواب در نظر گرفته شده باشد. سازگارتری به این معنی است، که نیازمندیهایی که متناقض یکدیگر هستند وجود ندارند وهیچ چیز غیر قطعی وجود ندارد. برای بررسی کامل بودن و سازگاری باید از ابزارها استفاده کرد، زیرا انجام دستی این عملیات همراه با خطاست و البته زمان بر هم می باشد. با توجه به تکنیکهای اتوماسیون، چندین روش برای این منظور قابل تشخیص می باشند.
1ـ آنالیز قابل دسترس بودن: در این روش برای تمام فضای حالت مورد بررسی قرار می گیرد، تا حالات ناخواسته و مبهم (مثل حالتهای غیر قابل دسترس و رشته فعالیتهای ناخواسته ) تشخیص داده شوند. برای این منظور باید گراف دسترسی ایجاد گردد، که معمولاً برای فضای حالات گسترده امکان پذیر نیست.
2ـ چک کردن مدل: در این روش ویژگیهایی که بصورت منطقی بیان شده اند بررسی می گردند. در این روش با استفاده از روشهای تکمیلی فضای حالت کوچکتری مورد بررسی قرار می گیرد.
سیستمهای اثبات قضیه: در این روشها لازم است، شرایط و نیازمندیها بصورت فرمال بیان شوند و از آن طریق ارتباط صحیح بین معیارها و نیازمندیها بصورت فرمال اثبات می گردد.
3ـ آنالیز ایستا: مستقیماً روی مدل اعمال می گردد و معیارهایی را که وابستگی به فضای حالت ندارد، مورد بررسی قرار می دهد.
UML به گونه ای ایجاد شده است، که طراح را مجبور به ایجاد یک طرح کامل و سازگار نمی کند.
انعطاف پذیری و قابلیت گسترش زبان باعث شده است تا تشخیص خطاهای یک سیستم کنترلی بسیار مشکل گردد. با این حال UML دارای تکنیکی برای ایجاد قیود ثابت برای عناصر مدل می باشد. OCL یا object constraint language برای ایجاد قیود، برای مدلهای UML در نظر گرفته شده است. با تعریف قوانین درست می توان قیودی تعریف کرد، که بتوان بوسیله آنها کامل بودن و سازگاری را چک کرد.
نمودارهای حالت درUML می توانند توسط روشهای آنالیز ایستا و چک کردن مدل مورد بررسی قرار بگیرند. در آنالیز ایستا معیارهای عمومی که وابسته به کاربرد نیستند، مورد بررسی قرار می گیرند. در حالی که درچک کردن مدل معیارهای وابسته به کار برد هم مورد بررسی قرار می گیرند. اولی ساختار ایستای مدل را برسی می کند در حالی که دوّمی مفاهیم پویای مدل را مورد بررسی قرار می دهد.
3- دیاگرامهای حالت UML
دیاگرامهای حالت یک نمونه شییء گرا از نمودار حالتHarel می باشد. دیاگرامهای حالت یک گسترش برای دیاگرامهای انتقال حالت می باشند، که دارای ویژگیهای افزوده زیر می باشند:
همزمانی و ساختار درختی حالت: یک حالت، حالت ترکیبی گفته می شود اگر شامل چندین زیرحالت باشد. این زیرحالتها می توانند به زیر مجموعه های کاملاً جدا و یا عمود بر هم تقسیم شوند. درحالت دوّم حالت ترکیب، همروند خوانده می شود و هر یک از زیر مجموعه ها " ناحیه" خوانده می شوند. ناحیه ها خود شامل حالتها می باشند. حالتهایی که دارای زیرحالت نیستند حالتهای پایه خوانه می شوند.
– انتقالهای ترکیبی: یک انتقال معمولی، تغییر حالت سیستم از یک حالت به حالت دیگر را دراثر رخداد یک حادثه با توجه به یک شرط نشان می دهد. انتقالهای ترکیبی شامل چندین بخش می گردند. یک انتقال Jain نمایانگر یک همگام سازی است و از چند ناحیه همزمان آغاز می گردد.
یک انتقال fork نمایانگر جدا شدن کنترل می باشد و به چند ناحیه همزمان وارد می گردد. یک انتقالBranch مسیرهای مختلف را بر اساس شرایط مختلف نشان می دهد.
– حالتهای History: یک انتقال که به قسمت یک حالت History وارد می گردد، باعث می گردد تا انتقال به آخرین زیرحالت فعال از حالتی که حالت History در آن قرار دارد منتقل شود.
– مجوعه حوادث و رخدادها: حوادث ممکن است، دارای پارمترهایی باشند.
Action شامل destray, Crcate, Terminate, Send, Return, Call می باشند.
ویژگیهای معنایی UML به قرار زیر می باشند:
– پردازش یک رخداد: ماشین حالت پایه رخدادهایی ار که توسط یک توزیع کننده در یک صف رخداد قرار داده می شوند، پردازش می کند. رخدادها یکی یکی مورد پردازش قرار می گیرند و انتقالها حداکثر توسط یک رخداد انجام می گیرند.
– اجرا تا تکمیل: هنگامی که یک انتقال شروع می گردد، باید کاملاً به انجام رسیده و حالت سیستم پایدار گردد، تا رخداد بعدی مورد پردازش قرار بگیرد.
– اولویت: اگر مجموعه های خروجی چند انتقال تهی نباشد، آن انتقال ها با هم دارای تداخل هستند. برخی از تداخل ها با استفاده از اولویت ها قابل حل هستند. یک انتقال نسبت به انتقال دیگر دارای اولویت است، اگر حالت مبدا آن زیر حالتی از حالت مبدا دیگری باشد. اگر انتقالهایی که با هم تداخل دارند، رابطه درختی نداشته باشند، هیچ اولویتی بین آنها تعریف نمی گردد و هنگام تداخل یکی از آنها بصورت غیر قطعی انتخاب می گردد.
– مرحله اجرا: مجموعه انتقالهایی که اجرا خواهند شد، حداکثر مجموعه ایی است که در آن تمام انتقالها ممکن شده اند ( یعنی رخداد مورد نظر رخ داده است، شرایط آنها محقق شده و حالت مبدا آنها فعال می باشد) ، هیچ تداخلی در مجموعه وجود ندارد و هیچ انتقال خارجی ممکن، که اولویت بیشتری نسبت به یک انتقال درون محموعه دارد، وجود ندارد. ترتیب انجام انتقال ها تعریف نشده است.
4ـ آنالیز ایستا
کامل بودن به این معنی است، که در تمام حالات ممکن برای تمام رخدادها، باید یک انتقال وجود داشتته باشد . سازگاری به این معنی است، که درهر حالت هر رخداد تنها یک انتقال را بوجود آورد.
آنالیز ایستا نیازمند تعریف دوباره این معیارها به شکل های جدید دربخش املایی نمودارهای حالت می باشد. این تعریف دوباره باید ساختار درختی، همرومندی و اولویت را در نظر بگیرد . در بخش بعدی این معیارها را برای حالتها، انتقالها، گاردها و انتقالهای ترکیبی نشان خواهیم داد.

1-4 حالتها و انتقالها
ساختار درختی نمودارهایم حالت قابل تبدیل به یک ساختار غیر درختی است، اما از آنجایی که این عمل باعث افزایش تعداد حالات می گردد، ما از این روش استفاده نمی کنیم ودیاگرامهای حالت را بطور مستقیم مورد بررسی قرار می دهیم. در این روش حالتهای پایه وضعیت اتوماتا را به طور کامل مشخص می کنند.
انتقالهای حالتهای ترکیبی با در نظر گرفتن این نکته که زیرحالتهای بطور مجازی انتقالهای حالتهای در برگیرنده خود را به ارث می برند، به حساب می آیند. انتقالهای ضمنی و یا انتقالهایی که به یک حالت ترکیبی وارد می شوند ویا از آن خارج می گردند بصورت زیر درنظر گرفته می شوند. یک انتقال که به مرز یک حالت ترکیبی کشیده می شود، به این معنی است که، انتقال به زیر حالت شروع کننده آن حالت ترکیبی و یا زیرحالتهای شروع کننده ناحیه های آن حالت ترکیبی، صورت گرفته است. یک انتقال که از مرز یک حالت ترکیبی خارج می گردد، به این معنی است که انتقال از تمام زیر حالتهای آن حالت ترکیبی خارج شده است. اگر یک انتقال وارد یک ناخحیه از یک حالت همروند می گردد این بدان معنی است که انتقال به سایر ناحیه ها نیز وارد شده است ( صریحاً از طریق یک fork و یا ورود عادی به زیر حالتهای شروع کننده آن نواحی) بطور مشابه هنگامی که یک انتقال از یک ناحیه از یک حالت همروند خارج می گردد، از تمام نواحی آن حالت خارج می گردد.
هنگامی که کامل بودن مورد بررسی قرار می گیرد، حالتهای پایه د رنظر گرفته می شوند و تمام انتقالهای به ارث رسیده مورد بررسی قرار می گیرند. سازگاری نیازمند بررسی حالتها بطور انفرادی است زیرا مشکل تداخل انتقالها از طریق اولویت قابل حل می باشد.
کامل بودن به این معنی است، که به ارزای هر حالت پایه برای تمام رخدادها یک انتقال وجود داشته باشد. اگر یک رخداد هیچ اثری بر یک حالت ندارد، درآنصورت باید یک انتقال داخلی تعریف گردد، که در حقیقت حالت اتوماتا را تغییر نمی دهد. باید توته کرد که یک انتقال بازگشتی (self loop) برای این منظور مناسب نیست، زیرا باعث فراخوانی action های ورودی و خروجی حالت می گردد. در یک حالت ترکیبی همروند ممکن است، یک انتقال تنها در یک ناحیه تعریف گردد، باید در نظر داشت، که حالت اتوماتا، ترکیبی از حالتهای پایه موجود در حالت ترکیبی می باشد.
کامل بودن از طرفی بدان معنی است، که هر حالت حداقل مقصد یک انتقال باشد. حالتهای شروع کننده از یک حالت شوع کننده اولیه قابل دسترس می باشند.
سازگاری د ریک specification به این معنی است، که در هر حالت تنها یک انتقال به ازای هر رخداد انجام می شود. این بدان معنی است، که هیچ تداخلی وجود نخواهد داشت، که توسط روش اولویت بندی ذکر شده حل نشده باشد. تداخل های درختی معمولاً با انجام انتقالی که در سطح پایین تری قرار دارد، حل می گردند و تداخل هایی که با روش اولویت بندی قابل حل نیسنتد، معمولاً در یک سطح رخ می دهند و با یک انتخاب غیر قطعی قابل حل هستند یک عامل دیگر که باعث بروز ناسازگاری می گردد، ترتیب انجام انتقالهایی می باشد که همگی با هم آتش شده اند و باید بطور همزمان اجرا گردند. سازگاری دراین موارد از طریق آنالیز دسترسی مورد بررسی قرار می گیرد، زیرا این بخش از سازگاری بصورت ایستا قابل بررسی نیست.
2-4 گاردها
کامل بودن بدان معنی است که در هر حالت پایه، با در نظر گرفتن انتقاهای به ارث رسیده، گاردهای انتقالهایی که دراثر یک رخداد ممکن شده اند تشکیل یک تاتولوژی می دهند. سازگاری توسط معیار زیر بررسی می گردد: اکر دو یا چند انتقال که از یک مبدا شروع می شوند، توسط یک رخداد ممکن شوند، در آنصورت گاردهای آنها همزمان نمی توانند برقرار باشند.
بررسی این قوانین بسیار مشکل هستند، زیرا گاردها می توانند به متغیرها، توابع و پارمترهای رخدادها اشاره کنند. بنابراین بررسی آنها بصورت ایستا ممکن نیست، مگر اینکه گاردها محدود شوند و بصورت فرم استاندارد نمایش داده شوند. گرادهای ساده، که به ثابتها اشاره دارند، به راحتی قابل بررسی هستند. انتقالهای تکمیلی وابسته به هیچ رخدادی نیستند و به محض آنکه شرط آنها برقرار گردد، انتقال انجام می گیرد. شرط کامل بودن و سازگاری همانند آنچیزی است، که قبلاً تعریف شده است. اگر در یک حالت گاردهای انتقالهای معمولی و انتقالهای تکمیلی هر دو برقرار باشند، در آنصورت ابهام وجود دارد، زیرا در این حالت انتقال معمولی انجام نخواهد شد.

3-4 انتقالهای ترکیبی
انتقالهای ترکیبی آنهایی هستند، که شامل چندمین بخش می گردند. مثل Branch و Join و Pork ها. برای راحتی آنالیز، انتقال های ترکیبی به انتقالهای معمولی تبدیل می گردند، تا چک کردن قوانین مطرح شده در بخش قبل امکان پذیر باشد.
Branch ها به انتقالهای ساده تبدیل می گردند، یعنی به ازای هر مسیر از مبدا به مقصد یک انتقال ساده در نظر گفته می شود. همچنین تمام گاردهای موجود در مسیر با عملگر AND با هم ترکیب شده و به عنوان گارد انتقال جدید در نظر گرفته می شود.
انتقالهای Fork به همان صورت که انتقالهای Branch تبدیل می گردند، به انتقالهای ساده تبدیل می گردند.
انتقالهای Join از چندین ناحیه شروع می شوند و به یک حالت نهایی ختم میگردند. گارد روی این انتقال به انتقالهای ساده ایجاد شده منتقل می گردد. یعنی به ازای هر ناحیه یک انتقال از حالت انتهای آن ناحیه شروع شده و به حالت نهایی ختم می گردد. یک انتقال join هنگامی انجام می شود که تمام حالتهای مبدا فعال باشند. بنابراین این شرط باید به نوعی در انتقالهای ساده در نظر گرفته شود برای این منظور یک گارد جدید in-stateبه گارد اصلی انتقال، AND می گردد. به هر حال چک سازگاری انتقال Join نیازمند آنالیز دسترسی می باشد.

5- آنالیز دسترسی
یک مورفیزم سازگار با ساختار گفته می شود اگر ند مبدا برای یک ؟؟ به ند مبدا در تصویر آن نگاشت شود و همچنین ند مقصد برای آن یال به نُد مقصد در تصویر آن نگاشت گردد . یک مورفیزم بین گرافهای H و G بصورت g:GH نشان داده می شود. برای گرافهای نوع ویژگی علاوه بر اینکه مورفیوم باید سازگار با نوع و سازگار با ساختار باشد. مقادیر ویژگی در گراف مقصد باید برابر و یا کمتر باشند.
یک نوع خاص از مورفیزم وجود دارد که به آن "چسباندن" گفته می شود. در این نگاشت روند از گراف اصلی به یک ند از گراف تصویر نگاشت می گردد. به این ترتیب این مورفیزم سازگار با نوع و سازگار با ساختار می باشد.
یک مورفیزم می تواند نتیجه ترکیب دو مورفیزم باشد. ترکیب دو مورفیزم g:G1G2 با h:G2G3 بصورت hog: G1G3 نشان داده می شود.
4-3- تبدیل گراف
گرامهای گراف گونه در حقیقت یک شرح دیداری از چگونگی تبدیلات گرافها بدست می دهند. دو روش برای تبدیل گرافها در این فصل ارائه شده است . روشهای (SPO) Double Pushowt (DPO) , Sigle push aut در این فصل ارائه می گردند.
الگوریتم چک سازگاری با اعمال یک شرط باعث می گردد هر دوی این روشها به یک نتیجه ختم گردند.

1-4-3- قوانین
یک قانون چگونگی تبدیل یک گراف به گراف دیگر را نشان می دهد. این تبدیلها شامل اضافه کردن حذف و حفظ یالها و ندها می گردند. یک قانون شامل دو گراف می گردد: گراف سمت چپ (L) و گراف سمت راست (R) . با توجه به روش بکار رفته نوع نمایش قانون متفاوت می باشد.
قانون در روش Double Pushowt
یک قانون در روش Double Pushowt شامل سه بخش می باشد.
1- گراف چسبیده یا گراف وسط K که شامل بخشهایی از گراف که ثابت می مانند (حفظ می گردند) می باشد. این گراف بخشی از گرافهای R و L می باشد.
2- بخشهای از گراف سمت چپ که در طول تبدیل حذف می گردند. در حقیقت تمام بخشهایی از گراف L که در گراف K وجود ندارند (LK)
مورفیزم نهایی شامل مورفیزم بین گراف چسبیده K و گراف سمت چپ قانون L بعلاوه مورفیزم بین گراف چسبیده K و گراف سمت راست قانون می باشد. (L:LK,r:KR)
قوانین در روش Single Pushout
در این روش یک قانون تنها شامل یک قسمت سمت راست و یک قسمت سمت چپ (L) می باشد. یک مورفیزم جزیی بین گراف R,L وجود دارد (P:LR) در این روش بخشهای ثابت (حفظ شده ) در دو طرف قانون بایک برچسب مشخص زیر نویس می گردند.
در بخشهای بعدی از روش Single Pushout برای نمایش قوانین استفاده می کنیم.
2-4-3- قانون معکوس
قانون معکوس برای یک قانون بصورت r:LKR در روش DPO شامل یک مورفیزم از گراف چسبیده به گراف سمت راست و یک مورفیزم از گراف چسبیده به گراف سمت چپ می باشد. (r-1:RKL)
در روش SPO قانون معکوس برای یک قانون بصورت P:LR یک مورفیزم از گراف سمت راست به گراف سمت چپ می باشد. (P-1:RL)
3-4-3- کاربرد قانون
کاربرد یک قانون بر روی یک گراف نیازمند یک نگاشت از سمت چپ قانون (L) بر روی گراف مورد نظر می باشد. این نگاشت یک مورفیزم از گراف سمت چپ قانون (L) به گراف G (گرافی که تبدیل خواهد شد ) می باشد. ممکن است برای گراف G چند نگاشت مختلف وجود داشته باشد.
این نگاشتها بخشهایی از گراف G را مشخص می کند که در کاربرد قانون به کار خواهند آمد.
سایر بخشهای گراف Context خوانده می شوند . کاربرد قانون بر روی یک گراف خود شامل دو بخش می گردد. در ابتدا بخشهایی از گراف که توسط قانون برای حذف شدن مشخص شده اند ، حذف می گردند.
در مرحله دوم بخشهایی که باید به گراف افزوده شوند ، به گراف افزوده می گردند. این تبدیل گراف محصول H را بدست می دهد. بین قسمت سمت راست قانون و گراف حاصل یک مورفیزم وجود دارد ، (m*: R H) . همچنین بین گراف اولیه و گراف حاصل مورفیزم وجود این مورفیزم در روش SPO بصورت GH و در روش DPO بصورت GDH می باشد.
در صورتی که از گرافهای نوع ویژگی استفاده می گردد در آنصورت ویژگیهای قسمت سمت چپ قانون هم باید برابر کنند. در حقیقت این به نوع ویژگیها بستگی دارد. در صورتیکه مقدار ویژگی در سمت چپ قانون یک متغیر باشد. این تغییر به عنوان مقدار ویژگی در گراف تصویر در نظر گرفته می شود. در گراف تبدیل شده مقادیر ویژگیها با توجه به قسمت سمت راست قانون و گراف حاصل ارزیابی می گردند. شکل 7-3 یک کاربرد برای قانون (RL) را برای یک گراف نوع ویژگی در روش SPO را نشان می دهد. در روش DPO یک شرط کاربردی به نام "شرط چسبندگی " وجود دارد. این شرط دارای دو بخش می باشد. شرط معلق و شرط تشخیص . شرط معلق باعث می گردد هیچ یال معلقی در نتیجه حاصل نگردد. بنابراین این شرط باعث می گردد در صورتیکه یک ند توسط قانون حذف گردد، تمام یالهای مجاور آن ند نیز حذف گردند. شرط تشخیص باعث می گردد هر عنصر G که حذف می گردد ؟؟ یک پیش تصویر در L داشته باشد. در صورتی که این شرایط برقرار باشند قانون قابل اعمال می باشد.
در روش SPO می توان دید که این قوانین برقرار می باشند.
4-4-3- کاربرد شرایط
در صورتیکه کاربرد یک قانون به شرایط جانبی بستگی داشته باشد ، این شرایط از طریق شرایط کاربردی برای قسمتهای راست ، و چپ قانون تعیین می گردند. سه نوع شرایط کاربرد وجود دارد: شرایط کاربردی منفی ، مثبت و عمومی . شرایط کاربردی مثبت مورد استفاده قرار نمی گیرند.
شرایط کاربردی منفی برای محدود کردن کاربرد یک قانون مورد استفاده قرار می گیرد ، اگر که جانب نگاشت m شامل اشیایی از گراف ، شرط کاربردی منفی N می باشد قسمت سمت چپ قانون می تواند شامل یکسری ؟؟ (شرایط کاربردی منفی ) باشد که در حقیقت یک گراف مورفیزم از قسمت سمت چپ قانون به گراف شرط کاربردی منفی (NAC) می باشد (LNAG) . بنابراین گراف NAC شامل تمام بخشهای L به همراه الگوهای ممنوع می باشد. یک مورفیزم m در یک قید صدق می کند اگر هیچ مورفیزمی از گراف NAC به گراف اولیه وجود نداشته باشد یعنی مورفیزم n:NG بطوریکه LNG=LG برقرار باشد وجود نداشته باشد. کاربرد یک قانون با یک شرط کاربردی منفی ، "تولید شرطی " خوانده می شود. شکل 8-3 یک مورفیزم را برای یک شرط کاربردی منفی را که صدق نشده است ، نشان می دهد.
برای صدق شدن شرط کاربردی منفی باید مورفیزم n وجود نداشته باشد . یک شرط کاربردی مثبت نیازمند یک الگوی تعیین شده در جانب مورفیزم m:LG می باشد. در صورتیکه الگوی مورد نظر بخشی از گراف سمت چپ قانون باشد در آنصورت شرط کاربردی مثبت برقرار می باشد.
شرط کاربردی عمومی شامل دو گراف می گردد . گراف مقدمه و گراف نتیجه . این دو گراف از طریق یک مورفیزم از گراف مقدمه به گراف نتیجه با هم مرتبط می گردند. شرط کاربردی عمومی نیازمند آن است که اگر الگوی گراف مقدمه p در گراف اولیه G وجود داشته باشد (یعنی یک مورفیزم بصورت P:PG وجود داشته باشد ) در آنصورت الگوی گراف نتیجه C نیز در گراف G وجود داشته باشد (یعنی یک مورفیزم بصورت q:CG وجود داشته باشد ) شکل 8-3 یک شرط کاربردی عمومی را نشان می دهد.

5-3- گرامر گراف گونه
یک گرامر گراف گونه شامل یک گراف شروع S و یکسری قانون می باشد.
مقدمه ای بر مفاهیم گرافهای نوع ویژگی
الگوریتم آنالیز سازگاری برای دیاگرامهای کلاس و توالی از مفاهیم گرافهای نوع ویژگی و گرامرهای گراف گونه استفاده می کند. بنابراین یک بازنمایی معادل برای دیاگرامهای کلاس و توالی به شکل گراف و گرامرهای گراف گونه لازم می باشد. برای درک بهتر تبدیلات به کار رفته و الگوریتم های ارائه شده، مفاهیم اولیه گرافها و گرامرهای گراف گونه در این بخش ارائه شده اند.
1-3- گرافها
یک گراف مجموعه ای از ندها، ر،س ها و کمانهای (یال ) جهت دار از نُد مبدا به ند مقصد می باشد. در گرافهای نوع دار هر ند و هر یال دارای یک ویژگی (نوع ) می باشد، ممکن است چند یال و یا چند راس دارای یک نوع باشند. شکل ( a) 1-3 یک گراف نوع دار را نشان می دهد. تمام ندهای از نوع Class و تمام یالها از نوع association می باشند. شکل (b) 1-3 خود چگونگی ارتباط ندهای از نوع کلاس توسط روابط تناظر و تعمیم را نشان می دهد. در حقیقت یک نوع تعریف برای انواع گراف های از نوع شکل (b) 1-3 می باشد.
اشیاء یک گراف (ندها و یالها ) می توانند دارای برچسبهای ثابت و یا متغیر باشند. برچسب های ثابت نوع شی ء را مشخص می کنند و برچسبهای متغیر ویژگیهای خاص مربوط به یک شی ء را مشخص می کنند. از این برچسبها برای نگهداری داده های مربوطه به یک شی ء استفاده می گردد.
هر شی ء در گراف دارای یک رکورد که دارای چندین ویژگی است ، می باشد. این ویژگیها هر یک شامل دو بخش می باشند بخش اول نام ویژگی و بخش دیگر داده مربوط به آن ویژگی می باشد.
2-3 مورفیزم
دو گراف از طریق یک مورفیزم به هم مرتبط می گردند. به این شکل که ندها و یالهای گراف اول (G) به ندها و یالهای گراف دوم (H) نگاشت می گردد. ندها و یالهای گراف G ، "اصلی " و ندها و یالهای گراف H ، "تصویر " خوانده می شوند.
یک مورفیزم سازگار با نوع خوانده می شود ، اگر ندها و یالها به ندها و یالهایی از نوع خود نگاشت شوند.

1


تعداد صفحات : 40 | فرمت فایل : Word

بلافاصله بعد از پرداخت لینک دانلود فعال می شود