Learn_UML

62
ش وز م آUML

Transcript of Learn_UML

Page 1: Learn_UML

UMLآموزش

Page 2: Learn_UML

Use Caseدیاگرامهای

administratorارسال شده توسط

18:47 2010. مي 27

Use case diagrams :موارد زیر را نشان می دهد

Use case ها: یکuse case ترتیب اعمالی را که چیزی از ،value ی قابل اندازه گیری را برای یکactorفراهم می کند، و به عنوان یک

بیضی افقی رسم می شود، توصیف می کند.

Actor ها: یکactor .یک شخص، سازمان، یا سیستم خارجی است که در یک یا چند تعامل با سیستم شما نقشی دارد ،Actorها به صورت نمادآدمک ترسیم می شوند.

Association ها: رابطه بینactor ها وuse case ها، در دیاگرامuse caseتوسط خطوط توپر نشان داده می شوند. هر جا که ،

actor درگیر تعاملی است که توسط یک use case .توصیف شده است، رابطه ای وجود دارد ،Association ها به صورت خطوطی کهuse case ها وactor( ها را با یک فلشarrowheadروی یکی از خطوط به هم وصل می کنند، مدل سازی می شوند.اغلب از سرنیزه برای نشان )

a با use case ابتدایی درون actorدادن جهت فراخوانی اولیه رابطه، یا برای نشان دادن اشتباهdata flow استفاده می شود. نوک نیزه ها معموًالگرفته می شود.

جهبه دربرگیرنده سیتم )اختیاری(: می توان یک مستطیل دورuse case ها رسم کرد، کهsystem boundary boxنامیده می شود، تا گستره

هایBox اینگونه نیست. box نشانگر عملکردی است که در دید است و هرچیزی بیرون از boxسیستم شما را نشان دهد. هر چیزی درون عمده ازreleaseها در هر use caseمحدوده سیستم بندرت استفاده می شوند، گرچه من در بعضی موارد از آنها جهت تشخیص اینکه کدام

، چگونگی انجام این را نشان می دهد. 2سیستم تحویل داده می شوند، استفاده کرده ام. شکل شماره

:)بسته ها )اختیاری( بسته ها packages ساختارهای )UML از قبیل( یی هستند که شما را قادر به طبقه بندی عناصر مدلuse caseبه )ها

use case، شامل دیاگرام UML نشان داده می شوند و می توان آنها را در هر دیاگرام file foldersصورت گروهایی می کند. بسته ها به صورت و کالس دیاگرام، استفاده کرد. من از بسته ها، فقط زمانی استفاده می کنم که دیاگرام های من سنگین می شوند - یعنی اینکه روی یک صفحه

را با1، نشان می دهد چگونه می توان شکل 3چاپ نمی شوند - و نمی توان یک دیاگرام بزرگ را به دیاگرام های کوچک تر طبقه بندی کرد. شکل بسته ها صبقه بندی کرد.

نشان داده شده است، دانش آموزان با کمک مسئولین مربوطه در حال ثبت نام هستند. استادها در حال وارد کردن نمره هایی هستند1در مثالی که در شکل useکه دانش آموزان در تکالیفشان بدست آورده اند، و مسئولین ثبت نام، کارنامه های دانش آموزان را نیز توزیع می کنند. دقت کنید که چگونه بعضی از

case ها درگیر چندactor هستند. به این موضوع نیز دقت داشته باشید که چگونه بعضی از association ها دارایarrowhead هستند- هر use case association معین، یک arrowhead( صفر یا یک خواهد داشت. رابطه association بین دانش آموز و ثبت نام در )seminar ( نشان می دهد که4 )شکل

a توسط یک دانش آموز فراخوانی می شود نه مسئول ثبت نام )use caseاین درگیر است(. فهم اینکهuse case مسئول ثبت نام نیز در این actor ابتداassociation a هستند.use caseیی را نشان می دهند که تا حدودی درگیر یک actorها، جریان های اطالعات را نشان نمی دهند مهم است؛ آنها صرفاa، دانش آموزان باید نشان بدهند قصد ثبت نام در کدام use case و actorاطالعات بین را دارند، و سیستم باید به دانشseminar رد و بدل می شود، مثال

، این نوع اطالعات را مدل سازی نمی کنند. جریان اطالعات را می توان باuse caseآموزان نشان دهد ایا آنها ثبت نام شده اند یا خیر. اما، دیاگرام های

ییarrowhead هیچ actor registrar وSeminar use case در Enroll مدل سازی کرد. خط بین UML activity diagramsاستفاده از

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

، مستند می شود.use caseتوصیف

Actor ها همیشه با حداقل یکuse case درگیر هستند، و همیشه روی لبه های بیرونی دیاگرام use case.رسم می شوند

use case: سیستم دیاگرام 1شکل شماره

Page 3: Learn_UML

هاrelease جهت نشان دادن System boundary boxes: استفاده از 2شکل شماره

use caseها جهت ساده کردن دیاگرامهای package: اعمال 3شکل شماره

Page 4: Learn_UML

use caseایجاد دیاگرام های

useها چگونه با سیستم در تعامل است تا مجموعه ای از actorهای زیادی را معرفی کنم. شما باید بپرسید actorدوست دارم تا آنجا که ممکن است، case ،های ابتدایی را معرفی کند. سپس، روی دیاگرامactor ها را بهuse case هایی که با آنها درگیر هستند، متصل می کنید. اگر یکactorاطالعاتی را

use casea را راه بیاندازد، یا اطالعاتی رابه عنوان خروجی use caseفراهم کند، دریافت کند، آنگاه باید ارتباطی بین آنها وجود داشته باشد. من معموًالarrowhead( ها را وارد خطوط ارتباطassociation lines( نمی کنم زیرا تجربه من نشان می دهد که افراد آنها را با نشانه های جریان اطالعات )

information flow.اشتباه می گیرند، نه با فراخوانی اولیه )

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

تبعیت می کنید، انعطاف پذیر باشید.Model With Othersافراد مختلف، از روش های مختلف استفاده می کنند، پس باید وقتی که از روش

فرصتهای استفاده مجدد

را معادل یک "extendها را نشان می دهد. من دوست دارم روابط use case( بین inheritanceها، و includeها، extendشکل چهار، سه نوع ربطه )hardware interrupt در نطر بگیرم زیرا شما نمی دانید کی یا آیا "extending use case فراخوانده خواهد شد؛ و روابط ،Includeرا معادا یک "فرآیند

، این سه رابطهReuse in Use Case Models اعمال می شود. این مقاله، UML class diagrams، به همان روش Inheritanceفراخوانی" در نظر بگیرم؛ را با جزییات بیشتر توضیح می د هد.

.use case: استفاده مجد د از 4شکل

Page 5: Learn_UML

Agileباقیمانده

را نگه داشت؟ ابتدا، سعی کنید تا آنجا که ممکن است آنرا ساده نگه دارید. از ابزارهای ساده و انعطاف پذیرuse case modeling agileچگونه می توان a دیاگرامهای ، مثالی5 می بینید. شکل 5 را روی یک وایت برد ایجاد می کنم، همانطور که در شکل use caseبرای مدل سازی با آن استفاده کنید. من معموًال

( است، پسrepresentation به ما می گوید که محتوا مهم تر از ظاهر )AMهای پروژه ام رسم کرده ام. stakeholderاز یک دیاگرام ابتدایی است که من با رسم کردن دیاگرام با دست، مسئله بزرگی نیست. در ضمن، مهم نیست که دیاگرام کامل نیست، زیرا یک دانشگاه دارای بخشهای بیشتری است که در اینجا

نشان داده شده، و همیشه می توان در صورت نیاز، دیاگرام را تغییر داد.

: طرح وایت برد5شکل

Page 6: Learn_UML

است،؛ بهuse case روی یک وایت برد نیز می نویسم. هدف من ثبت اطالعات کافی در مورد use caseهمزمان با ایجاد طرح، من شرح مختصری از هر a آنها را اضافه کنیم، چه به صورت یک a متوجه شویم درباره چیست. اگر به جزییات بیشتری نیاز داشته باشیم، همیشه می توانیم بعدا طوری که کال

essential/business use case یا یک system use case.

Page 7: Learn_UML

UML Use Case Diagramsنکات و سواالت رایج :

administratorارسال شده توسط

13:01 2010. مي 30

چیست، و کی باید از آن استفاده کرد؟)UML Use Case Diagram )UCDیک

a نمایشUML Use Caseدیاگرام های را می توان جهت توصیف عملکرد یک سیستم به صورت افقی استفاده کرد. این بدین معناست که غیر از صرفا هاUCDها جهت نشان دادن همه عملکردهایی که در دسترس است، استفاده کرد. تذکر این نکته مهم است که UCDویژگیهای ویژه سیستم شما، می توان از

a با -subها و systems actionها فرق دارند، زیرا آنها تالشی برای نشان دادن ترتیب یا تعداد دفعاتی که flow chartها یا sequence diagramاساساaction.ها باید اجرا شوند، نمی کنند. تعدادی مثال گرافیکی در این مقاله وجود دارد؛ شاید بخواهید نگاهی به آنها بیاندازید تا با ظاهرشان آشنا شوید

UCD عنصر اصلی هستند: 4ها دارای فقط actorسیستم، که سیستمی که شما توصیف می کنید، با آن ارتباط متقابل دارد، خود ها ،use

caseبین این عناصر هستند.رابطه، یا سرویسها، که سیستم می داند چگونه اجرا کند، و خطوطی که نشانگر ها

استفاده کنید )یعنی از نگاهی که عملکرد سیستم واضح است، اما توصیفها درtop-down برای نمایش عملکردهای سیستم تان به صورت UCDشما باید از سطح باًالیی هستند. جزییات بیشتر را می توان به دیاگرام ، جهت توضیح دادن نکات جالب در رفتار سیستم، اضافه کرد(.

، توسط تمامی افرادی که می توانند انرا ببینند، انجام داد، سازگار شود.database توصیف همه چیزهایی که می توان با یک task، به خوبی با UCD یک مثال:

task( استفاده کنید، یا تالش کنید ترتیب مراحلی را که باید به منظور تکمیل یک errorها برای نمایش رفتارهای استثناء )هنگام روی دادن UCDشما نباید از استفاده کنید.Sequenceاجرا شوند، نشان دهید. برای این کار از دیاگرام

(، رفتارهای شاخه ای )exception cases سازگار می شود، زیرا موارد استثناء )TCP/IP، به طور بد وضعیفی با توصیف پروتکل شبکه ای UCD یک مثال:branching behaviors( و عملکردهای شرطی ،)conditional functionality.زیادی وجود دارد )

چه کسانی هستند؟UCDهای یک actorچگونه بفهمیم

" ظاهر میActor's Actions آسان است: موجودیت هایی که رفتارشان در ستون "actor کار می کنید، شناسایی Action/Responseوقتی با یک جدول های سیستم هستند.component" ظاهر می شود، System's Response هستند؛ و موجودیت هایی که رفتارشان در ستون "actorشود،

a موجودیت هایی هستند که نمی توانactor، یا توصیف یک سناریو هستید، sequenceاگر در حال کار کردن با نسخه ای قدیمی، یک دیاگرام ها معموًال a ها،actorهایی که قسمتی از سیستمی نیستند که شما می سازید یا توصیف می کنید(. بارزترین کاندیدها برای agentرفتارشان را کنترل کرد یا تغییر داد )مثال

