انجمن انیاک

نسخه‌ی کامل: مروری بر UML
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
مقدمه

مدل سازی فعالیتی است که سالهاست در توسعه نرم افزار انجام می شود. هنگام نوشتن برنامه ها با استفاده از ساده ترین تا پیچیده ترین زبانها، به مدل سازی نیاز دارید. مدل سازی می تواند به سادگی ترسیم یک flowchart باشد که مراحلی را که یک برنامه انجام می دهد لیست می کند. چرا ما از مدل سازی استفاده می کنیم؟ تعریف یک مدل، تقسیم یک برنامه پیچیده یا یک سیستم عظیم را به اجزای ساده، راحت می کند؛ اجزای مجزایی که می توان به صورت منفرد مطالعه کرد. می توان راحت تر روی قسمت های کوچکتر یک سیستم تمرکز کرد و سپس مفهوم "عکس بزرگ" را درک کرد. از این رو، می توان دلایل مدل سازی را در دو کلمه خلاصه کرد:

قابل خواندن بودن
قابل استفاده مجدد بودن
قابل خواندن بودن

باعث وضوح و سادگی در فهمیدن می شود. فهمیدن یک سیستم، قدم اول در ساختن یا بهبود یک سیستم است. این موضوع مستلزم این است که بدانیم یک سیستم از چه چیزی درست شده، چگونه رفتار می کند، و غیره. مدل سازی یک سیستم تضمین می کند که آن سیستم قابل خواندن شود، و مهمتر از همه، راحت document می شود. نشانه گذاری (depict) یک سیستم برای قابل خواندن کردن آن، مستلزم capture کردن ساختار و رفتار آن سیستم است.

قابل استفاده مجدد بودن، محصول جانبی قابل خواندن کردن یک سیستم است. بعد از اینکه یک سیستم جهت راحت فهمیده شدن مدل سازی می شود، ما به شناسایی شباهتها یا مازاد بودن (redundancy)، بر اساس عملکرد، ویژگی، یا ساختار، تمایل پیدا می کنیم.

با وجود اینکه تکنیکها و ابزارهای زیادی برای مدل سازی وجود دارد، در این مقاله ما روی سیستمها و برنامه هایی مدل سازی شی گرایی که از زبان واحد مدل سازی استفاده می کنند، تمرکز می کنیم. زبان واحد مدل سازی، یا UML، زبانی است که می توان برای مدل سازی سیستمها استفاده و آنها را قابل خواندن کرد. این لزوماً بدین معناست که UML، قابلیت capture کردن مشخصه های یک سیستم را با استفاده از نشانه گذاری ها (notation) فراهم میکند. UML، طیف وسیعی از نشانه گذاری های ساده و قابل فهم برای document کردن سیستمها بر اساس اصول طراحی شی گرا در اختیار می گذارد. این نشانه گذاری ها، نه دیاگرام UML نامیده می شوند.

حالا سوال اینجاست؟ "چرا باید از UML، به عنوان انتخابی ارجح، برای مدل سازی استفاده کرد؟" خوب، جواب یک کلمه است: "استاندارد سازی"! زبانهای مختلفی برای depict کردن سیستمهایی که از متدلوژی شی گرا استفاده می کنند، مورد استفاده قرار گرفته اند. برجسته ترین این متدولوژی ها، Rumbaugh، Booch، و Jacobson است. با وجود اینکه هر متدولوژی مزایای خود را داشت، اما مشکل این بود که آنها اساساً ناهمخوان بودند. از این رو، اگر مجبور بودید روی پروژه های زیادی که از هر یک از این متدولوژی ها استفاده می کردند، کار کنید، باید به خوبی با همه این متدولوژی ها آشنا می شدید. چه کار واقعاً مشکلی! مدل برنامه نویسی واحد دقیقاً همین کار را میکند. این زبان، اصول طراحی این متدولوژی ها را به یک زبان متحد، ساده، و استاندارد تبدیل می کند که براحتی به همه سیستمهای شی گرا اعمال می شود. اما، برخلاف متدولوژی های مختلفی که بیشتر به طراحی جزییات سیستم گرایش دارند، UML، نیازها، تحلیل، طراحی و همچنین پیاده سازی را محدود می کند. زیبایی UML این است که هر نه دیاگرام UML را می توان در صورت نیاز، در مدل افزایشی استفاده کرد. مثلاً اگر نیاز به مدل سازی کردن نیازهای یک سیستم معین دارید، می توانید فقط از دیاگرامهای use case، بدون استفاده از دیاگرامهای دیگر در UML، استفاده کنید. با در نظر گرفتن همه این دلایل، جای تعجب نیست که UML، "زبان منتخب" به حساب می آید.

