زبان UML چیست
زبان UML چیست ؟ UML(Unified Modeling Language) یک زبان استاندارد برای مشخص کردن، تجسم، ساختن و مستندسازی مصنوعات سیستم های نرمافزاری است. گروه مدیریت شی (OMG) پیش نویس مشخصات UML و UML 1.0 را در ژانویه 1997 به OMG پیشنهاد کرد. اگرچه UML معمولا برای مدلسازی سیستمهای نرمافزاری استفاده میشود، اما در این مرز محدود نمیشود. همچنین برای مدلسازی سیستمهای غیرنرمافزاری و همچنین مانند جریان فرآیند در یک واحد تولیدی و غیره استفاده میشود. UML یک زبان برنامهنویسی نیست، اما میتوان از ابزارها برای تولید کد در زبانهای مختلف با استفاده از نمودارهای UML استفاده کرد. پیشنهاد میشود تا در مورد استخراج و تحلیل نیازمندی ها مطالعه کنید.
همچنینUML برای توصیف، طراحی و مستندسازی سیستمهای نرمافزاری استفاده میشود. این زبان به توسعهدهندگان کمک میکند تا ایدههای خود را به صورت بصری نمایش دهند.
کاربرد های اصلی UML
UML در مراحل مختلف توسعه نرمافزار، از تحلیل نیازمندیها تا طراحی و پیادهسازی، کاربرد دارد. این زبان به ویژه در پروژههای بزرگ و پیچیده بسیار مفید است. با استفاده از UML، میتوانید سیستمهای پیچیده را به صورت بصری مدلسازی کرده و ارتباطات بین اجزا را به وضوح نشان دهید.
- مدلسازی معماری سیستم:
با استفاده از UML میتوان معماری کلی سیستم را مدلسازی کرد. این مدلها شامل ساختارهای مختلف سیستم، مانند کلاسها، اشیاء، و اجزاء مختلف میشوند.
- مدلسازی رفتار سیستم: UML
به شما اجازه میدهد که رفتار سیستم را به صورت نمودارهای مختلفی مانند Use Case Diagram، Sequence Diagram، و Activity Diagram مدلسازی کنید. این نمودارها نحوه تعامل اجزاء سیستم با یکدیگر و با کاربر را نشان میدهند.
- طراحی و توسعه نرمافزار:
در فرایند توسعه نرمافزار، از UML برای طراحی اولیه نرمافزار و مشخص کردن جزئیات دقیق آن استفاده میشود. این طراحیها به تیم توسعه کمک میکنند تا یک دید کلی و دقیق از سیستم داشته باشند.
- مستندسازی سیستم:UML
به عنوان ابزاری برای مستندسازی سیستمها نیز مورد استفاده قرار میگیرد. این مستندسازی شامل تمامی جزئیات سیستم، از معماری کلی تا جزئیات دقیق رفتار و تعاملات اجزا است.
- مهندسی مجدد و تحلیل سیستمها:
از UML میتوان برای تحلیل سیستمهای موجود و مهندسی مجدد آنها نیز استفاده کرد. این کار باعث میشود که نقاط ضعف و قوت سیستمهای موجود شناسایی شده و بهبودهای لازم اعمال شوند.
- مدیریت پروژه:
با استفاده از UML، مدیران پروژه میتوانند نقشهها و طرحهای پروژه را به صورت دقیق و قابل فهم به تیمهای مختلف ارائه دهند. این کار باعث هماهنگی بیشتر در تیمها و تسهیل در مدیریت پروژه میشود.
دیاگرام های زبان UML
زبان UML شامل چندین نوع دیاگرام است که هرکدام برای نمایش جنبههای مختلف یک سیستم طراحی شدهاند. برخی از این دیاگرامها عبارتند از:
دیاگرام کلاس (Class Diagram):
نمایش ساختار کلاسها و روابط بین آنها
دیاگرام توالی (Sequence Diagram):
نمایش تعاملات بین اشیاء در طول زمان
دیاگرام حالت (State Diagram):
نمایش وضعیتهای مختلف یک شی و انتقال بین آنها
دیاگرام فعالیت (Activity Diagram):
نمایش جریان کار یا فرآیندها
مزایای زبان استاندارد UML
- وضوح: کمک به درک بهتر سیستم
- مستندسازی: ایجاد مستندات مفید برای توسعهدهندگان و ذینفعان
- توسعه همکاری: تسهیل ارتباطات بین اعضای تیم.
ابزارهای UML
ابزارهای مختلفی برای مدلسازی UML وجود دارند که هر کدام قابلیتها و ویژگیهای خاص خود را دارند. برخی از ابزارهای معروف UML عبارتند از:
- Visual Paradigm
ویژوال پارادایم چیست ؟ این ابزار قدرتمند امکان ایجاد انواع نمودارهای UML را فراهم میکند و برای تیمهای توسعه نرمافزار بسیار مناسب است. قابلیتهای ویژهای مانند مهندسی معکوس کد و تولید کد از نمودارها نیز دارد. برای آموزش کاربردی نرم افزار ویژوال پارادایم پیشنهاد میشود تا از دوره های eBPM استفاده کنید.
- Enterprise Architect
این ابزار یکی از محبوبترین ابزارهای UML است که امکانات کاملی برای طراحی و مستندسازی سیستمها فراهم میکند. از جمله ویژگیهای این ابزار میتوان به پشتیبانی از انواع نمودارهای UML و قابلیت یکپارچهسازی با دیگر ابزارهای مهندسی نرمافزار اشاره کرد.
- StarUML
یک ابزار منبع باز که امکانات گستردهای برای ایجاد و ویرایش نمودارهای UML فراهم میکند. این ابزار به خصوص برای کاربرانی که به دنبال یک راهحل اقتصادی و کارآمد هستند، مناسب است.
- IBM Rational Rose
این ابزار پیشرفته که توسط IBM توسعه یافته است، امکانات کاملی برای مدلسازی و طراحی سیستمهای نرمافزاری فراهم میکند. یکی از ویژگیهای برجسته این ابزار، قابلیت یکپارچهسازی با دیگر محصولات IBM است.
- ArgoUML
یک ابزار منبع باز و رایگان که امکانات اولیه برای ایجاد نمودارهای UML را فراهم میکند. این ابزار به خصوص برای دانشجویان و مبتدیانی که میخواهند با UML آشنا شوند، مناسب است.
- Lucidchart
این ابزار آنلاین برای ایجاد انواع نمودارها از جمله نمودارهای UML مناسب است. Lucidchart به کاربران اجازه میدهد به صورت همزمان با دیگر اعضای تیم بر روی یک پروژه کار کنند و به راحتی نمودارهای خود را به اشتراک بگذارند.
هر کدام از این ابزارها ویژگیها و قابلیتهای خاص خود را دارند که میتوانند به شما در مدلسازی و طراحی سیستمهای نرمافزاری کمک کنند. در این مقاله ما قصد داریم دیاگرام کلاس توضیح دهیم.
دیاگرام کلاس ( Class Diagram UML)
نشانهگذاری کلاس UML
یک کلاس مفهومی را نشان می دهد که حالت (ویژگی ها) و رفتار (عملیات) را در بر می گیرد. هر صفت دارای یک نوع است. هر عملیات دارای یک امضا است. نام کلاس تنها اطلاعات اجباری است.
- نام کلاس:
- نام کلاس در پارتیشن اول ظاهر میشود.
- ویژگیهای کلاس:
- ویژگی ها در پارتیشن دوم نشان داده شدهاند.
- نوع ویژگی بعد از دو نقطه نشان داده شده است.
- ویژگیها بر روی متغیرهای عضو (اعضای داده) در کد نگاشت میشوند.
- عملیات کلاس (روش ها):
- عملیات در پارتیشن سوم نشان داده شده است. آنها خدماتی هستند که کلاس ارائه میدهد.
- نوع برگشتی یک متد بعد از دو نقطه در انتهای امضای متد نشان داده میشود.
- نوع برگشتی پارامترهای روش بعد از دو نقطه بعد از نام پارامتر نشان داده میشود. عملیات بر روی متدهای کلاس در کد نگاشت میشوند.
- دید کلاس
نمادهای +، – و # قبل از یک ویژگی و نام عملیات در یک کلاس نشان دهنده قابل مشاهده بودن ویژگی و عملیات است.
+ نشان دهنده ویژگیها یا عملیات عمومی است.
– نشان دهنده ویژگیها یا عملیات خصوصی است.
# نشان دهنده ویژگیها یا عملیات محافظت شده است.
- جهت گیری پارامتر
هر پارامتر در یک عملیات (روش) ممکن است به صورت داخل، خارج یا خارج مشخص شود که جهت آن را نسبت به تماس گیرنده مشخص می کند. این جهت قبل از نام پارامتر نشان داده شده است.
- دیدگاه های نمودار کلاس
انتخاب دیدگاه بستگی به این دارد که تا چه اندازه در روند توسعه قرار دارید. برای مثال، در طول فرمول بندی یک مدل دامنه، به ندرت از دیدگاه مفهومی عبور می کنید. مدلهای تحلیل معمولاً ترکیبی از دیدگاههای مفهومی و مشخصات را نشان میدهند. توسعه مدل طراحی معمولاً با تأکید زیاد بر دیدگاه مشخصات شروع می شود و به چشم انداز پیاده سازی تکامل می یابد.
- نمودار را می توان از جنبه های مختلف تفسیر کرد:
- مفهومی: مفاهیم موجود در حوزه را نشان می دهد
- مشخصات: تمرکز بر روی رابط های Abstract Data Type (ADTs) در نرم افزار است
- پیاده سازی: توضیح می دهد که چگونه کلاس ها رابط های خود را پیاده سازی می کنند
دیدگاه بر میزان جزئیاتی که باید ارائه شود و انواع روابط ارزش ارائه را تحت تأثیر قرار می دهد. همانطور که در بالا ذکر کردیم، نام کلاس تنها اطلاعات اجباری است.
- روابط بین طبقات
UML فقط در مورد تصاویر زیبا نیست. اگر به درستی استفاده شود، UML دقیقاً نحوه پیادهسازی کد را از نمودارها نشان میدهد. اگر به طور دقیق تفسیر شود، کد پیاده سازی شده به درستی هدف طراح را منعکس می کند.
- وراثت (یا تعمیم)( Inheritance or Generalization):
تعمیم یک رابطه طبقه بندی بین یک طبقه بندی عمومی تر و یک طبقه بندی خاص تر است. هر نمونه از طبقه بندی کننده خاص نیز یک نمونه غیر مستقیم از طبقه بندی کننده عمومی است. بنابراین، طبقهبندیکننده خاص ویژگیهای طبقهبندیکننده عمومیتر را به ارث میبرد.
نشان دهنده یک رابطه “is-a” است.
نام کلاس انتزاعی به صورت مورب نشان داده شده است.
SubClass1 و SubClass2 تخصص های SuperClass هستند.
شکل زیر نمونه ای از سلسله مراتب وراثت را نشان می دهد. SubClass1 و SubClass2 از SuperClass مشتق شده اند. این رابطه به صورت یک خط ثابت با یک سر پیکان توخالی نمایش داده می شود که از عنصر فرزند به عنصر والد اشاره می کند.
- انجمن(Association)
انجمن ها روابط بین کلاس ها در نمودار کلاس UML هستند. آنها با یک خط ثابت بین کلاس ها نشان داده می شوند. انجمن ها معمولاً با استفاده از یک فعل یا عبارت فعل نامگذاری می شوند که دامنه مشکل دنیای واقعی را منعکس می کند.
- انجمن ساده(Simple Association)
پیوند ساختاری بین دو کلاس همتا.
بین کلاس 1 و کلاس 2 ارتباط وجود دارد
شکل زیر نمونه ای از ارتباط ساده را نشان می دهد. ارتباطی وجود دارد که کلاس <<control>> کلاس Class1 و <<boundary>> کلاس Class2 را به هم متصل می کند. این رابطه به صورت یک خط ثابت که دو کلاس را به هم متصل میکند، نمایش داده می شود.
- کاردینالیته(Cardinality)
کاردینالیته به صورت زیر بیان می شود:
- یک به یک
- یک به بسیاری
- بسیاری از بسیاری
- تجمع(Aggregation)
یک نوع خاص از انجمن است.
این یک “بخشی از” رابطه را نشان می دهد.
کلاس 2 بخشی از کلاس 1 است.
بسیاری از نمونهها (که با * مشخص میشوند) کلاس 2 را میتوان با کلاس 1 مرتبط کرد.
اشیاء کلاس 1 و 2 دارای طول عمر جداگانه هستند.
شکل زیر نمونه ای از تجمیع را نشان می دهد. این رابطه به صورت یک خط یکپارچه با یک الماس پر نشده در انتهای ارتباط نمایش داده می شود که به کلاسی که کل را نشان می دهد متصل است.
- ترکیب
یک نوع خاص از تجمع که در آن قطعات با از بین رفتن کل از بین می روند.
اشیاء کلاس 2 با کلاس 1 زندگی می کنند و می میرند.
کلاس 2 نمی تواند به تنهایی بایستد.
شکل زیر نمونه ای از ترکیب را نشان می دهد. این رابطه به صورت یک خط ثابت با یک الماس پر شده در انتهای تداعی نمایش داده می شود که به کلاسی که کل یا ترکیب را نشان می دهد متصل است.
- وابستگی
یک شی از یک کلاس ممکن است از یک شی کلاس دیگر در کد یک متد استفاده کند. اگر شی در هیچ فیلدی ذخیره نشده باشد، آنگاه به عنوان یک رابطه وابستگی مدل می شود.
یک نوع خاص از انجمن است.
بین دو کلاس وجود دارد اگر تغییر در تعریف یکی ممکن است باعث تغییر در دیگری شود (اما نه برعکس).
کلاس 1 به کلاس 2 بستگی دارد
شکل زیر نمونه ای از وابستگی را نشان می دهد. این رابطه به صورت یک خط چین با یک فلش باز نمایش داده می شود.
شکل زیر نمونه دیگری از وابستگی را نشان میدهد. کلاس Person ممکن است متد hasRead با پارامتر Book داشته باشد که اگر شخص کتاب را خوانده باشد (شاید با بررسی برخی پایگاه داده) true را برمی گرداند.
- تحقق:
Realization یک رابطه بین کلاس طرح و شی حاوی جزئیات سطح پیادهسازی مربوطه آن است. گفته میشود که این شی کلاس طرح اولیه را درک میکند. به عبارت دیگر، شما میتوانید این را به عنوان رابطه بین رابط و کلاس پیادهسازی درک کنید.
برای مثال، رابط مالک ممکن است روشهایی را برای به دست آوردن دارایی و دفع دارایی مشخص کند. طبقات Person و Corporation نیاز به پیاده سازی این روش ها دارند، احتمالاً به روشهای بسیار متفاوت.
مثال نمودار کلاس در UML
سیستم سفارش
رابط کاربری گرافیکی
یک نمودار کلاس ممکن است دارای یادداشتهایی به کلاسها یا روابط باشد.