a یک فرآیند انسانی است )از قبیل متد معینی برای رابطه با مشتری نقشهای سیستم هستند، مگر در موارد نادری که سیستمی که شما توصیف می کنید، واقعا هستند. اگر سیستم شما با سیستمهای دیگرactorهایی که باید توسط کارمندان پیگیری شوند(. نقشهایی که باید با ان ارتباط متقابل برقرار کرد،همگی

ها برخوردactor نگه داری می شوند( ارتباط متقابل دارد، بهتر است با آنها مثل legacy systemها، و سرورهایی که توسط افراد دیگر یا database)ازقبیل کنید.

a سیستم شما مجبور به ایجاد رابطه با نرم افزار موجود برایdatabaseهنگام افزودن یک مثال: جدید به سیستم، جهت مدیریت امور مالی شرکت، احتماًال مدیریت انبار خواهد بود. از آنجاییکه شما آن نرم افزار را ننوشته اید، آن را جایگزین نکنید، و ففط از سرویسهایی که در اختیارتان می گذارد استفاده کنید،

actor.بودن برای آن سیستم، معنادار خواهد بود

چه چیزی بگذاریم؟System" boxاز کجا بفهمیم در "

system box فقط در دیاگرام های سطح باًال ظاهر می شود )به یاد داشته باشید که توصیف یک UML Use Caseمعمولی، از دیاگرام ها و زیردیاگرام های هایش فراهم می کند. هرactorیی که سیستم شما برای سطح باال را دربربگیرد، یکی برای هر سرویس Use caseزیادی تشکیل خواهد شد(، و باید نمادهای

ظاهر شود. یک راهsystem boxنوع رفتار داخلی، که سیستم شما ممکن است داشته باشد و فقط توسط بخشهای دیگر سیستم استفاده می شوند، نباید در مفید برای استفاده از این سرویسهای سطح باًال، به ترتیب زیر است:

هایی که با آن در ارتباط متقابل هستند تا فقط آن سرویس را در یکactor، یک سرویس سطح باًال را ارایه می کند، آن سرویس باید برای use caseاگر یک session.از سیستم شما تقاضا کنند، معنی دار باشد

" را به عنوانClose Shutter"، و "Open Shutter"، "Flash را برای یک دوربین نمایش دهیم. فرض کنید ما "use case در دیاگرام زیر، قصد داریم مثال:use case تمامی اینها رفتارهایی هستند که یک دوربین دارد، اما هیچ عکاسی دوربینش را برنمی دارد، سپس ،a shutterهای سطح باًال انتخاب می کنیم. مسلما

را باز کند، و آن را پایین بگذارد، وآن روز از عکس برداریش راضی باشد. چیز مهمی که باید بفهمیم این است که این رفتارها به تنهایی انجام نمی شوند، اماa بخشی از یک " است. )به یاد داشته باشید که یک بار عکس گرفتن با دوربین برای عکاسان بی معنیtake picture سطح باًالتر، یعنی "use caseنسبتا

است.(

Page 8: Learn_UML

actorها در دیاگرام من ارتباط های متقابل دارند. چگونه انها را نشان دهم؟

ها در سیستم تان وجود داشته باشد، شما نمی توانید آنها را روی همان دیاگرام سیستم تان نمایش دهید. کاری که در عوضactorاگر ارتباط های متقابلی بین هایی در اینactorها به تنهایی مانند یک سیستم رفتار می کند، وبا سیستم دیجیتال تان مانند actor مجزا است، که با یکی از UCDمی توانید بکنید، ترسیم یک

دیاگرام جدید.

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

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

Page 9: Learn_UML

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

این کار را بکنم؟

( و افقی از عملکرد باشد، نهtop-downها باید توصیفی از باًال به پایین )UCD نمی توانید این کار را انجام دهید. UML Use Case Diagramبا استفاد ه از یک ، ایده خوبی نیست. در عوض شما باید از دیاگرامuse caseتوصیفی جزء به جزء از رفتار. در بیشتر اوقات، تالش برای نمایش ترتیبی از اعمال با دیاگرام های

sequence یا یک flow chart.همانطور که در زیر توضیح داده شده، نمایش شرایط شاخه ای ساده ) ) سنتی استفاده کنیدsimple branching conditions با یک )UCDامکان پذیر است، اما از این تکنیک باید کمتر استفاده کنید زیرا ممکن است یک دیاگرام را غیر فابل خواندن بکند ،).

سنتی چیست؟flow chart با UML Use Case Diagramتفاوت یک

ها، رفتار را به صورت خطی و زمان محورflow chartها، عملکرد را به صورت از باًال به پایین نمایش می دهند، در حالیکه UCDهمانطور که در باًال اشاره شد، کردن آنها نیز متفاوت است.developنشان می دهند. همچنین، روش

، مرحله اول، شناخت تمامی رفتارهای سطح باًال است. وقتب این کار را انجام دادید، ازUCD: )این متن مربوط به دیاگرام زیر است(. هنگام ساختن یک مثال تان بهuse caseقبل باید ، همه کارهایی را که سیستم شما می داند چگونه انجام دهد، حداقل به روشی سطح باًال، توصیف کرده باشید. سپس با تجزیه کردن

use case های بیشترکه توسطuse case ،سطح باًال استفاده می شوند، می توانید به اضافه کردن جزییات ادامه دهید. در هر مرحله از از نصب UCD،شما نخواهد بود. و اگر عملکرد یا رفتار در طول حیات پروژه تانfeature setشرح کاملی از عملکرد سیستم است: شاید فاقد جزییات باشد، اما فاقد عناصر

اضافه یا حذف شود، محدوده تغییراتی که باید اعمال کنید، وابسته به محدوده تغییرات در خود سسیستم، و کامل بودن مدلتان است. این، مفید است؛ زیرا بدین ، تا وقتی کهflow chartمعناست که وقتی مدلتان خیلی ناقص است، ایجاد تغییدات گسترده در سیستم، مستلزم کنارگذاشتن کارهای دیگر نیست. اما یک

های تان خواهد شد.flow chartترسیم آن را تمام نکرده اید، به طور صحیح سیستم را توصیف نمی کند، حتی تغییرات کوچک در سیستم منجر به بازنویسی ،a ها ساپورت می کنند.flow chartها، فرایند تحلیل و طراحی را خیلی بهتر از UCعموما

Page 10: Learn_UML
Page 11: Learn_UML

استفاده کنم؟uses arrowکی از

extends arrow( یا extends edge از یک ،)use case X به یک use case Y کشیده می شوند تا نشان دهند که فرآیند Xیک رفتار ،

دارد که همگی دارایuse case است. شما در شرایطی از این استفاده می کنید که سیستم تان تعدادی فرآیند Yموردی از همان نوع فرآیند عمومی تر را برای شما غیر ممکن می کند.use caseهای مشترک هستند، اما هر کدام چیز متفاوتی دارد که دسته بندی همه آنها به یک subtaskتعدادی

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

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

، اجازه داشتن هر دو را به ما می دهد: میUMLهستند، اما از جهاتی نیز شبیه هم هستند، پس نادیده گرفتن شباهت هایشان، بی معنی است. خوشبختانه،

both processes extend a common, moreنویسیم که تخصیص این دو نوع صندلی، فرآیندهای متفاوتی هستند، اما در

general process.تخصیص صندلی ها(، شبیه هم هستند(

Page 12: Learn_UML

ها چیست؟extendها و useفرق بین

a بهترین راه فکر کردن درمورد عناصر دیاگرام به ترتیب زیر است: احتماًال

"-X uses Y" نشان می دهد که تسک "X" دارای یک زیر تسک ،"Y" است، بدین معنی که در فرآیند تکمیل تسک "X" تسک ،"Yحداقل یکبار تکمیل می "

شود.

"-X extends Y" نشان می دهد که "X" یک تسک از همان نوع ،"Y" است، اما "X" یک مورد ویژه و معین تر برای انجام ،"Y،است. بدین معنی که "

انجام داد.Y دارای فرآیندهای کمی اضافی تر است که فراتر از چیزهایی است که باید جهت تکمیل X است، اما Y بسیار شبیه انجام دادن Xانجام دادن

" رًال چندین بار انجام دهید. گرچه کلیدAssign a seat" و "Weigh luggage"، شما باید "Check-inمثال نشان می دهد که به منظور انجام موفقیت آمیز " تکمیل شود، انجام شوند. وقتی متوجه شویدuse case استفاده می شود، باید قبل از اینکه آن use caseهایی که توسط یک UCDاین کار این است که همه

، مانند نمونه باًالیی، ترسیم کنید، اما این کار بی معنیusesکه چندین نوع تخصیص صندلی وجود دارد، شاید وسوسه شوید یک دیاگرام با استفاده لبه های

است. این دیاگرام می گوید که به منظور تخصیص دادن یک صندلی، شما باید هم یک صندلی کنار پنجره و هم یک صندلی کنار راهرو به مسافر تخصیص دهید.

a نترسید، رابطه ، )همانگونه که در دیاگرام زیر نشانextends، به خوبی این موقعیت را منترل می کند. با استفاده از رابطه extendsاما اصال

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

Page 13: Learn_UML

Use Case دارد. چگونه می توانم آن را با errorسناریویی که من می خواهم توصیف کنم، به چند حالت ممکن تقسیم می شود، یا چندین

Diagramsنشان دهم؟

وجود دارد کهgrey-area، بهتر انجام می شود، اما موارد flow chart یا Sequenceنشان دادن عدم موفقیت و حالت های مختلف، اغلب با یک دیاگرام ، مجبور به استفاده ازUse Case Diagram در branching مناسب است یا خیر. یک قانون: اگر در نمایش اعمال Use Case Diagramمعلوم نیست آیا یک

دیگر استفاده کنید.diagramming بیشتری شوید، و دیاگرام بدست آمده نامشخص یا گیج کننده باشد، از یک سبک use caseنمادهای

FLOW CHARTها، UCDها امکان پذیر است، گرچه دوباره تاکید می کنم که UCD با branchingبا توجه به گفته باًال، نشان دادن رفتار ساده a شکست یاuse caseنیستند. این کار از طریق تشخیص اینکه آیا ، یا فرآیندی که سعی می کنید نمایش دهید، می تواند دو حالت مختلف داشته باشد )مثال

a در متفاوت دارید: یکی که در آن، فرآیند موفقیت آمیز است، و دیگری که در آن، فرآیندuse caseموفقیت(، آنگاه بدین معنی خواهد بود که شما واقعا

اصلیuse case اصلی هستند، مرتبط هستند، در نتیجه، شما Use caseهای extension، در اینکه هر دو use caseشکست می خورد. البته، این دو

a سواستفاده از معنی لبه extend که از آن Branchingرا با a د ر اینجا برای نمایشextends شده، ترسیم می کنید.من این را تقریبا می دانم، زیرا واقعا

استفاده نمی شود )که هدفش است(. دوباره می گویم، از این تکنیک به ندرت استفاده کنید، زیر ا خیلی زود می تواند یک دیاگرام راuse caseطبقه بندی غیرقابل خواندن بکند.

روی آن قرار میCD، سینی را که CD player نرمال را نمایش دهید. وقتی همه چیز خوب است، CD Player یک use caseفرض کنید می خواهید مثال: رفتار، د رزیر نشان داده شده(. متاسفانه، برخی کاربران، هنگامی کهuse case را شروع می کند )CDگیرد را به داخل می کشد، آن را می خواند، و پخش

CD کردن play به سیستم می دهند. بنابراین، فرمان انجام نمی شود، و سیستم مجبور است کار دیگری غیر از play در سینی وجود ندارد، فرمان CDهیچ a به کاربر بگوید یک تاییدCD اضافی تغییر می دهیم، که در آن وجود use case قراردهد(. برای نشان دادن این، ما دیاگرام نرمال را با چند CDانجام دهد )مثال

، این است که این کار انجام می شود درCD می کند. مورد مخصوص دیگر تایید وجود extend را CD، رفتار تایید اینکه وجود CD کردن playمی شود. رفتار قرار دهد.CD وجود ندارد، پس به کاربر گفته می شود تا یک CDحالی که

Page 14: Learn_UML

نفر2 از طرف 5.0امتیاز فعلی

Page 15: Learn_UML

UMLکالس دیاگرامها در

administratorارسال شده توسط

18:31 2010. جوان 6

، کالسهای سیستم، روابط درونیUML 2 class diagram، مهمترین قسمت تحلیل و طراحی شی گرا هستند. UML در class diagramsکالس دیاگرامها )) ها، موارد استفاده زیادی دارند، از قبیلClass diagram(، و عملیاتها و نسبتهای کالس را نشان می دهد. association، و aggregationشان )شامل وراثت،

ها را روی وایت برد ترسیم کنم، زیرا ابزارهای ساده،class diagramمدل سازی مفهومی/دومینی و مدل سازی طراحی با جزییات. من ترجیح می دهم که قابل درک تر هستند. اکثر دیاگرام هایی که من در این مقاله نشان خواهم داد، با استفاده از یک وسیله نرم افزاری طراحی، ترسیم شده اند.

