ایجاد مدل و مدلسازی برای بررسی دقیق انواع مختلف سیستمهای نرمافزاری در مقیاس کوچک و بزرگ به کار میآید. با ساختن مدل این امکان به شما داده میشود با ابعاد مختلف پروژه قبل از ساخت آشنا شوید. گاهی در پروژههای بزرگ به دلیل پیچیدگی بیش از حد نمیشود سیستم را از جنبههای مختلف سنجید. بنابراین برای فهم کامل سیستم، یافتن و نمایش ارتباط بین بخشهای مختلف آن، به مدلسازی میپردازیم. UML زبانی برای مدلسازی یا ایجاد نقشهی تولید نرمافزار است.
در دههی 1980، تعداد رو به رشدی از سازمانها برای ایجاد برنامههای خود، شروع به استفاده از برنامه نویسی شیگرا (OOP) نمودند. بدین ترتیب فقدان یک فرایند تحلیل و طراحی شیگرا استاندارد کاملا احساس گردید. بسیاری از متدولوژیستها مثل Booch، Rumbaugh و Jacobsob – شخصا اقدام به تولید فرایندهای مجزا برای پاسخگویی به این نیاز نموده بودند. هر فرایند دارای نشانگذاری یا زبان خاص خود بود (به صورت شکلهای هندسی مصور)، تا نتایج تحلیل و طراحی را به مخاطب بفهماند.
تا اوایل دههی 1990، سازمانهای مختلف، و حتی بخشهای موجود در درون همان سازمانها، فرایندها و نشانگذاریهای خاص خود را مورد استفاده قرار میدادند. در عین حال، این سازمانها همچنین خواهان استفاده از ابزارهای نرمافزاری بودند که فرایندهای خاص آنها را پشتیبانی نمایند. فروشندگان نرمافزار دریافتند که فراهم نمودن ابزار مناسب برای تعداد زیادی از این پیادهسازیها کار بسیار دشواری است. بدیهی بود که یک نشانگذاری و پیادهسازی استاندارد مورد نیاز بود.
در سال 1994، James Rumbaugh در شرکت نرمافزاری Rational (که بعدها بخشی از IBM شد) به Grady Booch ملحق گردید، و هر دو فعالیت خود را در جهت یکسانسازی پیادهسازیهای متداول آغاز نمودند. به زودی Ivar Jacobson نیز به آنها ملحق شد. در سال 1996، این گروه نسخههای اولیه UML را به جامعهی مهندسی نرمافزار عرضه کردند و خواهان اعلام نتیجه از سوی آنها شدند. در همان زمان، سازمانی به نام گروه مدیریت شی (OMG) فراخوانی برای یک زبان مدلسازی مشترک پیشنهاد داده بود. OMG یک سازمان غیرانتفاعی بود که استانداردسازی تکنولوژیهای شیگرا با انتشار راهبردها و مشخصههایی از قبیل UML ترویج و ترقی داد. شرکتهای متعددی از جمله Microsoft، Oracle، IBM، HP، Rational – که پیش از آن نیاز به یک زبان مدلسازی مشترک را احساس کرده بودند، در پاسخ به فراخوان OMG، نسخه UML 1.1 را توسعه دادند و آن را به OMG ارسال نمودند. OMG این پیشنهاد را در سال 1997 پذیرفت و مسئولیت نگهداری مستمر و بازنگری در UML را برعهده گرفت. در سال 2003، OMG نسخه UML 1.5 را عرضه کرد. در سال 2005 نیز با انتشار UML نسخه 2 تغییرات اساسی نسبت به نسخه ابتدایی UML ایجاد گردید و این نسخه پایهی بسیاری از کتابها، ابزارهای مدلسازی شد. پیدایش UML همه چیز را تغییر داد و باعث رشد چشمگیر مدلسازی تصویری و استفاده گسترده از این زبان شد.
UML امروزه نقش یک زبان بینالمللی را در زمینهی تولید نرمافزار بر عهده دارد. موسسهی آماری گارتنر در سال ۲۰۰۶ تعداد متخصصان فناوری اطلاعات که از UML استفاده مینمودند را ده میلیون نفر برآورد نمود و همچنین تخمین زده است که در سال ۲۰۰۸ هفتاد درصد شرکتهای تولید نرمافزار در سراسر دنیا از UML استفاده کردهاند. در حال حاضر UML بیشترین استفاده را در میان رویههای تصویری برای مدلسازی سیستمهای شیگرا دارد. این زبان رویههای متداول نشانگذاری را کاملا به صورت یکپارچه در آورده است. آنهایی که طراحی سیستمهای نرمافزاری شیگرا را انجام میدهند از این زبان (به صورت اشکال هندسی) برای مدل کردن سیستمهای خود استفاده مینمایند.
یکی از ویژگیهای جذاب UML انعطافپذیری آن است. UML توسعهپذیر است (یعنی توان بهبود یافتن توسط مشخصههای جدید را دارد) و مستقل از هر فرایند تحلیل و طراحی شیگرای خاص است. باید توجه داشت که UML تنها یک زبان نمادگذاری و مدلسازی است و به عنوان یک متدولوژی توسعه نرمافزار استفاده نمیشود. اما اکنون تمامی توسعهدهندگان میتوانند طراحیهای خود را با استفاده از یک مجموعهی استاندارد از نشانگذاریهای تصویری بیان نمایند.
UML برای استفاده در فرایندهای طراحی شیگرا (OOD) طراحی شده است. تعداد فراوانی از چنین فرایندهایی موجود است، که یکی از بهترینهای آن Rational Unified Process است که توسط شرکت نرمافزاری Rational توسعه داده شده است. RUP یک فرایند غنی برای طراحی برنامههای قدرتمند صنعتی محسوب میگردد. RUP امکان استفاده مؤثرتری از زبان یکپارچه مدلسازی (UML) را فراهم میسازد.
آخرین نسخه UML چهارده گونه نمودار برای مستندسازی مدلهای سیستمها فراهم میآورد، هر مدل یک خصیصهی مجزا از ساختار یا رفتار یک سیستم را مدل میکند. هفت نمودار مربوط به ساختار سیستم و هفت نمودار دیگر در ارتباط با رفتار سیستم میباشد.
نمودارهای ساختاری (Structure Diagrams)
- نمودار کلاس (Class Diagram) رایجترین نموداری است که در UML استفاده میشود. این نمودار یک نمای ایستا (static view) از کلاسها را در یک مدل یا بخشی از یک مدل را نشان میدهد. در این نمودار صفات و عملیات کلاس را میتوان به همراه انواع مختلفی از رابطههای بین کلاسها نشان داد. نمودار کلاس نمایی شیگرا از یک سیستم را نشان میدهد.
- نمودار شی (Object Diagram) نمودارهای شی از نمودارهای کلاس مشتق میشوند، بنابراین نمودارهای شی به نمودارهای کلاس وابسته هستند. این نمودار نمونهای از نمودار کلاس را نشان میدهد. مفاهیم اساسی برای نمودارهای کلاس و نمودارهای شی مشابه هستند. نمودارهای شی همچنین دید ایستا از یک سیستم را نشان میدهند اما این دید ایستا یک تصویر یا نسخهی فوری از سیستم در یک لحظه خاص است. نمودارهای شیء برای ارائه مجموعهای از اشیاء و روابط آنها به عنوان نمونه استفاده میشود.
- نمودار بسته (Package Diagram) ساختار سلسله مراتبی بستههای درون سیستم (که گروههایی از کلاسها هستند) در زمان کامپایل و روابطی که میان بستهها وجود دارد را مدل میکند.
- نمودار ساختار مرکب (Composite Structure Diagram) مشابه نمودار کلاس است با این تفاوت که ساختار داخلی یک شی ترکیبی در زمان اجرا را مدل میکند و به طراحان سیستم امکان تجزیهی یک شی ترکیبی به قسمتهای کوچکتر را به صورت سلسله مراتبی میدهند.
- نمودار اجزا (Component Diagram) برای نمایش تصویری از سازماندهی، ترتیب و رابطهی میان اجزا و مولفههای سیستم به کار میرود. این نمودارها برای ایجاد سیستمهای قابل اجرا نیز مورد استفاده میگیرند. به عبارتی این نمودارها چگونگی تقسیم سیستم به مولفههای آن و وابستگی بین مولفههای سیستم را توصیف میکند. نمودارهای اجزا اغلب برای نشان دادن ساختار سیستمهای یکپارچه پیچیده، مورد استفاده قرار میگیرند.
- نمودار استقرار (Deployment Diagram) نیازمندیهای فیزیکی (سختافزاری) زمان اجرای سیستم (مثل کامپیوتر یا کامپیوترهایی که سیستم بر روی آنها مستقر خواهد شد)، نیازمندیهای حافظه، محیط اجرا و سایر ابزارهایی که سیستم در طی اجرا به آنها نیاز دارد را مدل میکند. این نمودار ساختاری، معماری سیستم را در زمان استقرار نرمافزار نشان میدهد. یک نمودار استقرار کارآمد پارامترهای همچون کارایی، مقیاسپذیری، قابلیت نگهداری و قابلیت حمل را کنترل میکند.
- نمودار مشخصات (Profile Diagram) به عنوان مکانیزمی برای گسترش UML استفاده میشود که به شما امکان میدهد که با افزودن بلوکهای ساختاری جدید، ایجاد ویژگیهای جدید و تعیین مفاهیم جدید، UML را گسترش داده و سفارشی کنید تا زبان را برای دامنه مسئلهی خاص خود شخصیسازی کنید.
نمودارهای رفتاری (Behavior Diagrams)
- نمودار کاربرد (Use Case Diagram) تعاملات میان یک سیستم و موجودیتهای خارجی (کنشگرها) را بر مبنای مورد استفاده آنها مدل میکند.
- نمودار فعالیت (Activity Diagram) فعالیت یک شی را مدل میکند و روند کاری (توالی رویدادها) شی در طی اجرای برنامه را نشان میدهد. یک نمودار فعالیت، اعمالی را که شی انجام میدهد مدل میکند و ترتیب انجام این اعمال را از سوی آن مشخص میسازد.
- نمودار حالت (State Machine Diagram)
روشهایی را که یک شی از طریق آنها وضعیت را تغییر میدهند مدل میکند. وضعیت یک شی توسط مقادیر تمامی صفات شی در زمان مورد نظر تعیین میگردد. هنگامی که یک شی وضعیت را تغییر میدهد، ممکن است آن شی در سیستم به شکلی متفاوت رفتار نماید.
نمودارهای تعامل (Interaction Diagrams) زیر مجموعهای از نمودارهای رفتاری هستند که بر گردش کنترل و دادهها بین چیزهای مختلف در سیستم مدلشده تأکید دارند.- نمودار توالی (Sequence Diagram) تعاملات میان اشیا یک سیستم را مدل میکند اما برخلاف نمودارهای ارتباط، آنها بر زمان وقوع تعاملها تاکید دارند. این نمودارها به نشان دادن ترتیب وقوع تعاملها در زمان اجرای یک عملیات کمک مینمایند.
- نمودار ارتباط (Communication Diagram) تعاملات میان اشیا را با تاکید بر کاری که تعاملها انجام میدهند، در یک سیستم مدل میکند.
- نمودار زمانبندی (Timing Diagram) فشارها و محدودیتهای زمانی تحمیلشده بر تغییرات میدانی و تعاملات اشیا در یک سیستم را مدل میکنند.
- نمودار چشمانداز ارتباط (Interaction Overview Diagram) با ترکیب عناصری از انواع متعدد نمودارهای رفتاری (مثل نمودارهای فعالیت و نمودارهای توالی) چشماندازی از جریان کنترل در سیستم را فراهم مینماید.