در زمینه مهندسی نرمافزار، همیشه کدنویسی حرف اول را نمیزند. گاهی اوقات، یک زبان تصویرمحور برای مدلسازی استاندارد لازم است که زبان مدلسازی یکنواخت کار را برای مهندسان نرمافزار ساده کند. Unified Modeling Language که به اختصار به UML معروف است و به زبان مدلسازی یکنواخت شناخته میشود، تشکیل شده از مجموعهای یکپارچه از نمودارها است که برای کمک به توسعهدهندگان سیستم و نرمافزار جهت تعیین، تجسم، ساخت و مستندسازی از بخشهای مختلف سیستمهای نرمافزاری استفاده میشود. همچنین برای مدلسازی در کسب و کار و زمینههای دیگری که به برنامهنویسی مرتبط نیستند، میتوان از UML بهرهمند شد.
چرا از زبان UML استفاده میکنیم؟
سوالی که شاید برای شما هم پیش آمده باشد، این است که چرا اصلا مهندسان نرمافزار، وقتی میتوانند از کدنویسی برای توسعه استفاده کنند، خودشان را درگیر چارت و نمودار کنند؟ جواب در کاربرد زبان مدلسازی یکنواخت پیدا میشود. در واقع وقتی به تاریخچهی UML در مهندسی نرمافزار نگاه کنیم، مجموعهای از بهترین شیوههای مهندسی را خواهیم دید که در مدلسازی سیستمهای بزرگ و پیچیده موفق بوده است.
طراحی UML بخش بسیار مهمی از توسعه نرمافزار شیگرا و فرآیند توسعه نرمافزار است. این زبان عمدتاً از نمادهای گرافیکی برای بیان طراحی پروژههای نرمافزاری استفاده میکند. استفاده از UML به تیمهای پروژه کمک میکند تا با هم ارتباط برقرار کنند، طرحهای بالقوه را بررسی کنند و طراحی معماری نرمافزار را تأیید کنند.
هدف UML ارائه یک نماد استاندارد است که میتواند توسط تمام روشهای شیگرا استفاده شود و بهترین عناصر نمادهای پیشرو را انتخاب و ادغام کند. در حقیقت زبان UML برای طیف گستردهای از برنامهها طراحی شده است. بنابراین، علاوه بر سیستمهای نرمافزاری، کسب و کارها و مدیران نیز میتوانند از آن بهرهمند شوند.
یکی دیگر از دلایل محبوبیت زبان مدلسازی یکنواخت را میتوان علاقه فعالان صنعت نرمافزار به اتوماسیون همه بخشهای کار خود دانست. چرا که این کار، یعنی خودکارسازی روند تولید نرمافزار، بهبود کیفیت و کاهش هزینه و زمان عرضه به بازار را به دنبال خواهد داشت.
از سویی برنامه نویسی بصری، الگوها و چارچوبها روشی سریع برای انتقال دادهها و اطلاعات به حساب میآید. البته از حق هم نگذریم، مدیریت و مستندسازی چند چارت، خیلی سادهتر از مدیریت مستندات غیربصری یک پروژه یا بخش در کسب و کار خواهد بود. در این صورت، اگر در روند تولید نرمافزار، جایی احتیاج به تغییر، به روزرسانی، تکرار و… داشته باشد، به راحتی از طریق زبان مدلسازی یکنواخت، میتواند این تغییرات را پیگیری کرد. در حقیقت زبان مدلسازی یکپارچه برای پاسخگویی به این سبک نیازها طراحی شده است.
امکانات و ویژگیهای زبان مدلسازی یکنواخت
به طور کلی با UML میتوانید به امکانات زیر دسترسی داشته باشید:
- ارائه زبان مدلسازی بصری آماده برای تهیه و تبادل مدلهای معنادار
- ارائه سازوکارهای توسعه پذیری و تخصصی برای گسترش مفاهیم اصلی
- مستقل از زبانهای برنامه نویسی خاص و فرآیندهای توسعه
- فراهم کردن یک مبنای رسمی برای درک زبان مدلسازی
- پشتیبانی از مفاهیم توسعه سطح بالای شیگرایی، از جمله: Collaboration، Framework، Pattern و Component
- امکان ادغام مدلسازیهای مختلف
- امکان استفاده از مهندسی رو به جلو و تبدیل مدلها به کدهای برنامه نویسی مثل جاوا
- امکان استفاده از مهندسی معکوس و تبدیل کدهای برنامه نویسی به مدل
در ادامه به ۸ مورد از اساسیترین نمودارهای UML اشاره خواهیم کرد:
- نمودار کلاس (Class Diagram): نمایشدهندهی کلاسها، واسطها و ارتباطی که بین اجزای کلاس وجود دارد
- نمودار اشیا (Object Diagram): نمایشدهندهی اشیا سیستم و تصویر لحظهای از نمودار کلاس
- نمودار مورد کاربرد (Use Case Diagram): نمایشدهندهی تعامل کاربران با سیستم و شرح نیازمندیها، معماری و پیادهسازی کلی سیستم
- نمودار تعامل (Interaction Diagram): نمایشدهندهی تعامل اجزای مختلف سیستم از جمله اشیا و پیغامهای تبادل شده بین آنها
- نمودار حالت (State Chart Diagram): نمایشدهندهی حالات و رخدادهای بین اشیا و به طور کلی چرخهی حیات سیستم
- نمودار فعالیت (Activity Diagram): نمایشدهندهی فعالیتهای ترتیبی انجام یک عملیات در سیستم
- نمودار اجزا (Component Diagram): نمایشدهندهی مدل ایستایی از سیستم پیادهسازی شده
- نمودار بهکارگیری (Deployment Diagram): نمایشدهندهی اجزای استفاده شده در سیستم مثل کتابخانهها، کدها، فایلها و…
اصطلاحات مهم در زبان مدلسازی یکنواخت
ممکن است در زبان مدلسازی یکنواخت با اصطلاحاتی روبهرو شوید که به درستی کاربرد آن را ندانید. در ادمه مهمترین اصطلاحات UML در قالب یک لغتنامه گرداوری شده است. البته این اصطلاحات، که به همت سایت Visual Paradigm جمعآوری شده است، فقط بخشی از عبارات موجود در زبان مدلسازی یکپارچه به حساب میآید.
- Abstract: کلاسی که هرگز نمونهسازی نمیشود یعنی نمونهای از این کلاس هرگز وجود نخواهد داشت.
- Actor: یک شی یا شخصی که شروعکنندهی رویدادهایی است که سیستم با آنها درگیر است.
- Aggregation: بخشی از یک کلاس است که با یک لوزی توخالی در کنار آن کلاس در نمودارها نشان داده میشود.
- Articrafts: اسنادی گرافیکی، متنی یا ترکیبی، که خروجی یک مرحله در فرآیند طراحی را توصیف میکند.
- Attributes: ویژگیهای یک شی که ممکن است برای ارجاع به اشیاء دیگر یا ذخیره اطلاعات وضعیت شی استفاده شود.
- Class: دستهای از اشیاء مشابه که همگی با ویژگیها و عملیات یکسان توصیف میشوند.
- Classifier: یک عنصر UML که دارای ویژگیها و عملیات یا به طور خاص، Actor، Class و Interfaces است.
- Component: یک واحد کد قابل استقرار در سیستم.
- Concept: یک اسم یا ایده انتزاعی که باید در مدل Domain گنجانده شود.
- Domain: بخشی از جهان که سیستم با آن درگیر است.
- Element: هر چیزی که در یک مدل ظاهر شود.
- Encapsulation: دادهها در اشیا خصوصی هستند.
- Fork: نقطهای در نمودار فعالیت که در آن چندین رشته کنترل موازی شروع میشود.
- GoF: مجموعهای از الگوهای طراحی چهارتایی (Gang of Four)
- Initial State: در یک نمودار وضعیت یا یک نمودار فعالیت، نقطه شروع نمودار را نشان می دهد.
- Instance: یک کلاس مانند یک الگو برای ایجاد یک شی رفتار میکند. این شی یک نمونه از کلاس نامیده میشود.
- Join: نقطهای در نمودار فعالیت که در آن چندین رشته کنترل موازی همگام شده و دوباره به هم میپیوندند.
- Member: یک ویژگی یا یک عملیات در یک Classifier.
- Merge: نقطهای در نمودار فعالیت که در آن مسیرهای کنترلی مختلف در کنار هم قرار میگیرند.
- Method: یک تابع در یک شی.
- Notation: سند گرافیکی با قوانینی برای ایجاد روشهای تجزیه، تحلیل و طراحی.
- Note: یک یادداشت متنی الحاق شده به نمودار جهت نمایش توضیحات بیشتر.
- Object: شی که وظیفه آن در این است که اطلاعات را از Activities دریافت یا در اختیار آن قرار دهد.
- Package: گروهی از عناصر زبان مدلسازی یکنواخت که به طور منطقی باید با هم گروهبندی شوند.
- Pattern: راه حلها یا الگوهایی برای تعیین مسئولیت اشیا در تعاملات.
- Parameter: آرگومان یک عملیات.
- Polymorphism: چند شکلی که پیام یکسان اما تابع متفاوت دارد. همچنین به عنوان الگو استفاده میشود.
- Role: نقشی که در مدل Domain استفاده میشود و توضیحی اختیاری در مورد نقش یک Actor است.
- State: در نمودار حالت، یک حالت از یک سیستم یا زیرسیستم را نشان میدهد. یعنی کار و مقادیر دادهای که در یک نقطه از زمان انجام شده.
- Workflow: گردش کار یا مجموعهای از فعالیتها که نتایج خاصی را ایجاد میکند.
سخن پایانی
با اینکه استفاده از کدهای برنامه نویسی برای توسعه نرمافزاری شرطی لازم است، اما شرط کافی نیست. برای توسعه نرمافزار به صورت اصولی، مدیران نیازمند یک جریان کار بصری خواهند بود که علاوه بر تبادل اطلاعات در سریعترین زمان ممکن، کاملا قابل فهم و ساده باشد. بنابراین، پای زبان مدلسازی یکنواخت یا UML به حوزه توسعه نرمافزاری باز میشود. البته که این زبان صرفا برای توسعه نرمافزاری کاربرد ندارد و مدیران بخشهای مختلف میتوانند برای به تصویر کشیدن سیستمها و استراتژیهای مختلف از آن بهره ببرند.