زبان مدل‌سازی یکپارچه

left
مجموعه‌ای از نمودارهای یوام ال.
زبان مدل‌سازی یکپارچه یا «یو ام‌ال»، یک زبان مدلسازی همه منظوره استاندارد در زمینه مهندسی نرم‌افزار است که توسط گروه مدیریت شی ایجاد شد. در حال حاضر (۲۰۱۴ میلادی) آخرین نسخه این زبان نسخه ۲٫۴٫۱ است که در سال ۲۰۰۷ میلادی مشخصات آن منتشر شد
در سال ۲۰۱۲ نسخه ۲٫۵ این زبان مدلسازی نیز تولید شد که این نسخه در سال ۲۰۱۵ به صورت عمومی منتشر گردید.
با استفاده از یو ام‌ال می‌توان تقریبا هر گونه برنامه کاربردی که ممکن است بر روی هر ترکیبی از سخت‌افزار، سیستم عامل، زبان برنامه‌نویسی و شبکه اجرا شود را مدلسازی نمود. طراحی بر پایه مفاهیم شی گرایی یو ام‌ال سبب می‌شود که ذاتا با محیط‌ها و زبانهای برنامه‌نویسی شی گرا (مانند سی پلاس پلاس، جاوا و سی شارپ) سازگاری کامل داشته باشد، اگرچه می‌توان از آن برای مدلسازی برنامه‌های غیر شی گرا مانند برنامه‌هایی که با زبان‌های بیسیک، کوبول و فرترن نوشته می‌شوند نیز استفاده نمود.
مرور کلی
یوام ال یک زبان مدلسازی نسل سوم است و روشی باز برای توصیف ویژگی‌ها، نمایش گرافیکی، ساختن و مستندسازی اجزای یک سیستم نرم‌افزاری در حال توسعه می‌باشد. از یو ام‌ال برای فهمیدن، طراحی، مرور، پیکربندی، نگهداری و کنترل اطلاعات سیستم‌های نرم‌افزاری استفاده می‌شود. یو ام‌ال برای همه روش‌های توسعه نرم‌افزار، همه مراحل چرخه عمر نرم‌افزار، همه حوزه‌های برنامه‌های کاربردی و هر رسانه‌ای قابل استفاده است. این زبان مدلسازی برای یک‌لخت‌سازی تجربیات گذشته در مورد تکنیک‌های مدلسازی و گنجاندن تجربیات موفق در یک دیدگاه استاندارد بوجود آمده‌است. یو ام‌ال شامل مفاهیم معنایی(semantic)، نمادگذاری و راهنمایی برای طراحی می‌باشد. یو ام‌ال را نمی‌توان به عنوان یک روش تولید نرم‌افزار کامل دانست. این زبان شامل فرایند مرحله به مرحله تولید نرم‌افزار نیست، بلکه یو ام‌ال زبانی است که تقریبا تمام شیوه‌های تولید نرم‌افزار از آن استفاده می‌کنند.
یو ام‌ال تکنیک‌های مدلسازی داده (نمودار رابطه موجودیت)، مدلسازی تجاری، مدلسازی شی و مدلسازی مولفه‌ها را با هم ترکیب می‌نماید. یو ام‌ال را می‌توان در تمامی پروسه‌ها در سراسر چرخه توسعه نرم‌افزار به کاربرد.
پیش از پیدایش یو ام‌ال در اواسط دهه ۱۹۹۰، مدلسازی نرم‌افزار از مشکل ناسازگاری نماد گذاریهای مختلفی که توسط متخصصین مدلسازی مختلف بوجود می‌آمد رنج می‌برد و استاندارد همه‌گیری در این زمینه وجود نداشت. یو ام‌ال از تلفیق روش بوچ (Booch Method)، تکنیک مدل‌سازی شی (OMT) و مهندسی نرم‌افزار شی گرا(OOSE) با یکدیگر در راستای جریانات یک‌لخت‌سازی بوجود آمد. پیدایش یوام ال همه چیز را تغییر داد و باعث رشد چشمگیر مدلسازی تصویری و استفاده گسترده از این زبان شد. یو ام‌ال امروزه نقش یک زبان بین‌المللی را در زمینه تولید نرم‌افزار بر عهده دارد. موسسه آماری گارتنر در سال ۲۰۰۶ تعداد متخصصان فناوری اطلاعات که از یو ام‌ال استفاده می‌نمودند را ۱۰ میلیون نفر برآورد نمود و همچنین تخمین زده است که در سال ۲۰۰۸ هفتاددر صد شرکت‌های تولید نرم‌افزار در سراسر دنیا از یو ام‌ال استفاده کرده‌اند.
تاریخچه
تاریخچه متدها و نمادگذاریهای شی گرا.
روشهای تولید نرم‌افزار برای زبان‌های برنامه‌نویسی سنتی دردهه۱۹۷۰ ظهور کرد و در دهه ۱۹۸۰ همه گیر شد. مهمترین این شیوه‌ها متدولوژی طراحی و تحلیل ساختاریافته سیستم (SSADM) بود.
این روش‌ها در ابتدا توسط افرادی چون کنستانتین (Constantine)، دی مارکو(DeMarco)، ملور(Mellor)، وارد(Ward)، یوردون(Yourdon) و سایرین پدید آمدند و در حیطه سیستم‌های بزرگ به ویژه سیستم‌های طرف قرارداد با دولت در حوزه هوافضا و دفاع نظامی نیز نفوذ کردند. اگرچه نتایج آن‌ها همواره رضایت بخش نبود اما این روش‌ها متضمن ایده‌های خوبی بودند که به ندرت استفاده موثری از آن‌ها می‌شد. شرکت‌های تجاری راغب با به‌کارگیری روش‌های تولید نرم‌افزار و سیستم‌های رایانه‌ای مهندسی نرم‌افزارنبودند. بیشتر آن‌ها نرم‌افزارها را برای استفاده داخلی و رفع نیازهای خود تولید می‌کردند و نیازی به بررسی این نرم‌افزارها توسط سازمان‌های خارجی نبود.
اولین زبان برنامه‌نویسی شی گرا سیمولا بود که توسط اوله ژوهان داهل(Ole-Johan Dahl) و کریستن نایگارد (Kristen Nygaard) در سال ۱۹۶۷ در نروژ طراحی شد. این زبان اگرچه خود پیروان چندانی به دست نیاورد اما تاثیر زیادی بر روی بسیاری از زبان‌های شی گرای بعدی داشت. کارهای داهل (Dahl) و نایگارد(Nygaard) تاثیر ژرفی بر گسترش شی گرایی داشت. جریان شی گرایی با دستیابی عمومی به زبان اسمالتاک(Smalltalk) در اوایل دهه ۱۹۸۰ فعال شد و با پیدایش زبان‌های شی گرای دیگری مانند سی شی گرا (Objective C)، سی پلاس پلاس، ایفل و کلوس (CLOS) ادامه یافت. پنج سال پس از اینکه اسمال تاک در سراسر دنیا شناخته شد، اولین متدهای شی گرای تولید نرم‌افزار توسط شلایرو ملور و کود و یوردون بوجود آمد و به فاصله کوتاهی توسط سایرین همچون بوچ(Booch) و رمباف (Rambaugh) دنبال شد. این کتاب‌ها به مجموعه کتب قبلی در مورد طراحی زبان‌های برنامه‌نویسی اضافه شد و فیلد متدولوژی شی گرا آغاز شد. فاز اول آن در پایان سال ۱۹۹۰ کامل شد. کتاب یاکوبسون در مورد شی گرایی اندکی بعد بر اساس مقالات و کارهای پیشین منتشر شد که با تمرکز بر روی مورد کاربرد (مورد استفاده هم ترجمه شده) دیدگاه متفاوتی را ارائه کرد. در طی پنج سال بعدی کتاب‌های متعددی در این زمینه تالیف شد که هریک تعاریف، مفاهیم و نمادگذاریهای خاص خود را داشتند، اما در مجموع شباهت زیادی بین مفاهیم ارائه شده توسط نویسندگان مختلف وجود داشت.
برخی تلاشهای اولیه در جهت یک‌لخت‌سازی مفاهیم روش‌های مختلف به انجام رسید که نمونه قابل ملاحظه آن کار کلمن(Coleman) و همکارانش به نام فیوژن(Fusion) بود که شامل مفاهیمی از تکنیک مدل‌سازی شی، بوج و سی آر سی بود. اولین تلاش موفقیت‌آمیز برای ترکیب و جایگزینی روش‌های موجود در سال ۱۹۹۴ وقتی به وجود آمد که رمباف به شرکت رشنال سافتور رفت و به بوچ پیوست. این دو مفاهیم تکنیک مدل‌سازی شی و روش بوچ را ترکیب کردند و اولین طرح خود را در سال ۱۹۹۵ ارائه دادند. در این زمان یاکوبسون هم به این دو پیوست و کار مشترک خود را با آن‌ها آغاز کرد. کار مشترک آن‌ها زبان مدل‌سازی یک‌لخت نام گرفت. در سال ۱۹۹۶ گروه مدیریت شی (OMG) درخواست پیشنهادهایی برای استاندارد مدل‌سازی شی گرا را مطرح نمود. نویسندگان یو ام‌ال (یاکوبسون، بوچ و رمباف) با همکاری گروهی از برنامه نویسان و متدولوژیست‌های دیگر طرح پیشنهادی خود را به OMG ارائه کردند. طرحهای دیگری هم به OMG ارائه شد که در نهایت همه پیشنهادات در طرح نهایی یو ام‌ال که در سال ۱۹۹۷ به OMG تحویل داده شد، ادغام شدند.
پس از چندین سال تجربه استفاده از یو ام‌ال در صدد برآمدند تا یو ام‌ال را ارتقاء دهند تا مشکلاتی که در تجربیات کاری پدیدار شده بودند را بر طرف کنند و قابلیت‌های آن را گسترش دهند. طرحهای پیشنهادی ارائه شدند ومشخصات یو ام‌ال ۲ در سال ۲۰۰۳ توسط OMG پذیرفته شد؛ و پس از نهایی‌سازی در اواخر ۲۰۰۴ در دسترس عموم قرار کرفت.
مفاهیم بنیادین یو ام‌ال
مفاهیم یو ام‌ال در قالب دسته‌هایی به نام دید(view) طبقه‌بندی می‌شوند. هر «دید» در واقع زیرمجموعه‌ای از ساخت‌های مدلسازی است که یک جنبه از سیستم را نمایش می‌دهند. در بالاترین سطح طبقه‌بندی دیدها به چهار حوزه کلی تقسیم‌بندی می‌شوند:
دسته‌بندی ساختاری(Structural Classification)
عناصر سیستم و ارتباط آن‌ها با سایر عناصر را توصیف می‌کند. برای مدل کردن عناصر سیستم از مفهوم "دسته‌کننده" (classifier) استفاده می‌شود. دسته‌کننده‌ها شامل کلاس، عملگر(Actor)، مورد کاربرد(Use case)، گره(Node)، همکاری(Collaboration) و مولفه(component) هستند. دسته‌کننده‌ها پایه‌ای می‌سازند که رفتارهای پویای سیستم روی آن تعریف می‌شوند. حوزه طبقه‌بندی ساختاری شامل سه دید مختلف است:
دید ایستا (Static View): این دید مفاهیم مربوط به حوزه برنامه کاربردی(Application Domain) و مفاهیم داخلی ابداع شده به عنوان بخشی از پیاده‌سازی برنامه کاربردی را مدل می‌کند. این دید، ایستا نامیده می‌شود زیرا رفتارهای وابسته به زمان سیستم را توصیف نمی‌کند. اجزای تشکیل دهنده دید ایستا عبارتند از کلاسها و روابط (ارتباط و تعمیم) و وابستگی‌های (مانند realization و usage) بین آنها. دید ایستا در قالب نمودارهای کلاس نمایش داده می‌شود.
دید طراحی (Design View): در حالی که دید ایستا مفاهیم برنامه کاربردی را از دیدگاه منطقی مدل می‌کند، این دید ساختار طراحی خود برنامه را مدل می‌کند. نمودارهای پیاده‌سازی که در این دید مورد استفاده قرار می‌گیرند عبارتند از: نمودار ساختار مرکب، نمودار همکاری و نمودار مولفه
دید مورد کاربرد (Use Case view): این دید کارکرد یک موضوع (مثلا یک سیستم) راآن طور که توسط عاملین خارجی که عملگر(Actor) نامیده می‌شوند و با موضوع مورد نظر (سیستم) در یک دیدگاه خاص تعامل دارند نمایش می‌دهد. یک مورد کاربرد در واقع یک واحد کارکرد است که به صورت برهمکنش میان عملگروموضوع بیان می‌شود. نمودار مورد استفاده در این دید نمودار مورد کاربرد است
رفتار پویا(Dynamic Behavior)
رفتار یک سیستم و سایر دسته‌کننده هارا در مرور زمان توصیف می‌کند. یک رفتار به صورت تغییراتی در وضعیت سیستم توصیف می‌شود که در دید ایستا ترسیم می‌شوند. حوزه رفتار پویای سیستم شامل سه دید زیر است:
دید ماشین وضعیت (State Machine View): این دید حالتهای ممکن تاریخچه زندگی شیئی از یک کلاس را مدل می‌کند. یک ماشین وضعیت شامل وضعیت‌هایی(state) است که توسط گذارها(transition) به هم متصل می‌شوند. نمودار مورد استفاده در این دید نمودار ماشین وضعیت است.
دید برهمکنش (Interaction View): دید برهم کنش توالی پیامهای مبادله شونده بین بخش‌های یک سیستم را توصیف می‌کند. این دید نمایی کل گرا از رفتارهای درون یک سیستم را نمایش می‌دهد. این دید از دو نمودار برای نمایش استفاده می‌کند که هریک روی دیدگاه خاصی تمرکز یافته‌اند: نمودار ارتباطات و نمودار توالی
دید فعالیت (Activity View): یک فعالیتدر واقع گردش کنترل در میان فعالیت‌های محاسباتی درگیر در انجام یک محاسبه یا گردش کار می‌باشد. به یک مرحله محاسباتی ابتدایی، یک عمل (Action) گفته می‌شود. به یک گروه از عملها و زیرفعالیتها گره فعالیت گفته می‌شود. فعالیت‌ها با نمودار فعالیت نمایش داده می‌شوند.
چیدمان فیزیکی(Physical Layout)
توصیف‌کننده منابع رایانشی در سیستم و چگونگی پیاده‌سازی مصنوعات مدل روی آن‌ها می‌باشد. این بخش شامل یک دید است:
دید بکارگیری (Deployment View): نمودار به کارگیری مورد استفاده در این دید نمایشگر پیاده‌سازی فیزیکی مصنوعات زمان اجرا روی گره هاست. یک مصنوع در این نمودار یک واحد پیاده‌سازی فیزیکی مانند یک فایل است و یک گره در واقع یک منبع زمان اجرا مانند یک رایانه، دستگاه یا حافظه است.
سازماندهی مدل(Model Organization)
توصیف‌کننده سازماندهی خود مدل‌ها در واحدهای سلسه مراتبی می‌باشد. واحد ژنریک سازماندهی مدل‌ها بسته(package) است. یک مدل در واقع سلسله مراتبی از بسته هاست که انتزاع معنایی کاملی از سیستم از یک دیدگاه خاص است. این بخش شامل یک دید است:
دید مدیریت مدل (Model Management View): این دید سازمان داخلی خود مدل را مدل می‌کند. یک مدل از مجموعه‌ای از بستهها (package) تشکیل می‌شود که در بر دارنده عناصر مدل (مانند نمودارهای کلاس، ماشین وضعیت و مورد کاربرد) است. نمودار مورد استفاده در این دید نمودار بسته‌بندی است.
پروفایل‌های یو ام‌ال (UML Profiles)
یو ام‌ال امکانات گسترش محدودی را در اختیار کاربرانش قرار می‌دهد که برای استفاده‌های معمولی کافی هستند. یکی از این امکانات کلیشهها (stereotype) هستند. یک کلیشه در واقع یک عنصر جدید اضافه شده به عناصر مدلسازی یو ام‌ال است که ساختاری مشابه با یکی از عناصر از پیش موجود دارد با این تفاوت که ممکن است به آن محدودیت‌هایی اضافه کرده باشد یا تفسیر و تصویرش را تغییرداده باشد. یو ام‌ال زبان ویژه‌ای برای تعیین محدودیت‌ها به نام OCL دارد. مجموعه‌ای از چند کلیشه و محدودیت که برای نیل به منظور خاصی ایجاد شده‌اند یک پروفایل یو ام‌ال را تشکیل می‌دهند.
نمودارهای یو ام‌ال
یو ام‌ال توسط نمودارهایی ساختار و رفتار سیستم را نمایش می‌دهد. یک سیستم به صورت مجموعه‌ای از اشیای مجزا مدل می‌شود که برای رسیدن به هدف نهایی سیستم با یکدیگر تعامل دارند. نمودارهای یو ام‌ال نمایشگر دو دیدگاه مختلف از مدل سیستم هستند:
دید ایستا (ساختاری): این دیدگاه تاکید بر نمایش ساختار ایستای سیستم با استفاده از اشیاء، خصوصیت‌ها، عملیات و رابطه‌ها دارد. نمودارهای ساختاری انواع اشیایی که برای سیستم و پیاده‌سازی آن اهمیت دارندو روابط بین اشیاء را تصویر می‌کنند. به عنوان نمونه می‌توان از نمودار کلاس نام برد.
دید پویا (رفتاری): این دیدگاه تاکید برنمایش رفتار پویای سیستم با نشان دادن هماهنگی میان اشیاء و تغییرات وضعیت داخلی اشیاء دارد. به عنوان نمونه می‌توان از نمودار توالی یا نمودار فعالیت نام برد.
یو ام‌ال ۲٫۲، ۱۴ گونه نمودار مختلف دارد که به دو دسته اصلی تقسیم می‌شوند. هفت نمودار برای نمایش اطلاعات ساختاری به کار می‌روند و هفت نمودار دیگر برای نمایش رفتار و برهم کنشها استفاده می‌شوند. شکل زیر یک نمودار کلاس است که دسته‌بندی سلسه مراتبی نمودارهای یوام ال را نشان می‌دهد.
سلسه مراتب نمودارهای یوام ال که، به صورت نمودار کلاس نمایش داده شده‌اند
نمودارهای ساختاری(Structural Diagrams)
نمودارهای ساختاری بر روی چیزهای که باید در سیستم مورد نظر شده موجود باشند، تاکید دارد. از آنجا که این نمودارها ساختار را نمایش می‌دهند، کاربرد گسترده‌ای در مورد معماری سیستم‌های نرم‌افزاری دارند.
نمودار کلاس (Class Diagram): ساختار سیستم را بوسیله نمایش کلاسها، خصوصیات کلاسها و روابط بین آن‌ها توصیف می‌کند.
نمودار مولفه (Component diagram): چگونگی تقسیم سیستم به مولفه‌های آن و وابستگی بین مولفه‌های سیستم را توصیف می‌کند.
نمودار ساختار مرکب (Composite Structure Diagram): ساختار داخلی کلاسها و هماهنگی‌هایی که ممکن می‌سازند را توصیف می‌کند.
نمودار به کارگیری (Deployment Diagram): سخت‌افزار بکار رفته در پیاده‌سازی سیستم و همچنین محیط‌های اجرا و سایر اجزایی که باید بر روی این سخت‌افزار قرار گیرند را توصیف می‌کند.
نمودار شی (Object Diagram): نمایشگر یک دید کامل یا جزیی از ساختار سیستم مدل شده در یک زمان مشخص است.
نمودار بسته‌بندی (Package Diagram): چگونگی تقسیم سیستم به گروه بندیهای منطقی را با نمایش وابستگی‌ها بین این گروه بندیها توصیف می‌کند.
نمودار پروفایل (Profile Diagram)
نمودارهای رفتاری(Behavior diagrams)
نمودارهای رفتاری بر چیزهایی که باید در سیستم مدل شده اتفاق بیفتد تاکید دارند. از آنجا که این نمودارها نمایشگر رفتار سیستم هستند به گستردگی برای توصیف کارکردهای سیستم نرم‌افزاری به کار می‌روند.
نمودار فعالیت (Activity Diagram): نمودار فعالیت برای توصیف قدم به قدم گردش کار تجاری و عملیاتی مولفه‌های سیستم استفاده می‌شود. نمودار فعالیت توصیف‌کننده گردش کنترل در سرتاسر سیستم است.
نمودار ماشین وضعیت (UML State Machine Diagram): این نمودار برای نمایش وضعیت‌های مختلف سیستم و انتقال بین وضعیت‌ها را نمایش می‌دهد.
نمودار مورد کاربرد (Use Case Diagram): کارکرد ارائه شده توسط یک سیستم را در قالب بازیگران (Actor) واهداف آن‌ها که به صورت مورد کاربرد نمایش داده می‌شوند و وابستگی بین موردهای کاربرد، مدلسازی می‌کند.
نمودارهای برهمکنش(Interaction Diagrams)
نمودارهای برهم کنش زیر مجموعه‌ای از نمودارهای رفتاری هستند که بر گردش کنترل و داده‌ها بین چیزهای مختلف در سیستم مدل شده تاکید دارند.
نمودار ارتباطات (Communication Diagram): بر همکنش بین اشیاء یا اجزاء را در قالب توالی پیامهای مبادله شده نمایش می‌دهد. این نمودار نمایانگر ترکیبی از اطلاعات به دست آمده از نمودارهای کلاس، توالی و مورد کاربرد است و هر دوی ساختار ایستا و رفتار پویای سیستم را توصیف می‌کنند.
نمودارکلی برهمکنش (Interaction Overview Diagram): یک دید کلی ارائه می‌دهد که در آن گره‌ها نمایانگر نمودارهای بر همکنش هستند.
نمودار توالی (Sequence Diagram): نشان می‌دهد که اشیاء چگونه با یکدیگر در قالب پیامهایی متوالی ارتباط بر قرار می‌کنند و همچنین نمایشگر طول عمر اشیاء نسبت به این پیامها می‌باشد.
نمودارهای زمانبندی (Timing Diagrams): گونه ویژه‌ای از نمودارهای برهم کنش هستند که بر روی محدودیت‌های زمانبندی تمرکز دارند.
انتقادها
اگرچه یو ام‌ال زبانی استانداردشده و محبوب برای مدلسازی است اما انتقادهایی نیز به آن وارد می‌شود:
استانداردهای حجیم: یکی از انتقادات اساسی به یو ام‌ال در مورد حجم بالای استانداردهای مورد استفاده در این زبان است. یو ام‌ال شامل بسیاری از نمودارها و ساخت‌هایی است که یا اضافی هستند یا به ندرت مورد استفاده قرار می‌گیرند. ایوار یاکوبسون (Ivar Jacobson)، یکی از طراحان یو ام‌ال، می‌گوید که اعتراضاتی که به اندازه یو ام‌ال ۲ می‌شود به اندازه کافی معتبر هستند که باعث شوند استفاده از عامل‌های هوشمند را برای حل مسئله در نظر بگیریم.
؛ مشکل آموزش و به کار گرفتن یو ام‌ال: حجیم بودن یو ام‌ال یادگیری و استفاده از آن را به ویژه برای مهندسینی که مهارتها و دانش پیش نیاز آن را ندارند مشکل می‌سازد. در اغلب موارد افراد نمودارها را با استفاده از سمبل‌های در دسترس در ابزارهای یو ام‌ال طراحی می‌کنند، بی‌آنکه بدانند این سمبلها به چه منظوری بوجود آمده‌اند.
عدم تطابق بین قابلیت‌های یو ام‌ال و قابلیت‌های زبان‌های پیاده‌سازی: همانند سایر سیستم‌های نشان گذاری، یو ام‌ال برخی از سیستم‌ها را مختصر‌تر و موثر ترازبقیه سیستم‌ها نمایش می‌دهد؛ بنابراین یک تولیدکننده نرم‌افزار به سمت راه حلهایی کشیده می‌شود که در فصل مشترک توانایی‌های یو ام‌ال و زبان پیاده‌سازی قرار می‌گیرند. این مشکل در مورد زبان‌های پیاده‌سازی که سازگاری کاملی با دکترین طراحی شی گرا ندارند نمایان‌تر است زیرا فصل مشترک فابلیت‌های این زبان‌ها با یو ام‌ال کوچک‌تر است.
برخی از متخصصین مدلسازی انتقادهای تندی را متوجه این زبان کرده‌اند. از آن جمله‌اند: برتراند مه یر (Bertrand Meyer) در مقاله‌ای با عنوان «یو ام‌ال: چرخش مثبت» و برایان هندرسون-سلرز و سزار گونزالز-پرز در مقاله "استفاده و سوء استفاده از مکانیسم کلیشه در یو ام‌ال ۱و 2".
سیاهه نرم‌افزارهای یو ام‌ال