UML، نسبت به هر تکنولوژی و زبان دیگری، هیچ گونه وابستگی (dependency) ندارد. این بدین معناست که می توان از UML، برای مدل سازی برنامه ها و سیستمهایی که بر پایه هر یک از تکنولوژی های روز از قبیل J2EE، و .NET هستند، استفاده کرد. تلاشهای زیادی صورت گرفته تا UML به عنوان زبانی ساده و دقیق برای مدل سازی کردن، بدون وابستگی به هیچ تکنولوژی ای، باقی بماند.

هدف این مقاله، پوشش دادن مقدمات UML، یعنی هر نه دیاگرام UML است. به علاوه، با ابزارهایی آشنا خواهید شد که UML را ساپورت می کنند. مطالعه UML، به دو بخش Rational Unified Process، و Design Patterns گسترش خواهد یافت.

دیاگرام های UML

ویژگی اساسی UML این است که هیچ دیاگرام دیگری نمی تواند عناصر مخنلف یک سیستم را با کلیاتش، capture کند. از این رو، UML متشکل از 9 دیاگرام است که می توان برای مدل سازی یک سیستم در زمانهای مختلف در چرخه حیاتی یک سیستم نرم افزاری استفاده کرد. نه دیاگرام UML عبارتند از:

Use case diagram: این دیاگرام جهت شناسایی عناصر و فرآیندهای مقدماتی که سیستم را شکل می دهند، استفاده می شود. برای عناصر مقدماتی از عبارت "actorها" استفاده می شود، و فرآیندها "use cases" نامیده می شوند. دیاگرام use case، نشان می دهد کدام actorها با هر use case در تعامل هستند.

دیاگرام کلاس (Class Diagram): این دیاگرام جهت refine کردن دیاگرام use case و تعریف جزییات طراحی یک سیستم استفاده می شود. دیاگرام کلاس، actorهایی را که در use case diagram تعریف شده است، در مجموعه ای از کلاسهای وابسته به هم طبقه بندی می کند. رابطه بین کلاسها ممکن است یک رابطه "is-a" یا یک "has-a" باشد. ممکن است هر کلاس در دیاگرام کلاس، دارای عملکردهای زیادی باشد. برای قابلیت هایی که توسط کلاسها فراهم می شوند، از عبارت "متدهای کلاس" استفاده می شود. غیر از این، هر کلاس ممکن است "صفاتی ((attribute" داشته باشد که به طور منحصر فردی آن کلاس را معرفی می کند.

Object diagram: این دیاگرام، نوع بخصوصی از کلاس دیاگرام است. یک object، نمونه ای از یک کلاس است. لزوماً، این بدین معناست که یک object، هنگامی که سیستم در حال اجرا است، نشانگر حالت یک کلاس در نقطه مشخصی از زمان است. object diagram، حالت کلاسهای مختلف در سیستم و روابطشان در نقطه مشخصی از زمان، را capture می کند.

State diagram: یک state diagram، همانگونه که از نامش مشخص است، نمایانگر حالتهای مختلفی است که objectهای درون سیستم، در طول چرخه حیاتی شان با آنها روبرو می شوند. Objectهای درون یک سیستم، در واکنش به رویدادها، تغییر می کنند. علاوه بر این، یک state diagram، تغییر حالت یک object از حالتی ابتدایی به حالتی نهایی، در واکنش به رویدادهایی که سیستم را تحت تاثیر قرار می دهند، را نیز capture می کند.

Activity diagram: در activity diagram، جریانهای فرایند درون سیستم، capture می شوند. مانند یک state diagram، یک activity diagram، از فعالیتها، اقدامات، تغییر حالتها، حالتهای ابتدایی و نهایی، و چهارچوب تصمیم گیری تشکیل شده است.

Sequence diagram: این دیاگرام، نمایانگر تعامل بین objectهای مختلف در سیستم است. جنبه مهم یک sequence diagram، این است که بر به ترتیب زمان است. این بدین معناست که ترتیب دقیق تعاملهای بین objectها، پله به پله نمایش داده می شوند. Objectهای مختلف در sequence diagram، با ارسال پیام، با یکدیگر در تعامل هستند.

Collaboration diagram: یک collaboration diagram، تعاملهای بین objectهای مختلف را با گروه بندی می کند. این تعاملها، به صورت تعاملهای شماره داری لیست می شنود که به ردیابی ترتیب تعاملها کمک می کند. collaboration diagram، به معرفی همه تعاملهای محتملی که هر object با objectهای دیگر دارد، کمک می کند.