در این مقاله، موارد زیر مورد بحث قرار می گیرد:

Class diagramهای مفهومی

طراحیclass diagrams

چگونگی ایجاد یکUML class diagram

Conceptual Class. دیاگرام های 1

ها به صورت جعبه هایی با سه قسمت نشان داده شدهClass یک مدل مفهومی برای دانشگاه را نشان می دهد. UML class diagram، شروع یک 1شکل های کالس را لیست می کند، و قسمت سوم، متدها را لیست می کند. با دربرگرفتنattributeاند؛ قسمت باًالیی، نام کالس را نشان می دهد، قسمت میانی،

و یک جعبه در کالس، دارم درباره مدل خودم تصمیم گیری می کنم، بعضی اوقات اگر هدف من مدل سازی مفهومی باشد، نباید این کار راattributeیک نزدیکتر خواهد بود )پسCRC modeانجام دهم. روش دیگر، داشتن دو قسمت است، یکی برای اسم و دیگری برای لیست کردن مسئولیتها. این کار، به یک

هاclass box استفاده می کردم(. همچنین می توانستم از UML class diagram به جای یک CRCاگر می خواستم از این روش استفاده کنم، از کارتهای استفاده کنم که فقط اسم کالس را نشان مدهد، و مرا قادر به تمرکز روی کالسها روی کالسها و روابطشان می کند. اما اگر هدف من آن بود، بیشتر احتمال

AM’s Apply the Right ایجاد کنم. به طور خالصه، من ترجیح می دهم روش ORM diagramداشت به جایش یک

Artifact(s).را دنبال کنم و از هر تکنیک مدل سازی استفاده کنم

مفهومیclass diagram: طرح اولیه یک 1شکل

Page 16: Learn_UML

Enrollment( یک کالس پیوندی ،associative است، که یک کالس لینک نیز نامیده می شود، و برای مدل سازی )associationهایی بکار می رود که

a هنگام تحلیل مدل سازی می شوند و سپس به چیزی که هنگام طراحی در شکل attributeدارای متد و نشان می دهم،2 هستند. این کالسها معموًالrefactore شکل( یک دیاگرام مفهومی است(. تا جاییکه من می دانم، هیچ زبان برنامه نویسی ای وجود ندارد که تصویر )2 می شود ،notion)

associationدراین حالت بسازید، من تمایلی به استفاده از کالسهای a هایی را ساپورت کند که مسئولیت دارند. زیرا شما می توانید نرم افزارتان را مستقیماassociationندارم و در عوض آنها را با تالشهای هنگام تحلیل، حل می کنم. این روش، بهترین روش برای مدل سازی نیست، اما عمل گرایانه است، زیرا

ندارند.associativeهای پروژه، نیازی به یادگیری عالمت ها و مفاهیم پشت کالسهای stakeholderاعضای دیگرتیم، شامل

، تحتSeminar در کالس attribute، تجزیه شده است. می توانستم یک associative را نشان می دهد. کالس 1، نسخه بازنویسی شده شکل 2شکل

a چیزی است که نمایش می دهد: اشیاء آنassociation، اضافه کنم، اما در عوض آن را به صورت یک Waiting Listنام مدل سازی کنم، زیرا واقعا

a باUML 2.0هایی درpropertyها هر دو associationها و Attribute یا دانش آموزان بیشتری را حفظ می کند. 0سمینار، لیستی از اشیاء هستند، پس اساسا ها پیاده سازی میoperationها و attributeها، به صورت ترکیبی از associationآنان به صورت همان نوع چیزها رفتار می شود. همچنین نشان دادم که

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

Page 17: Learn_UML

on waiting list یک ، association یک طرفه است زیرا هنوز به همکاری در دو جهت نیازی نیست. روش Create Simple

Content را دنبال کنید و بیش از حد مدل سازی نکنید – در حال حاضر نیازی به نیازی به association.دوطرفه ندارید، پس آن را مدل سازی نمیکنید

enrolled in یک ،association بین کالسهای Student و Enrollmentاست که به دًالیل مشابه، یک طرفه است. برای این

association بنظر می رسد که اشیاء ،student می دانند درگیر چیزی هستند که enrollmentثبت می کند؛ سمینارهایی که در گذشته شرکت کرده اند، و دانش آموزان و فراهم کردن اطالعات دربارهobject، برای محاسبه معدل associationهمچنین سمینارهایی که در حال حاضر با آنها درگیر هستند. این

سمینارهایی که در آنها شرکت کرده اند، بکار می رود.

، جهت تهیه لیستی ازstudent وجود دارد تا قابلیت اشیاء Seminar و Enrollment بین enrolled in associationهمچنین یک

، آنانprofessor، دو طرفه است، زیرا اسیاء Seminar و کالس Professor بین کالس instructs associationسمینارها را ساپورت کند.

می دانند چه سمینارهایی را تدریس کرده اند و اشیاء سمینار می دانند چه کسی به آنان تدریس کرد ه است.

Method و Attribute Nameها و متدها با استفاده از فرمتهایattributeوقتی دارم مدل سازی مفهومی می کنم، سبک من، نام گذاری

Nameثابت و محسوس برای نام گذاری، کمک می کند تا دیاگرامتان قابل خواندن شود، که یک مزیت مهم در روش ست. دنبال کردن یک روشAM’s

Apply Modeling Standards قابلیت دیده شدن 2 است. همچنین در نظر داشته باشید که چگونه من در شکل ،attributeها و

a می توان آنرا نادیده گرفت. این را همVisibilityمتدها را تا حد زیادی مدل سازی نکرده ام. قابلیت دیده شدن ) ( هنگام طراحی، مسئله مهمی است، اما فعالدر نظر داشته باشید که من همه امضاهای متد این کالس را تعریف نکرده ام.

ها غیر از یکی، تعیین کنم و آن را با یک یادداشت عالمتassociation( را برای همه multiplicityمن با اطمینان و براساس این اطالعات، توانستم کثرتها )a با هایم درباره آن بحث کنم. به استفاده من از عالمت سوال در این یادداشت توجه کنید.stakeholderگذاری کردم تا بعدا

مدل سازیStudent و Seminar بین association روی {ordered FIFO} را در این مورد UML constraint، من یک 2در شکل

در لیست انتظار گذاشته می شوند.FIFOکردم. ایده اصلی این است که دانش آموزان بر اساس

، برای مدل سازی اطالعات پیچیده و یا مهم موجود در دیاگرامUMLهای Constraintبه عبارت دیگر، دانش آموزان به ترتیب در لیست گذاشته می شوند. از constraint{” مدل سازی می شوند، جاییکه constraint description، با استفاده از فرمت “}UMLهای Constraintتان استفاده می شود. UMLهای

description a .predicate calculus ممکن است هر فرمتی داشته باشد، مثال

هاClass Diagram. طراحی 2

به زودی

هاClass Diagram. چگونگی ایجاد کردن 3

، باید موارد زیر را به طور مکرر مدل سازی کنید:conceptual class diagramجهت ایجاد و تکمیل یک

Page 18: Learn_UML

کالس ها

مسئولیت ها

Associationها

روابط وراثتی

Composition associationها

Vocabularyها

، باید موارد زیر را به طور مکرر مدل سازی کنید:design class diagramجهت ایجاد و تکمیل یک

کالس ها

مسئولیت ها

Associationها

روابط وراثتی

Composition associationها

Interfaceها

. کالس ها3.1

ها هم چیزها را می شناسندObject، می تواند یک شخص، مکان، شی، مفهوم، رویداد، صفحه، یا گزارش باشد که مربوط به سیستم شماست. objectیک ها از آنobject است که template است و، فقط یک object هستند( و کار انجام می دهند )دارای متد هستند(. یک کالس، نمایشی از یک attribute)دارای

ایجاد می شوند. کالس ها، بخش اصلی یک برنامه شی گرا را شکل می دهند. با اینکه هزاران دانش اموز در دانشگاه شرکت می کنند، اما شما فقط یک کالس

را مدل سازی می کنیدف که کل کلکسیون دامش آموزان را نمایش می دهد.Studentبه نام

. مسئولیت ها3.2

a کالسها به صورت مستطیل هایی با سه قسمت، مدل سازی می شوند: قسمت باًال برای نام کالس، قسمت میانی برای های کالس، و قسمتattributeمعموًالپایینی برای متد کالسها. کالس های اولیه مدلتان را می توان به همان حالت که زمان مدل سازی هستند، شناسایی کرد، و همین طور مسئولیتهای اولیه را )

