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 ارزش مکانیزمهای توسعه (Extension) آنرا نمایان ساخته است. در UML 1.x فقط از مکانیزمهای توسعة stereotype و profile استفاده میشد، لکن در UML 2.0 مکانیزم توسعة جدید metamodel اضافه شده است که امکانات توسعة سطح بالاتری را فراهم میکند.
تقویت، تطابق با اصول، روشنی و وضوح بیشتر برای مفاهیم مختلف مدلسازی
زبان سادهتر و سازگارتر شده است. اقدامات جدید شامل تقویت و تثبیت مفایهم و – در بعضی موارد – حذف مفاهیم تکراری، پالایش چندین تعریف و افزودن توضیحات متنی و مثال بوده است.
مقدمه
شاید برای شما هم این سؤال پیش آمده باشد که چه تغییر مهمی در UML رخ داده است که پس از UML 1.5، UML 2.0 عرضه شد؟ آیا اضافه شدن دیاگرامهای جدید (مثل Timing Diagram) یا بهبود دیاگرامهای موجود (مانند افزودن امکانات بیشتر به Sequence Diagram ) موجب این ارتقاء قابل توجه شده است؟ حقیقت این است که آنچه که موجب این ارتقاء نسخه قابل توجه از 1 به 2 شده است، فراتر از این جزئیات است. آنچه که تولید مدلگرا (Model Driven Development) نامیده میشود، که بر پایه سطح تجرد بالاتر و استفادة بیشتری از تولید خودکار کد نسبت به روشهای سنتی قرار دارد، اثر قابل توجه خود در بهبود کیفیت نرمافزار و بهرهوری تولید نشان داده است. از آنجاییکه نقش زبان مدلسازی برای موفقیت MDD بسیار مهم است، یک تجدید نظر عمده در زبان استاندارد UML انجام شده است که منجر به عرضه UML 2.0 گردیده است. درعین حال که چندین قابلیت جدید مدلسازی اضافه شده است – مانند قابلیت بیان دقیقتر معماری نرمافزار - خصوصیت غالب این بازبینی عمده، زیاد کرد دقچت قابلیت تعریف زبان است که سطح بالاتری از خودکارسازی را فراهم میکند. در ادامه شرح خواهیم داد که UML2.0 چگونه به این موارد دست یافته است و سایر جنبههای مهم آنرا نیز بیان خواهیم کرد. همانگونه که میدانید UML بوسیله تولیدکنندگان بزرگ ابزارهای مدلسازی پذیرفته و پشتیبانی میشود، و بصورت یک بخش ضروری از دانش مهندسی نرمافزار درآمده است و در دانشگاهها نیز تدریس میشود. همچنین نقش مهمی در مدلسازی نرمافزارهای پیچیده ایفا میکند. اما با وجود همه این مزایا همچنان مقاومتهایی در برابر استفاده از UML وجود دارد. دلایل زیادی برای این وضعیت وجود دارد، لکن یکی از مهمترین آنها این است که مدلهای نرمافزار ممکن است در بعضی موارد بسیار نادقیق باشند و ارزش کاربردی هر مدلی با میزان دقت و صحت آن تناسب مستقیم دارد. چنانچه شما نتوانید به یک مدل از یک سیستم نرمافزار اعتماد کنید، بدتر از حالتی است که مدلی وجود نداشته باشد، زیرا ممکن است منجر به تصمیمگیری غلط شما شود. بنابراین بهترین راهحل افزایش ارزش مدلهای نرمافزاری کم کردن فاصلة میان آنها و سیستمی است که آنرا مدل کردهاند. جالب است بدانید - همانطور که در ادامه بیان خواهیم کرد- در مهندسی نرمافزار بیش از سایر رشتههای مهندسی این کاهش فاصله امکانپذیر است.
Model-Driven Development
راهحل این معما اتصال دقیق یک مدل به معادل پیادهسازی نرمافزاری آن با استفاده از یک یا چند تبدیل مدل خودکار است. شاید بهترین مثال یک کامپایلر باشد، که یک برنامه که به زبان سطح بالا نوشته شده است را به متناظر سطح ماشین آن برنامه تبدیل میکند. مدل، در این حالت، نقش آن زبان سطح بالا را ایفا میکند که جزئیات غیر ضروری را نمایش میدهد. جالب است توجه کنید در هیچ یک از رشتههای مهندسی دیگر نمیتوانند این ارتباط قوی بین مدل و فرآوردة مهندسی آن ایجاد کنند. زیرا فرآوردهای که شما آنرا مدل میکنید نرمافزار است و نه سختافزار. یک مدل از هر نوع از فرآوردههای فیزیکی (بعنوان مثال، یک اتومبیل، ساختمان، پل و موارد دیگر) هنگام مدلکردن نیاز به یکسری حذف جزئیات و مجردسازی است که بصورت غیر دقیق انجام میشود و هنگام ساخت یک فرآورده مهندسی از روی مدل مجرد نیز لازم است یک سری تبدیلهای غیر دقیق انجام شود. ماهیت این تبدیلها به دلیل عدم دقتی که دارند ممکن است مدلها را به یک موجودیت ناکارا یا حتی مزاحم تبدیل کنند. حال آنکه در نرمافزار این تبدیلها، بطور کلی، میتوانند بصورت کاملا دقیق و قاعدهمند انجام شوند. پتانسیلی که در ورای این ترکیب قدرتمند تجرد و خودکارسازی وجود دارد منجر به ظهور تکنولوژی مدلسازی جدیدی به همراه روشهای تولید متناظر با آن شده است که با عنوان تولید مدلگر (model-driven development) شناخته میشود. ویژگی اصلی MDD این است که مدلها به فرآوردة اصلی طراحی نرمافزار بدل گشتهاند، که منجر به انتقال تمرکز بیشتر از کد برنامه به مدل میشود. با دقیقتر شدن مدلها (که UML 2.0 این قابلیت را فراهم میآورد) سطح خودکارسازی تولید کد از روی مدل افزایش پیدا میکند و مزایای MDD بیشتر نمایان میشوند. لازم به ذکر است که پیش از این هم در عمل MDD مورد استفاده قرار گرفته است، لکن در حال حاضر به دلیل رشد و افزایش قابلیت تکنیکها و استانداردها (مانند UML 2) این امکان بیشتر فراهم شده است و MDD بیشتر مورد توجه قرار گرفته است.
اهمِ موارد جدید در UML 2.0
توسعههای جدیدی که در UML 2.0 انجام شده است را میتوان در این پنج دسته عمده گروهبندی کرد که در ادامه به ترتیب اهمیت بیان شدهاند.
افزایش قابل توجه میزان دقت در تعاریف زبان
که نتیجه نیاز به پشتیبانی از خودکارسازی سطح بالاتری است که برای MDD لازم است. لازمة خود کارسازی رفع ابهام و عدم دقت از مدلها (و در نتیجه از زبان مدلسازی) است تا برنامههای کامپیوتر ی بتوانند مدلهای را تبدیل به کد کنند. یکی از اقداماتی که به منظور کمینه کردن ابهامات و افزایش دقت مدل انجام شده است استفاده از metamodel است. این مدل خصوصیات هر عنصر مدلسازی UML و ارتباط آن با سایر مفاهیم مدلسازی را تعریف میکند. این metamodel با استفاده از یک زیرمجموعه از عناصر UML - که بیشتر مفاهیم Class Diagram هستند و اصطلاحا Meta-Object Facility (MOF) نامیده میشوند - تعریف شده است و بوسیله یک مجموعه از محدودیتهای رسمی که به زبان Object Constraint Language (OCL) نوشته شده است پشتیبانی میشود. بطور خلاصه میزان دقت تعاریف زبان UML 2.0 با روشهای زیر بطور قابل توجهی افزایش یافته است :