با پیمانهای (Modular) کردن زبان، علاوه بر اینکه برای کاربران جدید امکان شناخت و استفاده سادهتر خواهد بود، همکاری میان ابزارها را نیز تسهیل میکند. در واقع معماری بهتری برای زبان ایجاد شده است. با توجه به افزایش دقت UML 2.0، تعاریف زبان بزرگتر شدهاند و در نتیجه چنانچه از همان ساختار و معماری UML 1 برای آن استفاده میشد، فهم و استفاده از آن را بسیار مشکل میساخت. به منظور مقابله با مشکل پیچیدگی زبان، UML 2.0 بصورت پیمانهای درآمده است تا امکان استفادة انتخابی از پیمانههای زبان فراهم شود. شکل کلی این ساختار در شکل 2 نمایش داده شده است. همانطور که مشاهده میشود از یک پایه که شامل عناصر به اشتراک گذاشته شده است (مانند کلاسها و روابط association)، که بر روی آن مجموعهای از زیر-زبانها یا عناصر زبان وجود دارد. هر کدام از این زیر-زبانها برای مدلسازی یک قالب یا جنبة بخصوص مناسب هستند. این عناصر در Error! Reference source not found. نمایش دادهشده اند. این عناصر افقی زبان بطور معمول از یکدیگر مستقل هستند و بنابراین شما میتوانید آنها را بصورت مستقل استفاده کنید (برخلاف UML 1 که بعنوان مثال activity diagram بطور کامل بر روی state diagram قرار گرفته بود).
شکل 2- معماری زبان UML 2.0
| Purpose | Language Unit |
| (Foundation) modeling of fine-grained actions | Actions |
| Data and control flow behavior modeling | Activities |
| (Foundation) modeling of basic structures | Classes |
| Complex structure modeling for component technologies | Components |
| Deployment modeling | Deployments |
| (Foundation) common behavioral semantic base and time modeling | General Behaviors |
| Abstract data flow modeling | Information Flows |
| Inter-object behavior modeling | Interactions |
| Model organization | Models |
| Language customization | Profiles |
| Event-driven behavior modeling | State Machines |
| Complex structure modeling | Structures |
| Pattern modeling | Templates |
| Informal behavioral requirements modeling | Use Cases |
بهبود قابل توجه در توانایی برای مدل کردن سیستمهای نرمافزاری بزرگ
برخی از نرمافزارهای کاربردی مدرن تجمیع برنامههای کاربردی مستقل را در قالب سیستمی از سیستمها نمایان میسازند و این روندی است ادامه دار که منجر به پیچیدهتر شدن سیستمها خواهد شد. برای پشتیبانی از چنین روندهایی، قابلیتهای جدید انعطافپذیرِ سلسلهمراتبی به زبان اضافه شده است تا از مدلسازی نرمافزار در سطوح دلخواه پیچیدگی پشتیبانی کند. بطور کلی تعداد قابلیتهای جدید اضافه شده به UML 2.0 کم است تا از بزرگ شدن زیاد زبان جلوگیری شود و بخش عمدهای از این قابلیتهای جدید مدلسازی، گسترشی بر استفاده از قابلیتهای جدید است که به شما امکان مدلسازی سیستمهای نرمافزاری بزرگ را میدهد. علاوهبراین، این گسترشها با استفاده از یک راهکار پایهای یکسان بدست آمدهاند : استفادة بازگشتی از مجموعة یکسانی از مفاهیم در سطوح مختلف تجرد. بدین معنی که شما میتوانید عناصر مدلسازی مربوط به یک گونه بخصوص را با یکدیگر ترکیب کنید تا واحدهایی ایجاد شود که بعنوان بلوکهای سازنده در سطح بعدی تجرد مورد استفاده قرار گیرند. این وضعیت قابل مقایسه با روشی است که در برنامهنویسی procedure ها میتوانند تا چندین سطح در داخل یکدیگر فراخوانی شوند(Nested Procedure Call). بطور مشخص، قابلیتهای مدلسازی زیر بدین روش توسعه یافتهاند :
- ساختارهای پیچیده (Complex Structures)
- فعالیتها (Activities)
- تعاملها (Interactions)
- ماشینهای حالت (State machines)
ساختارهای پیچیده (Complex Structures)
به این منظور عناصر پایهای ساختاری که part نامیده میشوند ممکن است یک یا چند درگاه (port) داشته باشند که با استفاده از کانالهای ارتباطی که اتصالدهنده (connector) نامیده میشوند (همانگونه که درشکل 3 نمایش داده شده است) به یکدیگر متصل شدهاند. این ساختار تجمعی میتواند در داخل عناصر سطح بالاتر کپسوله شود که port های خود را دارند و میتوانند با عناصر سطحبالاتری متصل شوند و به همین ترتیب عناصر سطح بالاتری میتوانند ساخته شوند.
شکل 3- مفاهیم مدلسازی ساختارهای پیچیده
فعالیتها (Avtivities)
Activity ها در UML برای مدلکردن انواع مختلفی از جریان مورد استفاده قرار میگیرد : جریان signal یا data، و نیز جریانهای algorithmic یا procedural. در UML 1 یک محدودیت عمده برای Activity ها وجود داشت و آن هم این بود که آنها بر پایه ماشین حالت قرار گرفته بودند و بنابراین در حوزة معنایی ماشینهای حالت محدود شده بودند. در UML 2.0 پایة ماشین حالت با یک چارچوب معنایی عمومی دیگر که تمام این محدودیتها را حذف کرده است جایگزین شده است. (در واقع، پایة معنایی با استفاده از petri net colored های عمومیشده جایگزین شده است). علاوه بر این از برخی استانداردهای صنعتی برای مدلسازی فرآیندهای کسب و کار مانند BPEL4WS الهام گرفته است.
تعاملها (Interactions)
تعاملهای میان اشیاء در UML 1 یا با استفاده از collaboration diagram و یا با استفاده از sequence diagram نمایش داده میشدند. لکن متأسفانه دو قابلیت اساسی جا افتاده بودند :
- امکان استفادة مجدد از توالیها که ممکن بود در متن دنبالههای دیگر تکرار شوند. بعنوان مثال، یک دنباله که هویتشناسی کاربر را انجام میدهد ممکن است در چندین جای مختلف یک برنامة کاربردی رخ دهد. بدون امکان بستهبندی این دنبالههای تکرار شونده در عناصر جداگانه، لازم بود که آنها را چندین مرتبه بیان کنید که علاوه بر افزودن سربار اضافی، نگهداری مدل را نیز مشکلتر میکرد.
- امکانات کافی برای مدلکردن جریانهای پیچیده مختلف که در بازنمایی تعاملات سیستمهای پیچیده رایج هستند. این قابلیتها شامل تکرارکردن یک زیردنباله، مسیرهای اجرایی آلترناتیو، اجراهای همروند و مستقل از ترتیب، حلقه، شرط و موارد مشابه میشود.
شکل 4 - مثالی از یک مدل تعاملی پیچیده
ماشینهای حالت (State Machine)
مهمترین قابلیتی که ماشینهای حالت در UML 2.0 اضافه شده است کاملا مشابه موارد قبلی است. ایدة اصلی این است که شما میتوانید یک ماشین حالت پیچیده را کاملا بصورت پیمانهای مدل کنید که دارای نقاط مشخصی برای ورود و خروج است. به این ترتیب شما میتوانید تجزیه داخلی یک ماشین حالت را بوسیله یک مجموعه از ماشینهای حالت جداگانه و قابل استفاده انجام دهید. به این ترتیب توصیف یک الگوی رفتاری مشترک در چند حوزة مختلف به سادگی انجام میپذیرد.
شکل 5- نمونهای از نمودار حالت در UML 2.0
بهبود پشتیبانی برای سفارشی سازی برای یک حوزه بخصوص
تجارب عملی استفاده از UML ارزش مکانیزمهای توسعه (Extension) آنرا نمایان ساخته است. در UML 1.x فقط از مکانیزمهای توسعة stereotype و profile استفاده میشد، لکن در UML 2.0 مکانیزم توسعة جدید metamodel اضافه شده است که امکانات توسعة سطح بالاتری را فراهم میکند.
تقویت، تطابق با اصول، روشنی و وضوح بیشتر برای مفاهیم مختلف مدلسازی
زبان سادهتر و سازگارتر شده است. اقدامات جدید شامل تقویت و تثبیت مفایهم و – در بعضی موارد – حذف مفاهیم تکراری، پالایش چندین تعریف و افزودن توضیحات متنی و مثال بوده است.
مرداد 1387