attribute .)ها و متدهایش راattribute ها، اطالعات ذخیره شده ای در مورد یکobject هستند )یا حداقل، اطالعات موقتی که در مورد یک objectنگه داری a، دانش آموزان، شماره ها، اسامی، آدرس هاف و شماره تلفن هایobjectمی شوند(، در حالیکه متدها، چیزهایی هستند که یک یا کالس انجام می دهد. مثال

های یک دانش آموز هستند. همچنین، دانش آموزان در کالسها ثبت نام می کنند، یا آنها راattributeدانش آموزان را در اختیار دارند. همه آنها، نمونه هایی از حذف می کنند، و جزوه درخواست می کنند. اینها همه، نمونه هایی از کارهایی است که یک دانش آموز انجام می دهد، که مانند کدها پیاده ساز می شوند. شما

ها بدانید.procedureها و functionباید متدها را معادلی شی گرا از

مالحظه ای مهم برای سطح مناسب جزییات:

است. وقتی در مورد آن تامل می کنید، می فهمید کهaddress و attribute مالحظه کنید که دارای یک 2 را در شکل studentکالس مدل سازی شده

a حاوی اطالعات خیابان و شهر می شود. یک روش بهتر مدل سازی آن، در شکل 4آدرس ها، چیزهای پیچیده ای هستند. آنها داده های پیچیده ای دارند، که مثال

برای هر قسمت از داده هایی را که تشکیل می دهد، در بربگیرد،attribute مدل سازی شده تا یک Addressنشان داده شده است. دقت کنید که کالس

متد اضافه شده است: یکی جهت تایید اینکه این آدرس معتبر است و دیگری جهت نمایش آن به صورت یک لیبل )شاید برای پاکت پستی(. با معرفی کالس2و

Address کالس ،Studentمنسجم تر شده است. و دیگر منطقی را که مرتبط به آدرس است، دربر نمی گیرد. حاًال می توان از کالس

Address در کالس a کردن را کاهش می دهد. به عالوه، اگر نیاز بهdevelop که هزینه کلی Student در جاهای دیگردوباره استفاده کرد، مثال

a در ساپورت دانش آموزان با چندین آدرس باشد — ممکن است در طول ترم یک دانش آموز در جاهای مختلفی غیر از آدرس پستی دایمش زندگی کند، مثال خواب گاه — ممکن است سیستم نیاز به ردیابی اطالعات کند. داشتن یک کالس مجزا برای پیاده ساری آدرس ها، باید پیاده سازی اضافه کردن این رفتار را

آسان کند.

(Conceptual class diagram: دانش آموز و آدرس ها )4شکل

Page 19: Learn_UML

در سطحresponsibility است. خط زیر آن نشان می دهد که این، یک Is Eligible to Enroll، مسئولیت Studentیک ویژگی جالب کالس

در سطح مثال. یک عالمت خوب که یک مسئولیت متعلق به سطح کالس این است که آن مسئولیت این معنی را می دهدresponsibilityکالس است، نه یک

BR129 Determine Eligibility toکه متعلق به کالس است ولی به شی مجزای آن کالس اعمال نمی شود. د راین مورد، این عملیات،

Enroll را که در Enroll in Seminar system use case.فراخوانده شده، پیاده سازی می کند

class normalization کردنی " refactore می شود. به چنین refactore نشان داده شده، 5، به کالس هایی که در شکل 2 در شکل Seminarکالس

می کند تا انسجام شان یا افزایش، و یا جفت شدن بین کالسها را کاهش می دهد. یکrefactore" می گویند، فرآیندی که در آن شما کالسهای رفتار را a، ممکن است "CSC 148 Introduction to Computer Science سمینار وجود داشته باشد که درس " 5سمینار، به معنار ارایه کردن یک درس است، مثال

معرفی شد. متدcourseNumber منتقل شدند و Course به کالس fees و nameرا ارایه می دهند، صفت

getFullName)(" شماره درس ،CSC 148 " و نام درس "Introduction to Computer Scienceرا به هم زنجیر می کند تا نام کامل درس را "

، و متدهای متناظرgetter مرتبط به یک شی را باز می گرداند. گرچه متدهای data value نامیده می شود، عملیاتی که یک getterبدهد. این روش، روش setter ،وجود دارد a شوند، و بنابراین برای اینکه مدل شما را بهم نریزد، مدل سازی نمی شوندdevelop، باید برای کالسی که فرض می شود معموًال

a در (.conceptual class diagrams)مخصوصا

(.Conceptual class diagram: سمینار نرمال شده )5شکل

خودش ظاهر می شود.setter و getter را نشان می دهد، همانطور که با متدهای مدل سازی شده 5 شکل Course، 6شکل

getter ها وsetter ها، جزییات هستند که برای مدل های مفهومی مناسب نیستند و با تجربه ای که من دارم، حتی برای دیاگرام هایdesignجزییات دار نیز باشند، و همه اش را در آن رها می کنم. بعضیsetter و getterمناسب نیستند — در عوض، من یک کد راهنما تنظیم می کنم که همه خصوصیات دارای متد

، به هم می ریزند.value را انتخاب می کنند، اما من آنها را مزاحمانی می دانم که دیاگرام شما را بدون افزودن setter و getterها، مدل سازی

accessor، درس ها با متدهای 6شکل

Page 20: Learn_UML

3.3 .associationها

a، همانطور که در شکل وجود دارد: دانش آموزان برای سمینار در لیست انتظارassociation می بینید، چندین 2اشیاء اغلب به اشیاء دیگر مرتبط هستند. مثال ها به صورتassociationهستند؛ استادها، سمینارها را هدایت می کنند؛ سمینارها، کالس ها را ارائه می کنند، هر استادی در یک آدرس سکونت دارد، و غیره.

خطوطی مدل سازی می شوند که دو کالس را که اشیای آنها در این رابطه درگیر هستند را به هم وصل می کند.

ها مدل سازی می کنید، آنها را به صورت یک خط نازک نشان می دهید که دو کالس را بهم متصل میUML class diagramها را در associationوقتی که ها پیچیده شوند؛ در نتیجه، می توانید روی دیاگرامتان بعضی چیزها را در موردassociation مشاهده می کنید. ممکن است 6کندف همان گونه که در شکل

a یک یا دو کلمه است که a، استادها، سمیتارها راassociationآنها نشان دهید. لیبل، که اختیاری است ولی بسیار تاکید می شود، معموًال را توصیف می کند. مثالهدایت می کنند.

هاassociation: نشانه 6شکل

دانستن اینکه استادها، سمینارها ر ا هدایت می کنند کافی نیست. هر استاد چند سمینار را هدایت می کند؟ هیچ، یک، یا چند سمینار را؟ به عالوه،associationها، خیابانهای دو طرفه هستند: نه تنها استادها، سمینارها را هدایت می کنند بلکه سمینارها توسط استادها هدایت می شوند. این موضوع، به

سواًالت از این قبیل ختم می شود: چند استاد می توانند یک سمینار معین را هدایت کنند، و آیا می توان سمیناری را بدون استاد برگزار کرد؟ این بدین معنی ، روی هر دو انتهای خط لیبل می شود، یکassociation( multiplicity را نیزشناسایی کنید. کثرت )associationاست که شما همچنین نیاز دارید کثرت یک

نشانگر کثرت برای هر سمت )جدول شماره یک، نشانگر کثرت بالقوه ای را می توانید استفاده کنید، خالصه کرده است(.

معنینشانگر

صفر یا یک1..0

فقط یک1

صفر یا بیشتر..*0

یک یا بیشتر..*1

n فقطn جاییکه( n > 1)

0..n صفر تاn جاییکه( n > 1)

1..n صفر تاn جاییکه( n > 1)

، نشان دادن جهتی است است که لیبل در آن باید خوانده شود. این کار با استفاده از یک مستطیل پرشده نشان داده میassociationیک آپشن دیگر برای

نشان داده شده5 شکل Course و کالسهایSeminar رابطه بینoffering شود که نشانگر جهت نامیده می شود، و یک مثال از آن روی

باید بدین صورت خوانده شود: " یک سمینار، ارائه ای یک درس است"، به جای "یک درس، ارائه یکassociation( نشان می دهد که symbolاست. این نماد ) سمیناراست". نشانگر جهت، باید زمانی استفاده شود که مشخص نیست یک لیبل چگونه باید خوانده شود. اما توصیه من این است که اگر لیبل شما مشخص

نیست، باید واژه های آن را عوض کنید.

دارد، یک طرفه است، در حالیکه خطیarrowhead را نشان می دهند. خطی که یک association( که انتهای خط هستند، جهت arrowheadسر فلشهایی ) کردنdropهای دو طرفه شامل کنید، اما، روش معمول، association را برای arrowhead دارد، دو طرفه است. شما باید هر دو arrowheadکه هیچ یا در

آنها است.

Page 21: Learn_UML

را فقطrole می گیرد، نیز ممکن است نشان داده شود. من association( که یک شی در context، یعنی بافتی )role، یک associationدر هر دو انتهای

استفاده می کنم وAM practice Depict Models Simply را اضافه می کند، مدل سازیم می کنم. من از valueزمانی که اطالعات،

associationها را، هنگامی که از لیبل role بین کالس ها وجود داشته باشد. association بازگشتی وجود داشته باشد، یا اگر چندین associationاگر یک مشخص نیست که چه چیزی هستند، نشان می دهم.

. رابطه های ارثی3.4

a a، دو یا چند کالس، دارای صفتهای یا متدهای مشابهی هستند. زیرا، دوست ندارید مجبور باشید مکررا اغلب، شباهتهایی بین کالسهای مختلف وجود دارد. معموًال کدهای شبیه هم را بنویسید، شما به مکانیزمی احتیاج دارید که استفاده بهینه را از این شباهت ها ببرد. وراثت، همان ساز و کار مورد نیاز است. وراثت، رابطه

ارث می برد، گفتهB، از A” را مدل سازی می کند، و شما را قادر به استفاده مجدد و راحت از داده ها و کدهای موجود می کند. وقتی is like” و “is aهای “ را به ارث می برد، به آن "ارث محض" گفته میB، ههم صفات و متدهای A است. به عالوه، هنگامی که A، سوپر کالس B است و B، زیرکالس Aمی شود که

بسته است که از زیر به کالس به سوپر کالس اشاره می کند.arrowhead برای ارث، خطی با یک UMLشود. نشانه های مدل سازی

وجود دارد. نه تنها دارای صفات شبیه هم هستند، بلکه متدهای شبیه به همی2 در شکل Professor و Studentشباهتهای زیادی بین کالس های

هر دو از آن ارث بردند،Person و Student ایجاد کردم و کالس های Personهم دارند. برای استفاده از این مزایا، من کالس جدیدی به نام

کالس ریشه آن است.Person( است، زیرا کالس inheritance hierarchy می بینید. نام این ساختار، سلسله مراتب وراثت )7همانگونه که در شکل

a از آن ایجاد نمی شوند، و شباهتهای بین دانش آموزان و استادها را abstract، انتزاعی )Personکالس میکند. کالسcapture( است: اشیاء مستقیما

( است، مدل سازی می شوند. کالس های واقعی، کالس هاییitalics(، با نام هایشان که به صورت مورب )concreteهای انتزاعی، برخالف کالسهای واقعی ) هستند که اشیاء از آنها نمونه سازی می شوند و نامشان به صورت متن معمولی است. هر دو کالس دارای نام، آدرس ای میل، و شماره تلفن هستند، پس این

رایج هستند. با معرفی این رابطهparent نیز بین این دو کالس Purchase Parking Pass نیز منتقل شدند. متد Personصفات، به

یک بار اجراPersonوراثتی به مدل، مقدار کاری که باید اجرا شوند، کم می شود. به جای اینکه این مسئولیت ها را دوبار پیاده سازی کنیم، آنها در کالس

دوباره استفاده می شوند.Professor و Studentمی شوند، و توسط

: سلسله مراتب وراثت7شکل

3.5 .Composition Association

a، یک هواپیما از بدنه، بالها، موتور، ابزار فرود، دریچه بال هواپیما )فلپ(، و غیره درست شده بعضی اوقات یک شی از اشیاء دیگر دیگر درست می شود. مثال ، واقعیتی که یک ساختمان از یک چند اتاق تشکیل شده است، و سپس اینکه یک اتاق ممکن استcomposition، مثالی است که با استفاده از 8است. شکل

با یک الماسUML 2، aggregation بازگشتی داشته باشید(. در compositionاز چندین اتاق کوچکتر تشکیل شده باشد را مدل سازی می کند )می توانید باز نشان داده شده است.

Page 22: Learn_UML

composition: مدل سازی 8شکل

" اعتقاد راسخ دارم – اگرگفتن این که "یک چیز بخشی از چیز دیگری است" معنی دار باشد، آنگاه شانس خوبی برای وجود داردpart ofمن به قانون جمله "a، گفتن اینکه یک اتاق بخشی از یک ساختمان است معنی دار است، اما گفتن اینکه یک آدرس بخشی از یک فردcompositionکه نیز معنی دار باشد. مثال

معنی دار است، هنگامی است که چرخه حیاتی یک بخش توسط کل، مدیریتcompositionاست، معنی دار نیست. عالمت خوب دیگری که نشان می دهد a، یک هواپیما فعالیت های یک موتور را مدیریت می کند. می شود—مثال

Craig Larman )2002( در مورد استفاده از ، composition روی association،می گوید: اگر شک داشتید، حذفش کنید. متاسفانه بسیاری از مدل سازان استفاده کنند عذاب می کشند.composition وجود دارد، از اینکه کی باید از coding در مرحله composition و associationهنگامی که تفاوت کمی بین

: طبقه بندی افراد درون یک دانشگاه. 9شکل

، چندین جنبه جالب دارد:9 می شود. شکل capture( مدل مفهومی شما در یک واژه نامه بهتر semanticsمعنا شناسی )

“ به جای رویکرد سه بخشی که در دیاگرام های قبلی دیده ایم، رویکردی تک بخشیsingle sectionنسبت به کالس ها دارد؛ زیرا ما رابطه های ”

بین موجودیت داده ها را مرور می کنیم، نه مسولیت هایشان را.

از مفهومgeneralization set در UML 2.0 از یک سرفلش وراثتی با یک لیبل که نام a را نمایش می دهد. درset استفاده می کند، مخصوصا

UML 1.x این لیبل یک ،discriminator نامیده می شد. سه set برای Person :وجود دارد Nationality ،)ملیت( Role،)نقش(

)جنسیت(. Genderو

اینgeneralization setیک شخص می a ها، با هم تداخل دارند — یک شخص را می توان از طریق هر یک از این نقش ها طبقه بندی کرد )مثال