Component diagram: این دیاگرام، نمایانگر اجزای سطح بالایی است که سیستم را درست می کنند. این دیاگرام، نشان می دهد چه اجزایی، سیستم را شکل می دهد و چگونه به هم وابسته هستند. یک component diagram، اجزای جمع آوری شده ای را که بعد از اینکه سیستم مرحله توسعه یا ساخته شدن را گذراند، نشان می دهد.

Deployment diagram: این دیاگرام، پیکربندی عناصر زمان اجرای برنامه را Capture می کند. این دیاگرام، هنگامی که یک سیستم ساخته می شود و آماده نصب شدن است، مفیدتر است.

حالا که شناختی از دیاگرام های مختلف UML پیدا کرده ایم، بیایید ببینیم آیا می توانیم تا حدی این دیاگرام ها را گروه بندی کنیم تا بتوانیم درک بیشتری از چگونگی استفاده ار آنها داشته باشیم.

طبقه بندی دیاگرام های UML — استاتیک، دینامیک، و پیاده سازی

می توان گفت یک سیستم نرم افزاری دارای دو مشخصه متمایز است: یک قسمت ساختاری استاتیک، و یک قسمت رفتاری دینامبک. علاوه بر این دو مشخصه، مشخصه دیگری که یک سیستم نرم افرازی دارد، مربوط به پیاده سازی است. قبل از اینکه دیاگرام های UML را در هر یک از این سه مشخصه طبقه بندی کنیم، بیایید نگاهی سریع به آنچه که این مشخصه ها هستند بیاندازیم:

استاتیک: این مشخصه یک سیستم لزوماً جنبه ساختاری سیستم است. این مشخصه، تعریف می کند یک سیستم از چه قسمت هایی تشکیل شده است.
دینامیک: ویژگی رفتاری یک سیستم، مثلاً، روشی که سیستم نسبت به بعضی رویداداها یا اعمال واکنش نشان می دهد، مشخصه دینامیک یک سیستم است.
پیاده سازی: مشخصه پیاده سازی یک سیستم، یک ویژگی کاملاً جدید است که عناصر مختلفی را که برای نصب یک سیستم لازم هستند، توصیف می کند.
دیاگرام های UML زیر مشخصه های زیر قرار می گیرند:

o استاتیک

· Use case diagram

· Class diagram

o دینامیک

· Object diagram

· State diagram

· Activity diagram

· Sequence diagram

· Collaboration diagram

o پیاده سازی

· Component diagram

· Deployment diagram



مشاهده 4+1 دیاگرام های UML

با در نظر گرفتن اینکه دیاگرام های UML را می توان در مراحل مختلف چرخه حیاتی یک سیستم استفاده کرد، بیایید نگاهی به "4+1 view" دیاگرام های UML بیاندازیم. 4+1 view، ديدی متفاوت برای طبقه بندی و اعمال دیاگرام های UML ارائه می کند. 4+1 view، لزوماً بدین معنی است که یک سیستم چگونه از دید چرخه حیات یک نرم افزار مشاهده می شود. هر یک از این viewها، نشان می دهد چگونه یک سیستم مدل سازی می شود. این موضوع، ما را قادر به درک این مسئله می کند که دیاگرام های UML دقیقاً کجا قابل استفاده هستند.

این viewهای متنوع عبارتند از:

Design View: این view یک سیستم، view ساختاری یک سیستم است. این view، ایده ای از آنچه که یک سیستم معین از آن تشکیل یافته است می دهد. کلاس دیاگرام ها و object دیاگرام ها، design view یک سیستم را شکل می دهند.

Process View: رفتار دینامیک یک سیستم را می توان در حال استفاده از process view دید. دیاگرام های مختلف از قبیل state diagram، activity diagram، sequence diagram، و collaboration diagram در این view استفاده می شوند.

Component View: سپس، شما component view راد دارید که ماژول های گروه بندی شده یک سیستم معین را نشان می د هد که با استفاده از دیاگرام component، مدل سازی شده است.

Deployment View: از این view در UML برای معرفی ماژول های نصب یک سیستم معین استفاده می شود.

Use case View: نهایتاً، ما use case view را داریم. از دیاگرام های Use case در UML، برای مشاهده یک سیستم از این منظر، به عنوان فعالیتها یا مبادلاتی مجزا، استفاده می شود.

خلاصه

در این مقاله، نگاهی سریع به UML انداختیم و دیدیم که در کجای چرخه حیاتی نرم افزار جای دارد. هر یک از این نه دیاگرام که UML را تشکیل می دهند، قدم به قدم در هفته های بعد توضیح داده خواهند شد.
خیلی جالب بود
لینک مرجع