آموزش جامع UML ویژۀ برنامه نویس ها و تشریحی بر 13 نوع UML شناخته شده
یک تصویر، معانی بسیاری را بیان می کند پس ایدۀ یک زبان بصری برای مدل سازی System های نرم افزاری می تواند جذاب باشد اما بیشتر از جذاب بودن در حقیقت حیاتی هم هست! برای همین با توجه به نیاز ما برای ترسیم بصری عملکرد انواع سیستم ها (مانند تعاملات سیستم های سخت افزاری، نرم افزاری، شبکه ای، کسب و کار تجاری، تعاملات میان موجودیت های سازندۀ یک اپلیکیشن و …)، زبان مدل سازی یک پارچه یا UML (Unified Modeling Language) ساخته شد.
ایجاد یک زبان دیداری مشترک در جهان پیچیدۀ توسعۀ نرم افزار که برای کاربران تجاری و هر کسی که می خواهد System ها را درک کند، قابل فهم باشد؛ برای شرکت های گنده ای مانند Microsoft و آمازون و گوگل و… تبدیل به یک نیاز حیاتی شده بود برای همین از این ایده که طرح اولیۀ آن توسط سه مهندس سرشناس نرم افزار مطرح شده بود حمایت کردند.
در این مقاله پیش نیاز های نمودارهای UML را به همراه منشاء ها، کاربردها، مفهوم ها، انواع و دستورالعمل های مربوط به شیوۀ ترسیم آنها، با استفاده از ابزار های UML یادبگیرید.
UML چیست؟
UML (زبان مدل سازی یکپارچه) برای ایجاد یک زبان مدل سازی بصری مشترک، نحویِ غنی (Synctactically rich) برای معماری و طراحی و پیاده سازی System های نرم افزاری پیچیده از نظر ساختاری و رفتاری ایجاد شد.
UML کاربرد هایی فراتر از توسعۀ نرم افزار دارد؛ برای نمونه، جریان فرآیند در تولید.
UML شبیه به نقشه های مورد استفاده در زمینه های دیگر است و از انواع گوناگونی از نمودارها تشکیل شده است که در این مقاله تشریحی مختصر بر 13 تای آنها خواهیم داشت.
روی هم رفته، نمودار های UML مرز، ساختار و رفتار System ها و شئ های درون System را توصیف می کنند.
UML یک زبان برنامه نویسی نیست اما ابزارهایی وجود دارند که می توانند برای تبدیل UML به کدهای انواع زبان های برنامه نویسی بکار بروند. UML ارتباط مستقیمی با تحلیل و طراحیِ برنامه نویسی شئ گرا دارد.
UML و نقش آن در برنامه نویسی شئ گرا برای مدل سازی و طراحی
الگو ها یا مدل های حل مسئلۀ بسیاری درعلوم کامپیوتر وجود دارند. الگوریتم ها و داده ها همان ها می باشند. چهار دسته مدل حل مسئله وجود دارد: زبان های دستوری، تابع گرا، اعلامی و شئ گرا (OOP).
در زبان های شئ گرا، الگوریتم با تعریف «شئ ها» و تعامل شئ ها با یکدیگر بیان می شود. آن شئ ها چیزهایی هستند که باید دستکاری شوند و در جهان واقعی وجود دارند. آنها می توانند ساختمان ها، widgets های روی Desktop یا آدم ها باشند(یعنی شئ به معنای واقعی شئ بودن).
زبان های برنامه نویسی شئ گرا بر جهان برنامه نویسی تسلط دارند زیرا آنها جهان واقعی را مدل سازی می کنند. UML ترکیبی از چندین نماد شئ گرایی هست : طراحی شئ گرا، شگرد مدل سازی شئ و مهندسی نرم افزار شئ گرا.
UML از نقطه های قوت این سه رویکرد برای ارائه یک روش استوارتر بهره می برد که استفاده کردن از آن، آسانتر است.
UML نشان دهندۀ بهترین کُنش ها برای ساخت و مستندسازی جنبه های گوناگون نرم افزار و مدل سازی System های تجاری است.
تاریخچه و سرآغاز UML
سه دوست که مهندس نرم افزار و سرشناس بودند، روش های دیگری را تکامل داده بودند. آنها با ایجاد استاندارد های جدید برای روشنی افزایی به برنامه نویسی، همگام شده بودند.
همکاری Booch، Grady و Rumbaugh هر سه روش یادشده را قوی تر کرد و محصول نهایی را بهبود بخشید. کوشش های این اندیشمندان به انتشار مستندات UML نسخۀ 0.9/0.91 فرجامید.
دیری نگذشت که چندین شرکت از جمله Microsoft، Oracle و IBM ، زبان مدل سازی یکپارچه (UML) را برای کسب و کار خود حیاتی یافتند. آنها همراه با بسیاری دیگر از افراد و شرکت ها، منابعی را ایجاد کردند که می توانست یک زبان مدل سازی کامل را توسعه دهد.
آن سه دوست مزبور، دفترچه راهنمای کاربران، را در سال 1999 انتشار دادند. در ادامه نیز UML نسخۀ 2.0 در سال 2005 منتشر شد.
OMG
طبق وبسایت آنها Object Management Group® (OMG®) یک کنسرسیوم (همکاری چندین شرکت از کشور های گوناگون) فناوری غیر انتفاعی که در سال 1989 تاسیس شد. استاندارد های OMG توسط فروشندگان، کاربران نهایی، بنیاد های دانشگاهی و سازمان های دولتی هدایت می گردد.
گروه های وظیفۀ OMG استاندارد های یکپارچه سازی سازمانی را برای طیف گسترده ای از فناوری ها و حتی طیف گسترده تری از منابع توسعه می دهند.
استاندارد های مدل سازی OMG، که از جملۀ آنها UML و Model Driven Architecture® (MDA®) هستند، طراحی بصری قدرتمند و نیز اجرا و نگهداری نرم افزار و سایر فرآیند ها را ممکن می سازند.
OMG بر تعریف و نگهداری مشخصات UML نظارت دارد. این نظارت به مهندسان و برنامه نویسان توانایی استفاده از تنها یک زبان از برای هدف های گوناگون در تمام مرحله های چرخۀ عمر نرم افزار، بدون وابستگی به اندازه های System ها را می دهد.
هدف های UML بر بنیاد OMG
OMG هدف های UML را بدین صورت تعریف می کند:
- ارائۀ ابزارهایی به معماران System ها، مهندسان نرم افزار و توسعه دهندگان نرم افزار، از برای تجزیه و تحلیل، طراحی، و پیاده سازی System های مبتنی بر نرم افزار و همچنین برای مدل سازی کسب و کار و فرآیند های مشابه.
- پیشرفت وضعیت صنعت با فعال کردن قابلیت همکاری از طریق مدل سازیِ بصریِ شئ. با این روی، برای فعال کردن تبادل معنا دار اطلاعات مدل، میان ابزار ها، توافق بر سر معنا شناسی و نماد شناسی مورد نیاز است.
UML الزامات زیر را فراهم می کند:
- دستور زبان انتزاعی، مجموعه ای از مفهوم های مدل سازی، ویژگی هایشان و رابطه هایشان؛ همچنین قوانین ترکیب این مفهوم ها را از برای ساخت مدل های جزئی یا کامل UML، تعریف می کند. دستور زبان انتزاعی به صورت رسمی بربنیاد دانش های مربوطه تعریف می گردد.
- ارائه توضیح های مفصلی از معناشناسیِ هر مفهوم پیاده سازی UML. معناشناسی، به روشی مستقل از فناوری، چگونگی درک مفهوم های UML توسط رایانه ها را تعریف می کند.
- تعیین عنصرهای قابل نشانه گذاریِ قابل خواندن توسط انسان، از برای نمایش مفهوم های مدل سازی فردی UML، و همچنین قانون هایی از برای ترکیب آنها در انواع مختلف نمودار های متناظر با جنبه های گوناگون System های مدل شده.
- تعریف روش هایی که ابزار های UML را می توان با مشخصه هایی از جمله زبان XML سازگار کرد. یعنی مثلا ما می توانیم UML را به زبان XML و برعکس تبدیل کنیم.
UML و مدل سازی داده ها
UML در میان توسعه دهندگان محبوب است. اما به طور کلی توسط توسعه دهندگان پایگاه داده استفاده نمی گردد. یکی از دلیل ها آنست سازندگان UML بر روی پایگاه داده ها تمرکز نکرده اند.
با این وجود، UML برای مدل سازی داده های مفهومی سطح بالا موثر است و می توان از آن در انواع مختلف نمودارهای UML بهره جویید.
برای تسلط به آخرین روش های برنامه نویسی اندروید و تمام معماری های رواج در اندروید، این دوره را ببینید
مفهوم های مدل سازی مشخص شده توسط UML
توسعۀ System های رایانه ای بر سه مدل System به طور کلی متفاوت، متمرکز است :
- Functional : اینها نمودارهای موردی هستند که عملکرد System را از دیدگاه کاربر تعریف می کنند.
- Object : اینها نمودارهای کلاسی هستند که ساختار System را بر حسب شئ ها، ویژگی ها، تداعی ها و عملیات ها توصیف می کنند.
- Dynamic : نمودارهای Interaction (تعامل)، نمودارهای State Machine (ماشین حالت)، و نمودارهای Activity (فعالیت) برای توصیف رفتار داخلی همداد استفاده می گردد.
این مدل های System ای از طریق دو نوع نمودار گوناگون مجسم می گردند : Structural (ساختاری) و Behavioral (رفتاری).
مفهوم های شئ گرایی در UML
شئ ها در UML موجودات دنیای واقعی هستند، که در اطراف ما وجود دارند. در توسعۀ نرم افزار، شئ ها را می توان برای توصیف یا مدل سازی یک System در حال ایجاد با عبارت های مرتبط با دامنه استفاده کرد.
شئ ها همچنین امکان تجزیۀ System های پیچیده را به اجزای قابل درک می دهند که امکان ساخت یک قطعه را در یک زمان فراهم می کند.
در اینجا برخی از مفهوم های بنیادین جهان شئ گرا آورده شده است:
- Objects (شئ ها) : یک موجودیت و بلوک ساختمانی بنیادین را نشان می دهد.
- Class : طرح یک شئ
- Abstraction (انتزاع) : رفتار یک موجود جهان واقعی.
- Encapsulation (کپسوله سازی): مکانیسم اتصال داده ها بیکدیگر و پنهان کردن آنها از جهان خارج.
- Inheritance (ارث بری) : مکانیسم ساخت کلاس های نو از کلاس های موجود.
- Polymorphism (چند ریختی) : مکانیسم وجود را به اشکال گوناگون تعریف می کند.
زبان برنامه نویسی کاتلین چیست و چه مزیت هایی دارد؟ در اینجا بخوانید
انواع نمودار های UML
UML از عنصرها استفاده می کند و آنها را با روش های گوناگون برای تشکیل نمودارهایی که جنبه های ایستا یا ساختاری یک System را نشان می دهند و نمودار های رفتاری، که جنبه های پویای یک شئ را نشان می دهند، به هم مرتبط می کنند.
نمودار های ساختاری (Structural) UML :
- Class Diagram (نمودار کلاس) : رایج ترین نمودار UML مورد استفاده و پایۀ اصلی هر راه حل شئ گرا. مورد استفاده برای کلاس های درون یک System، ویژگی ها و عملیات و رابطۀ میان هرکلاس. کلاس ها با هم گروه بندی می گردند تا هنگام ترسیم نمودارهای همدادهای بزرگ، نمودار های کلاس را ایجاد کنند. در ادامۀ مقاله به طور اختصاصی بدیشان خواهیم پرداخت.
- Component Diagram (نمودار کامپوننت) : نمودار کامپوننت رابطۀ ساختاری عنصر های System نرم افزاری را نشان می دهد که اغلب هنگام کار با System های پیچیده همراه با اجزای متعدد، استفاده می شوند. کامپوننت ها با استفاده از interface (رابط) ها ارتباط بر قرار می کنند.
- Composite Structure Diagram (نمودار ساختار ترکیبی) : نمودار های ساختار ترکیبی برای نشان دادن ساختار داخلی یک کلاس استفاده می شوند.
- Deployment Diagram (نمودار استقرار) : سخت افزارِ System کامپیوتری و نرم افزار آن را نشان می دهد. زمانی سودمند است که یک راه حل نرم افزاری در چندین ماشین با پیکربندی های منحصر به فرد مستقر شود.
- Object Diagram (نمودار شئ) : رابطۀ میان شئ ها را با استفاده از مثال های جهان واقعی نشان می دهد و نشان می دهد که یک System در هر زمان معین چگونه بنظر می رسد. از آنجایی که داده ها در داخل شئ ها در دسترس هستند، می توان از آن ها برای روشن کردن رابطه های میان شئ ها بهره بُرد.
- Package Diagram (نمودار بسته) : دو نوع خاص وابستگی میان package ها تعریف شده است: واردات پکیج (import package) و ادغام پکیج (Merge package). package ها می توانند سطح های گوناگون یک System را برای آشکار ساختن معماری نشان دهند. وابستگی های package ها را می توان برای نشان دادن مکانیسم ارتباط بین سطح ها علامت گذاری کرد.
نمودار های رفتاری (Behavioral) UML :
- Activity diagrams (نمودارهای فعالیت) : به صورت گرافیکی، گردش کار تجاری یا عملیاتی، از برای نشان دادن فعالیت هر کامپوننت (بخش یا جزء) در System، نمایش داده می شود. نمودار های Activity به عنوان جایگزینی برای نمودارهای State Machine استفاده می شوند.
- Communication Diagram (نمودار ارتباطی) : مشابه نمودار های Sequence (متوالی) می باشد، اما تمرکز روی پیام هایی است که بین شئ ها ارسال می شود. همان اطلاعات را می توان با استفاده از نمودار Sequence و شئ های گوناگون نشان داد.
- Interaction Overview Diagram (نمودار بررسی اجمالی تعامل) : هفت نوع نمودار تعاملی وجود دارد. و این نمودار ترتیب عمل آنها را نشان می دهد.
- Sequence Diagram (نمودار توالی) : نحوۀ تعامل شئ ها با یکدیگر و ترتیب وقوعشان را نشان می دهد. آنها تعاملات را برای یک سناریوی خاص نشان می دهند.
- State Diagram (نمودار حالت) : مشابه نمودارهای Activity، آنها رفتار شئ هایی را توصیف می کنند که در حالت فعلی خود به شیوه های متفاوتی رفتار می کنند.
- Timing Diagram (نمودار زمانبندی) : مانند نمودارهای Sequence ای، رفتار شئ ها در یک چهارچوب زمانی معین نشان داده می گردد. اگر یک شئ واحد وجود داشته باشد، نمودار ساده است. با بیش از یک شئ، فعل و انفعالات شئ ها در آن بازۀ خاص نشان داده می گردد.
- Use Case Diagram (نمودار استفادۀ موردی) : یک عملکرد خاص از یک System را نشان می دهد که برای نشان دادن نحوۀ ارتباط عملکردها و کنترل کننده های داخلی/خارجی (یعنی کُنشگران) آنها، ایجاد شده است.
چگونه یک نمودار UML ایجاد کنیم؟ همراه با آموزش و مثال
برای یادگیری نمایش انواع گوناگون نمودارهای UML به مثال های زیر توجه کنید.
مثال نمودارهای ساختاری :
نمودار Class : نمودار Class ساختارهای ایستایی یک System را نمایش می دهد، که ساختارهای ایستایی یاد شده دربرگیرندۀ کلاس ها، ویژگی ها، عملیات ها و شئ ها می باشد. یک نمودار کلاس می تواند داده های محاسباتی یا داده های سازمانی را به ترتیب در قالب کلاس های پیاده سازی و کلاس های منطقی نمایش دهد. میان این دو گروه ممکن است همپوشانی وجود داشته باشد.
- کلاس ها با یک شکل مستطیلی که به یک سوم تقسیم می گردد نشان داده می شوند. قسمت بالا نام کلاس را نشان می دهد، در حالی که بخش میانی دربرگرفتۀ ویژگی های کلاس است. بخش پایینی دربرگرفتۀ عملیات کلاس (همچنین به عنوان method شناخته می شود) است.
- شکل های کلاس را به نمودار کلاس خود بیفزونید تا رابطۀ میان آن شئ ها را مدل کنید. ممکن است نیاز باشد زیرکلاس ها را نیز بیفزونید.
- از خط ها برای نشان دادن ارتباط، وراثت، تعدد و دیگر رابطه های میان کلاس ها و زیر کلاس ها بهره بجویید.
- سبک علامت گذاری منتخب شما، معنای خط ها را مشخص می کند.
نمودارهای Component : نمودار Component (جزء)، نشان می دهند که چگونه اجزا برای تشکیل اجزای بزرگتر یا System های نرم افزاری ترکیب می گردند. این نمودارها به منظور مدل سازی وابستگی های هر جزء در System هستند. یک جزء (Component) چیزی است که برای اجرای یک عملکرد کلیشه ای نیاز است.
یک جزء کلیشه ای ممکن است از فایل های اجرایی، سندها، جدول های پایگاه داده، پرونده ها یا پرونده های کتابخانه ای تشکیل شده باشد.
- یک جزء را با شکل مستطیل نشان دهید. باید دو مستطیل کوچک کنارش داشته باشد یا نمادی با این شکل داشته باشد.
- برای نمایش رابطه های مربوطه، خط هایی را میان شکل های مؤلفه بیفزونید.
نمودار های Deployment (استقرار) : یک نمودار استقرار، استقرار فیزیکی و ساختار اجزای سخت افزاری را مدل می کند. نمودار استقرار نشان می دهد که کجا و چگونه اجزای یک System در ارتباط با یکدیگر عمل می کنند.
- هنگام ترسیم یک نمودار استقرار، از همان نمادی استفاده کنید که برای نمودار Component (جز) استفاده می کنید.
- از یک مکعب سه بعدی برای مدل سازی یک گره (که نشان دهندۀ یک ماشین فیزیکی یا ماشین مجازی است) استفاده کنید.
- گره را به همان سبکی که برای نمودار های Sequence (توالی) استفاده می گردد برچسب بزنید، گره های دیگر را در صورت نیاز بیفزونید، سپس با خط ها پیوندشان بزنید.
مثال نمودارهای رفتاری :
نمودار Activity : نمودار Activity، جریان رویه ای کنترل میان شئ های کلاس، همراه با فرآیند های سازمانی مانند گردش کار تجاری را نشان می دهد.
این نمودار ها از شکل های تخصصی ساخته شده اند و سپس با پیکان به یکدیگر پیوند زده می شوند مجموعۀ نشان گذاری برای نمودار Activity همانند نمودار های State می باشد.
- نمودار حالت خود را با یک دایرۀ ثابت شروع کنید.
- دایره را به Activity نخستینی که با یک مستطیل لبه گرد مدل شده است پیوند بزنید.
- اکنون هر Activity را با خط هایی که جریان گام به گام کل فرایند را نشان می دهند، به Activity های دیگر متصل کنید.
- همچنین می توانید برای نمایش شئ هایی که هر Activity را نشان می دهند، از خط های شنا بهره ببرید.
نمودار های Use Case (استفادۀ موردی) : فهرستی از مرحله ها است که تعامل میان یک کنشگر (انسانی که با System یا یک System خارجی در ارتباط است) و خود System را تعریف می کند. نمودار های Use Case مشخصات یک مورد استفاده را به تصویر می کشند و واحد های عملکردی یک System را مدل می کنند.
این نمودارها به تیم های توسعه کمک می کنند تا نیازمندی های System خود، از جمله نقش تعامل انسانی در آن و تفاوت میان مورد های استفادۀ گوناگون را درک کنند. نمودار مورد استفاده ممکن است تمام مورد های استفادۀ (Use Case) System یا فقط یک گروه از مورد های استفاده با عملکرد مشابه را نشان دهد.
- برای شروع یک نمودار مورد استفاده، یک شکل بیضی به مرکز طراحی بیفزونید.
- نام مورد نظر را در داخل بیضی تایپ کنید.
- کنشگران را با یک شکل چوبی در نزدیکی بیضی نشان دهید، سپس از خط ها برای مدل کردن رابطه های میان کنشگران و مورد های استفاده، استفاده کنید.
کاربرد مفصل تر نمودار Class در UML چگونه می باشد؟
چنان که گفته شد UML (زبان مدل سازی یکپارچه) به شما یاری می دهد تا System ها را به روش ها گوناگون مدل سازی کنید. یکی از محبوب ترین نمودار ها در UML نمودار Class است.
نمودار Class محبوب در میان مهندسان نرم افزار از برای مستند سازی معماری نرم افزار می باشد. نمودار های کلاس نوعی نمودار ساختاری هستند زیرا آنچه را که باید در System مدل سازی شده وجود داشته باشد را توصیف می کنند.
UML به عنوان یک مدل استاندارد برای توصیف یک رویکرد برنامه نویسی شئ گرا راه اندازی شده است. از آنجایی که کلاس ها مانند قالب خِشت و شئ ها مانند خشت هستند، نمودار های کلاس، قالب های سازندۀ UML هستند.
اجزای گوناگون در یک نمودار کلاس می توانند کلاس هایی را که در حقیقت برنامه نویسی شده اند، شئ های اصلی یا تعامل های میان کلاس ها و شئ ها را نشان دهند.
شکل کلاس خود از یک مستطیل با سه ردیف تشکیل شده است. ردیف بالا دربرگرفتۀ نام کلاس و ردیف میانی دربرگرفتۀ ویژگی های کلاس، و بخش پایین بیانگر روش ها یا عملیاتی است که کلاس ممکن است استفاده کند.
کلاس ها و زیر کلاس ها با هم گروه بندی می شوند تا رابطۀ ایستا میان هر شئ را نشان دهند.
اجزای پایۀ نمودار Class
- بخش بالایین : دربرگرفتۀ نام کلاس است. این بخش همیشه مورد نیاز است، چه دربارۀ کلاس بندی صحبت کنید، چه دربارۀ شئ.
- بخش میانی : دربرگرفتۀ ویژگی های کلاس است. از این بخش برای توصیف کیفیت کلاس بهره ببرید. این بخش تنها در هنگام توصیف یک نمونۀ خاص (شئ خاص) از یک کلاس مورد نیاز است.
- بخش پایینی : دربرگرفتۀ عملیات های کلاس (Method یا همان تابع) است. هر عملیات (تابع) که در قالب فهرست نمایش داده می گردد، خط مخصوص به خود را می گیرد. این عملیات نحوۀ تعامل یک کلاس با داده ها را توصیف می کند.
Access Modifires های اعضا
هر Access Modifier یک نمادی دارد که در اینجا آمده است:
- Public (+)
- Private (-)
- Protected (#)
- Package (~)
- Derived (/)
- Underline) Static)
دامنۀ اعضا
دو دامنه برای اعضا وجود دارد : کلاس بندی ها و نمونه (شئ) ها.
کلاس بندی ها اعضای ثابت هستند در حالی که نمونه ها، نمونه های خاص کلاس هستند.
اجزای اضافی نمودار کلاس
بسته به زمینه، کلاس ها در نمودار کلاس می توانند شئ های اصلی، تعاملات در برنامه یا کلاس های برنامه نویسی شده را نشان دهند. برای پاسخ بدین پرسش که نمودار کلاس در UML چیست؟ ابتدا باید آرایش اولیه آن را درک کنید.
- کلاس ها : الگویی برای ایجاد شئ ها و پیاده سازی رفتار در یک همداد. در UML، یک کلاس یک شئ یا مجموعه ای از شئ ها را نشان می دهد که ساختار و رفتاری مشترک دارند.
آنها با یک مستطیل نشان داده می شوند که در بر گرفتۀ ردیف هایی از نام کلاس، ویژگی های آن و عملیات های آن است. وقتی کلاسی را در نمودار آن ترسیم می کنید، فقط باید ردیف بالا را پر کنید. اگر می خواهید جزئیات بیشتری ارائه کنید بقیه مورد ها اختیاری هستند.
-
- نام : ردیف نخست در شکل کلاس.
- ویژگی ها : ردیف دوم در شکل کلاس. هر ویژگی کلاس در یک خط جداگانه نمایش داده می شود.
- Method ها : ردیف سوم در شکل کلاس. همچنین به نام عملیات ها (Operations) شناخته می گردد. Method ها در قالب فهرست با هر عملیات در خط خود نمایش داده می شوند.
- سیگنال ها : نماد هایی که نشان دهندۀ ارتباط یک طرفه و ناهمزمان (asynchronous) میان شئ های فعال هستند.
- انواع داده (Data Type) : کلاس بندی کننده هایی که مقدار های داده را تعریف می کنند. نوع های داده ها می توانند هم primitive type و enumeration را مدل کنند.
- بسته ها (Package) : شکل های طراحی شده برای سازماندهی کلاس بندی کننده های مرتبط با هم، در یک نمودار. آنها با یک شکل مستطیلی بزرگ نشان داده می شوند.
- Interface ها : مجموعه از امضا های عملیات و/یا تعریف های ویژگی که مجموعه ای منسجم از رفتار ها را تعریف می کنند. Interface ها مشابه کلاس ها هستند، با این تفاوت که یک کلاس می تواند نمونه ای از نوع خود داشته باشد و یک interface باید حداقل یک کلاس برای پیاده سازی خود داشته باشد.
- Enumeration ها : نمایش DataType های تعریف شده توسط کاربر. Enumeration دربرگرفتۀ گروه هایی از شناسه ها است که مقدار های Enumeration را نشان می دهد.
- شئ ها : نمونه هایی از یک کلاس یا کلاس ها. شئ ها را می توان به یک نمودار کلاس افزود تا نمونه های عینی یا وابسته به طرح اصلی را نشان دهد.
- مصنوعات (Artifacts) : عنصر های مدلی که نهاد های مشخص (غیر انتزاعی) در یک System نرم افزاری را نشان می دهند، مانند اسناد، پایگاه های داده، فایل های اجرایی اجزای نرم افزار و…
فعل و انفعالات
این عنوان اشاره به رابطه ها و پیوند هایی دارد که می تواند در نمودارهای کلاس و شئ وجود داشته باشد، برخی از متداول ترین آنها:
وراثت (Inheritance) : فرایندی که یک فرزند یا طبقه فرعی کارکرد یک والد یا ابر کلاس را بر عهده می گیرد که به عنوان generalization نیز شناخته می گردد. این نماد با یک خط متصل مستقیم با پیکان بسته به سمت ابرکلاس است.
در این مثال شئ «Car» تمام ویژگی ها (speed, numbers of passengers, fuel) و تابع های ( ()go() ، stop() ، changeDirection ) را از کلاس والد به ارث می برد. کلاس «Vehicle» که کلاس والد می باشد افزون بر آنچه که بر ارث می برد ویژگی های خاص به خودش (model type, number of doors, auto maker)، و تابع های خاص به خودش ( Radio() ، windshieldWiper() ، ac/heat ) را دارد.
وراثت در یک نمودار با استفاده از یک خط ثابت با یک پیکان بسته و توخالی نشان داده می گردد.
دوره متخصص MotionLayout – انیمیشن سازی در اندروید در اینجا
ارتباط دو طرفه (Bidirectional) : رابطۀ پیش فرض میان دو کلاس. هر دو کلاس از یکدیگر و رابطۀ خود با یکدیگر آگاه هستند. این ارتباط با یک خط مستقیم میان دو کلاس نشان داده می گردد.
در مثال بالا، کلاس Car و RoadTrip به هم مرتبط هستند. در انتهای خط، ارتباط «AssignedCar» را با مقدار چندگانۀ 1..0 می گیرد، بنابرین وقتی نمونۀ RoadTrip وجود دارد، می تواند یک نمونه Car مرتبط با آن باشد یا هیچ خودرویی با آن مرتبط نباشد.
در این مورد، یک کلاس Caravan جداگانه با مقدار چندگانه 0..* مورد نیاز است تا نشان دهد که یک RoadTrip میتواند چندین نمونه از Cars مرتبط با آن را داشته باشد. از آنجایی که یک نمونه خودرو میتواند چندین ارتباط «getRoadTrip» داشته باشد – به دیگر سخن، یک ماشین میتواند چندین سفر جادهای داشته باشد، مقدار تعدد روی 0..* تنظیم می گردد.
ارتباط یک طرفه (Unidirectional) : یک رابطۀ کمتر مشترک میان دو کلاس. یک کلاس از دیگری آگاه است و با آن تعامل دارد. ارتباط یک طرفه با یک خط اتصال مستقیم که یک نوک پیکان باز را از کلاس شناسنده به کلاس شناخته شده نشان می دهد، مدل سازی می شود.
به عنوان مثال در سفر جاده ای خود از راه آریزونا، شاید با تلۀ سرعت برخورد کنید که در آن دوربین سرعتی فعالیت رانندگی شما را ثبت می کند، اما تا زمانی که پیامکی برای شما نرسد تا شما را اگاه کند شما از آن آگاه نخواهید شد.
در دوربین ثبت نشده است اما در این مورد بسته به اینکه چند بار توسط دوربین سرعت رهگیری شوید مقدار چندگانه 0..1 خواهد بود.
مثال های نمودار کلاس
ایجاد نمودار کلاس برای ترسیم جریان های فرآیند آسان است. هنگام ساختن نمودار های کلاس خود در UML ، دو مثال زیر را در بنگرید.
نمودار کلاس برای System مدیریت هتل
یک نمودار کلاس می تواند رابطه های میان هر شئ را در همداد مدیریت هتل، از جمله اطلاعات مهمان، مسئولیت کارکنان و اشتغال اتاق را نشان دهد. مثال زیر یک نمای کلی مفید از System مدیریت هتل ارائه می دهد.
نمودار کلاس برای یک System خودپرداز (ATM)
دستگاه های خودپرداز به طرز فریبده ای ساده هستند: اگرچه مشتریان برای دریافت پول نقد تنها باید چند دکمه را فشار دهند، اما لایه های امنیتی زیادی وجود دارد که یک دستگاه خود پرداز ایمن و موثر باید از آنها بگذرد تا از کلاهبرداری جلوگیری کمند و برای مشتریان ارزش خلق کند.
در نمودار زیر هر کلاس عنوان خود را دارد و ویژگی ها در زیر فهرست شده اند.
واژه نامۀ اصطلاحات UML
با واژه نامۀ UML آشنا شوید. با استفاده از فهرست سند UML نسخۀ 2.4.1، کمک در درک اصطلاحات رایج استفاده شده فراهم می گردد.
- Abstract syntax compliance : کاربران می توانند مدل ها را در ابزار های گوناگون جابجا کنند. حتی اگر از نمادهای متفاوتی استفاده کنند.
- Common Warehouse Metamodel (CWM) : به معنای انبار مشترک ابر مدل. رابط های استانداردی برای فعال کردن تبادل ابرداده های انبار و هوش تجاریِ میان ابزارهای انبار، پلتفرم های انبار و انبار های مخزن های ابرداده در محیط های ناهمگون توزیع شده، استفاده می گردند.
- Concrete syntax compliance : کاربران می توانند به استفاده از نمادی که با آن در ابزار های گوناگون آشنا هستند ادامه دهند.
- Core : در زمینۀ UML، هسته (Core) معمولا به «Core package» اشاره دارد که یک ابرمدل کامل است که به صورت ویژه برای قابلیت استفاده مجدد در سطح ها بالا، طراحی شده است.
- Language Unit : مجموعه ای از مفهوم های مدل سازی بهم پیوسته است که به کاربران این قدرت را می دهد تا جنبه هایی از System مورد مطالعه را بر اساس یک الگو یا شکل خاص نشان دهند.
- Level 0 (L0) : سطح انطباق پایین برای زیر ساخت UML. یک واحد زبان واحد که برای مدل سازی انواع ساختارهای مبتنی بر کلاس که در اکثر زبان های برنامه نویسی شئ گرای رایج با آن مواجه می شوند، فراهم می کنند.
- Meta Object Facility (MOF) : یکی از مشخصات مدل سازی OMG است که مبنایی را برای تعاریف ابر مدل در خانواده زبان های MDA ی OMG فراهم می کند.
- Metamodel (ابر مدل) : زبان و فرآیند هایی را که از آن یک مدل تشکیل می گردد، تعریف می کند.
- Metamodel Constructs (LM) (سازه های ابر مدل) : سطح دوم زیر ساخت UML می باشد. یک واحد زبان اضافی از برای ساختارهای مبتنی بر کلاس پیشرفته تر که برای ساخت ابر مدل ها (با استفاده از CMOF) مانند خود UML استفاده می گردد. UML فقط دو سطح انطباق دارد.
- Model Driven Architecture (MDA) (معماری مدل محور) : یک رویکرد و یک طرح از برای دستیابی به مجموعه ای منسجم از مشخصات فناوریِ مدل محور.
- Object Constraint Language (OCL) (زبان در قید شئ) : یک زبان اعلامی برای توصیف قانون هایی که در زبان مدل سازی یکپارچه اعمال می گردد. OCL با ارائه اصطلاحات و نماد های فلوچارت دقیق تر از زبان طبیعی اما تسلط کمتری نسبت به ریاضیات، UML (زبان مدل سازی یکپارچه) را تکمیل می کند.
- Object Management Group (OMG) (گروه مدیریت شئ) : یک کنسرسیوم غیر انتفاعی مشخصات صنعت رایانه است که اعضای آن مشخصات UML را تعریف و حفظ می کنند.
- UML 1 : نخستین نسخه از زبان مدل سازی یکپارچه.
- Unified Modeling Language (UML) : زبان مدل سازی یکپارچه یک زبان دیداری از برای مشخص کردن، ساختن و مستندسازی مصنوعات Systemها
- XMI : مشخصاتی مبتنی بر XML از قالب های مبادلۀ مدل مربوطه.
برای مشاهدۀ کامل مستندهای MOF : به سایت OMG سر بزنید.