تواند یک دانش آموز خارجی مذکر باشد(. به این کار طبقه بندی چندگانه می گویند.

می توانیدset“ هایsub generalization ،a .Role generalization set در Student” را نشان دهید، مثال

بعضی ازset هایgeneralization به طور دو جانبه ای از دیگر ،set ،هاexclusiveهستند، که در مثال نشان داده نشده است، که در آن، یک

بینXOR constraint موجود باشد. به این کار "طبقه بندی واحد" گفته می شود و با استفاده از یک setموجودیت داده ممکن است فقط در یک ، مدل سازی می شود.discriminatorدو یا چند

Page 23: Learn_UML

RUP، Class Diagram، آموزش UMLآموزش

administratorارسال شده توسط

18:15 2010. جوان 7

class diagram هایUML .کالس های سیستم، روابط داخلی شان، و عملیات ها و صفات کالس ها را نشان می دهند ،Class diagramبرای a ها، معموًالموارد زیر استفاده می شوند:

مفاهیمdomain را در شکل یک مدل domainمرور می کند ،

مقتضیات فرم یک مدل مفهومی را تحلیل می کند

طرحی مفصل از نرم افزار شی گرا یا شی محور را نشان می دهد

و مشخصات حمایتی ای تشکیل شده است که عناصر مدل شامل کالس ها، روابط بین کالس ها، و رابط هایclass diagramیک مدل کالس، از یک یا چند کاربر را توصیف می کند. برای موارد زیر راهنمایی هایی آورده شده است:

مسایل عمومی

کالس ها

رابط های کاربر

رابطه ها

وراثت

Aggregation و Composition

. راهنمایی های عمومی1

ها، استفاده های زیادی دارند — از درک نیاز ها گرقته تا توصیف طرح مفصل شما —باید از سبکی متفاوت برای هر شرایطیclass diagramاز آنجایی که است، توصیف می کند.class diagram( را که مربوط به انواع مختلف styleاستفاده کرد. این بخش، راهنمایی های سبک )

: تحلیل و نسخه های طراحی یک کالس 1شکل

association: مدل سازی کالس های 2شکل

Page 24: Learn_UML

1.Identify Responsibilities on Domain Class Diagrams .2.Indicate Visibility Only On Design Models.  3.Indicate Language-Dependent Visibility With Property Strings .4.Indicate Types Only On Design Models .5.Indicate Types On Analysis Models Only When The Type is an Actual Requirement.

6.Design Class Diagrams Should Reflect Language Naming Conventions می بینید که،1. در شکل design versionکالس

Order از نام هایی استفاده می کنند که با ،Java programming conventionهای رایج از قبیل

placementDate و calculateTaxes)(.هماهنگ می شود

7.Model Association Classes On Analysis Diagrams نشان می دهد که 2. شکل association classها به صورت کالس الصاق شده از محسوبUML، یک سمبل در dashed line، کالس، و association، نشان داده شده اند – خط association به یک dashed lineطریق یک می شوند.

8.Do Not Name Associations That Have Association Classes9.Center The Dashed Line of an Association Class

Class Style. راهنمایی های 2

همگی اشیای دانش آموز هستند، ولی ماBill، و Doug، John موثر است که اشیا ازآن ایجاد می شوند. گرچه در دنیای واقعی، templateیک کالس، یک

، عملیات، عملکردهایشان است که اشیاinstance را مدل سازی می کنیم. کالس ها، صفات را توصیف می کنند، اطالعاتی که مربوط به Studentکالس

( را نیز تشخیص می دهد. دقت داشته باشید که شاید نیاز به نرم کردن بعضی ازinterfaceآنها را ساپورت می کنند. همچنین کالسها، رابط های کاربر )راهنمایی های نامگذاری جهت منعکس کردن زبان یا نرم افزار برنامه نوسی تان داشته باشید که از یک فروشنده طرف سوم خریداری کرده اید.

scaffolding با و بدون کد OrderItem: کالس 3شکل

Page 25: Learn_UML

1.Use Common Terminology for Names2.Prefer Complete Singular Nouns for Class Names3.Name Operations with a Strong Verb4.Name Attributes With a Domain-Based Noun5.Do Not Model Scaffolding Code کد .Scaffoldinبه صفات و عملیات هایی بازمی گردد که برای پیاده سازی عملکرد پایه ای در کالس شما ،

را با و بدونOrderItem، تفاوت بین کالس 3ًالزم هستند، از قبیل کدی که برای پیاده سازی رابطه با کالس های دیگر ًالزم هستند. شکل

scaffolding code.نشان می دهد 6.Never Show Classes With Just Two Compartments7.Label Uncommon Class Compartments8.Include an Ellipsis ) … ( At The End of Incomplete Lists9.List Static Operations/Attributes Before Instance Operations/Attributes10.List Operations/Attributes in Decreasing Visibility11.For Parameters That Are Objects, Only List Their Type12.Develop Consistent Method Signatures13.Avoid Stereotypes Implied By Language Naming Conventions14.Indicate Exceptions In An Operation’s Property String می توان خطاها را با یک .UML property string.نشان داد

(Interface. رابط های کاربر )3

UMLها، در interface، کلکسیونی از امضای عملیات و/یا تعریف های صفات است که مجموعه ای منسجم از رفتارها را تعریف می کند. interfaceیک parlance توسط کالس ها و ،component ها، پیاده سازی و شناسایی می شوند – تا تشخیص دهد که یکinterface یک کالس، یا یک ،componentباید ،

، و یک یاinterface معینی، ممکن است هیچ یا چند component تعریف می شوند، پیاده سازی کند. هرکالس یا interfaceعملیات ها و صفاتی را که توسط را اجرا کنند.interfaceها می توانند همان componentچند کالس را پیاده سازی کند، یا

هاUML class diagramها روی interface: 5شکل

Page 26: Learn_UML

1.Interface Definitions Must Reflect Implementation Language Constraints می بینید که یک 5. در شکل ،standard class box،

استفاده شده است.interface PersistentObjectبرای تعریف

2.Name Interfaces According To Language Naming Conventions3.Apply “Lollipop” Notation To Indicate That A Class Realizes an Interface4.Define Interfaces Separately From Your Classes

5.Do Not Model the Operations and Attributes of an Interface in Your Classes می بینید که کالس 5. در شکل ،Shipment،

که شناسایی می کند، نمی شود.interfaceشامل صفات یا عملیات های که توسط دو 6.Consider an Interface to Be a Contract

(Relationship. راهنمایی های رابطه )4

، وinheritanceها، aggregation، composition، dependencyها، association از قبیل UML، شامل همه مفاهیم relationshipsبرای راحتی، عبارت realization ها را شامل می شوند – به عبارت دیگر، اگر خطی روی یکUML class diagram.وجود داشته باشد، آن را یک رابطه در نظر می گیریم

order یک Shipping: 6شکل

order یک Modeling: 7شکل

Page 27: Learn_UML

: استادها و سمینارها.8شکل

: مدل سازی افراد در یک دانشگاه.9شکل

رابطه ها را به صورت افقی مدل سازی کنید

1.Collaboration Indicates Need for a Relationship2.Model a Dependency When The Relationship is Transitory

Page 28: Learn_UML

3.Depict Similar Relationships Involving A Common Class As A Tree می بینید که هم 6. در شکل ،Delivery و هم Order،

”tree configuration در ترکیب با “dependency دارند. توجه داشته باشید که چگونه دو OIDGenerator روی dependencyیک

در دیاگرام ترسیم شوند.clutterترسیم شده اند؛ به جای اینکه به صورت دو خط جدا جهت کاهش 4.Always Indicate the Multiplicity5.Avoid a Multiplicity of”*“

6.Replace Relationships By Indicating Attribute Typesمی بینید که مشتری ها دارای یک صفت7. در شل ،

shippingAddress از نوع Address هستند یعنی، قسمتی از کد scaffoldingکه برای حفظ رابطه بین اشیاء و اشیاء آدرس

استفاده می شود–7.Do Not Model Implied Relationships8.Do Not Model Every Single Dependency 9.Center Names on Associations 10.Write Concise Association Names In Active Voice 11.Indicate Directionality To Clarify An Association Name 12.Name Unidirectional Associations In The Same Direction13.Word Association Names Left-To-Right 14.Indicate Role Names When Multiple Associations Between Two Classes Exist 15.Indicate Role Names on Recursive Associations

16.Make Associations Bi-Directional Only When Collaboration Occurs In Both Directions. lives at association 9 در شکل،

یک طرفه است. 17.Redraw Inherited Associations Only When Something Changes18.Question Multiplicities Involving Minimums And Maximums

. راهنمایی های وراثت6

" ارثB" از "A” را مدل سازی می کند و شما را به راحتی قادر به استفاده مجدد از داده ها و کد موجود می کند. وقتی "is like” و “is aوراثت، رابطه های “ " را به ارث می برد، به آن " وراثتB" همه صفات و متدهای "A" است. به عالوه، وقتی "A" سوپرکالس "B" و "B" زیرکالس "Aمی برد، گفته می شود که "

( است که از زیرکالس به سوپرکالس اشاره می کند.arrowhead برای وراثت، خطی با یک سرفلش )UMLمحض" گفته می شود. نشانه گذاری مدل سازی

1.Apply the Sentence Rule For Inheritance 2.Place Subclasses Below Superclasses3.Beware of Data-Based Inheritance4.A Subclass Should Inherit Everything

Composition و Aggregation. راهنمایی های 7

a، یک هواپیما از بدنه، بالها، موتور، ابزار فرود، دریچه بال هواپیما )فلپ(، و غیره درست شده بعضی اوقات یک شی از اشیاء دیگر دیگر درست می شود. مثال هستند کهaggregation، حاوی یک یا دو بسته است. یک تیم متشکل از دو یا چند کارمند است. اینها، مثال هایی از مفهوم delivery shipmentاست. یک

است، و یک کارمند، عضوی از یک تیمshipment، بخشی از یک package” را نمایش می دهد. موتور، بخشی از یک هواپیما است ، یک is part ofرابطه “ ، شکلی قویتر ازComposition( بین دو جسم است. whole-part است، که یک رابطه کل به جزء )association، تخصصی از Aggregationاست.

aggregation است که "کل" و "اجزاء" عمری همسان دارند، و برای مدیریت چرخه حیاتی اجزای whole،بسیار رایج است؛ زیرا از دیدگاهی سبک دار ، aggregation و composition هر دو تخصص های association.هستند

.composition و aggregation: نمونه هایی از 10شکل

Page 29: Learn_UML

1.Apply the Sentence Rule for Aggregation 2.You Should Be Interested In Both The Whole And The Part 3.Depict the Whole to the Left of the Part 4.Apply Composition to Aggregates of Physical Items 5.Apply Composition When the Parts Share The Persistence Lifecycle With the Whole6.Don’t Worry About Getting the Diamonds Right

نفر1 از طرف 5.0امتیاز فعلی

Page 30: Learn_UML

Sequence Diagram، آموزش RUP، آموزش UMLآموزش

administratorارسال شده توسط 13:12 2010. جوان 9

 

هایشان، که بهinteraction است که اشیاء را به صورت طول عمرهایی نشان می دهد که با interaction diagram، شکلی از sequence diagramیک Sequenceصورت پیامهایی به شکل فلش هایی که از طول عمر مبدا به طول عمر مقصد کشیده شده ترسیم شده اند، در پایین صفحه اجرا می شوند.

diagram ها، برای نشان دادن اینکه کدام شی با اشیاء دیگر در ارتباط است، و اینکه کدام پیام ها، این ارتباط ها راtrigger.می کنند، مناسب است Sequence diagram ها، برای نشان دادنprocedural logic.پیجیده مناسب نیست

(Lifelineطول عمرها )

a، دارای یک مستطیلsequence diagram( در یک individual participantیک طول عمر، شرکت کننده ای مجزا ) را نشان می دهد. یک طول عمر معموًال sequenceیی است که صاحب classifier" باشد، نشان دهنده این است که طول عمر، نشان دهنده selfاست که حاوی نام شی اش است. اگر نامش "

diagram.است

، وboundary، control، رو در قسمت باًالیی خواهد بود. عناصر actor، دارای یک طول عمر با یک نماد عنصر sequence diagramبعضی اوقات، یک entity.نیز می توانند طول عمر داشته باشند ،

Page 31: Learn_UML

پیام ها

، باشد. در دیاگرام زیر، پیام اولsignal یا callپیام ها به صورت فلش نمایش داده می شوند. پیام ها ممکن است کامل، مفقود یا پیدا؛ همزمان و غیرهمزمان؛ یک پیام همزمان است که با یک پیام بازگشت غیرمستقیم کامل می شود؛ پیام دوم غیرهمزمان است، و سومی یک پیام بازگشت غیرمستقیم است.

(Execution Occurrenceرویداد اتفاقی )

Page 32: Learn_UML

یک مستطل نازک که پایین طول عمر اجرا می شود، رویداد اتفاقی یا دریافت فوکوس یک کنترل را نشان می د هد. در دیاگرام قبلی، سه رویداد اتفاقی وجود دارد. اولی شی مبدا است که دو پیام را ارسال و دو جواب دریافت می کند؛ دومی شی مقصد است که یک پیام همزمان را دریافت و یک جواب را بازمیگرداند،

سومی شی مقصد است که یک پیام غیرهمزمان را دریافت و یک جواب را بازمی گرداند.

Self Message

بازگشتی یک عملیات یا متدی را که متدهای دیگر متعلق به همان شی را فرا می خواند، نشان دهد. و به صورت ایجادcall، می تواند یک self messageیک از کنترل در اتفاق اجرایی طول عمر، نشان داده شده.nested focusیک

پیام های مفقود و پیدا شده

پیام های گمشده پیام هایی هستند که ارسال می شوند ولی به مقصد نمی رسند، یا به دست دریافت کننده ای می رسد که در دیاگرام کنونی نشان داده نمی شوند. پیام های پیدا شده پیام هایی هستند که از یک ارسال کننده ناشناس یا از ارسال کننده ای که در دیاگرام کنونی نشان داده نمی شوند دریافت می شوند.

آنها در حال رفت و آمد به یک عنصر نقطه پایانی نشان داده شده اند.

Page 33: Learn_UML

شروع و پایان طول عمر

یک طول عمر ممکن است در طی مقیاس زمان که توسط یک دیاگرام نشان داده می شود، ایجاد یا خراب شود. در مثال اخیر، طول عمر توسط یک نمادstop نشان داده شده است. در مثال قبلی، نماد باًالی طول عمر، پایین تر از نماد شی ای که باعث ایجاد طول عمر می×، به پایان می رسد و به صورت یک

شود، نمایش داده می شود. دیاگرام زیر شی ای را نشان می دهد که ایجاد و خراب می شود.

Page 34: Learn_UML

محدودیت های زمانی

به طور پیش فرض، پیام ها به صورت خطوط افقی نشان داده می شوند. از آنجاییکه طول عمر، گذر زمان را پایین صفحه نشان می دهد، هنگام مدل سازی ها را اجرا کند، می تواند مهم باشد. با تنظیمactionیک سیستم زمان واقعی، یا حتی فرآیند تجارتی محدود به زمان، درنظر گرفتن زمانی که طول می کشد تا

یا محدودیت زمانی برای یک پیام، ان پیام به صورت یک خط شیب دار نشان داد ه می شود.

Page 35: Learn_UML

اجزای ترکیبی

a گفته شد که ها برای نشان دادن منطق فرایندی پیچیده مناسب نیستند. مکانیزم هایی وجود دارند که اجازه افزودن مقداری منطقsequence diagramقبال است که در یک قالب احاطهprocessing sequence اجزای ترکیبی می آیند. یک جزء ترکیبی، یک یا چند headingفرایندی را به دیاگرام نمی دهند و زیر

شده است و تحت شرایط معینی اجرا می شوند. اجزای درسترس، عبارتند از:

"( جزء جایگزینalt ،)"construct هایif…then…else.را مدل سازی می کند

"( جزء اختیاریopt ،)"construct هایswitch.را مدل سازی می کند

جزءbreak.ترتیبی جایگزین از رویدادها را که به جای کل بقیه دیاگرام پردازش می شوند را مدل سازی می کند ،

"( جزء موازیpar.پردازش همزمان را مدل سازی می کند ،)"

"( جزء ترتیب بندی ضعیفseqتعدادی از ترتیب ها را، که به خاطرشان همه پیام ها باید در قسمت قبلی پردازش شوند، دربر می گیرد، اما ،)"

هیچ گونه ترتیب گذاری ای را در یک قسمت به پیامی که طولی عمری را به اشتراک نمی گذارد، تحمیل نمی کند.

"( جزء ترتیب گذاری دقیقstrict.یک سری از پیام هایی را که باید در ترتیبی معین پردازش شوند، دربر می گیرد )"

"( جزء منفیneg.یک سری از پیام های نامعتبر را دربر می گیرد ،)"

.جزء حیاتی، یک قسمت حیاتی را دربر می گیرد

جزءignore.یک پیام یا پیامی را که اگر در بافت کنونی ظاهر شود، بی فایده خواهد بود را دربر می گیرد ،

جزءconsider اثری برعکس نسبت به جزء ،ignore.دارد: هر پیامی که شامل این جزء نمی شوند، باید نادیده گرفته شوند

جزءassertion )"assert "((مشخص می کند که هر ترتیبی که به صورت یک کارگزار ،operand.نشان داده نمی شود، نامعتبر است )

.جزء حلقه، یک سری از پیام هایی را که تکرار می شوند، دربر می گیرد

( را نشان می دهد:loopدیاگرام زیر یک جزء حلقه )

Page 36: Learn_UML

، ارجاعی به دیاگرام دیگر استinteraction occurrence( نیز وجود دارد، که شبیه یک جزء ترکیبی است. یک interaction occurrenceیک رویداد تعاملی ) نشان داده شده.frame دیده می شود، و هم نام دیاگرام ارجاع داده شده ای است که در وسط frame" را در گوشه چپ باًالی refکه کلمه "

(Gateدروازه )

، دروازه ای را به صورت یک مربع کوچک رویEA است. fragment به پیامی خارج از fragmentدروازه، یک نتطه اتصال برای وصل کردن پیامی درون یک ها عمل می کنند، و منبع پیامsequence diagram برای off-pageهایی connector نشان می دهد. دروازه های دیاگرام، به صورت fragment frameیک

های دریافتی یا مقصد پیام های ارسالی را نمایش می دهد. دو دیاگرام بعدی به طورعملی چگونگی استفاده شدنشان را نشان می دهند. دقت کنید که دروازه کردن آن به صورت یکrenderای که روی دیاگرام سطح باًال قراردارد، نقطه ای است که در آن سرفلش پیام، جزء ارجاعی را لمس را می کند – نیازی به

box shape.است

Page 37: Learn_UML
Page 38: Learn_UML

Part Decomposition

داشته باشد. این موضوع، به پیام هایlifelineیک شی می تواند بیش از یک

بین اشیا و درون اشیا، اجازه ظاهر شدن روی همان دیاگرام را می دهد.

State Invariant / Continuations

state invariant یک ،constraint است که روی lifeline ،قرار گرفته و باید در زمان اجرای برنامه trueباشد. و به صورت یک مستطیل با گوشه های نیمه گرد نشان داده می شود.

Page 39: Learn_UML

continuation دارای همان نشانه ای است که ،state invariant دارد، اما در اجزای ترکیبی استفاده می شود و می تواند در بیش یک lifeline( کشیده stretch.شود )

نفر1 از طرف 5.0امتیاز فعلی

Currently 5.0/5 Stars.

Page 40: Learn_UML

UMLآموزش تخصصی نمودارهای

administratorارسال شده توسط

14:55 2010. جوان 15

Unified، زبان مدل سازی یکپارچه )OMG)( یا )Object Management Group، گروه مدیریت شی )1997در سال

