تاریخچه - PersianGIG

Download Report

Transcript تاریخچه - PersianGIG

1
2
‫مدلسازی چیست؟‬
‫‪ ‬مدل سازی یعنی ایجاد تصویری (انتزاعی) از واقعیت‬
‫‪ ‬این انتزاع ها شامل ساده سازی اند‬
‫‪ ‬نادیده گرفتن جزئیات نامرتبط‬
‫‪ ‬فقط جزئیات مفید را نشام میدهند‪.‬‬
‫‪3‬‬
‫‪‬چرا باید نرم افزار را مدلسازی کرد؟‬
‫پیچیدگی روزافزون‬
‫نرم افزارها‬
‫نیاز به روش ساده‬
‫تری برای سیستم های‬
‫پیچیده داریم‬
‫‪ 40 Windows XP‬میلیون‬
‫خط کد‬
‫یک برنامه نویس نمیتواند به‬
‫تنهایی این همه کد را درک کند‬
‫برنامه نویسانی که بعداً به تیم‬
‫اضافه میشوند نمی توانند به‬
‫راحتی کد را بفهمند‬
‫مدلسازی روشی برای غلبه بر‬
‫پیچیدگی است‪.‬‬
‫تمام صنعت ها برای خودشان زبان مشخصی دارند‬
‫مثالً انتگرال در ریاضیات شکل خاصی دارد‬
‫‪….‬‬
‫تمام ریاضی دانان جهان با دیدن این شکل فورا متوجه میشوند که من یک‬
‫انتگرال را نشان داده ام‬
‫ریاضیدانان زبان مشترکی برای انتقال مفاهیم دارند درست مثل موسیقی‬
‫دانها‪ ،‬مهندسان الکترونیک و ساختمان و‪....‬‬
‫‪5‬‬
‫‪ UML‬چیست؟‬
‫یوام ال یک زبان مدلسازی نسل سوم است و روشی باز برای توصیف ویژگیها‪ ،‬نمایش‬
‫گرافیکی‪ ،‬ساختن و مستند سازی اجزای یک سیستم نرم افزاری در حال توسعه می باشد‪.‬‬
‫از یو ام ال برای فهمیدن‪ ،‬طراحی‪ ،‬مرور‪ ،‬پیکربندی‪ ،‬نگهداری و کنترل اطالعات سیستمهای‬
‫نرم افزاری استفاده می شود‪.‬‬
‫یو ام ال برای همه روشهای توسعه نرم افزار‪ ،‬همه مراحل چرخه عمر نرم افزار‪ ،‬همه‬
‫حوزههای برنامههای کاربردی و هر رسانه ای قابل استفاده است‪.‬‬
‫یو ام ال شامل مفاهیم معنایی‪ ،‬نمادگذاری و راهنمایی برای طراحی می باشد‪.‬‬
‫این زبان شامل فرآیند مرحله به مرحله تولید نرم افزار نیست‪ ،‬بلکه یو ام ال زبانی است که‬
‫تقریبا تمام شیوههای تولید نرم افزار از آن استفاده می کنند‪.‬‬
‫یو ام ال تکنیکهای مدلسازی داده (نمودار رابطه موجودیت)‪ ،‬مدلسازی تجاری‪ ،‬مدلسازی شی و‬
‫مدلسازی مولفهها را با هم ترکیب می نماید‪.‬‬
‫یو ام ال را می توان در تمامی پروسهها در سراسر چرخه توسعه نرم افزار به کاربرد‪.‬‬
‫تاریخچه‬
‫‪UML‬مستقیما ً روشهاي ‪Rumbaugh ،Booch‬و‬
‫‪Jacobson‬را با هم ادغام كرده است‪ ،‬اما محدوده آن بیشتر از‬
‫سه متدلوژي فوق است‪.‬‬
‫‪UML ‬همانطور كه از نامش پیدا است یك زبان مدلسازي‬
‫است تا یك متدلوژي‪ .‬بطور معمول‪ ،‬هر متدلوژي شامل حداقل‬
‫یك زبان مدلسازي و یك پروسه ساخت است‪.‬زبان مدلسازي‬
‫شامل نمودارهایي است كه هر متدلوژي براي نمایش تحلیل و‬
‫طراحي سیستمها از آن استفاده ميكند‪.‬‬
‫‪‬هدف طراحان ‪UML‬بیشتر تدوین یك زبان مدلسازي شيگرا‬
‫بوده تا ارائه یك پروسه ساخت استاندارد‪ ،‬اگر چه طراحان‬
‫‪UML‬یك پروسه ساخت به نام ‪USDP‬را نیز ارائه دادهاند‬
‫‪7‬‬
‫‪Unisys, Rational, Oracle, IBM, Microsoft,‬شركتهایي مانند‬
‫استفاده كرده و آن را پشتیباني ‪UML‬و ‪ ...‬از شركتهایي هستند كه از ‪HP‬‬
‫مينمایند‪.‬‬
‫‪‬زبان یکنواخت؟!؟‬
‫مفاهیم یو ام ال در قالب دسته هایی به نام دید طبقه بندی می شوند‪.‬‬
‫هر "دید" در واقع زیرمجموعه ای از ساختهای مدلسازی است که یک جنبه‬
‫از سیستم را نمایش می دهند‪.‬‬
‫در باالترین سطح طبقه بندی دیدها به چهار حوزه کلی تقسیم بندی می شوند‬
‫دسته بندی‬
‫ساختاری‬
‫‪8‬‬
‫( ‪Structural‬‬
‫‪Classificatio‬‬
‫)‪n‬‬
‫رفتار پویا‬
‫چیدمان فیزیکی‬
‫( ‪Dynamic‬‬
‫)‪Behavior‬‬
‫( ‪Physical‬‬
‫)‪Layout‬‬
‫سازماندهی مدل‬
‫( ‪Model‬‬
‫‪Organizatio‬‬
‫)‪n‬‬
‫‪‬‬
‫عناصر سیستم و ارتباط آنها با سایر عناصر را توصیف می کند‪ .‬برای مدل کردن عناصر سیستم از‬
‫مفهوم "دسته کننده" (‪ )classifier‬استفاده می شود‪.‬‬
‫‪‬‬
‫دسته کنندهها شامل کالس‪ ،‬عملگر(‪ ،)Actor‬مورد کاربرد(‪ ،)Use case‬گره(‪،)Node‬‬
‫همکاری()‪ )Collaboration‬و مولفه(‪ )component‬هستند‪ .‬دسته کنندهها پایه ای می سازند که‬
‫رفتارهای پویای سیستم روی آن تعریف می شوند‪.‬‬
‫دسته بندی‬
‫ساختاری‬
‫دید ایستا‬
‫دید طراحی‬
‫دید مورد کاربرد‬
‫‪9‬‬
‫حوزه طبقه‬
‫بندی‬
‫ساختاری‬
‫شامل سه‬
‫دید مختلف‬
‫است‪:‬‬
‫دید ایستا‬
‫• این دید مفاهیم مربوط به‬
‫حوزه برنامه کاربردی و‬
‫مفاهیم داخلی ابداع شده به‬
‫عنوان بخشی از پیاده‬
‫سازی برنامه کاربردی را‬
‫مدل می کند‪.‬‬
‫• این دید‪ ،‬ایستا نامیده‬
‫میشود زیرا رفتارهای‬
‫وابسته به زمان سیستم را‬
‫توصیف نمی کند‪.‬‬
‫• اجزای تشکیل دهنده دید‬
‫ایستا عبارتند از‬
‫• کالسها و روابط (ارتباط‬
‫و تعمیم) و وابستگی های‬
‫مانند و بین آنها‪.‬‬
‫• دید ایستا در قالب‬
‫نمودارهای کالس نمایش‬
‫داده می شود‪.‬‬
‫دید طراحی‬
‫دید مورد کاربرد‬
‫• در حالی که دید ایستا‬
‫مفاهیم برنامه کاربردی‬
‫را از دیدگاه منطقی مدل‬
‫می کند‪ ،‬این دید ساختار‬
‫طراحی خود برنامه را‬
‫مدل می کند‪.‬‬
‫• این دید کارکرد یک‬
‫موضوع راآن طور که‬
‫توسط عاملین خارجی‬
‫که عملگر نامیده می‬
‫شوند و با موضوع‬
‫مورد نظر در یک‬
‫دیدگاه خاص تعامل‬
‫دارند نمایش می دهد‪.‬‬
‫یک مورد کاربرد در‬
‫واقع یک واحد کارکرد‬
‫است که به صورت‬
‫برهمکنش میان‬
‫عملگروموضوع بیان‬
‫می شود‪ .‬نمودار مورد‬
‫استفاده در این دید‬
‫نمودار مورد کاربرد‬
‫است‬
‫• نمودارهای پیاده سازی‬
‫که در این دید مورد‬
‫استفاده قرار می گیرند‬
‫عبارتند از ‪:‬‬
‫• نمودار ساختار مرکب‪،‬‬
‫نمودار همکاری و‬
‫نمودار مولفه‬
‫‪ ‬رفتار یک سیستم و سایر دسته کننده هارا در مرور زمان توصیف می کند‪ .‬یک‬
‫رفتار به صورت تغییراتی در وضعیت سیستم توصیف میشود که در دید ایستا‬
‫ترسیم می شوند‪.‬‬
‫رفتار پویا‬
‫دید ماشین وضعیت‬
‫‪Dynamic Behavior‬‬
‫دید برهمکنش‬
‫‪ .‬حوزه رفتار‬
‫پویای سیستم‬
‫شامل سه دید‬
‫دید فعالیت‬
‫‪11‬‬
‫است‬
‫دید ماشین وضعیت‬
‫• این دید حالتهای‬
‫ممکن تاریخچه‬
‫زندگی شیئی از یک‬
‫کالس را مدل می‬
‫کند‪.‬‬
‫• یک ماشین وضعیت‬
‫شامل وضعیت هایی‬
‫است که توسط‬
‫گذارها به هم متصل‬
‫میشوند‪.‬‬
‫• نمودار مورد استفاده‬
‫در این دید نمودار‬
‫ماشین وضعیت‬
‫است‪.‬‬
‫دید برهمکنش‬
‫دید فعالیت‬
‫• دید برهم کنش توالی‬
‫پیامهای مبادله شونده‬
‫بین بخشهای یک سیستم‬
‫را توصیف می کند‪.‬‬
‫• این دید نمایی کل گرا‬
‫از رفتارهای درون یک‬
‫سیستم را نمایش میدهد‪.‬‬
‫• یک فعالیت در واقع‬
‫گردش کنترل در میان‬
‫فعالیتهای محاسباتی‬
‫درگیر در انجام یک‬
‫محاسبه یا گردش کار‬
‫می باشد‪ .‬به یک مرحله‬
‫محاسباتی ابتدایی‪ ،‬یک‬
‫عمل گفته می شود‪.‬‬
‫• به یک گروه از عملها‬
‫و زیرفعالیتها گره‬
‫فعالیت گفته می شود‪.‬‬
‫فعالیتها با نمودار‬
‫فعالیت نمایش داده می‬
‫شوند‪.‬‬
‫• این دید از دو نمودار‬
‫برای نمایش استفاده‬
‫میکند که هریک روی‬
‫دیدگاه خاصی تمرکز‬
‫یافته اند‪:‬‬
‫• نمودار ارتباطات و‬
‫نمودار توالی‬
‫‪ ‬توصیف کننده منابع رایانشی در سیستم و چگونگی پیاده سازی مصنوعات مدل‬
‫روی آنها می باشد‪: .‬‬
‫چیدمان فیزیکی‬
‫‪Physical Layout‬‬
‫‪13‬‬
‫دید ایستا‬
‫نمودار به کارگیری مورد استفاده در این دید‬
‫نمایشگر پیاده سازی فیزیکی مصنوعات‬
‫زمان اجرا روی گره هاست‪.‬‬
‫یک مصنوع در این نمودار یک واحد پیاده‬
‫سازی فیزیکی مانند یک فایل است و یک‬
‫گره در واقع یک منبع زمان اجرا مانند یک‬
‫رایانه‪ ،‬دستگاه و یا حافظه است‪.‬‬
‫این بخش‬
‫شامل یک‬
‫دید است‬
‫‪‬‬
‫توصیف کننده سازماندهی خود مدلها در واحدهای سلسه مراتبی می باشد‪ .‬واحد ژنریک‬
‫سازماندهی مدلها بسته است‪.‬یک مدل در واقع سلسله مراتبی از بسته هاست که انتزاع‬
‫معنایی کاملی از سیستم از یک دیدگاه خاص است‪.‬‬
‫سازماندهی مدل‬
‫دید مدیریت مدل‬
‫‪Model Organization‬‬
‫این دید سازمان داخلی خود مدل را مدل می کند‪.‬‬
‫یک مدل از مجموعه ای از بستهها تشکیل‬
‫میشود که در بر دارنده عناصر مدل ( مانند‬
‫نمودارهای کالس‪ ،‬ماشین وضعیت و مورد‬
‫کاربرد) است‪.‬‬
‫‪14‬‬
‫نمودار مورد استفاده در این دید نمودار بسته بندی‬
‫است‪.‬‬
‫این بخش‬
‫شامل یک‬
‫دید است‬
‫یو ام ال توسط نمودارهایی ساختار و رفتار سیستم را نمایش می دهد‪.‬یک سیستم به‬
‫صورت مجموعه ای از اشیای مجزا مدل میشود که برای رسیدن به هدف نهایی سیستم با‬
‫یکدیگر تعامل دارند‪.‬نمودارهای یو ام ال نمایشگر دو دیدگاه مختلف از مدل سیستم هستند ‪:‬‬
‫دید ایستا(ساختاری)‬
‫‪15‬‬
‫• ین دیدگاه تاکید بر نمایش‬
‫ساختار ایستای سیستم با‬
‫استفاده از اشیا‪ ،‬خصوصیت‬
‫ها‪ ،‬عملیات و رابطهها دارد‪.‬‬
‫• نمودارهای ساختاری انواع‬
‫اشیایی که برای سیستم و‬
‫پیاده سازی آن اهمیت دارند‬
‫و روابط بین اشیا را تصویر‬
‫می کنند‪.‬‬
‫• به عنوان نمونه می توان از‬
‫نمودار کالس نام برد‪.‬‬
‫دید پویا (رفتاری)‬
‫• این دیدگاه تاکید برنمایش‬
‫رفتار پویای سیستم با نشان‬
‫دادن هماهنگی میان اشیا و‬
‫تغییرات وضعیت داخلی اشیا‬
‫دارد‪.‬‬
‫• به عنوان نمونه می توان‬
‫از نمودار توالی و یا نمودار‬
‫فعالیت نام برد‪.‬‬
‫زیر سیستم‬
‫درخواست داده‬
‫دریافت دادهها توسط‬
‫سنسور‬
‫‪16‬‬
‫تبدیل دادههای‬
‫دریافتی از سنسورها‬
‫به فرم مناسب‬
‫زیرسیستم پردازش‬
‫سیگنال‬
‫دریافت دادههای‬
‫خام‬
‫استخراج‬
‫خصیصه‬
‫عملیات فیلترینگ‬
‫اصالح داده ها‬
‫تولید الگو‬
‫‪uml ۲٫۲‬‬
‫‪ ۱۴‬گونه نمودار مختلف دارد که به دو دسته اصلی تقسیم می شوند‪.‬‬
‫هفت نمودار برای نمایش اطالعات ساختاری به کار می روند و‬
‫هفت نمودار دیگر برای نمایش رفتار و برهم کنشها استفاده می شوند‪.‬‬
‫شکل یک نمودار‬
‫کالس است که‬
‫دسته بندی سلسه‬
‫مراتبی نمودارهای‬
‫یوام ال را نشان‬
‫می دهد‪.‬‬
‫‪17‬‬
‫نمودار کالس‬
‫ساختار سیستم را بوسیله نمایش کالسها‪ ،‬خصوصیات کالسها و روابط بین آنها توصیف می کند‪.‬‬
‫نمودار مولفه‬
‫چگونگی تقسیم سیستم به مولفههای آن و وابستگی بین مولفههای سیستم را توصیف می کند‪.‬‬
‫نمودار ساختار مرکب‬
‫ساختار داخلی کالسها و هماهنگی هایی که ممکن می سازند را توصیف می کند‪.‬‬
‫نمودار به کارگیری‬
‫سخت افزار بکار رفته در پیاده سازی سیستم و همچنین محیطهای اجرا و سایر اجزایی که باید بر روی این سخت‬
‫افزار قرار گیرند را توصیف می کند‪.‬‬
‫نمودار شی‬
‫نمایشگر یک دید کامل یا جزیی از ساختار سیستم مدل شده در یک زمان مشخص است‪.‬‬
‫نمودار بسته بندی‬
‫چگونگی تقسیم سیستم به گروه بندیهای منطقی را با نمایش وابستگیها بین این گروه بندیها توصیف می کند‪.‬‬
‫نمودار پروفایل‬
‫‪18‬‬
‫نمودارهای ساختاری بر روی چیزهای که باید در سیستم مورد نظر شده موجود باشند‪ ،‬تاکید‬
‫دارد‪ .‬از آنجا که این نمودارها ساختار را نمایش می دهند‪ ،‬کاربرد گسترده ای در مورد‬
‫معماری سیستمهای نرم افزاری دارند‪.‬‬
‫نمودار مولفه‬
‫نمودار به کارگیری‬
‫‪19‬‬
‫نمودار ساختار مرکب‬
‫نمودار شئ‬
‫نمودار بسته بندی‬
‫نمودار‬
‫فعالیت‬
‫ساختار سیستم را بوسیله نمایش کالسها‪ ،‬خصوصیات کالسها و‬
‫روابط بین آنها توصیف می کند‪.‬‬
‫نمودار ماشین‬
‫وضعیت‬
‫چگونگی تقسیم سیستم به مولفههای آن و وابستگی بین مولفههای‬
‫سیستم را توصیف می کند‪.‬‬
‫نمودار مورد‬
‫کاربرد‬
‫ساختار داخلی کالسها و هماهنگی هایی که ممکن می سازند را‬
‫توصیف می کند‪.‬‬
‫‪20‬‬
‫نمودارهای رفتاری بر چیزهایی که باید در سیستم مدل شده اتفاق بیفتد تاکید‬
‫دارند‪ .‬از آنجا که این نمودارها نمایشگر رفتار سیستم هستند به گستردگی‬
‫برای توصیف کارکردهای سیستم نرم افزاری به کار می روند‪.‬‬
‫نمودار ماشین وضعیت‬
‫نمودار فعالیت‬
‫‪21‬‬
‫نمودار مورد کاربرد‬
‫نمودار‬
‫ارتباطات‬
‫بر همکنش بین اشیا و یا اجزا را در قالب توالی پیامهای مبادله شده نمایش می دهد‪ .‬این‬
‫نمودار نمایانگر ترکیبی از اطالعات به دست آمده از نمودارهای کالس‪ ،‬توالی و مورد‬
‫کاربرد است و هر دوی ساختار ایستا و رفتار پویای سیستم را توصیف می کنند‬
‫نمودارکلی‬
‫برهمکنش‬
‫ک دید کلی ارائه می دهد که در آن گرهها نمایانگر نمودارهای بر همکنش هستند‪.‬‬
‫نمودار توالی‬
‫شان می دهد که اشیا چگونه با یکدیگر در قالب پیامهایی متوالی ارتباط بر قرار می کنند‬
‫و همچنین نمایشگر طول عمر اشیا نسبت به این پیامها می باشد‪.‬‬
‫نمودارهای‬
‫زمانبندی‬
‫گونه ویژه ای از نمودارهای بر هم کنش هستند که بر روی محدودیتهای زمانبندی‬
‫تمرکز دارند‪.‬‬
‫‪22‬‬
‫نمودارهای بر هم کنش زیر مجموعه ای از نمودارهای رفتاری هستند که بر‬
‫گردش کنترل و دادهها بین چیزهای مختلف در سیستم مدل شده تاکید دارند‪.‬‬
‫نمودارکلی برهمکنش‬
‫نمودار ارتباطات‬
‫‪23‬‬
‫نمودار توالی‬
‫‪:‬نمودارهای مورد کاربرد‪ UML‬مرور اولیه‬
‫‪Use case‬‬
‫مورد کاربرد‬
‫‪Watch‬‬
‫‪ReadTime‬‬
‫‪WatchRepairPerson‬‬
‫‪SetTime‬‬
‫‪Package‬‬
‫بسته‬
‫‪Actor‬‬
‫عامل‬
‫‪WatchUser‬‬
‫‪ChangeBattery‬‬
‫نمودارهای مورد کاربرد عملکرد سیستم از دیدگاه کاربر آن را نمایش میدهند‪.‬‬
‫مرور اولیه‬UML‫ نمودارهای کالس‬:
‫نمودارهای کالسی ساختار سیستم را نشان میدهند‬
Association
‫ارتباط‬
Class
‫کالس‬
Multiplicity
Watch
1
2
PushButton
state
push()
release()
Attribute
‫ویژگی ها‬
1
LCDDisplay
blinkIdx
blinkSeconds()
blinkMinutes()
blinkHours()
stopBlinking()
referesh()
Operations
‫عملیات‬
1
1
1
2
Battery
load
1
Time
now
‫ نمودارهای توالی‬:UML ‫مرور اولیه‬
Actor
‫عامل‬
:WatchUser
Message
‫پیام‬
Object
‫شی‬
:Watch
:LCDDisplay
pressButton1()
blinkHours()
pressButton1()
blinkMinutes()
pressButton2()
:Time
incrementMinutes()
refresh()
pressButtons1And2()
commitNewTime()
stopBlinking()
Activation
‫فعال سازی‬
Lifeline
‫خط زندگی‬
‫مرور اولیه‬UML‫ نمودار وضعی برای اشیا با رفتار پویای جالب‬:
Event
‫رویداد‬
Initial state
‫وضعیت اولیه‬
State
‫وضعیت‬
[button2Pressed]
[button1&2Pressed]
BlinkHours
IncrementHrs
Transition
‫انتقال‬
[button1Pressed]
[button2Pressed]
[button1&2Pressed]
BlinkMinutes
IncrementMin.
[button1Pressed]
[button2Pressed]
[button1&2Pressed]
BlinkSeconds
IncrementSec.
StopBlinking
Final state
‫وضعیت نهایی‬
‫قواعد اصلی ‪UML‬‬
‫‪ ‬مستطیل نشان دهنده کالس یا شی‬
‫‪ ‬بیضی نشان هنده عملیات یا موارد کاربرد است‪.‬‬
‫‪ ‬زیر نام اشیاء خط کشیده میشود‬
‫‪myWatch:SimpleWatch ‬‬
‫‪Joe:Firefighter ‬‬
‫‪ ‬زیر نام انواع خط کشیده نمی شود‪.‬‬
‫‪SimpleWatch ‬‬
‫‪Firefighter ‬‬
‫‪ ‬نمودارها در واقع گراف اند‬
‫‪ ‬نود ها مولفه‬
‫‪ ‬یال ها نشان دهنده ارتباط‬
‫نمودارهای مورد کاربرد‬
‫‪ ‬در طول استخراج نیازمندیها برای‬
‫نشان دادن رفتار بیرونی بکار‬
‫میروند‬
‫‪( Actor ‬عامل) ها نشان دهنده یک‬
‫نقش اند یعنی نوعی از کاربران‬
‫سیستم‬
‫‪ Use cases ‬ها نشان دهنده دنباله‬
‫ای از نعاملالت برای نوعی عملیات‬
‫است‬
‫‪ ‬مدل مورد کاربرد مجموعه تمامی‬
‫موارد کاربرد است‪ .‬این مدل‬
‫توصیف کاملی از عملکرد سیستم و‬
‫محیطش است‪.‬‬
‫‪Passenger‬‬
‫‪PurchaseTicket‬‬
‫عامل ها‬
‫‪ ‬عامل نشان دهنده مولفه ای بیرون سیستم است که با سیستم‬
‫تعامل دارد‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫کاربر‬
‫سیستم خارجی‬
‫محیط فیزیکی‬
‫‪ ‬عامل نامی منحصر بفرد و توصیف اختیاری دارد‬
‫‪ ‬مثال‬
‫‪ ‬مسافر‪ :‬فردی در قطار‬
‫‪ ‬ماهواره ‪ :GPS‬ارائه مختصات ‪ GPS‬به سیستم‬
‫‪Passenger‬‬
‫مورد کاربرد‬
‫هر مورد کاربرد نشان دهنده نوعی از عملکرد ارائه‬
‫شده توسط سیستم در قالب جریان رویداده هاست‬
‫هر مورد کاربرد شامل‪:‬‬
‫‪ ‬نام منحصر بفرد‬
‫‪ ‬عامل های مشارکت کننده‬
‫‪ ‬شرط ورود‬
‫‪ ‬شرط خروج‬
‫‪ ‬دنباله ای از رویداده ها‬
‫‪ ‬نیازمندیهای خاص‬
‫‪PurchaseTicket‬‬
‫مثالی از نمودار مورد کاربرد‬
‫نام‪ :‬خرید بلیط‬
‫دنباله رویدادها‪:‬‬
‫عامل ها‪ :‬مسافر‬
‫‪.1‬‬
‫‪.2‬‬
‫شرط ورود‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪.3‬‬
‫مسافر در مقابل توزیع کننده بلیط می ایستد‬
‫مسافر پول کافی برای خرید بلیط دارد‬
‫‪.4‬‬
‫‪.5‬‬
‫شرط خروج‪:‬‬
‫‪‬‬
‫مسافر بلیط دارد‬
‫چیزی جا نمانده؟‬
‫موارد استثنائی‬
‫مسافر تعداد نواحی سفر را انتخاب میکند‬
‫توزیع کننده مبلغ را نمایش میدهد‬
‫مسافر پول را رائه داده‬
‫توزیع کننده مابقی را ارائه میدهد‬
‫توزیع کننده بلیط را صادر میکند‬
‫رابطه‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫>>‪<<EXTENDS‬‬
‫رابطه >>‪ <<extends‬نشان دهنده موارد‬
‫استثنائی و نادر است‬
‫برای وضوح بیشتر این حاالت استثنائی‬
‫خارج از جریان رویدادهای اصلی آورده‬
‫میشود‬
‫موارد کاربرد جریان های استثنائی میتوانند‬
‫بیش از یک مورد کاربرد را بسط دهند‬
‫جهت یک رابطه >>‪ <<extends‬به‬
‫سمت مورد کاربرد بسط داده شده است‪.‬‬
‫‪Passenger‬‬
‫‪PurchaseTicket‬‬
‫>>‪<<extends‬‬
‫>>‪<<extends‬‬
‫>>‪<<extends‬‬
‫‪TimeOut‬‬
‫‪OutOfOrder‬‬
‫>>‪<<extends‬‬
‫‪NoChange‬‬
‫‪Cancel‬‬
‫رابطه‬
‫‪‬‬
‫‪‬‬
‫رابطه >>‪ <<includes‬نشان دهنده‬
‫رفتاری است که در بیرون از مورد‬
‫کاربرد قرار دارد‬
‫دلیل این کار‬
‫‪‬‬
‫‪‬‬
‫>>‪<<INCLUDES‬‬
‫استفاده مجدد است ولی این به معنی حالت استثنائی‬
‫نیست‬
‫‪Passenger‬‬
‫‪PurchaseMultiCard‬‬
‫جهت رابطه >>‪ <<includes‬به‬
‫سمت مورد استفاده شده است‪( .‬برعکس‬
‫>>‪<<includes‬‬
‫رابطه >>‪)<<extends‬‬
‫>>‪<<extends‬‬
‫‪Cancel‬‬
‫‪PurchaseSingleTicket‬‬
‫>>‪<<includes‬‬
‫‪CollectMoney‬‬
‫>>‪<<extends‬‬
‫‪NoChange‬‬
‫نمودارهای کالس‬
‫‪Trip‬‬
‫‪zone:Zone‬‬
‫‪Price: Price‬‬
‫‪TarifSchedule‬‬
‫*‬
‫*‬
‫)(‪Enumeration getZones‬‬
‫)‪Price getPrice(Zone‬‬
‫‪ ‬نمودارهای کالس نشان دهنده ساختار سیستم اند‬
‫‪ ‬کاربردها‪:‬‬
‫‪ ‬مدلسازی حوزه مساله در حین تحلیل نیازمندیها‬
‫‪ ‬مدلسازی زیرسیستم ها و رابط ها حین طراحی سیستم‬
‫‪ ‬مدلسازی کالس ها هنگام طراحی شی‬
CLASSES
Name
TarifSchedule
zone2price
getZones()
getPrice()
Attributes
Operations
TarifSchedule
Table zone2price
Enumeration getZones()
Price getPrice(Zone)
Signature
TarifSchedule
‫در هر کالس وضعیت (ویژگی ها) و رفتار (عملیات) جای میگیرد‬
‫هر ویژگی یک نوع دارد‬
.‫) دارد‬signature ( ‫هر عملیات یک امضا‬
‫تنها بخش اجباری نام کالس است‬




‫‪INSTANCES‬‬
‫‪tarif_1974:TarifSchedule‬‬
‫{ = ‪zone2price‬‬
‫‪{‘1’, .20},‬‬
‫‪{‘2’, .40},‬‬
‫}}‪{‘3’, .60‬‬
‫‪‬‬
‫یک نمونه ‪instance‬‬
‫‪ ‬نام نمونه زیرخط دارد و میتواند شامل نام کالس باشد‬
‫‪ ‬ویژگی ها به همراه مقدارشان ذکر میشوند‪.‬‬
‫تفاوت بین ‪class ،actor‬و ‪instance‬چیست؟‬
‫‪Actor:‬‬
‫‪‬‬
‫‪ ‬موجودیتی خارج سیستمی که مدل میشود و با سیستم تعامل دارد (مسافر)‬
‫‪Class:‬‬
‫‪‬‬
‫‪ ‬انتزاعی که موجودیتی در حوزه مساله را مدل میکندو باید در داخل سیستم‬
‫مدل شود (کاربر)‬
‫‪Object:‬‬
‫‪ ‬نمونه ای مشخص از یک کالس‬
‫‪‬‬
ASSOCIATIONS
TarifSchedule
TripLeg
Enumeration getZones()
Price getPrice(Zone)
Price
Zone
*
*
‫ها نشان دهنده ارتباط بین کالس ها هستند‬. Association
‫ یک وابستگی نشان میدهد که شی مبداً مجاز است به چند شی ارجاع دهد‬multiplicity ‫چندی‬


1-TO-1 AND 1-TO-MANY ASSOCIATIONS
Has-capital
Country
City
*
name:String
name:String
One-to-one association
Point
Polygon
draw()
*
x: Integer
y: Integer
One-to-many association
MANY-TO-MANY ASSOCIATIONS
*
Lists
StockExchange
*
Company
tickerSymbol
StockExchange*
Lists
tickerSymbol
1
SX_ID
Company
‫تجمع‪AGGREGATION‬‬
‫‪‬‬
‫تجمع نوع خاصی از وابستگی تست که نشان دهنده سلسله مراتب «شامل ‪ »....‬می باشد‬
‫‪‬‬
‫به کالس اصلی ‪ aggregate‬و به کالس های اجزا ‪ components‬میگویند‬
‫‪Exhaust system‬‬
‫‪0..2‬‬
‫‪‬‬
‫‪1‬‬
‫‪Tailpipe‬‬
‫‪Muffler‬‬
‫‪diameter‬‬
‫‪diameter‬‬
‫لوزی سیاه نشان دهنده ‪ composition‬است یعنی نوع قوی تجمع که در آن مولفه ها بدون ‪aggregate‬‬
‫وجود نخواهند داشت‪.‬‬
‫‪TicketMachine‬‬
‫‪3‬‬
‫‪ZoneButton‬‬
‫توارث‬
‫‪Button‬‬
‫‪ZoneButton‬‬
‫‪CancelButton‬‬
‫کالس فرزند ویژگی ها و عملیات را از کالس پدر به ارث می برد‬
‫توارث با حدف افزونگی مدلسازی را ساده تر میکند‪ .‬‬
‫‪‬‬
‫مدلسازی اشیا در عمل‬
Account
Bank
Name
Betrag
AccountId
CustomerId
Deposit()
Withdraw()
GetBalance()
‫) پیدا کردن اشیا جدید‬1
‫ ویژگی ها و متدها‬،‫) مرور نام ها‬2
Customer
Name
CustomerId
‫مدلسازی اشیا در عمل‪ :‬سیستم بانکداری‬
‫‪Account‬‬
‫‪Customer‬‬
‫‪Has‬‬
‫‪Name‬‬
‫‪CustomerId‬‬
‫*‬
‫‪Betrag‬‬
‫‪AccountId‬‬
‫‪CustomerId‬‬
‫‪AccountI‬‬
‫‪d‬‬
‫)(‪Deposit‬‬
‫)(‪Withdraw‬‬
‫)(‪GetBalance‬‬
‫‪ )1‬پیدا کردن اشیا جدید‬
‫‪ )2‬مرور نام ها‪ ،‬ویژگی ها و متدها‬
‫‪)3‬پیدا کردن وابستگی های بین اشیاء‬
‫‪ )4‬نامگذاری وابستگی ها‬
‫‪ )5‬تعیین چندی وابستگی ها‬
‫‪Bank‬‬
‫‪Name‬‬
‫بسته ها‬
‫‪‬‬
‫‪‬‬
‫‪Packages‬‬
‫یک بسته مکانیزمی در ‪ UML‬برای دسته بندی عناصر است (معموالً مفهومی در حوزه‬
‫مساله نیست)‬
‫بسته ها ابزارهای پایه گروه بندی مدلهای ‪ UML‬برای افزایش خوانایی آنها هستند‬
‫‪DispatcherInterface‬‬
‫‪IncidentManagement‬‬
‫‪‬‬
‫‪Notification‬‬
‫سیستم پیچیده میتواند به چند زیرسیستم تجزیه شود‪ .‬هر یک از این زیرسیستم ها بصورت‬
‫یک بسته مدل شده اند‪.‬‬
‫نمودارهای توالی در ‪UML‬‬
‫‪‬‬
‫استفاده در حین تحلیل نیازمندیها‬
‫‪ ‬پاالیش توصیفات موارد کاربرد‬
‫‪ ‬پیدا کردن اشیاء اضافی ‪“participating‬‬
‫”‪objects‬‬
‫‪‬‬
‫‪TicketMachine‬‬
‫‪Passenger‬‬
‫)(‪selectZone‬‬
‫استفاده در طراحی سیستم‬
‫‪ ‬پاالیش رابط های زیر سیستم ها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫کالس ها در ستون ها نمایش داده میشوند‬
‫پیام ها با فلش نمایش داده میشوند‪.‬‬
‫فعالیت ها با مستطیل های باریک نمایش داده‬
‫میشوند‪.‬‬
‫خطوط زندگی ‪ Lifeline‬با خط چین نمایش‬
‫داده میشود‪.‬‬
‫)(‪insertCoins‬‬
‫)(‪pickupChange‬‬
‫)(‪pickUpTicket‬‬
‫پیامهای تودرتو‬
‫‪Display‬‬
‫‪TarifSchedule‬‬
‫‪ZoneButton‬‬
‫)‪lookupPrice(selection‬‬
‫‪Passenger‬‬
‫)(‪selectZone‬‬
‫‪price‬‬
‫)‪displayPrice(price‬‬
‫‪Dataflow‬‬
‫‪…to be continued...‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مبدا فلش مشخص کننده فعال سازی ‪ activation‬است که پیام را میفرستد‬
‫یک فعال سازی به اندازه تمامی فعالیتهای تودرتو طول میکشد‬
‫خطوط افقی نشان دهنده جریان داده اند‬
‫خطوط عمودی نشان دهنده خط زندگی اند‬
ITERATION & CONDITION
…continued from previous slide...
ChangeProcessor
Passenger
*insertChange(coin)
‫تکرار‬
‫شرایط‬
CoinIdentifier
Display
CoinDrop
lookupCoin(coin)
price
displayPrice(owedAmount)
[owedAmount<0] returnChange(-owedAmount)
…to be continued...
.‫ با یک ستاره قبل از پیام نشان داده میشود‬Iteration ‫تکرار‬
.‫شرایط با عبارات منطقی محصور در براکت قبل از پیام نشان داده میشوند‬


‫ایجاد و تخریب‬
‫‪....‬ادامه از اسالید قبلی‬
‫‪ChangeProcessor‬‬
‫ایجاد‬
‫)‪createTicket(selection‬‬
‫‪Ticket‬‬
‫)(‪print‬‬
‫تخریب‬
‫)(‪free‬‬
‫‪‬‬
‫ایجاد با پیامی که به شی اشاره دارد نشان داده میشود‬
‫‪‬‬
‫تخریب با عالمت ‪ X‬ای در انتهای فعالیت تخریب نشان داده میشود‪.‬‬
‫‪Passenger‬‬
‫خالصه نمودار توالی‬
‫‪ ‬نمودار توالی در ‪ UML‬نشاندهنده رفتار در قالب تعامالت است‬
‫‪ ‬مفید برای پیدا کردن اشیائی که باید تعریف شوند‪.‬‬
‫‪ ‬ایجاد آنها زمانبر ولی نتیجه ارزشمند‬
‫‪ ‬مکمل نمودار کالسی (که نشان دهنده ساختار است)‬
‫نمودار وضعی‬
‫رخداد‬
‫حالت شروع‬
‫حالت‬
[button2Pressed]
[button1&2Pressed]
BlinkHours
IncrementHrs
‫انتقال‬
[button1Pressed]
[button2Pressed]
[button1&2Pressed]
BlinkMinutes
IncrementMin.
[button1Pressed]
[button2Pressed]
[button1&2Pressed]
BlinkSeconds
IncrementSec.
StopBlinking
‫حالت نهایی‬
‫نمودارهای فعالیت‬
‫‪‬‬
‫نمودارهای فعالیت جریان کنترلی داخل سیستم را نشان میدهند‬
‫‪Archive‬‬
‫‪Incident‬‬
‫‪‬‬
‫‪‬‬
‫‪Document‬‬
‫‪Incident‬‬
‫‪Handle‬‬
‫‪Incident‬‬
‫نمودارهای فعالیت نوع خاصی از نمودارهای وضعی اند که در آن وضعیت ها‪ ،‬فعالیت ها هستند‬
‫دو نوع وضعیت داریم‬
‫‪ ‬وضعیت کنشی ‪Action state:‬‬
‫‪‬‬
‫نمیتوانند بیشتر تجزیه شوند‬
‫فوراً اتفاق می افتند با توجه به سطح انتزاع استفاده شده در مدل‬
‫‪‬‬
‫میتوانند بیشتر تجزیه شوند‬
‫فعالیت توسط فعالیت دیگری مدل میشوند‬
‫‪‬‬
‫‪ ‬وضعیت فعالیت ‪Activity state:‬‬
‫‪‬‬
‫ مدلسازی تصمیمات‬: ‫نمودار فعالیت‬
Open
Incident
[lowPriority]
Allocate
Resources
[fire & highPriority]
[not fire & highPriority]
Notify
Fire Chief
Notify
Police Chief
‫مدلسازی همزمانی‬:‫نمودار فعالیت‬
‫( چندین فعالیت‬Synchronization) ‫همزمانی‬
(thread) ‫(جریان کنترل به چند بند‬split) ‫تجزیه‬
‫تجزیه‬
Open
Incident
Allocate
Resources
Coordinate
Resources
Document
Incident


‫همزمانى‬
Archive
Incident
‫ خط شنا‬:‫نمودارهای فعالیت‬
‫ استفاده کرد‬swimlane ‫برای گروهبندی اعمال میتوان از خط شنا‬

‫ نشان دهنده شی یا زیرسیستم پیاده کننده اعمال‬
Allocate
Resources
Open
Incident
Coordinate
Resources
Dispatcher
Archive
Incident
FieldOfficer
Document
Incident
‫کدامیک باید اول انجام شود؟ کد یا مدل؟‬
‫‪‬‬
‫بستگی دارد ‪.....‬‬
‫‪‬‬
‫مهندسی رو به جلو ‪Forward Engineering‬‬
‫‪‬‬
‫مهندسی معکوس ‪Reverse Engineering‬‬
‫‪‬‬
‫مهندسی چرخشی ‪Roundtrip Engineering‬‬
‫‪ ‬ایجاد کد از روی مدل‬
‫‪ ‬پروژه های از صفر (بدون محدودیت ناشی از کارهای قبل یا اصظالحاً ‪)Greenfield‬‬
‫‪ ‬ایجاد مدل از روی کد‬
‫‪ ‬حرکت دائم بین مهندسی روبه جلو و معکوس‬
‫‪ ‬مفید برای وقتی نیازمندیها‪ ،‬فناوری و زمانبندی دائم تغییر میکند‪.‬‬
58
‫باتشکر‬
‫‪59‬‬