آموزش UML و نمودارهای آن | به زبان ساده و تصویری


UML اختصاری برای عبارت «زبان مدلسازی یکپارچه» (Unified Modeling Language) است که یک زبان مدلسازی چندمنظوره محسوب میشود. هدف اصلی UML تعریف یک روش استاندارد برای بصریسازی مسیر طراحی سیستمها است. UML شباهت زیادی به نقشههای اولیهای دارد که در رشتههای دیگر مهندسی مورد استفاده قرار میگیرند. در این مقاله قصد داریم به آموزش UML و نمودارهای آن بپردازیم.
توجه داشته باشید که UML یک زبان برنامهنویسی نیست، بلکه یک زبان بصریسازی محسوب میشود. ما از نمودارهای UML برای نمایش رفتار و ساختار یک سیستم استفاده میکنیم. UML به مهندسان نرمافزار، تاجران و معماران سیستم در زمینههای مدلسازی، طراحی و تحلیل کمک میکند. از این رو آموزش UML به همه این افراد یک امر ضروری محسوب میشود. «گروه مدیریت شی» (Object Management Group) به اختصار OMG در سال 1997 UML را به عنوان یک استاندارد پذیرفته است. از آن زمان تاکنون این زبان از سوی OMG مدیریت میشود. UML در سال 2005 از سوی ISO به عنوان استاندارد انتشار یافته است و در طی سالهای اخیر با تحولات زیادی مواجه گشته است.
تاریخچه UML
قبل از ورد به بحث آموزش UML به بررسی مختصری از تاریخچه آن می پردازیم. دهه 1990 عصر توسعه زبانهای برنامهنویسی شیگرا از قبیل ++C بود. این زبانهای شیگرا برای ایجاد سیستمهای پیچیده و قدرتمند مورد استفاده قرار میگرفتند. به مرور که درک این سیستمها دشوار شد، برخی مشکلات طراحی و تحلیل در فرایند توسعه سیستم ایجاد گشت. مشکل این بود که توضیح سیستم به افراد دیگر دشوار شده بود.
به محض ورود UML بسیاری از آزمایشها و رویکردهای تحولبخش برای سادهسازی چنین وظایف دشوار تحلیل سیستم به اجرا درامدند. UML یک زبان مدلسازی یکپارچه شیگرا است که از سوی مهندسان نرمافزار به نامهای «گریدی بوچ» (Grady Booch)، «ایوار جیکوبسون» (Ivar Jacobson) و «جیمز رامباو» (James Rumbaugh) از شرکت نرمافزاری Rational در طی سالهای 1994 و 1995 طراحی شد و از آن زمان تاکنون در حال توسعه است. هر یک از این مهندسان ایدههای جالبی برای طراحی زبانی داشتند که پیچیدگی سیستمها را کاهش دهند.
- روش بوچ بسیار برای کار در طی طراحی و ساخت اشیا انعطافپذیر بود.
- روش جیکوبسون یک مسیر عالی برای کار با موارد کاربردی ارائه میکرد. همچنین رویکردی قدرتمند برای طراحی سطح بالا بود.
- روش رامباو در زمان مدیریت سیستمهای حساس عملکرد بسیار مفیدی نشان داد.
در ادامه مدلهای رفتاری و نمودارهای حالت نیز در UML وارد شدند که ابداع «دیود هارل» (David Harel) بودند.
پیش از ادامه این مبحث لازم است یادآور شویم که میتوانید UML را با استفاده از مجموعه آموزش یو ام ال UML فرادرس یاد بگیرید.
نسخههای UML
هر یک از نسخههای UML در جدول زیر ارائه شدهاند.
تاریخ | نسخه | توضیح |
---|---|---|
آبان 1376 | 1.1 | UML از سوی گروه مدیریت شی پذیرفته شد. این نخستین UML بود. |
فروردین 1379 | 1.3 | یک ارتقای کوچک روی مدل موجود ایجاد شد که تغییر چشمگیری در معناشناختی، نمادگذاریها و فرامدلهای UML ایجاد کرد. |
شهریور 1380 | 1.4 | بهروزرسانیهای عمدهای روی UML ایجاد شد. افزونههای مختلفی به آن افزود شد. Visibility, artifact و stereotype به نمودارها اضافه شد. |
فروردین 1382 | 1.5 | قابلیتهایی مانند روالها، و سازوکار گردش داده به UML اضافه شد. |
دی 1383 | 1.4.2 | UML از سوی ISO به عنوان استاندارد پذیرفته شد. |
مرداد 1384 | 2.0 | نمودارهای جدیدی مانند شی، پکیج، زمانبندی و تعامل به UML اضافه شد. قابلیتهای جدیدی بهنمودارهای فعالیت و توالی اضافه شدند. نمودار همکاری به صورت نمودار ارتباط تغییر نام یافت. قابلیتها و تغییرهای دیگری در نمودارهای موجود ایجاد شد. |
اسفند 1385 | 2.1 | اصلاحاتی در UML 2.0 ایجاد شد. |
بهمن 1385 | 2.1.1 | ارتقاهایی به صورت نسخه 2.1 معرفی شدند. |
آبان 1386 | 2.1.2 | نسخه UML 2,1,2 بازتعریف شد. |
بهمن 1387 | 2.2 | باگهای نسخه 2.1.2 اصلاح شدند. |
اردیبهشت 1389 | 2.3 | UML 2.2 بازبینی شد و تغییرهای جزئی در نمودارهای کامپوننت وارد گشت. |
مرداد 1390 | 2.4.1 | تغییراتی در کلاسها، پکیجها و استریوتایپها ایجاد شد. UML 2.3 با برخی قابلیتهای بهبودیافته بازبینی شد. |
خرداد 1394 | 2.5 | UML 2.4.1 با برخی تغییرهای جزئی مورد بازبینی قرار گرفت. UML سادهتر از چیزی شد که قبلاً بود. تابعسازی سریع و تولید مدلهای کارآمدتر معرفی شدند. قابلیتهای منسوخ حذف شدند. مدلها و قالبها به عنوان سازههای اضافی حذف شدند. |
خصوصیات UML
- یک زبان مدلسازی عمومی است.
- از زبانهای برنامهنویسی مانند پایتون، C یا ++C و غیره متفاوت است.
- یک زبان تصویری است که میتواند برای تولید عناصر مدلسازی قدرتمند مورد استفاده قرار گیرد.
- به طراحی و تحلیل شیگرایی مرتبط است.
- کاربردهای نامحدودی حتی خارج از صنعت نرمافزار دارد و میتواند برای بصریسازی گردش کار یک کارخانه نیز مورد استفاده قرار گیرد.
مدل مفهومی
پیش از مطالعه ادامه مقاله آموزش UML و قبل آن که شروع به یادگیری UML بکنید، باید با مبانی مدل مفهومی آشنا باشید. یک مدل مفهومی از مفاهیم مختلفی تشکیل یافته که با هم ارتباط متقابل دارند.
این مدل باید به ما در درک موارد زیر کمک کند:
- اشیا چه هستند؟
- برای اجرای یک فرایند چه تعاملهایی باید صورت بگیرند؟
وجود یک مدل مفهومی در UML امری ضروری محسوب میشود. شما باید پیش از آموزش UML و مدلسازی یک سیستم موجودیتها و رابطههای بین آنها را درک کنید. درک مفاهیم شیگرایی زیر پیش از آموزش UML ضروری هستند:
- شی (Object): یک موجودیت دنیای واقعی است. چندین شی درون یک سیسم منفرد وجود دارند. شی بلوک بنیادی تشکیلدهنده UML است.
- کلاس (Class): کلاس چیزی به جز یک کانتینر نیست که اشیا و رابطههایشان در آن نگهداری میشوند.
- تجرید (Abstraction): به سازوکار بازنمایی یک موجودیت بدون نشان دادن جزییات پیادهسازی آن گفته میشود. از آن برای بصریسازی رفتار یک شی استفاده میشود.
- وراثت (Inheritance): سازوکار بسط دادن یک کلاس موجود با ایجاد کلاس جدید است.
- چندریختی (Polymorphism): سازوکار بازنمایی یک شی است که چندین شکل دارد و برای مقاصد مختلف مورد استفاده قرار میگیرد.
- کپسولهسازی (Encapsulation): روش اتصال شی و دادهها به هم به صورت یک واحد منفرد است. کپسولهسازی ما را از برقراری ترویج بین شی و دادهها مطمئن میسازد.
موارد فوق به نام بلوکهای بنیادی سازنده UML نیز خوانده میشوند. در ادامه این مقاله آموزش UML به این سوال پاسخ میدهیم که UML چه نیازی از ما را رفع میکند.
آیا ما واقعاً به UML نیاز داریم؟
اپلیکیشنهای پیچیده به همکاری و برنامهریزی از سوی چند تیم نیاز دارند و از این رو باید مسیر روشن و منسجمی برای برقراری ارتباط بین تیمها وجود داشته باشد. بازرگانان کدنویسی نمیدانند و از این رو UML به جزئی ضروری برای انتقال الزامات ضروری، کارکردها و فرایندهای سیستم به افراد غیر برنامهنویس محسوب میشود. زمانی که تیمها بتوانند فرایندها، تعاملهای کاربر و ساختار استاتیک سیستم را بصریسازی کنند، صرفهجویی زمانی زیادی ایجاد میشود. UML با طراحی و تحلیل شیگرا پیوند یافته است.
به مرور با افزایش ارزش راهبردی نرمافزار برای اغلب شرکتها، این صنعت به دنبال تکنیکهایی برای خودکارسازی تولید نرمافزار و بهبود کیفیت و کاهش هزینه و زمان عرضه به بازار گشت. این تکنیکها شامل فناوری کامپوننت، برنامهنویسی بصری، الگوها و فریمورکها بوده است. همچنین کسبوکارها با افزایش دامنه و مقیاس نرمافزارها به دنبال تکنیکهایی برای مدیریت پیچیدگی سیستمها گشتند.
کسبوکارها به طور خاص نیاز به حل برخی مشکلات که به طور مکرر در زمینه معماری رخ میدهد مانند توزیع فیزیکی، همزمانی، تکرار، امنیت، متعادلسازی بار و تحمل خطا نیاز داشتند. به علاوه توسعه برای وب در حین سادهتر ساختن، موجب تشدید این مشکلات میشد. اهداف اصلی طراحی UML به صورت زیر خلاصه شده است:
- به کاربران یک زبان با استفاده آسان و مدلسازی از نظر بصری گویا ارائه کند تا بتوانند مدلهای معناداری را تهیه و مبادله کنند.
- سازوکار بسطپذیر و تخصصیسازی برای گسترش مفاهیم پایه ارائه کند.
- از زبانهای برنامهنویسی و فرایندهای توسعه خاص مستقل باشد.
- یک مبنای رسمی برای درک زبان مدلسازی ارائه کند.
- رشد بازار ابزارهای شیگرایی را تشویق کند.
- از مفاهیم توسعه سطح بالا مانند همکاریها، فریمورکها، الگوها و کامپوننتها پشتیبانی کند.
- بهترین رویهها را یکپارچهسازی کند.
آشنایی مقدماتی و آموزش UML
در ادامه مقاله آموزش UML و پیش از آن که شروع به بررسی نظریه UML بکنیم، باید یک بررسی مختصر در مورد برخی از مفاهیم اصلی آن داشته باشیم. نخستین چیزی که در مورد UML متوجه میشویم این است که نمودارها (مدلها)-ی مختلفی برای استفاده ارائه میکند.
دلیل این امر آن است که میتوان از مناظر مختلفی به یک سیستم نگریست. فرایند توسعه نرمافزار بخشهای زیادی دارد که در آن به ایفای نقش میپردازند. برای نمونه به فهرست زیر توجه کنید:
- تحلیلگران
- طراحان
- کدنویسها
- تستکنندهها
- QA
- مشتری
- مؤلفان فنی
همه این افراد به جنبههای مختلف سیستم علاقهمند هستند و هر یک از آنها نیازمند سطح متفاوتی از جزییات هستند. برای نمونه یک کدنویس باید طراحی سیستم را درک کند و بتواند طراحی را به کد سطح پایین تبدیل کند. به طور عکس یک مؤلف فنی به رفتار سیستم به صورت یک کلیت علاقهمند است و باید شیوه کارکرد محصول را درک کند. UML تلاش میکند تا زبانی چنان وسیع عرضه کند که همه این افراد ذینفع بتوانند از دستکم یک نمودار UML بهره بگیرند.
نمادشناسی UML
در این بخش از آموزش UML به بررسی نمادهای مورد استفاده در طراحی نمودارهای UML میپردازیم. اما قبل از آن باید به تعریف مدل بپردازیم.
مدل
مدل یک تجرید از چیزی است که قبل از ساختن آن چیز باید درک کنیم. از آنجا که مدلسازی جزییات غیرضروری را نادیده میگیرد، دستکاری آن نسبت به موجودیت اصلی آسانتر است. منظور از مدل، سازماندهی چیزی برای مقصود خاص است. در واقع مدل یک سادهسازی از یک واقعیت است. مدل امکانات زیر را ارائه میکند:
- نقشه اولیه سیستم
- سازماندهی سیستم
- دینامیک سیستم
اجزای سازنده UML
منظور از اجزای سازنده UML چیزهایی هستند که برای توسعه یک نمودار مدل کامل UML مورد نیاز هستند.
در این بخش از مقاله آموزش UML به توضیح اجزای سازنده UML می پردازیم که شامل موارد زیر هستند:
- چیزها
- رابطهها
- نمودارها
چیزها (Things)
منظور از چیز یک موجودیت در دنیای واقعی یا یک شی است.
چیزها به چهار دسته زیر تقسیم میشوند:
- چیزهای ساختاری
- چیزهای رفتاری
- چیزهای گروهبندی
- چیزهای حاشیهنویسی
چیزهای ساختاری (Structural Things)
از چیزهای ساختاری برای توصیف بخش استاتیک مدل استفاده میشود. از اینها برای بازنمایی چیزهایی استفاده میشود که به چشم ما میآیند. چیزهای ساختاری به بخش فیزیکی یک سیستم مرتبط هستند.
در واقع چیز ساختاری یک نام برای یک مدل UML از قبیل کلاس، شی، اینترفیس، همکاری، مورد کاربردی، کامپوننت و یک گره است. چیزهای ساختاری شامل موارد زیر هستند.
کلاس
از کلاس برای بازنمایی اشیای مختلف استفاده میشود. از آن برای تعریف مشخصهها و عملیات یک شی استفاده میکنیم. در UML میتوانیم یک کلاس مجرد را نیز نمایش دهیم. کلاس مجرد کلاسی است که کارکردهای آن تعریف نشدهاند. هر نماد کلاس UML به طور کلی به صورت زیر بیان میشود:
شی
یک شی موجودیتی است که برای توصیف رفتار و کارکردهای یک سیستم استفاده میشود. کلاس و شی نمادهای یکسانی دارند.
تنها تفاوت آنها در این است که نام یک شی همواره با یک زیرخط در UML همراه است. نماد یک شی در UML به صورت زیر است:
اینترفیس
اینترفیس مشابه یک قالب بدون جزییات پیادهسازی است. نماد آن یک دایره است. زمانی که یک کلاس یک اینترفیس را پیادهسازی میکند، کارکرد آن نیز پیادهسازی میشود:
همکاری
این چیز با بیضی خطچین و نامی که درونش نوشته شده نمایش مییابد.
مورد کاربردی
موارد کاربردی یکی از مفاهیم اساسی مدلسازی شیگرا هستند.
از آنها برای بازنمایی کارکردهای سطح بالا و شیوه مدیریت سیستم از سوی کاربر استفاده میشود.
بازیگر
این مفهوم درون نمودارهای مورد کاربردی استفاده میشود. بازیگر (Actor) موجودیتی است که با سیستم تعامل دارد.
یک کاربر بهترین نمونه از یک بازیگر است. نماد بازیگر در UML به صورت زیر است:
کامپوننت
نماد کامپوننت برای بازنمایی یک بخش از سیستم استفاده میشود. نماد آن به صورت زیر است:
گره
از گره برای توصیف بخش فیزیکی استفاده میشود. یک گره میتواند بازنمایی یک شبکه، سرور یا روتر و غیره باشد.
نماد آن به صورت زیر است:
نمودار توزیع
این نمودار نماینده سختافزار فیزیکی است که روی سیستم نصب است. یک نمودار توزیع نمای فیزیکی سیستم را نمایش میدهد. این نمودار نشاندهنده ارتباط و تعامل بین بخشهای مختلف سیستم است.
نمودار توزیع شامل نمادهای زیر است:
- یک گره
- یک کامپوننت
- یک Artifact
- یک اینترفیس
چیزهای رفتاری (Behavioral Things)
اگر چیزهای ساختاری اسامی مدل UML باشند، چیزهای رفتاری افعال این مدل محسوب میشوند. این افعال شامل تعاملها، فعالیتها و ماشینهای حالت هستند.
چیزهای رفتاری برای بازنمایی رفتار یک سیستم مورد استفاده قرار میگیرند. در این بخش از مقاله آموزش UML به بررسی چیزهای رفتاری میپردازیم که شامل موارد زیر هستند.
ماشین حالت
از ماشین حالت برای توصیف حالتهای مختلف یک کامپوننت منفرد در سراسر چرخه عمر توسعه نرمافزار استفاده میشود. از آن برای نمایش حالتهای مختلف یک کامپوننت سیستم استفاده میکنیم.
نمودار فعالیت
نمودار فعالیت برای بازنمایی فعالیتهای مختلفی که در سیستم از سوی کامپوننتهای مختلف انجام مییابد استفاده میشود و به طور عمده شامل حالت اولیه، حالت نهایی، یک کادر تصمیم و یک نماد تصمیم است.
نمودار تعامل
نمودارهای تعامل برای بصریسازی گردش پیام بین کامپوننتهای مختلف سیستم استفاده میشوند.
نمودار توالی نیز نوعی نمودار تعامل است که تعامل بین یک یا چند خط عمر را در زمان آنی نشان میدهد.
چیزهای گروهبندی (Grouping Things)
این یک پکیج است که برای گروهبندی معناشناختی عناصر مرتبط مدلسازی در یک واحد منسجم منفرد استفاده میشود.
چیزهای حاشیهنویسی (Annotation Things)
این چیز شبیه یک یادداشت است که میتوان درون مدل نوشت تا برخی اطلاعات مهم را با آن انتقال داد. شکل آن شبیه یک یادداشت چسبی زردرنگ است.
روابط در UML چه هستند؟
در UML رابطه به ما امکان میدهد که شیوه ارتباط دو یا چند چیز با همدیگر را نشان دهیم. رابطه در UML امکان برقراری اتصالهای معنیدار را بین چیزهای مختلف فراهم میسازد.
رابطه روش وصل شدن چیزها به هم و شیوه توصیف کارکرد یک اپلیکیشن از سوی این ارتباط را توضیح میدهد. در ادامه مقاله آموزش UML به توضیح روابط موجود در این زبان میپردازیم .در UML چهار نوع رابطه داریم:
- رابطه اتحادی
- رابطه وابستگی
- رابطه تعمیم
- رابطه تحقق
رابطه اتحاد (Association Relationship)
به مجموعهای از لینکها گفته میشود که عناصر مدل UML را به هم وصل میکند. همچنین تعداد اشیایی که در رابطه نقش دارند را ارائه میکند. این رابطه با یک خط نقطهچین دوطرفه نمایش مییابد.
یک عدد مضرب نیز وجود دارد که تعداد اشیای اتصال یافته را شخص میسازد.
رابطه وابستگی (Dependency Relationship)
نوعی از رابطه است که عنصر مبدأ به عنصر مقصد وابسته است و ممکن است تحت تأثیر تغییرات آن قرار گیرد. این رابطه یکی از مهمترین نمادهای UML است. این نماد جهت اتصال یک چیز به چیز دیگر را تعریف میکند و با یک خط نقطهچین که یک سر آن فلش وجود دارد مشخص میشود.
رابطه تعمیم (Generalization Relationship)
این رابطه به نام رابطه والد-فرزند نیز خوانده میشود و بین یک چیز کلی و یک چیز خاصتر برقرار است. از این نوع رابطه برای نمایش مفهوم وراثت استفاده میشود.
نماد این رابطه یک خط کامل است که فلشی در یک سوی آن قرار دارد:
رابطه تحقق (Realization Relationship)
در این رابطه یک عنصر برخی مسئولیتها را توصیف میکند که پیادهسازی نشده و عناصر دیگر کارکرد را پیادهسازی کردهاند. رابطه تحقق به طور گستردهای برای نمایش اینترفیسها استفاده میشود. نماد آن یک خط نقطهچین است که یک فلش در یک سوی خود دارد.
انواع نمودارهای UML چیست ؟
در ادامه آموزش UML به بررسی هر کدام از 14 نمودار نمایش یافته در ساختار نمودار UML 2 میپردازیم. این نمودارها به دو دسته عمده نمودارهای ساختاری و نمودارهای رفتاری تقسیمبندی میشوند.
نمودارهای UML ساختاری
نمودارهای ساختاری، به نمایش ساختار استاتیک یک سیستم و بخشهای مختلف آن در سطوح مختلفی از تجرید و پیادهسازی میپردازند و ارتباط آنها با همدیگر را نشان میدهند. عناصر موجود در یک نمودار ساختاری نماینده مفاهیم معنیدار یک سیستم هستند و ممکن است شامل مفاهیم مجرد، دنیای واقعی و یا پیادهسازی باشند.
به طور کلی هفت نوع نمودار ساختاری به صورت فهرست زیر وجود دارد:
- نمودار کلاس
- نمودار کامپوننت
- نمودار توزیع
- نمودار شی
- نمودار پکیج
- نمودار ساختار ترکیبی
- نمودار پروفایل
نمودارهای UML رفتاری
نمودارهای رفتاری اقدام به نمایش رفتار دینامیک اشیا در یک سیستم میکنند. این رفتار میتواند به صورت یک سری از تغییرها در سیستم در طی زمان توصیف شود. در این بخش از آموزش UML نمودارهای رفتاری را توضیح میدهیم. هفت نوع نمودار رفتاری به صورت زیر وجود دارند:
- نمودار مورد کاربردی
- نمودار فعالیت
- نمودار ماشین حالت
- نمودار توالی
- نمودار ارتباط
- نمودار مرور تعامل
- نمودار زمانبندی
در ادامه آموزش UML هر یک از نمودارهای UML را بررسی میکنیم. ابتدا نمودارهای نوع ساختاری و سپس نمودارهای رفتاری با طرح مثالهایی بررسی میشوند.
انواع نمودارهای UML ساختاری
در این بخش نمودارهای UML ساختاری به همراه مثال معرفی میشوند.
نمودار کلاس
«نمودار کلاس» (Class Diagram) یک تکنیک مدلسازی مرکزی است که در تقریباً همه روشهای شیگرایی اجرا میشود. این نمودار انواع مختلف اشیا در سیستم و انواع مختلف رابطههایی که بین آنها وجود دارد را توصیف میکند.
رابطهها
سه نوع رابطه اساسی مهم وجود دارند:
- اتحاد (Association) – نماینده روابطی بین وهلههای انواع است (یک شخص که برای یک شرکت کار میکند، یک شرکت چند اداره دارد).
- وراثت (Inheritance) – بدیهیترین افزودنی به نمودارهای ER برای استفاده در شیگرایی است. تناظر بیواسطهای با وراثت در طراحی شیگرایی دارد.
- تجمیع (Aggregation) –شکلی از ترکیببندی شی در طراحی شیگرا محسوب میشود.
مثالی از نمودار کلاس
نمودار کامپوننت
در زبان مدلسازی یکپارچه منظور از «نمودار کامپوننت» (Component Diagram) شیوه اتصال کامپوننتها به همدیگر و به کامپوننتهای بزرگ یا سیستمهای نرمافزاری است.
این نوع نمودار معماری کامپوننتهای نرمافزاری و وابستگیهای بین آنها را به تصویر میکشد. این کامپوننتهای نرمافزاری شامل کامپوننتهای زمان اجرا، کامپوننتهای اجرایی و کامپوننتهای سورس کد هستند.
مثالی از نمودار کامپوننت
نمودار توزیع
«نمودار توزیع» (Deployment Diagram) به مدلسازی جنبه فیزیکی یک سیستم نرمافزاری شیگرا کمک میکند. این یک نمودار ساختاری است که معماری سیستم را در زمان توزیع نرمافزار روی هدفهای توزیع نشان میدهد. Artifact-ها نشاندهنده عناصر مستحکمی در دنیای واقعی هستند که نتیجه فرایند توسعه هستند.
این نمودار پیکربندی زمان اجرای یک نمای استاتیک را مدلسازی کرده و توزیع artifact-ها را در یک اپلیکیشن به تصویر میکشد. در اغلب موارد این نمودار شامل مدلسازی پیکربندی سختافزاری به همراه کامپوننتهای نرمافزاری درون آن است.
مثالی از نمودار توزیع
نمودار شی در UML چیست؟
«نمودار شی» (Object Diagram) یک گراف از وهلهها است که شامل اشیا و مقادیر دادهای است. یک نمودار شی استاتیک به وهلهای از یک نمودار کلاس گفته میشود که اسنپشاتی از یک حالت تفصیلی یک سیستم را در نقطه زمانی معینی نشان میدهد.
تفاوت در این است که نمودار کلاس یک مدل مجرد نشان میدهد که شامل کلاسها و روابط آنها است. اما یک نمودار شی نماینده یک وهله در یک لحظه خاص است که ماهیتی مستحکم دارد. کاربرد نمودارهای شی نسبتاً محدود است و صرفاً برای نمایش مثالهایی از ساختمان داده مورد استفاده قرار میگیرند.
بررسی تفاوت نمودار شی با نمودار کلاس با یک مثال
برخی افراد در مورد درک تفاوت بین یک نمودار کلاس UML و نمودار شی UML مشکل دارند، چون هر دوی آنها از بلوکهای نامدار مستطیلی با خصوصیاتی درونشان و پیوندهایی بین بلوکها تشکیل یافتهاند و این مسئله موجب میشود که این نمودار شبیه هم باشند.
برخی افراد ممکن است حتی فکر کنند که آنها یکسان هستند، زیرا در ابزار UML از نمادگذاری مشابهی برای هر دو نوع نمودار استفاده میشود.
اما در عمل نمودار کلاس و نمودhر شی دو جنبه متفاوت از کدبیس را نمایش میدهند. در این بخش ایدههایی در مورد این دو نمودار UML ارائه میکنیم و ماهیت آنها و تفاوتها و کاربردهایشان را معرفی میکنیم.
رابطه بین نمودار کلاس و نمودار شی
ما در زمان برنامهنویسی کلاسها را ایجاد میکنیم و با آنها آشنا هستیم. برای نمونه در یک سیستم بانکداری آنلاین میتوانید کلاسهایی مانند User ،Account ،Transaction و غیره بسازید. در یک سیستم مدیریت کلاس میتوانید کلاسهایی مانند Teacher ،Student ،Assignment و غیره بسازید. نمودار کلاس یک نمودار UML است که در آن میتوانید این کلاسها را همراه با خصوصیتها، عملیات و رابطهشان با هم بصریسازی کنید.
نمودار شی UML شیوه تعامل وهلههای اشیا با همدیگر در یک حالت خاص درون سیستم نمایش میدهد. همچنین مقادیر دادهای این اشیا را در آن حالت نشان میدهد. به بیان دیگر یک نمودار شی UML را میتوان به صورت یک بازنمایی از شیوه استفاده از کلاسها در یک حالت خاص تصور کرد.
اگر با این تعاریف نظری همچنان تفاوت این دو نوع نمودار را متوجه نشدید، به مثالهای نمودار UML زیر نگاه کنید که قطعاً به شما در درک تفاوتهای این دو نوع نمودار کمک میکند.
مثال نمودار کلاس
مثال نمودار کلاس زیر دو کلاس به نامهای User و Attachment را نمایش میدهد. یک کاربر میتواند چند ضمیمه را آپلود کند، از این رو در کلاس با یک «اتحاد» (association) به صورت 0..* یعنی ضرب در سمت ضمیمه به هم وصل شدهاند.
مثال نمودار شی
مثال نمودار شی زیر شیوه نمایش وهلههای شی کاربر و ضمیمه را در حالت Peter (منظور از حالت، کاربر است) که تلاش میکند دو ضمیمه را آپلود کند نشان میدهد.
بنابراین دو مشخصه وهله برای دو شی ضمیمه وجود دارد که باید آپلود شوند.
نمودار پکیج
«نمودار پکیج» (Package Diagram) یک نمودار ساختاری UML است که پکیجها و وابستگیهای بین پکیجها را نمایش میدهد. نمودارهای پکیج به کاربر امکان میدهند که نماهای مختلف یک سیستم را نمایش دهد. برای نمونه در یک اپلیکیشن چندلایه میتوان مدل چندلایه را نمایش داد.
مثالی از نمودار پکیج
نمودار ساختار ترکیبی
«نمودار ساختار ترکیبی» (Composite Structure) یکی از artifact-های جدید است که به UML 2.0 اضافه شده است. نمودار ساختار ترکیبی مشابه نمودار کلاس و نوعی از نمودار ساختاری است که به طور عمده برای مدلسازی یک سیستم از دیدگاه خرد استفاده میشود، اما بخشهای مفرد را به جای کلاسهای کامل به تصویر میکشد. این نوعی از نمودار استاتیک است که ساختار درونی یک کلاس و همکاریهایی که این ساختار ممکن میسازد را نمایش میدهد.
این نمودار میتواند شامل بخشهای درونی به صورت پورت باشد که بخشهای داخلی از طریق این پورتها یا از طریق وهلههایی از کلاس با بخشهای دیگر و با دنیای بیرون و اتصالدهندههای بین بخشها و پورتها ارتباط میگیرند. یک ساختار ترکیبی به مجموعهای از عناصر متقابلاً مرتبط گفته میشود که در زمان اجرا با یکدیگر همکاری میکنند تا به هدف خاصی نائل آیند. هر عنصر برخی نقشهای تعریفشده در این همکاری دارد.
مثالی از نمودار ساختار ترکیبی
نمودار پروفایل
«نمودار پروفایل» (Profile Diagram) به شما امکان میدهد که استریوتایپهای خاص پلتفرم را بسازید و رابطه بین آنها را تعریف کنید. شما میتوانید استریوتایپها را با رسم شکلهای استریوتایپ و ارتباط دادن آنها با ترکیببندی یا تعمیم از طریق رابط مبتنی بر منابع ایجاد کنید. همچنین میتوانید مقادیر تگشده از استریوتایپها را تعریف و بصریسازی کنید.
مثالی از نمودار پروفایل
نمودارهای UML رفتاری
در این بخش از آموزش UML نمودارهای رفتاری به همراه مثال معرفی میشوند.
نمودار مورد کاربردی
یک مدل مورد کاربردی به توصیف الزامات کارکردی سیستم برحسب موارد کاربردی خاص میپردازد. این یک مدل از کارکرد مورد نظر سیستم (مورد کاربردی) و محیط آن (بازیگران) است. موارد کاربردی به شما امکان میدهند که آن چه از یک سیستم نیاز دارید را با شیوه عرضه آن نیازها از سوی سیستم ربط دهید.
«نمودار مورد کاربری» (Use Case Diagram) را میتوان مانند یک منو تصور کرد که شباهت زیادی به منوی رستورانها دارد. با نگاه کردن به منو میدانیم که چه چیزهایی در اختیار ما قرار دارند. خوراکیهای منفرد و نیز قیمتهای آنها در دید ما قرار میگیرند. همچنین متوجه میشوید که رستوران چه نوع غذاهایی مثلاً ایتالیایی، مکزیکی، چینی و غیره عرضه میکند.
با نگاه کردن به منو میتوانید درکی کلی از تجربه تغذیهای که انتظار دارید، داشته باشید. این منو در عمل رفتار رستوران را مدلسازی میکند. از آنجا که این نوع نمودار یک ابزار برنامهریزی بسیار قدرتمند است، به طور کلی در همه فازهای چرخه توسعه از سوی همه اعضای تیم مورد استفاده قرار میگیرد.
مثالی از نمودار مورد کاربردی
نمودار فعالیت
«نمودار فعالیت» (Activity Diagram) به بازنمایی گرافیکی از گردشکارهای گام به گام فعالیتها و اقدامات گفته میشود که از انتخاب، تکرار و همزمانی نیز پشتیبانی میکند.
این نمودار گردش کنترل سیستم هدف مانند اکسپورت کردن قواعد و عملیات بیزینسهای پیچیده، توصیف مورد کاربردی و همچنین فرایند کسبوکار را نیز توصیف میکند. در زبان مدلسازی یکپارچه نمودارهای فعالیت به منظور مدلسازی فرایندهای محاسباتی و همچنین سازمانی (مانند گردشکارها) مورد استفاده قرار میگیرند.
مثالی از نمودار فعالیت
نمودار ماشین حالت
«نمودار حالت» (State Diagram) نوعی از نمودار مورد استفاده در UML است که رفتار سیستم را بر مبنای مفهوم نمودارهای حالت که از سوی «دیود هارل» (David Harel) ارائه شده است توصیف میکند. نمودارهای حالت، حالتها، گذارها و همچنین رویدادهایی که بر این گذار تأثیر میگذارند را توصیف میکنند. این نوع نمودار به بصریسازی چرخه عمر کلی اشیا کمک میکند و از این رو درک بهتری از سیستمهای مبتنی بر حالت ارائه میکند.
مثالی از نمودار ماشین حالت
نمودار توالی
«نمودار توالی» (Sequence Diagram) به مدلسازی همکاری اشیا بر مبنای یک توالی زمانی میپردازد. این نمودار شیوه تعامل اشیا با همدیگر را برحسب یک سناریوی خاص در یک مورد کاربردی به تصویر میکشد.
با پیشرفت ظرفیت مدلسازی بصری میتوانید نمودارهای توالی پیچیدهتری را با چند کلیک بسازید. علاوه بر آن برخی ابزارهای مدلسازی مانند پارادایم بصری میتوانند نمودار توالی را از گردش رویدادهایی که در توضیح نمودار مورد کاربردی ارائه کردهاید، بسازند.
مثالی از نمودار توالی
نمودار ارتباط
«نمودار ارتباط» (Communication Diagram) نیز مشابه نمودار توالی برای مدلسازی رفتار دینامیک مورد کاربردی مورد استفاده قرار میگیرد. زمانی که آن را با نمودار توالی مقایسه میکنیم، میبینیم که نمودار ارتباط تمرکز بیشتری روی همکاری بین اشیا به جای توالی زمانی این ارتباط دارد. این نمودارها در عمل از نظر معناشناختی متناظر هم هستند، از این رو برخی از ابزارهای مدلسازی آنها مشترک هستند.
مثالی از نمودار ارتباط
نمودار مرور تعامل
«نمودار مرور تعامل» (Interaction Overview Diagram) روی بررسی گردش کنترل تعاملها متمرکز است. این نمودار نسخهای از نمودار فعالیت است که در آن گرهها یا تعامل و یا رخداد تعامل هستند.
نمودار مرور تعامل به توصیف تعاملها میپردازد که در آن پیامها و خطوط حیات پنهان هستند.
مثالی از نمودار مرور تعامل
نمودار زمانبندی
«نمودار زمانبندی» (Timing Diagram) به نمایش رفتار اشیا در یک دوره زمانی خاص میپردازد. نمودار زمانبندی شکل خاصی از یک نمودار توالی است. تفاوتهای بین نمودار زمانبندی و نمودار توالی در محورها هستند که معکوس شدهاند تا زمان از چپ به راست افزایش یابد و خطوط حیات که در بخشهای مجزا نمایش مییابند به صورت عمودی چیده شوند.
مثالی از نمودار زمانبندی
بدین ترتیب به پایان مقاله آموزش UML و نمودارهای آن میرسیم. توجه داشته باشید که اپلیکیشنهای سازمانی بزرگ یعنی اپلیکیشنهایی که وظایف اساسی یک کسبوکار را اجرا میکنند و مایه تداوم حیات آن هستند، باید چیزی بیش از یک شاخه از ماژولهای کد باشند.
آنها باید به روشی سازماندهی یافته باشند که امکان مقیاسپذیری، تأمین امنیت و اجرای پایدار را در شرایط تحت فشار فراهم سازند و ساختار یا معماری آنها باید به قدر کافی به روشنی تعریف شده باشد تا افرادی که آن را نگهداری میکنند به سرعت بتوانند مدتها پس از عرضه اولیه، باگها را یافته و آنها را رفع کنند. این کار نیازمند یک مدلسازی دقیق است.
دوره ویدیویی آموزش مدلسازی UML با نرمافزار Rational Rose
Rational Rose ابزاری است که با هدف هدایت پروژههای بسیار بزرگ نرمافزاری و برای طراحی مدلهای کد و ایجاد کدهای پیشتولید به کار میرود. گفتنی است که با نرمافزار مذکور پیش از اینکه کدی برای یک پروژه بنویسیم، میتوانیم سیستم مرتبط به آن پروژه را مدل کنیم و به این ترتیب اطمینان حاصل کنیم که سیستم موردنظر دارای معماری معتبری است. همچنین لازم است به این نکته نیز اشاره کنیم که در مقطع کارشناسی ناپیوسته مهندسی نرمافزار، Rational Rose به عنوان منبع درس «آزمایشگاه مهندسی نرمافزار» مورد استفاده قرار میگیرد.