Modeling Language( یا )UML را عرضه کرد. یکی از اهداف )UMLفراهم کردن یک زبان طراحی ثابت و رایج برای جامعه برنامه نویسان ،

، یک روش نشانه گذازی برای مدل سازی استاندارد و یکپارچه تولید کرد کهUMLاست که می توان برای توسعه و ساخت برنامه های کامپیوتری استفاده کرد. ، ساختار سیستم و طرح های طراحی را بخوانند و منتشر کنند.UML، می توانند با استفاده از IT در انتظارش بودند. حاًال مهندسین ITسالها بود مهندسین

آشنایی دارند ولی بعدUML درصد رزومه هایی که من می بینم، افراد ادعا می کنند با 75 جایش را در حرفه ما باز کرد ه است. در UML است و 21اًالن قرن a نمی دانند a از اصطالح UMLاز اینکه با آنها صحبت می کنم، مشخص می شود که آنها واقعا ، به عنوان واژه ای دهان پرکن استفادهUML چیست. آنها معموًال

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

می تواند نقطه شروعی برای کسب دانش بیشتر درمورد این زبان باشد.

پیش زمینه

Jim، یکپارچه کردن زبان ها است تا حرفه ای ها را قادر به مدل سازی برنامه های کامپیوتری می کند. نو یسندگان اولیه UMLهمانطور که ذکر کردم، هدف Rumbaugh، Ivar Jacobson و ،Grady Booch( صاحب متدهای رقابتی خودشان بودند a a، با هم متحد شدند وBooch، و OMT، OOSE بودند که ابتدا (. نهایتا

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

شود، بدون اینکه نیاز به تغییر داشته باشد.

a، مصنوعات "UMLاز آنجاییکه IBM، "IBM" در زبان پردازش یکپارچه منطقی artifact، متدلوژی نیست، نیازی به محصوًالت کاری رسمی ندارد )مثالRational Unified Process® lingoاما هنوز چندین نوع دیاگرام را که، هنگام استفاده شدن در یک متدلوژی مشخص، باعث افزایش راحتی درک برنامه .)"

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

a ثمربخش می شود. مفیدترین و استانداردترین دیاگرام های use case diagram، class diagram، sequence عبارتند از: UMLوپروژه تان سریعاdiagram، statechart diagram، activity diagram، omponent diagram و ،deployment diagram.

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

Use-case diagram

use case واحد عملکردی را که سیستم فراهم می کند، نشان می دهد. هدف اصلی دیاگرام ،use-case کمک کردن به تیم های ،developmentبرای به a، رابطه ها )افرادی که با سیستم در تعامل هستند( با فرایندهای ضروری، و همچنین روابط میانactorتصویر کشیدن نیازهای کاربردی یک سیستم است، مثال

use case های مختلف. دیاگرام هایuse case گروه های a های سیستم، یا قسمتی از گروهیuse caseها را نشان می دهند — یا همه use case، معموًال ، باید یک بیضی در وسط دیاگرام رسم کنیدuse case روی یک دیاگرام use caseهایی که عملکرد مرتبطی دارند. برای نشان دادن یک use caseخاص از

، باید یک آدمکuse case )که نشان دهنده کاربر سیستم است(، روی دیاگرام actor را در مرکز یا زیر بیضی قرار دهید. برای رسم کردن یک use caseاسم ها، از خطوط ساده استفاده کنید؛ همان گونه که در شکل یکuse caseها و actorدر سمت چپ یا راست دیاگرام تان رسم کنید. برای نشان دادن روابط بین

نشان دا ده شده.

نمونهuse-case diagram: 1شکل

Page 41: Learn_UML

a از ، به راحتی می توان1ها برای رابطه با تابع های سطح باًالی سیستم و گستره سیستم استفاده می شود. با نگاه به دیاگرام ها در شکل use caseمعموًال هایCD برای Billboard 200تابع هایی را این مثال در اختیار می گذارد، تشخیص داد. این سیستم به مدیر گروه اجازه می دهد گزارش آمار فروش و گزارش

خاص را می دهد. همچنین این دیاگرامCD برای یکBillboard 200گروه را مشاهده کند. همچنین به مدیر ضبط اجازه مشاهده گزارش آمار فروش و گزارش ،)Billboard )Billboard Reporting Service را از یک سیستم خارجی به نام سرویس گزارش گیری Billboardبه ما می گوید که سیستم ما، گزارش های

تحویل می دهد.

a، راهی را برای گوش دادن به آهنگهای آلبوم هایuse caseبه عالوه، عدم حضور ها در این دیاگرام نشان می دهد سیستم چه کاری را انجام نمی دهد. مثال که رویuse case، پیش روی مدیر گروه نمی گذارد. این عدم حضور، موضوع کم اهمیتی نیست. با توصیفاتی واضح و ساده از Billboard 200مختلف در

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

Class diagram

سیستم را نشان می دهد.staticاین دیاگرام نشان می دهد ماهیت های مختلف )افراد، اشیاء، و داد ه ها( چگونه بهم مربوط هستند؛ به عبارت دیگر، ساختار a موضوعاتی هستند که افراد دارای logical را می توان برای نشان دادن کالسهای class diagramیک در یک سازمانbusiness استفاده کرد که معموًال

ها، برنامه های رادیو، یا وامها، رهن خانه، وام ماشین، و موضوعات جالب دیگر. همچنینCD(، rockدرباره آنها صحبت می کنند — گروه های موسیقی راک )a برنامه نویسان با آنها سرو کار دارند.Class diagramمی توان از ها، برای نشانه دادن پیاده سازی های کالس ها استفاده کرد؛ کالسها، چیزهایی هستند معموًال

a تعدادی از کالسهای شبیه به implementation class diagramیک implementationها را نشان خواهد داد. اما logical classes diagram، احتماًالclass diagram با همان صفات ترسیم نمی شود، زیرا یه احتمال زیاد، به چیزهایی مانند ، Vector ها وHashMap.ها گرایش خواهد داشت

. بخش باًالیی، نام کالس را نشان می دهد؛ بخش میانی حاوی صفات2یک کالس، به صورت یم مستطیل با سه بخش افقی نشان داده می شود، مانند شکل کالس است؛ و بخش پایینی، حاوی عملیات ها )یا متدهای( کالس خواهد بود.

class diagram ساده در یک class object: 2شکل

Page 42: Learn_UML

a هد برنامه نویسی می داند این دیاگرام چیست، اما متوجه شدم که اکثر برنامه نویسان خطوط ارتباطی را صحیح رسم نمی تجربه من نشان می دهد که تقریبا اشاره دارد، رسم کنید؛ وsuperclass، رابطه وراثت را باید با استفاده از یک خط و فلش در باًال که به سمت 3، مانند شکل class diagramکنند. برای یک

، باید یک خط مستقیم نشان داده شود، و اگر فقط یکی ازassociation، از وجود هم آگاه باشند، یک رابطه classفلش باید یک مثلث کامل باشد. اگر هر در class ها از وجودassociation.آگاه باشد، باید با یک فلش باز نشان داده شود

نشان داده شده.2 که در شکل class object کامل، شامل class diagram: یک 3شکل

، با یکCDSalesReport ارث می برد. Report، از کالس CDSalesReport می بینیم. کالس association، ما هم رابطه وراثت و هم دو رابطه 3در شکل CD در ارتباط است ، اما کالس CD چیزی در مورد کالس ،CDSalesReport نمی داند، کالس های CD و Bandهر دو از وجود هم اطالع دارند، و هر دو ،

کالس می توانند با یک چند کالس از خودشان مرتبط شوند.

a مورد بحث قرار خواهد گرفت.class diagramیک می تواند چندین مفهوم را ترکیب کند که بعدا

Sequence diagram

Sequence diagram ها، جریانی مفصل از یکuse case معین یا حتی بخشی از use caseخود تشریح هستند؛ آنها a معین را نشان می دهد. آنها تقریباشان نشان می دهند و می تواند فراخوانی های اشیاء مختلف را نشان دهند.sequenceفراخوانی های بین اشیاء را در

sequence diagramدارای دو بعد است: بعد عمودی که ترتیب پیام ها/فراخوانی ها را به ترتیبی که اتفاق می افتند، نشان می دهد؛ بعد افقی که نمونه اشیاء را که پیام ها به آنها ارسال می شوند را نشان می دهد.

در یک جعبه، شناساییclass instance بسیار ساده است. در باًالی دیاگرامتان، کالس نمونه ها )اشیاء( را با قرار دادن هر sequence diagramرسم کردن space/colon /space :a را که با class instance(. در این جعبه، نام 4کنید )شکل : myReportGenerator " : " جدا شده است، قرار دهید )مثال

ReportGenerator اگر یک .)class instance پیامی را به ،class instance دیگر ارسال کند، خطی را با یک فلش باز که به class instanceدریافت class instanceکننده اشاره می کند، رسم کنید؛ نام پیام یا متد را در باًالی خط قرار دهید. برای پیام های مهم، می توانید یک خط نقطه چین با فلشی که به

a دوست دارم مقدلر بازگشتی را با خط مشخص کنم زیرا جزییات اضافی، اشاره می کند، رسم کنید؛ مقدار برگشتی را باًالی خط قرار دهید. من همیشه شخصاخواندن آن را آسانتر می کند.

Page 43: Learn_UML

را آغاز می کند. سپسsequence" در باًالی گوشه چپ شروع کنید که class instance "driver خیلی ساده است. با کالس sequence diagramخواندن ، یک پیام بازگشتی را برای هر پیام ارسالی نشان می4 در شکل sequence diagramهر پیام را در پایین دیاگرام دنبال کنید. به یاد داشته باشید: گرچه مثال

دهد، اما این موضوع اختیاری است.

sequence diagram: نمونه ای از یک 4شکل

aServlet مثال ماست. aServlet، driver ایجاد کرد. شی CD Sales، می توان متوجه شد چگونه می توان یک گزارش sequence diagramبا خواندن این است که به معنای این است کهgenerateCDSalesReport ارسال می کند. پیام دارای لیبل gen بنام ReportGenerator class instanceپیامی را به

در پرانتزgenerateCDSalesReport، cdId این پیام را پیاده سازی میکند. در نگاهی دقیق تر می بینیم که در لیبل پیام generateCDSalesReportشی ، یک پیامgen instance همراه با پیام است. وقتی cdId در حال ارسال متغیری به نام aServletاست، که بدین معنی است که generateCDSalesReport دریافت می کند، کالس های CDSalesReport را فرا می خواند، و نمونه ای واقعی از یک CDSalesReport بنام aCDReport

را بهgen، aCDReport، نمونه sequence را فرا می خواند. در پایان aCDReport، نمونه بازگردانده شده genبازگردانده می شود. سپس نمونه aServlet.فراخوانش باز می گرداند

a به خاطر داشته باشید: معمولی بیش از حد پرجزییات است. اما، من معتقدم کهsequence diagram، برای یک 4 در شکل sequence diagramلطفا چگونه رسم می شوند.nested callsفهمیدنش به اندازه کافی ساده است، و نشان می دهد

Statechart diagram

این دیاگرام، حالتهای مختلفی را که یک کالس ممکن در آنها باشد، و چگونگی انتفال آن کالس از حالتی به حالت دیگر را نشان می دهد. می توان گفت که هر باشد. فقط کالس هایی با حالتهای "جالب" — یعنی کالسهایی با سه یا چندstatechart diagramکالس دارای یک حالت است، اما هر کالسی نباید دارای یک

حالت بالقوه درطول فعالیت سیستم — باید مدل سازی شوند.

عنصر اصلی است: نقطه شروع ابتدایی، که با استفاده5، دارای statechart diagram نشان داده شده، مجموعه عالمت گذاری های 5همانگونه که در شکل از یک دایره توپر رسم می شود؛ انتقال بین حالتها، که با استفاده از یک خط با فلشی باز رسم می شود؛ یک حالت، که با استفاده از مستطیل با زاویه های گرد

رسم می شود؛ یک نقطه تصمیم، که با یک دایره باز رسم می شود؛ و یک یا چند نقطه اتمام، که با استفاده از یک دایره و یک دایره توپر درون آن رسم می ، با یک نقطه آغازین و یک خط انتقال به حالت اولیه کالس شروع کنید. خود حالتها را می توانید هرجای دیاگرامstatechart diagramشود. جهت رسم یک

رسم کنید، و سپس می توانید با استفاده از خطوط حالت انتقال، آهنا را بهم وصل کنید.

که حالتهای مختلفی را که یک کالس در یک سیستم عمل کننده سپری می کندStatechart: دیاگرام 5شکل

Page 44: Learn_UML

statechart diagram می توانید5 نمونه ای که در شک ،a نشان داده شده، قسمتی از اطالعات بالقوه ای را که می توانند فراهم کنند را نشان می دهد. مثال بگویید فرایند وام در حالت "تقاضا برای وام" شروع می شود. وقتی فرآیند قبل از تایید تمام می شود، بسته به نتیجه، شما یا به حالت قبل از تایید یا به حالت

رد وام، منتقل می شوید. این بخش، که در طول فرآیند انتقال انجام می شود، با یک نقطه تصمیم نشان داده می شود — دایره خالی در خط انتقال. با نگاه به مثال، می توان گفت که یک وام نمی تواند از حالت "قبل از تایید" به حالت "نگهداری وام" بدون گذر از حالت "بستن وام" برود. همچنین، با نگاه به این مثال،

می توان گفت همه وامها یا در حالت "رد وام" یا حالت "نگهداری وام" به پایان می رسند.

Activity diagram

ها می توان برای مدل سازیActivity diagramاین دیاگرام، جریان رویه ای کنترل بین دو یا چند شی کالس را هنگام پردازش یک فعالیت نشان می دهد. از ها، برایactivity diagramهای درون کالسی سطح پایین استفاده کرد. به نظر من، actionفرآیند یک تجارت سطح باًال در سطح واحد تجارت، یا مدل سازی

ها می توان برای مدل سازی فرایند های سطح باًالactivity diagramمدل سازی فرآیند های سطح باًال استفاده می شوند. تجربه من نشان می دهد که از بهتر استفاده کرد، فرآیندهایی مانند اینکه یک کمپانی در حال حاضر چگونه تجارت خود را انجام می دهد، یا چگونه دوست دارد تجارتش را انجام دهد. دلیلش

ها، در ظاهر کمتر تکنیکی هستند، و کسانی که ذهن اقتصادی دارند، تمایل دارند آنها راsequence diagramها در مقایسه با activity diagramاین است که زودتر درک کنند.

، با یک دایره توپرstatechart diagram است. این دیاگرام نیزمانند statechart diagram شبیه عالیم activity diagramمجموعه عالیم نشانه گذاری های شروع می شود که به فعالیت ابتدایی وصل است. این فعالیت با رسم یک مستطیل با زاویه های گرد که نام فعالیت را در برمی گیرد، مدل سازی می شود. از

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

a فعالیت را اجرا می کند بکار می رود، همانگونه که در شکل نشان داده است.6بندی کرد، که برای نشان دادن شی ای که واقعا

: مدیر گروه وobject جهت نشان دادن کنترل فعالیت با دو swimlane ، با دو Activity diagram: یک 6شکل

ابزار گزارس دهی

Page 45: Learn_UML

وجود دارد زیرا دو شی وجود دارند که فعالیتهای مجزا را کنترل می کنند: مدیر گروه و ابزار گزارش گیری.swimlane نمونه، دو activity diagramدر این این فرآیند با مدیر گروه شروع می شود که گزارش های فروش یکی از گروه هایش را مشاهده می کند. سپس ابزار گزار ش گیری، همه گروه هایی را که آن

شخص مدیریت می کند بازیابی و نمایش می دهد و از او می خواهد یکی را انتخاب کند. بعد از اینکه مدیر گروه یکی را انتخاب کرد، ابزار گزارش گیری نشان می دهد که نمایش دادن گزارش، آخرین مرحله این فرآیندactivity diagramاطالعات فروش را بازیابی می کند و گزارش فروش را نمایش می دهد.

است.

Component diagram

هایcomponentهایی است که یک نرم افزار روی dependencyاین دیاگرام، نمایی فیزیکی از سیستم را در اختیار می گذارد. هدف این دیاگرام نشان دادن های دانه درشت نشان داد؛ یا می توان در سطح بستهcomponentنرم افزار دیگر در سیستم دارد. می توان این دیاگرام را در سطحی بسیار باًال با

component )component package level( نشان داد. ]نکته: اصطالح component package levelیک روش زبان برنامه نویس خنثی برای ارجاع به ، NET ،aسطوح حاوی کالس از قبیل فضاهای اسمی . ( است.java.util )مثل Java( یا بسته های System.Web.UI )مثال

را نشان می دهد: ابزار گزارش گیری، سرویسcomponent، چهار 7 را می توان با یک مثال بهتر توضیح داد. شکل component diagramمدل سازی Billboard، Servlet 2.2 API و ،JDBC API فلشهای از طرف .component ابزار گزارش گیری به طرف Service Billboard، Servlet 2.2 APIو ،

component هایJDBC API.بدین معنی است که ابزار گزارش گیری وابسته به این سه جزء دارد ،

های نرم افزارهای مختلفی راcomponentهای component diagram، interdependency: 7شکل

نشان می دهد که سیستم در بر گرفته است.

Page 46: Learn_UML

Deployment diagram

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

یک سیستم، استفاده قابل مالحظه ای از این دیاگرام می کنند.