- برای کسب اطلاع بیشتر راجع به دوره آموزش ویدیویی ذکر شده کافی است روی این لینک کلیک کنید.
سخن پایانی درباره آموزش UML
برای این که ضرورت آموزش UML را بهتر متوجه شویم باید اشاره کنیم که مدلسازی به طراحی اپلیکیشنهای نرمافزاری پیش از کدنویسی آنها گفته میشود. مدلسازی بخشی ضروری از پروژههای بزرگ نرمافزاری است و برای پروژههای متوسط و حتی کوچک نیز مفید است. مدل نقشی مشابه نقشه اولیه در معماری در صنعت نرمافزار ایفا میکند.
با استفاده از مدل افرادی که مسئول توسعه پروژه نرمافزاری هستند، میتوانند مطمئن باشند که کارکردهای تجاریشان کامل و صحیح است و نیازهای کاربر نهایی رفع شده و طراحی برنامه الزامات مقیاسپذیری، استحکام، امنیت، بسطپذیری و دیگر خصوصیات را رعایت کرده است.
تأمین این شرایط پس از شروع به کدنویسی و تغییر در آن کاری دشوار و پرهزینه است. تحقیقات نشان میدهد که پروژههای بزرگ نرمافزاری احتمال شکست بالایی دارند. در واقع احتمال شکست یک پروژه نرمافزاری در مسیر تأمین همه الزاماتش در محدوده زمان و بودجه پیشبینیشده بسیار بالا است. مدلسازی تنها راهی است که به بصریسازی طراحی و بررسی الزامات پیش از دست به کار شدن کمک میکند و روش استاندارد آن استفاده از «زبان مدلسازی یکپارچه» یا UML است. بنابراین میبایست اقدام به آموزش UML و نمودارهای مربوط به آن بکنیم.
با سلام و خسته نباشید اما آموزش به نظرم مشکل داره باید تصحیح بشه،در نمودار ساختاری در عکس و در نوشته هر دو مورد شامل 7 زیر شاخه هست اما با محتوای متفاوت که من رو گیج کرد. لطفا اگر میشه که توضیح بدین برام ممنون میشم.
به طور کلی هفت نوع نمودار ساختاری به صورت فهرست زیر وجود دارد:
1. نمودار کلاس
2. نمودار کامپوننت
3. نمودار توسعه
4. نمودار شیئ
5. نمودار پکیج
6. نمودار ساختار ترکیبی
7. نمودار پروفایل
اما چیزی در عکس میبینیم:
1. نمودار کلاس
2. نمودار کامپوننت
3. نمودار شی
4. نمودر پکیج
5. نمودار توزیع
6. نمودار ساختار ترکیبی
7. نمودار ترکیبی
با سلام و احترام؛
تصویر و تیترها اصلاح شدند.
از همراهی شما با مجله فرادرس بسیار خوشنودیم.
سپاس از سایت فرادرس و نویسنده محترم
یک مقدار سطح بالا بود و برای خواننده غیر حرفه ای فهمیدن مطالب سخت و زبان هم ساده نبود
بسیار گسترده و کامل بود از زحمات شما سپاسگزارم.
واقعا جامع بود.
مرسیانو
خوب و به روز هست و همچنین جامع.
از نظر پوشش مطالب خیلی عالی و بروز هست. برخی موارد هم دسته بندی ها به صورت عالی انجام شده ولی برخی مباحث نیاز دارد که به دسته بندی “چیزها” اشاره شود تا ساختار صحیح در ذهن شکل گیرد.
ارزیابی بنده از آموزش ارایه شده با توجه به 2 روز جستجوی اینترنتی، عالی بود.