node، به عالوه چند عالمت دیگر مثل مفهوم یک component diagram، شامل همان عناصر نشانه گذاری های deployment diagramعالمت گذاری در در باًالیnode، کافیست یک مکعب سه بعدی با نام node، یا یک ماشین فیزیکی یا یک ماشین مجازی را نشان می د هد. برای مدل سازی یک Nodeاست.

instance name[ : ]instance type" aها استفاده می شوند، استفاده کنید؛ ]sequence diagramمکعب، رسم کنید. از قواعد نام گذاری که در [، )مثالw3reporting.myco.com : Application Server)"

Deployment diagram: 7شکل

Page 47: Learn_UML

deployment diagram نشان می دهد که کاربران، با استفاده از یک مرورگر که روی کامپوتر داخلی شان اجرا می شود و از طریق 8 در شکل HTTP Application Server دسترس ییدا می کنند. این ابزار به طور فیزیکی روی Reporting Tool متصل می شوند، به Reporting Toolاینترانت شرکتشان به

رسم شده است نشان میIBM WebSphere ابزار گزارش گیری را که درون component اجرا می شود. این دیاگرام، w3reporting.myco.comبه نام رسم می شوند.node w3.reporting.myco.comدهد، که به نوبت درون

Reporting Tool با استفاده از Java language to IBM DB2's JDBC interfaceبا بانک اطالعاتی a به بانک اطالعاتی گزارش وصل می شود، که بعدا اجرا می شود، ارتباط برقرار می کند. عالوه بر این،db1.myco.com روی سروری به نام native DB2 communication که با استفاده از DB2واقعی

component ابزار گزارش گیری از طریق SOAP روی HTTPS با Billboard Service.ارتباط برقرار می کند

نتیجه گیری

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

استفاده کنید و از مزیت هایش بهره مند شوید.UMLبدون ابزارهای اتوماتیک نیز می توانید از وایت برد یا قلم و کاغذ برای رسم کردن دیاگرام های

نفر1 از طرف 5.0امتیاز فعلی

Currently 5.0/5 Stars.

Page 48: Learn_UML

UMLمروری بر

administratorارسال شده توسط

15:20 2010. جوان 15

مقدمه

مدل سازی فعالیتی است که سالهاست در توسعه نرم افزار انجام می شود. هنگام نوشتن برنامه ها با استفاده از ساده ترین تا پیچیده ترین زبانها، به مدل باشد که مراحلی را که یک برنامه انجام می دهد لیست می کند. چرا ما از مدل سازیflowchartسازی نیاز دارید. مدل سازی می تواند به سادگی ترسیم یک

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

مدل سازی را در دو کلمه خالصه کرد:

قابل خواندن بودن

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

قابل خواندن بودن

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

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

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

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

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

نامیده می شوند.UMLگذاری ها، نه دیاگرام

، به عنوان انتخابی ارجح، برای مدل سازی استفاده کرد؟" خوب، جواب یک کلمه است: "استاندارد سازی"! زبانهایUMLحاًال سوال اینجاست؟ "چرا باید از کردن سیستمهایی که از متدلوژی شی گرا استفاده می کنند، مورد استفاده قرار گرفته اند. برجسته ترین این متدولوژی ها،depictمختلفی برای

Rumbaugh، Booch و ،Jacobson،ناهمخوان بودند. از این رو a است. با وجود اینکه هر متدولوژی مزایای خود را داشت، اما مشکل این بود که آنها اساسا اگر مجبور بودید روی پروژه های زیادی که از هر یک از این متدولوژی ها استفاده می کردند، کار کنید، باید به خوبی با همه این متدولوژی ها آشنا می شدید. چهa همین کار را میکند. این زبان، اصول طراحی این متدولوژی ها را به یک زبان متحد، ساده، و استاندارد تبدیل a مشکلی! مدل برنامه نویسی واحد دقیقا کار واقعا

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

a اگر نیاز به مدل سازی کردن نیازهای یک سیستم معین دارید، می توانید فقط از دیاگرامهای ، بدون استفاده از دیاگرامهای دیگر درuse caseاستفاده کرد. مثالUML استفاده کنید. با در نظر گرفتن همه این دًالیل، جای تعجب نیست که ،UML.زبان منتخب" به حساب می آید" ،

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

دقیق برای مدل سازی کردن، بدون وابستگی به هیچ تکنولوژی ای، باقی بماند.

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

UMLدیاگرام های

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

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

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

Page 49: Learn_UML

و تعریف جزییات طراحی یک سیستم استفاده میuse case کردن دیاگرام refine این دیاگرام جهت (:Class Diagramدیاگرام کالس )

تعریف شده است، در مجموعه ای از کالسهای وابسته به هم طبقه بندی می کند. رابطه بینuse case diagramهایی را که در actorشود. دیاگرام کالس، " باشد. ممکن است هر کالس در دیاگرام کالس، دارای عملکردهای زیادی باشد. برای قابلیت هایی کهhas-a" یا یک "is-aکالسها ممکن است یک رابطه "

" داشته باشد که به طورattributeتوسط کالسها فراهم می شوند، از عبارت "متدهای کالس" استفاده می شود. غیر از این، هر کالس ممکن است "صفاتی ))منحصر فردی آن کالس را معرفی می کند.

Object diagram این دیاگرام، نوع بخصوصی از کالس دیاگرام است. یک :objectاین بدین معناست که ،a ، نمونه ای از یک کالس است. لزوما

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

State diagram یک :state diagram همانگونه که از نامش مشخص است، نمایانگر حالتهای مختلفی است که ،objectهای درون سیستم، در

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

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مشخصه دیگری که یک سیستم نرم افرازی دارد، مربوط به پیاده سازی است. قبل از اینکه دیاگرام های

کنیم، بیایید نگاهی سریع به آنچه که این مشخصه ها هستند بیاندازیم:

:جنبه ساختاری سیستم است. این مشخصه، تعریف می کند یک سیستم از چه قسمت هایی تشکیل شدهاستاتیک a این مشخصه یک سیستم لزوما

است.

:روشی که سیستم نسبت به بعضی رویداداها یا اعمال واکنش نشان می دهد، مشخصه دینامیک یکدینامیک ،a ویژگی رفتاری یک سیستم، مثال

سیستم است.

:جدید است که عناصر مختلفی را که برای نصب یک سیستم ًالزم هستند، توصیفپیاده سازی a مشخصه پیاده سازی یک سیستم، یک ویژگی کامال

می کند.

زیر مشخصه های زیر قرار می گیرند:UMLدیاگرام های

oاستاتیک

·Use case diagram

·Class diagram

oدینامیک

Page 50: Learn_UML

·Object diagram

·State diagram

·Activity diagram

·Sequence diagram

·Collaboration diagram

oپیاده سازی

·Component diagram

·Deployment diagram

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

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

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

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

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

یک سیستم را شکل می دهند.design view دیاگرام ها، objectاست می دهد. کالس دیاگرام ها و

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 ما ،a ، برای مشاهده یک سیستم از این منظر، بهUML در Use case را داریم. از دیاگرام های use case view: نهایتا

عنوان فعالیتها یا مبادًالتی مجزا، استفاده می شود.

خالصه

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

نفر3 از طرف 4.3امتیاز فعلی

Currently 4.3/5 Stars.

Collaboration Diagram : آموزش UMLآموزش

administratorارسال شده توسط

14:06 2010. جوان 16

Page 51: Learn_UML

، برای مرور طبیعت دینامیک نرم افزار شما بکار می رود.sequence، ماتند دیاگرامهای UML در collaboration/communicationدیاگرام های Collaboration diagram( ها، تبادل پیامهاmessage flow بین اشیا را در یک برنامه )OO نشان می دهند. از Collaboration diagramبرای a ها معموًال

موارد زیر استفاده می شود:

a در یک محیط واقعی ) (.real-time environment· جهت فراهم کردن نمایی نزدیک از مجموعه ای از اشیاء همکار، مخصوصا

· جهت احتصاص دادن عملکردهایی به کالسها با مرور جنبه های رفتاری یک سیستم.

a عملیاتی که با تعداد زیادی از اشیا دیگر تعامل دارد. · جهت مدل سازی منطق پیاده سازی یک عملیات پیچیده، مخصوصا

· جهت مرور نقش هایی اشیایی که درون یک سیستم می گیرند، و همچنین روابط مختلفی که، هنگامی که در این نقش ها هستند، با آنها درگیر هستند.

در زیر راهنمایی هایی برای موارد زیر آورده شده:

. مسایل عمومی1

. پیام ها2

. لینکها3

. مسایل عمومی1

Collaboration: نمونه ای از دیاگرام 1شکل

1 .Instance-Level Diagrams To Explore Object Design Issues دیاگرام های .Collaboration( در سطح نمونه Instance-levelمانند مثال شکل ،) a از این دیاگرام ها جهت مرور طراحی داخلی نرم افزار شی گرا، ایجاد می شوند.1 ، روابط بین اشیا را نشان می دهند. معوًال

2 .Use Specification-Level Diagrams to Explore Roles دیاگرام های .Collaboration( در سطح ویژه Specification-level مانند مثال شکل ،)6، در سیستم می گیرد.domainجهت تحلیل و مرور نقش هایی بکار میز رود که کالس

3 .Collaboration Diagrams Do Not Model Process Flow.

4 .When Sequence Is Important Use a Sequence Diagram.

5 .Apply Sequence Diagram Guidelines To Instance-Level Collaboration Diagrams از آنجاییکه دیاگرام های .collaborationنمایی جایگزین ، a برای دیاگرامsequenceاز همان اطالعات دیاگرام را نمایش می دهند، اکثر همان سبک ها در اینجا نیز قابل اعمال است. لیست زیر راهنمایی ها، که ابتدا

نیز قابل اعمال هستند:collaboration ارایه شدند، برای دیاگرام های sequenceهای

·Name Objects When Your Reference Them In Messages

Page 52: Learn_UML

·Name Objects When Several of the Same Type Exist

·Apply Textual Stereotypes Consistently

·Apply Visual Stereotypes Sparingly

·Focus on Critical Interactions

·Prefer Names Over Types for Parameters

·Indicate Types as Parameter Placeholders

·Do Not Model a Return Value When it is Obvious What is Being Returned

·Model a Return Value Only When You Need to Refer to it Elsewhere

·Model Return Values as Part of a Method Invocation

·Indicate Types as Return Value Placeholders

. پیام ها2

a در شکل collaboration، عالمت گذاری برای فراخوانی پیام ها در دیاگرام 2شکل =: orderTotal: 1.2، پیام 1 را نشان می دهد. مثال

calculateTotal)( هیچ تکراری اتفاق نمی افتد، مقدار برگشتی ، را نشان می دهد،2. 1 ، ترتیب اعدادorderTotalو متد فراخوانده شده

.)(calculateTotalای بنام

که فراخوانی های پیام همزمان را نشان می دهد. Collaboration diagram: یک 3شکل

1 .Indicate a Return Value Only When It Isn’t Clear.

2 .Indicate Parameters Only When They Aren’t Clear.

3 .Depict an Arrow For Each Message.

4 .Consolidate Getter Invocations وقتی چندین .getterدر یک ردیف فراخوانده می شود، بهترین میانبر، مدل سازی یک پیام مستقل از قبیل

getInfo)( است. 1 در شکل

Page 53: Learn_UML

5 .Indicate Concurrent Threads With Letters می بینید که قبل از بعضی از پیام ها حروف 3. در شکل A، B و ،Cوجود دارد که نشان می دهد آن پیام ها به طور همزمان پردازش می شوند.

لینک ها

ها،associationها –شامل classifier، نشان دهنده نمونه ایی از روابط بین UML در collaborationهایی که در یک دیاگرام classifierخطوط بین aggregation ،هاcomposition ها، وdependency.ها– است

در سطح ویژه.Collaboration: یک دیاگرام 4شکل

Model “Bare” Links On Instance-Level Collaboration Diagrams.

Show Role-Pertinent Information on Specification-Level Diagrams می بینید که نقش هایی که کالس ها می گیرند، و کثرت های4. در شکل سطح باًال، نشان داده شده اند.

Prefer Roles on Links Instead of Within Classes.

Links Should Be Consistent Static Relationships.

نفر2 از طرف 5.0امتیاز فعلی

Currently 5.0/5 Stars.