SlideShare a Scribd company logo
1 of 152
Download to read offline
‫فصل‬
1
‫فصل‬
1
‫افزار‬‫نرم‬ ‫تولید‬ ‫چرا‬
‫است؟‬ ‫ای‬‫پیچیده‬ ‫کار‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
‫ک‬ ‫ایجاد‬ ‫ساده‬ ‫چیزی‬ ‫که‬ ‫است‬ ‫پیچیده‬ ‫واقعا‬ ‫این‬
‫نی‬
.
Jack Dorsey
‌‫‌گذار‌و‌مدیرعامل‬
‫ن‬‫بنیا‬
Twitter
3
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫کلیدی‬ ‫سوال‬
‫چرا‬
‫جامعی‬ ‫راهکار‬
‫افزار‬‫نرم‬ ‫تولید‬ ‫مشکالت‬ ‫حل‬ ‫برای‬
‫ندارد؟‬ ‫وجود‬
4
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫َضی‬‫ر‬َ‫ع‬ ‫ویژگی‬ ‫برابر‬ ‫در‬ ‫ذاتی‬ ‫ویژگی‬
‫ویژگی‌عرضی‬
Accidental Property
‌‫خصوصیات‌فرعی‬
‫ویژگی‌ذاتی‬
Essential Property
‫بیانگر‌هویت‌اصلی‌موجودیت‌و‬
‫جزء‌الینفک‌آن‬
5
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫افزار‬‫نرم‬ ‫ذاتی‬ ‫های‬‫ویژگی‬
‫پیچیدگ‬
‫ی‬
‫متابعت‬
‫تغییرپذیری‬
‫ناپیدایی‬
Complexity
Conformity
Changeability
Invisibility
6
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫افزار‬‫نرم‬ ‫ذاتی‬ ‫پیچیدگی‬
▪
‫‌افزار‬
‫م‬‫نر‬
▫
‌‫محصولی‌منطقی‌و‌زاییده‌فکر‌انسان‬
▫
‌‫میان‌عناصر‌اولیه‌آن‌قوانین‌بنیادی‌حاکم‌نیست‬
▫
‌‫‌های‌طبیعی‬
‫م‬‫‌توان‌همانند‌سیست‬
‫ی‬‫نم‬
‌‫برای‌آن‬
‌‫‌های‌ساده‌در‌نظر‬
‫ل‬‫مد‬
‫گرفت‬
▪
‫پیچیدگی‬
‫‌های‬
‫م‬‫سیست‬
‫‌افزاری‬
‫م‬‫نر‬
‫با‬
‫پیچیدگی‬
‫‌های‬
‫م‬‫سیست‬
‫طبیعی‬
‫و‬
‫محصوالت‬
‫فیزیکی‬
‫ساخت‬
‫دست‬
‫بشر‬
‫متفاوت‬
‫است‬
▪
‫‌توان‌آن‌را‌از‌بین‌برد‬
‫ی‬‫‌افزار‌است‌و‌نم‬
‫م‬‫پیچیدگی‌خاصیت‌ذاتی‌نر‬
7
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫تر‬ ‫دقیق‬ ‫تحلیل‬
‫پیچیدگی‬ ‫چرا‬
‫یک‬
‫ناپذیر‬‫جدایی‬ ‫خاصیت‬
‫است؟‬ ‫افزاری‬‫نرم‬ ‫های‬‫سیستم‬ ‫برای‬
8
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫آورنده‬ ‫وجود‬ ‫به‬ ‫عوامل‬
‫پیچیدگی‬
‫افزار‬‫نرم‬ ‫ذاتی‬
‫پیچیدگ‬
‫دامنه‬ ‫ی‬
‫مسئله‬
‫فرایند‬ ‫مدیریت‬ ‫دشواری‬
‫تولید‬
‫پذیری‬‫انعطاف‬
‫افزار‬‫نرم‬
‫توصیف‬ ‫مشکالت‬
‫گسس‬ ‫های‬‫سیستم‬ ‫رفتار‬
‫ته‬
9
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫چیست؟‬ ‫راهکار‬
‌‫پیچیدگی‬
‫‌افزار‌است‬
‫م‬‫خاصیت‌ذاتی‌نر‬
‫‌توان‌آن‌را‌از‌بین‌برد‬
‫ی‬‫و‌نم‬
‫بلکه‬
‫‌توان‌این‌پیچیدگی‌را‌کنترل‌نمود‬
‫ی‬‫تنها‌م‬
10
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫با‬ ‫مواجهه‬ ‫اولیه‬ ‫اصول‬
‫پیچیدگی‬
‫افزا‬‫نرم‬ ‫ذاتی‬
‫ر‬
‫تجزیه‬
‫تجرید‬
‫مراتب‬ ‫سلسله‬
‫متدولوژی‬
‫فرکتال‬
Abstraction Decomposition
Fractal Hierarchy
Methodology
11
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫بندی‬ ‫جمع‬
‫‌دارویی‬
‫ش‬‫آیا‌نو‬
‫‌افزار‬
‫م‬‫برای‌حل‌یکباره‌تمام‌مشکالت‌توسعه‌نر‬
‫وجود‌دارد؟‬
12
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌یک‬
‌:
‫‌ای‌است؟‬
‫ه‬‫‌افزار‌کار‌پیچید‬
‫م‬‫چرا‌تولید‌نر‬
‫ندارد‬ ‫وجود‬ ‫افزار‬‫نرم‬ ‫توسعه‬ ‫های‬‫چالش‬ ‫حل‬ ‫برای‬ ‫دارویی‬‫نوش‬
!
▪
‫‌افزار‌به‌خصوص‌پیچیدگی‌ذاتی‌آن‌وجود‌چنین‌راهک‬
‫م‬‫‌های‌ذاتی‌نر‬
‫ی‬‫ویژگ‬
‌‫اری‬
‫را‌غیرممکن‌کرده‌است‬
▫
‫این‬
‫بدین‬
‫معنا‬
‫نیست‬
‫که‬
‫هیچ‬
‫امیدی‬
‫برای‬
‫رفع‬
‫مشکالت‬
‫توسعه‬
‫ن‬
‫‌افزار‬
‫م‬‫ر‬
‫وجود‬
‫ندارد‬
▪
‫مدلسازی‬
‫به‬
‫عنوان‬
‫یکی‬
‫از‬
‫راهکارهای‬
‫کلیدی‬
‫در‬
‫مهندسی‬
‫‌افزار‬
‫م‬‫نر‬
‫برای‬
‫م‬
‫قابله‬
‫با‬
‫پیچیدگی‬
13
‫فصل‬
2
‫رسمی‬‫نیمه‬ ‫های‬‫روش‬
‫افزار‬‫نرم‬ ‫مدلسازی‬
‫پیچی‬ ‫با‬ ‫مقابله‬ ‫برای‬
‫دگی‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
15
«
‫تولید‬ ‫سوی‬ ‫به‬ ‫را‬ ‫ما‬ ‫که‬ ‫دارد‬ ‫قرار‬ ‫هایی‬‫فعالیت‬ ‫همه‬ ‫مرکز‬ ‫در‬ ‫مدلسازی‬
‫کند‬ ‫می‬ ‫هدایت‬ ‫خوب‬ ‫افزار‬‫نرم‬
.
‫و‬ ‫ساختار‬ ‫با‬ ‫تا‬ ‫سازیم‬‫می‬ ‫مدل‬ ‫واقع‬ ‫در‬
‫به‬ ‫قادر‬ ،‫کنیم‬ ‫برقرار‬ ‫ارتباط‬ ‫نظرمان‬ ‫مورد‬ ‫سیستم‬ ‫دلخواه‬ ‫رفتار‬
‫سیست‬ ‫از‬ ‫بهتری‬ ‫درک‬ ،‫باشیم‬ ‫سیستم‬ ‫معماری‬ ‫کنترل‬ ‫و‬ ‫مصورسازی‬
‫که‬ ‫می‬
‫برای‬ ‫هایی‬‫فرصت‬ ‫بتوانیم‬ ‫که‬ ‫ای‬‫گونه‬‫به‬ ‫بیاوریم‬ ‫دست‬‫به‬ ‫سازیم‬‫می‬
‫دهیم‬ ‫انجام‬ ‫خطر‬ ‫مدیریت‬ ‫و‬ ‫نماییم‬ ‫فراهم‬ ‫مجدد‬ ‫استفاده‬ ‫و‬ ‫سازی‬‫ساده‬
.
»
Grady Booch
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫افزار‬‫نرم‬ ‫مهندسی‬ ‫در‬ ‫مدلسازی‬
▪
‫غیر‌رسمی‬
▫
‌‫‌سیاه‌یا‌کاغذ‬
‫ه‬‫‌ها‌روی‌تخت‬
‫ه‬‫بیان‌تصویری‌اید‬
▫
‌‫‌های‬
‫ت‬‫استفاده‌از‌کار‬
CRC
▪
‌‫نیاز‌به‌یک‌زبان‌مشترک‌مدلسازی‬
▫
UML (Unified Modeling Language)
16
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫؟‬ ‫کنیم‬‫می‬ ‫مدلسازی‬ ‫چرا‬
▪
‫‌کنیم‌تا‌به‌درک‌بهتری‌از‌سیستمی‌که‌توسعه‌می‬
‫ی‬‫مدلسازی‌م‬
‌‫‌دهیم‬
‫دست‌یابیم‬
‌.
‫‌شود‬
‫ی‬‫با‌مدلسازی‌چهار‌هدف‌حاصل‌م‬
:
▪
‫‌کنند‬
‫ی‬‫‌ها‌در‌مصورسازی‌سیستم‌موجود‌یا‌مطلوب‌به‌ما‌کمک‌م‬
‫ل‬‫مد‬
▪
‫‌آورند‬
‫ی‬‫‌ها‌امکان‌تشریح‌ساختار‌و‌رفتار‌سیستم‌را‌فراهم‌م‬
‫ل‬‫مد‬
▪
‫‌دهند‌که‌در‌ساخت‌سیستم‌ما‌را‬
‫ی‬‫‌ها‌قالبی‌را‌در‌اختیار‌ما‌قرار‌م‬
‫ل‬‫مد‬
‫‌کند‬
‫ی‬‫راهنمایی‌م‬
▪
‫‌کنند‬
‫ی‬‫‌ها‌تصمیمات‌اتخاذ‌شده‌را‌مستند‌م‬
‫ل‬‫مد‬
17
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫افزار‬‫نرم‬ ‫مهندسی‬ ‫در‬ ‫مدلسازی‬ ‫اهمیت‬
18
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫خصوص‬ ‫در‬ ‫نکاتی‬
‫مدلسازی‬
‫افزار‬‫نرم‬
▪
‫انتخاب‬
‫‌های‬
‫ل‬‫مد‬
‫مناسب‬
‫بر‬
‫نحوه‬
‫برخورد‬
‫با‬
‫مسئله‬
‫و‬
‫‌گیری‬
‫ل‬‫شک‬
‫‌حل‬
‫ه‬‫را‬
‫ت‬
‫أثیر‬
‫‌سزایی‬
‫ه‬‫ب‬
‫دارد‬
.
▪
‫هر‬
‫مدل‬
‫ممکن‬
‫است‬
‫با‬
‫دقت‬
‫متفاوت‬
‫و‬
‫در‬
‫سطوح‬
‫مختلفی‬
‫از‬
‫جزئیات‬
‫بیان‬
‫شود‬
.
▪
‫بهترین‬
‫‌ها‬
‫ل‬‫مد‬
‫‌هایی‬
‫ن‬‫آ‬
‫هستند‬
‫که‬
‫به‬
‫واقعیت‬
‫مرتبط‬
‫هستند‬
.
▪
‫هیچ‬
‫مدلی‬
‫به‬
‫تنهایی‬
‫کافی‬
‫نیست‬
.
‫برای‬
‫مدلسازی‬
‫یک‬
‫سیستم‬
‫به‬
‫م‬
‫‌ای‬
‫ه‬‫جموع‬
‫از‬
‫‌ها‬
‫ل‬‫مد‬
‫نیاز‬
‫داریم‬
.
19
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫افزار‬‫نرم‬ ‫مهندسی‬ ‫در‬ ‫مدلسازی‬ ‫مختلف‬ ‫سطوح‬
▪
‫‌های‌مختلف‌در‌سطوح‌متفاوت‌تجرید‬
‫ل‬‫امکان‌نمایش‌یک‌سیستم‌با‌مد‬
▪
‫‌افزار‬
‫م‬‫افرایش‌سطح‌تجرید‌در‌مهندسی‌نر‬
▫
‫افزایش‌قدرت‌بیان‬
▫
‌
‫ه‬‫تسهیل‌مسیر‌یافتن‌راهکار‌برای‌مسئل‬
▪
‫‌مسیر‌دستیابی‌از‌ص‬،‫‌افزار‌از‌سطوح‌تجرید‌باال‌به‌پایین‬
‫م‬‫مدلسازی‌نر‬
‌‫ورت‬
‫‌دهد‬
‫ی‬‫مسئله‌به‌سمت‌کد‌را‌نشان‌م‬
20
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫رانه‬‫مدل‬ ‫توسعه‬
Model Driven Development
▪
‫افزایش‌به‌مرور‌سطح‌تجرید‬
▪
‌‫‌شوند‬
‫ی‬‫‌های‌یک‌سیستم‌از‌یکدیگر‌مشتق‌م‬
‫ل‬‫مد‬
▪
‌‫‌ها‌از‌هم‌مجزا‌نیستند‬
‫ل‬‫مد‬
▪
‌‫‌افزار‌منطبقند‬
‫م‬‫‌ها‌با‌کد‌نر‬
‫ل‬‫همواره‌مد‬
▫
‌‫هر‌زمان‌که‌بخواهیم‌کد‌را‌تغییر‌دهیم‌ابتدا‌باید‌تغییرات‌را‌در‬
‫‌های‌مرتبط‌ایجاد‌کنیم‬
‫ل‬‫مد‬
21
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫مدلسازی‬ ‫طیف‬
22
‫مدل‬
‫مدل‬
‫مدل‬
‫مدل‬
‫کد‬
‫کد‬
‫کد‬
‫کد‬
‫مدل‬ ‫ف‬
‫محور‬‫مدل‬
‫دوطرفه‬ ‫مهندسی‬
‫کد‬ ‫مصورسازی‬
‫کد‬ ‫ف‬
‫چیست؟‬ ‫مدل‬
‫مدل‬ ‫همان‬ ‫کد‬
‫است‬
.
‫و‬ ‫کد‬ ‫همزیستی‬
‫مدل‬
.
‫کد‬ ‫همان‬ ‫مدل‬
‫است‬
.
‫نشده‬ ‫تولید‬ ‫کد‬
‫است‬
.
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫افزار‬‫نرم‬ ‫مدلسازی‬ ‫زبان‬
UML
▪
‫زبانی‬
‫گرافیکی‬
‫برای‬
،‫مصورسازی‬
،‫تصریح‬
‫ساخت‬
‫و‬
‫مستندسازی‬
‫فرآ‬
‫‌های‬
‫ه‬‫ورد‬
‫‌های‬
‫م‬‫سیست‬
‫‌افزاری‬
‫م‬‫نر‬
▪
‫ارائه‬
‫در‬
‫دهه‬
90
‫میالدی‬
‫توسط‬
Grady Booch
،
Ivar Jacobson
‫و‬
James Rumaugh
▪
‫موجب‬
‫تسهیل‬
،‫ارتباطات‬
،‫مذاکرات‬
‫مستندسازی‬
‫و‬
‫ارائه‬
‫سناریوهای‬
‫مختلف‬
‫از‬
‫‌های‬
‫م‬‫سیست‬
‫بزرگ‬
‫و‬
‫پیچیده‬
‫شده‬
‫است‬
23
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫سازنده‬ ‫های‬‫بلوک‬
UML
24
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫پیچیدگی‬ ‫مدیریت‬ ‫در‬ ‫مدلسازی‬ ‫ش‬ ‫ن‬
▪
‫‌دهندگ‬
‫ه‬‫‌طور‌توسع‬
‫ن‬‫‌دهندگان‌و‌همی‬
‫ه‬‫بهبود‌تعامل‌میان‌مشتریان‌و‌توسع‬
‌‫ان‌با‬
‫همدیگر‬
▫
‌‫‌افزاری‌نیازهای‌ذینفعان‌مختلف‌در‌چرخه‌حیات‌را‬
‫م‬‫‌های‌نر‬
‫ل‬‫تنوع‌مد‬
‫‌سازد‬
‫ی‬‫برآورده‌م‬
▫
‫‌وکار‬
‫ب‬‫‌های‌ساده‌و‌در‌سطح‌تجرید‌باال‌برای‌مدیران‌کس‬
‫ل‬‫مد‬
▫
‌‫‌های‌تفصیلی‌طراحی‌برای‌طراحان‌سیستم‬
‫ل‬‫مد‬
▫
‫‌نویسان‬
‫ه‬‫‌افزاری‌را‌در‌قالب‌کد‌توسط‌برنام‬
‫م‬‫‌های‌نر‬
‫ل‬‫‌ح‬
‫ه‬‫بیان‌را‬
▪
‌‫‌تر‬
‫ک‬‫امکان‌تقسیم‌مسئله‌پیچیده‌و‌بزرگ‌به‌واحدهای‌کوچ‬
25
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫پیچیدگ‬ ‫مدیریت‬ ‫در‬ ‫کاربری‬ ‫مورد‬ ‫نمودار‬ ‫ش‬ ‫ن‬
‫ی‬
▪
‫موارد‬
‫کاربری‬
‫نقطه‬
‫شروعی‬
‫برای‬
‫شناسایی‬
‫و‬
‫درک‬
‫درست‬
‫‌های‬
‫ه‬‫خواست‬
‫ذینفعان‬
▪
‫ایجاد‬
‫ارائه‬
‫‌ای‬
‫ه‬‫اولی‬
‫از‬
‫سیستم‬
‫از‬
‫دید‬
‫کاربران‬
‫با‬
‫نمودار‬
‫مورد‬
‫کاربری‬
▫
‫درک‬
‫توصیف‬
‫سیستم‬
‫از‬
‫دیدگاه‬
‫کاربر‬
▫
‫این‬
،‫درک‬
‫در‬
‫صورت‬
‫عدم‬
‫استفاده‬
‫از‬
‫نمودار‬
‫با‬
‫بررسی‬
‫حجم‬
‫باالیی‬
‫از‬
‫‌های‬
‫ی‬‫نیازمند‬
‫کاربران‬
‫که‬
‫به‬
‫صورت‬
‫متن‬
‫یا‬
‫صوت‬
‫‌شده‬
‫ط‬‫ضب‬
‫باشد‬
‫ممکن‬
‫می‬
‫‌شود‬
▪
‫مورد‬
‫کاربری‬
‫به‬
‫عنوان‬
‫پیشرانی‬
‫برای‬
‫استخراج‬
‫دیگر‬
‫‌ها‬
‫ل‬‫مد‬
26
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫کاربرد‬
‫ها‬‫مدل‬
‫افز‬‫نرم‬ ‫توسعه‬ ‫مختلف‬ ‫فازهای‬ ‫در‬
‫ار‬
27
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌دو‬
‌:
‫‌افزار‌برای‌مقابله‌با‌پیچیدگ‬
‫م‬‫‌رسمی‌مدلسازی‌نر‬
‫ه‬‫‌های‌نیم‬
‫ش‬‫رو‬
‫ی‬
‫پیچیدگ‬ ‫مدیریت‬ ‫و‬ ‫رانه‬‫مدل‬ ‫روش‬ ‫کمک‬ ‫با‬ ‫تجرید‬
‫ی‬
▪
‫تجرید‬
‫به‬
‫عنوان‬
‫ابزاری‬
‫قدرتمند‬
‫برای‬
‫مدیریت‬
‫پیچیدگی‬
‫در‬
‫سیستم‬
‫‌های‬
‫‌افزاری‬
‫م‬‫نر‬
▪
‫استفاده‬
‫از‬
‫تجرید‬
‫با‬
‫کمک‬
‌
‫ش‬‫رو‬
‫‌رانه‬
‫ل‬‫مد‬
‫کار‬
‫‌ای‬
‫ه‬‫ساد‬
‫نیست‬
‫و‬
‫به‬
‫تمرین‬
‫نیاز‬
‫دارد‬
.
▪
‫استفاده‬
‫از‬
‫تجرید‬
‫با‬
‫کمک‬
‌
‫ش‬‫رو‬
،‫‌رانه‬
‫ل‬‫مد‬
‫قابلیت‬
‫توسعه‬
‫و‬
‫توصیف‬
‫س‬
‫‌های‬
‫م‬‫یست‬
‫پیچیده‬
‫از‬
‫‌ای‬
‫ه‬‫نقط‬
‫انتزاعی‬
(
‫دیدگاه‬
‫‌سیاه‬
‫ه‬‫جعب‬
)
‫تا‬
‫‌های‬
‫ه‬‫مؤلف‬
‫اصلی‬
‫سی‬
‫ستم‬
(
‫دیدگاه‬
‫جعبه‬
‫سفید‬
)
‫را‬
‫ممکن‬
‫‌سازد‬
‫ی‬‫م‬
.
28
‫فصل‬
3
‫پتری‬ ‫های‬‫شبکه‬
‫افزا‬‫نرم‬ ‫مدلسازی‬ ‫برای‬ ‫رسمی‬ ‫روشی‬
‫ر‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
30
«
‫بیشتر‌از‌آنچه‌که‌من‌تا‌به‌حال‌از‌آن‌سخن‌گفتم‌قبال‌به‌خوبی‌در‌د‬
‌‫هه‬
60
‫میالدی‌توسط‬
Carl Adam Petri
‫درک‌شده‌بود‬
‌.
‌‫کسی‌که‌پیشتاز‌مدل‬
‫سازی‌علمی‌در‌حوزه‌سیستم‌های‌گسسته‌و‌موازی‌است‬
‌.
‌‫کار‌او‌دارای‬
‫موقعیتی‌مستحکم‌در‌مبانی‌تئوری‌همروندی‌است‬
.
»
Robin Milner
‫سال‬ ‫در‬ ‫تورینگ‬ ‫جایزه‬ ‫برنده‬ ،
1991
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
▪
Carl Adam Petri
▪
(1926 – 2010)
▫
‌‫سال‬
1939
(
13
‫سالگی‬
‌
‌:)
▫
‫ابداع‌شبکه‌پتری‌برای‌مصورسازی‌دانش‌خود‌درباره‌فرایندهای‌شیمیایی‬
▫
‌‫سال‬
1962
‌:
▫
‫رساله‬
‌‫دکتری‬
‌‫برای‌نمایش‌ارتباط‌علت‌و‌معلول‬
(
Cause and Effect
‌)
‫در‌آلما‬
‌‫ن‬
30
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
‫از‬ ‫استفاده‬ ‫با‬ ‫افزار‬‫نرم‬ ‫رفتار‬ ‫مدلسازی‬ ‫مشکالت‬
UML
▪
‌‫نمودارهای‌تعامل‌و‌حالت‌برای‌مدلسازی‌رفتار‌در‬
UML
▫
‌‫‌های‌پیچیده‬
‫م‬‫‌‌کافی‌برای‌نمایش‌رفتار‌سیست‬
‫ی‬‫عدم‌توانای‬
▫
‫تعداد‬
‫زیاد‬
‫حاالت‬
‫و‬
‫رویدادها‬
‫در‬
‫‌های‬
‫م‬‫سیست‬
‫‌افزاری‬
‫م‬‫نر‬
‫بزرگ‬
‫موجب‬
‫افزایش‬
‫پیچیدگی‬
‫‌شود‬
‫ی‬‫م‬
▫
‌‫ابهام‌در‌نمودار‬
▫
‌‫موجب‬
‫‌گردد‬
‫ی‬‫افزایش‌پیچیدگی‌و‌تضعیف‌ارزیابی‌م‬
▫
‫دشوار‌شدن‌ارزیابی‌مدل‬
▫
‫هر‌چه‌مدل‌از‌عناصر‌بیشتری‌تشکیل‌شده‌باشد‌ارزیابی‌آن‌نیز‌دشوارتر‌م‬
‫‌شود‬
‫ی‬
▫
‌‫با‌توجه‌به‬
‌‫عدم‌وجود‬
‌‫پشتوانه‌ریاضی‬
‫توانایی‌ارزیابی‌کامل‌نمودار‌وجود‌ند‬
‫ارد‬
▫
‌‫‌های‌همروند‌یا‌بالدرنگ‬
‫م‬‫عدم‌امکان‌مدلسازی‌رفتار‌سیست‬
32
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
‫پتر‬ ‫های‬‫شبکه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫افزار‬‫نرم‬ ‫مدلسازی‬ ‫ضرورت‬
‫ی‬
▪
‌‫‌افزار‬
‫م‬‫نیاز‌به‌زبان‌مناسبی‌برای‌مدلسازی‌رفتار‌نر‬
▪
‫استفاده‬
‫از‬
‫‌های‬
‫ه‬‫شبک‬
‫پتری‬
‫برای‬
‫توصیف‬
‫رسمی‬
‫تعامالت‬
‫منطقی‬
‫و‬
‫جن‬
‫‌های‬
‫ه‬‫ب‬
‫پویای‬
‫‌های‬
‫م‬‫سیست‬
‫پیچیده‬
▪
‫‌های‌پتری‬
‫ه‬‫جنبه‌ریاضیاتی‌شبک‬
▫
‌‫مدلسازی‌و‌تحلیل‌دقیق‌رفتار‌سیستم‬
▪
‫‌های‌پتری‬
‫ه‬‫جنبه‌گرافیکی‌شبک‬
▫
‫‌شده‬
‫ل‬‫ِ‌مد‬‫م‬‫ِ‌سیست‬‫ت‬‫امکان‌مصورسازی‌تغییرات‌حال‬
33
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
‫مختلف‬ ‫های‬‫حوزه‬ ‫در‬ ‫پتری‬ ‫های‬‫شبکه‬ ‫از‬ ‫استفاده‬
34
‫کامپیوتر‬ ‫علوم‬ ‫شیمی‬
‫شناسی‬‫زیست‬
‫طراحی‬
‫افزار‬‫سخت‬
‫محاسبات‬
‫شده‬‫توزیع‬
‫های‬‫سیستم‬
‫ای‬‫چندرسانه‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
‫افزار‬‫نرم‬ ‫مهندسی‬ ‫در‬ ‫پتری‬ ‫های‬‫شبکه‬ ‫کاربرد‬
▪
‌‫‌افزار‌بر‌دامنه‌مسئله‬
‫م‬‫تمرکز‌حوزه‌مهندسی‌نر‬
(
‫‌افزاری‌پ‬
‫م‬‫‌های‌نر‬
‫م‬‫توسعه‌سیست‬
‫یچیده‬
‌
‌)
▫
‫‌افزار‬
‫م‬‫یافتن‌راهکاری‌برای‌مدیریت‌پیچیدگی‌نر‬
▪
‌‫‌های‌یک‌مدل‌خاص‬
‫ی‬‫‌های‌پتری‌بر‌کاربردها‌و‌ویژگ‬
‫ه‬‫تمرکز‌شبک‬
(
‫شبکه‌پتری‬
‌)
▪
‫‌های‌پتری‬
‫ه‬‫‌افزار‌با‌کمک‌شبک‬
‫م‬‫حل‌برخی‌از‌مشکالت‌مهندسی‌نر‬
35
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
‫ها‬‫آن‬ ‫از‬ ‫پتری‬ ‫های‬‫شبکه‬ ‫حمایت‬ ‫و‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫های‬‫حوزه‬
36
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌سه‬
‌:
‌‫‌افزار‬
‫م‬‫‌رسمی‌برای‌مدلسازی‌نر‬
‌‫‌روشی‬،‫‌های‌پتری‬
‫ه‬‫شبک‬
‫های‬‫مدل‬ ‫تبدیل‬ ‫کاربرد‬
UML
‫پتری‬ ‫های‬‫شبکه‬ ‫به‬
▪
‌‫قابل‌اجرا‌شدن‬
‌‫نمودارهای‬
UML
▪
‌‫امکان‬
‌‫ارزیابی‬
‌‫‌افزار‌و‌نمودارهای‬
‫م‬‫‌های‌مهندسی‌نر‬
‫ه‬‫اغلب‌فرآورد‬
UML
▫
‌‫تحلیل‌صحت‬
▫
‌‫بررسی‬
‌‫‌های‌کیفی‬
‫ی‬‫ویژگ‬
‫مختلف‌مانند‌کارایی‌و‌قابلیت‌اطمین‬
‌‫ان‬
‌‫از‌جمله‬
‫‌ترین‌خصوصیاتی‌هستند‌که‌با‌تبدیل‌نمودارها‌به‌شبکه‌پ‬
‫م‬‫مه‬
‌‫تری‬
‌‫‌صورت‬
‫ه‬‫ب‬
‌‫کمی‬
‫مورد‌ارزیابی‌قرار‌گیرند‬
37
‫فصل‬
4
‫شیءگرا‬ ‫افزار‬‫نرم‬ ‫مهندسی‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
39
«
‫ای‬
‫کسی‬
‫که‬
‫‌های‬
‫ی‬‫شگفت‬
‫بزرگی‬
‫او‬
‫پایانی‬
‫ندارد‬
!
‫بر‬
‫ّد‬‫م‬‫مح‬
‫و‬
‫خان‬
‫دانش‬
‫درود‬
‫فرست‬
‫و‬
‫ما‬
‫را‬
‫از‬
‫‌روی‬
‫ج‬‫ک‬
‫در‬
‫عظمت‬
‫خودت‬
‫بازدار‬
.
‫ای‬
‫کسی‬
‫که‬
‫گره‬
‫‌ها‬
‫ج‬‫رن‬
‫و‬
‫غم‬
‫ها‬
‫به‬
‫واسطه‬
‫او‬
‫گشوده‬
‫می‬
‫شود‬
‫و‬
‫ای‬
‫کس‬
‫ی‬
‫که‬
‫ّت‬‫د‬‫ش‬
‫دشواری‬
‫ها‬
‫با‬
‫او‬
‫آرام‬
‫‌گردد‬
‫ی‬‫م‬
!
‫‌ها‬
‫ی‬‫سخت‬
‫به‬
‫قدرت‬
‫تو‬
‫آسان‬
‫ش‬
‫د‬
‫و‬
‫به‬
‫لطف‬
‫تو‬
‫‌ها‬
‫ه‬‫وسیل‬
‫فراهم‬
‫گردید‬
‫و‬
‫تقدیر‬
‫به‬
‫مشیت‬
‫تو‬
‫جریان‬
‫گرفت‬
‫و‬
‫اشیاء‬
‫بر‬
‫وفق‬
‫اراده‬
‫تو‬
‫تحقق‬
‫یافت‬
.
‫پس‬
‫آن‬
‫اشیا‬
‫ء‬
‫تنها‬
‫به‬
‫خواست‬
‫تو‬
‫‌آنکه‬
‫ی‬‫ب‬
‫فرمان‬
،‫دهی‬
‫فرمانبردار‬
‫ند‬
‫و‬
‫به‬
‫اراده‬
‫تو‬
‫‌آنکه‬
‫ی‬‫ب‬
‫نهی‬
‫و‬
‫تحذیر‬
‫نمایی‬
‫بازداشته‬
‫‌اند‬
‫ه‬‫شد‬
.
»
‫فرازهایی‌از‌صحیفه‌سجادیه‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫گرا‬‫شئ‬ ‫بینی‬‫جهان‬
▪
‌‫‌بینی‌شیءگرا‌با‌برخی‌از‌خصوصیات‌لحاظ‌شده‌در‌حرکت‌جوهری‬
‫ن‬‫جها‬
‫مطابقت‌دارد‬
▪
‫واقعیت‬
‫هایی‌که‌انسان‌از‌راه‌حواس‌خود‌درک‌می‬
‌‫‌ها‌را‬
‫ن‬‫کند‌و‌مجموع‌آ‬
‌‫اشیاء‬
‫جهان‌می‬
‌‫نامد‬
‌‫دارای‬
‫خصوصیات‬
‌‫ی‌هستند‬
‫و‌این‌خصوصیات‌با‌طرز‌ن‬
‌‫گاه‬
‫مدلسازانی‬
‫که‌با‌تفکر‌شیء‬
‫گرا‌در‌دنیای‌فناوری‌اطالعات‌آشنایی‌دارن‬
‌‫د‌کامال‬
‌‫انطباق‌دارد‬
▪
‫در‌این‌تفکر‌نیز‌همه‌مفاهیمی‌که‌برای‌انسان‌قابل‌درک‌باشند‌و‌بت‬
‌‫وانند‬
‫‌رفتاری‌از‌خود‌نشان‌بدهن‬،‫هویتی‌متمایز‌شونده‌از‌سایر‌مفاهیم‌داشته‬
‌‫د‌و‬
‫‌شیء‌نامیده‬،‫‌های‌گوناگون‌باشند‬
‫ن‬‫عالوه‌بر‌آن‌دارای‌حاالت‌معینی‌در‌زما‬
‫می‬
‫شوند‬
‌
‌.
40
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫شیءگرایی‬ ‫پایه‬ ‫مفاهیم‬
41
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫مجرد‬ ‫داده‬ ‫نوع‬
(
ADT
)
42
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫پیچیدگی‬ ‫با‬ ‫ابله‬ ‫م‬ ‫برای‬ ‫شیءگرایی‬ ‫اصول‬
43
‫شیءگرایی‬
‫تجرید‬
‫محصورسازی‬
‫بندی‬‫پیمانه‬
‫سلسله‬
‫مراتب‬
Hierarchy Modularity Encapsulation Abstraction
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫فرکتال‬
▪
‫شکل‬
‫هندسی‬
‫ناهموار‬
‫یا‬
‫قطعه‬
‫‌ای‬
‫ه‬‫قطع‬
‫که‬
‫‌توان‬
‫ی‬‫م‬
‫آن‬
‫را‬
‫به‬
‫‌هایی‬
‫ش‬‫بخ‬
‫تق‬
‫سیم‬
‫کرد‬
‫که‬
‫هر‬
‫کدام‬
‫از‬
‫‌ها‬
‫ن‬‫آ‬
‫دربردارنده‬
‫حداقل‬
‫یک‬
‫نسخه‬
‫کوچک‬
‫شده‬
‫از‬
‫کل‬
‫باشد‬
44
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫فرکتال‬ ‫های‬‫ویژگی‬
▪
‌‫خودمشابهتی‬
(
Self-similarity
)
▫
‫مثال‬
‌:
‌‫ویژگی‌فرکتال‌در‬
‫‌های‌بازار‌سهام‬
‫ف‬‫گرا‬
▪
‫بازگشتی‬
▫
‌‫‌ها‌با‌استفاده‌از‌تابع‬
‫ل‬‫فرکتا‬
‫بازگشتی‌قابل‌تعریفند‬
▫
‫مثال‬
‌:
‌‫مجموعه‬
Cantor
45
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫شیءگرایی‬ ‫تفکر‬ ‫در‬ ‫فرکتال‬
▪
‫شیء‌بازگشتی‬
▫
‫‌شیء‌دیگری‌از‌همان‌کالس‌باشد‬،‫مقدار‌ویژگی‌شیء‌از‌یک‌کالس‬
▫
‫مثال‬
‌:
‌‫عنصر‌بعدی‌در‌لیست‌پیوندی‬
▪
‫ساختار‌بازگشتی‬
▫
‫مثال‬
‌:
List(1, List(2,3))
▪
‫توابع‌بازگشتی‬
▫
‫محاسبه‌فاکتوریل‬
46
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫فاکتوریل‬ ‫محاسبه‬ ‫بازگشتی‬ ‫تابع‬
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
47
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫توابع‬ ‫کمک‬ ‫با‬ ‫نیز‬ ‫فرکتال‬ ‫هندسی‬ ‫اشکال‬ ‫ایجاد‬
‫بازگشتی‬
48
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫پیچیدگی‬ ‫با‬ ‫مواجهه‬ ‫در‬ ‫فرکتال‬ ‫ش‬ ‫ن‬
▪
‫ایجاد‬
‫تصاویر‬
‫نزدیک‬
‫به‬
‫واقعیت‬
‫ب‬
‫ا‬
‫استفاده‬
‫از‬
‫توابع‬
‫بازگشتی‬
‫و‬
‫ابزا‬
‫رهای‬
‫کامپیوتری‬
‫مبتنی‬
‫بر‬
‫فرکتال‬
▪
‫با‬
‫استفاده‬
‫از‬
‫فرکتال‬
‫این‬
‫منظره‬
‫ب‬
‫ا‬
‫تعداد‬
‫خط‬
‫کد‬
‫محدودی‬
‫نوشته‬
‫شده‬
▪
‫ایجاد‬
‫این‬
‫تصویر‬
‫بدون‬
‫استفاده‬
‫از‬
‫خاصیت‬
‫فرکتال‬
‫نیاز‬
‫به‬
‫ده‬
‫ها‬
‫برابر‬
‫کد‬
‫بیشتری‬
‫داشتیم‬
49
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫ها‬‫کالس‬ ‫یافتن‬ ‫و‬ ‫شناسایی‬ ‫روش‬
▪
‫‌گرا‬
‫ء‬‫‌افزار‌شی‬
‫م‬‫‌ترین‌گام‌در‌توسعه‌نر‬
‫ی‬‫کلید‬
‌:
‫‌ها‌و‌یاف‬
‫س‬‫شناسایی‌کال‬
‌‫تن‬
‫‌ها‬
‫ن‬‫جزئیات‌آ‬
▫
‫‌ه‬
‫س‬‫شناسایی‌کال‬
‌‫ا‌از‬
‫موارد‌کاربری‬
▫
‌‫‌هایی‬
‫ش‬‫رو‬
‌‫‌ها‬
‫ن‬‫‌ها‌و‌جزئیات‌آ‬
‫س‬‫برای‌شناسایی‌کال‬
▪
‫‌ها‬
‫س‬‫دو‌منبع‌اصلی‌برای‌شناسایی‌کال‬
:
▫
‫فضای‌مسئله‬
▫
‫‌حل‬
‫ه‬‫فضای‌را‬
50
‫تحلیل‬ ‫مدل‬
‫مسئله‬ ‫فضای‬ ‫توصیف‬
‫طراحی‬ ‫مدل‬
‫تفصیلی‬
‫ح‬‫راه‬ ‫فضای‬ ‫توصیف‬
‫ل‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫بندی‬‫ه‬ ‫طب‬
▪
‫طبقه‬
‌‫بندی‌ابزاری‬
‫‌سازی‌دانش‬
‫ب‬‫برای‌مرت‬
▪
‫‌بندی‌در‌شیءگرایی‬
‫ه‬‫استفاده‌از‌طبق‬
▫
‌‫انتخاب‬
‫‌هایی‌که‌با‌معیارها‌و‬
‫س‬‫کال‬
‫‌های‌موجود‌سازگار‌باشند‬
‫ت‬‫محدودی‬
51
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫بندی‬‫ه‬ ‫طب‬
‫ها‬‫کالس‬
52
‫سیستم‬ ‫یک‬ ‫مدلسازی‬ ‫برای‬ ‫مطرح‬ ‫های‬‫کالس‬
‫ب‬
‫ه‬
‫وسیله‬
‫بندی‬‫ه‬ ‫طب‬
1
)
‫کلیدی‬ ‫یا‬ ‫مناسب‬ ‫های‬‫کالس‬
2
)
‫اهمیت‬ ‫کم‬ ‫یا‬ ‫مناسب‬ ‫غیر‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫ویژگی‬
‫ها‬
‫ی‬
‫بندی‬‫ه‬ ‫طب‬
▪
‫‌بندی‌با‌توجه‌به‌معیاری‬
‫ه‬‫هر‌طبق‬
(
‫معیارهایی‬
‌)
‫انجام‌می‬
‫گیرد‬
▫
‫معیارهای‌متفاوت‬
‌‫منجر‌به‬
‫‌بندی‬
‫ه‬‫طبق‬
‫های‌مختلف‬
‫خواهد‌شد‬
▪
‫فر‬
‫ا‬
‫‌بندی‌یک‌فر‬
‫ه‬‫یند‌طبق‬
‫ا‬
‫یند‌افزایشی‌و‌تکراری‬
‫است‬
▪
‫‌بندی‌ایده‬
‫ه‬‫طبق‬
‫آل‬
(
‫‌بندی‌بدون‌توجه‌به‌شرایط‬
‫ه‬‫یعنی‌بهترین‌طبق‬
‫موجود‬
‌
‌)
‫وجود‌ندارد‬
!
▫
‌‫دستیابی‌به‬
‫‌حل‌طالیی‬
‫ه‬‫‌حل‌مناسب‌است‌و‌نه‌را‬
‫ه‬‫به‌را‬
▫
‌‫قاعده‬
80:20
53
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫بهبود‬ ‫و‬ ‫شناسایی‬ ‫در‬ ‫بندی‬‫ه‬ ‫طب‬ ‫از‬ ‫استفاده‬
‫ها‬‫کالس‬
54
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫رهیافت‬
‫ها‬
‫کلی‬ ‫ی‬
‫ها‬‫کالس‬ ‫یافتن‬
▪
‫رهیافت‬
‫مبتنی‌بر‌داده‬
(
Data-driven approach
)
▪
‫رهیافت‬
‌‫مبتنی‌بر‬
‌‫مسئولیت‬
(
Responsibility-driven approach
)
55
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫های‬‫ویژگی‬
‫های‬‫کارت‬
CRC
▪
‫سادگی‌روش‬
▫
‫‌ها‬
‫ت‬‫بر‌اساس‌یک‌بازی‌ساده‌با‌کار‬
▪
‫طبیعی‌بودن‌روند‌کار‌و‌نمایش‌سناریوهای‌واقعی‬
▪
‫فرایندگرا‬
‫و‬
‫بر‬
‫اساس‌کار‌گروهی‬
56
What if …
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌چهار‬
‌:
‌‫‌افزار‌شیءگرا‬
‫م‬‫مهندسی‌نر‬
‫شیءگ‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫روش‬ ‫یک‬ ‫از‬ ‫انتظار‬ ‫مورد‬ ‫های‬‫ویژگی‬
‫را‬
▪
‫توسعه‌تکراری‌و‌تدریجی‬
▪
‫‌ها‬
‫ی‬‫مدیریت‌نیازمند‬
▪
‫‌ها‬
‫ه‬‫استفاده‌از‌معماری‌مبتنی‌بر‌مؤلف‬
▪
‫‌افزار‬
‫م‬‫مدلسازی‌تصویری‌نر‬
▪
‫‌افزار‬
‫م‬‫بررسی‌مداوم‌کیفیت‌نر‬
▪
‫‌افزار‬
‫م‬‫مدیریت‌تغییرات‌و‌پیکربندی‌نر‬
57
‫فصل‬
5
‫تحلیل‬ ‫و‬ ‫معرفی‬
‫نمونه‬ ‫یک‬
‫شیءگرا‬ ‫متدولوژی‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
59
‌«
‌‫شاید‌باالترین‌قدرت‌یک‌رویکرد‬
‌‫‌سازوکاری‌که‬،‫‌افزار‬
‫م‬‫‌گرا‌در‌توسعه‌نر‬
‫ء‬‫شی‬
‌‫برای‌تسخیر‌یک‌مدل‌از‌دنیای‌واقعی‬
‫‌دهد‌باشد‬
‫ی‬‫ارائه‌م‬
‌.
‌»
Grady Booch
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
USDP
(Unified Software Development Process)
60
▪
USDP
‌‫یک‬
‫فر‬
‫ا‬
‫‌افزار‌است‌که‌روش‬
‫م‬‫یند‌تولید‌مهندسی‌نر‬
‌‫ی‬
‫منظم‬
‌‫و‬
‫سیستم‬
‫اتیک‬
‌‫برای‬
‫ترتیب‌انجام‌فعالیت‬
‌‫ها‬
‫‌افزاری‌را‌پیشنهاد‌می‬
‫م‬‫در‌یک‌پروژه‌نر‬
‫نماید‬
‌‫فرایند‬
USDP
‫از‌مدل‌شیءگرایی‌حمایت‌کرده‌و‌پایه‌روشهای‌مدرن‌توسعه‬
‫نرم‌افزار‌است‬
▪
USDP
‌‫دارای‌یک‬
‫چارچوب‌فر‬
‫ا‬
‫یند‬
‫است‬
▫
‌‫مدعی‌است‌که‬
‌‫‌افزاری‌از‬
‫م‬‫همه‌عناصر‌الزم‌برای‌تولید‌محصوالت‌نر‬
‫سیستم‬
‌‫های‬
‌‫ساده‌تا‬
‌‫هوشمند‌و‬
‌‫‌های‬
‫م‬‫سیست‬
‫اطالعاتی‌بزرگ‌را‌د‬
‌‫ر‬
‫بردار‬
‫د‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫اصلی‬ ‫محورهای‬
USDP
61
▪
‌‫راهبری‌بر‬
‫مبنای‌موارد‌کاربری‬
▪
‫محوریت‌قرار‌دادن‌معماری‬
(
Architecture Centric
)
▪
‫استفاده‌از‌روش‌تکرار‌و‌توسعه‌تدریجی‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫در‬ ‫افزار‬‫نرم‬ ‫حیات‬ ‫چرخه‬
USDP
62
‫آغازین‬ ‫تشریح‬ ‫ساخت‬ ‫انتقال‬
‫تکرار‬
1
‫تکرار‬
...
2
‫تکرار‬
n-1
‫تکرار‬
n...
... ... ...
...
...
‫زمان‬
‫انتشارها‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫فرایند‬ ‫اصلی‬ ‫فازهای‬
USDP
•
‫فاز‬
‫آغازین‬
(
Inception
)
:
‫بنای‬
‫اصلی‬
‫‌افزار‬
‫م‬‫نر‬
‫در‬
‫این‬
‫فاز‬
‫گذاشته‬
‫شده‬
‫و‬
‫صورت‬
‫مسئله‬
‫و‬
‫محدوده‬
‫پروژه‬
‫مشخص‬
‫‌شود‬
‫ی‬‫م‬
.
‫همچنین‬
‫‌های‬
‫ی‬‫نیازمند‬
‫اولیه‬
‫شناسایی‬
‫‌گردند‬
‫ی‬‫م‬
.
•
‫فاز‬
‫تشریح‬
(
Elaboration
)
:
‫در‬
‫این‬
‫فاز‬
‫‌های‬
‫ی‬‫نیازمند‬
‫سیستم‬
‫تکمیل‬
‫و‬
‫تشریح‬
‫شده‬
‫و‬
‫از‬
‫‌هایی‬
‫ل‬‫مد‬
‫برای‬
‫نمایش‬
‫‌ها‬
‫ی‬‫نیازمند‬
‫و‬
‫جزئیات‬
‫‌ها‬
‫ن‬‫آ‬
‫استفاده‬
‫‌شود‬
‫ی‬‫م‬
.
،‫همچنین‬
‫در‬
‫فاز‬
‫تشری‬
‫ح‬
‫برنامه‬
‫ریزی‬
‫پروژه‬
‫انجام‬
‫شده‬
‫و‬
‫معماری‬
‫پایا‬
‫حاصل‬
‫‌گردد‬
‫ی‬‫م‬
.
•
‫فاز‬
‫ساخت‬
(
Construction
)
:
‫محصول‬
‫در‬
‫این‬
‫فاز‬
‫ساخته‬
‫‌شود‬
‫ی‬‫م‬
.
‫برای‬
‫ساخت‬
‫الزم‬
‫است‬
،‫تحلیل‬
،‫طراحی‬
‫‌سازی‬
‫ه‬‫پیاد‬
‫و‬
‫آزمون‬
‫‌افزار‬
‫م‬‫نر‬
‫صورت‬
‫پذیرد‬
.
•
‫فاز‬
‫انتقال‬
(
Transition
)
:
‫در‬
‫این‬
‫فاز‬
‫محصول‬
‫به‬
‫جامعه‬
‫کاربران‬
‫انتقال‬
‫‌یابد‬
‫ی‬‫م‬
‫و‬
‫‌افزار‬
‫م‬‫نر‬
‫مور‬
‫د‬
‫‌برداری‬
‫ه‬‫بهر‬
‫قرار‬
‫‌گیرد‬
‫ی‬‫م‬
.
63
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫یکپارچه‬ ‫فرایند‬ ‫در‬ ‫بعدی‬ ‫دو‬ ‫نگاه‬
64
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫از‬ ‫استفاده‬
‫یکپارچه‬ ‫فرایند‬ ‫مدل‬
‫توس‬ ‫فرایندهای‬ ‫توسعه‬ ‫برای‬
‫دیگر‬ ‫عه‬
65
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫از‬ ‫نمایی‬
RUP Mentor
‫بیان‬ ‫در‬
‫طراحی‬ ‫و‬ ‫تحلیل‬ ‫های‬‫فرآورده‬
66
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫بعدی‬ ‫دو‬ ‫دیدگاه‬
RUP
67
▪
RUP
‌‫نیز‬
‫یک‌فر‬
‫ا‬
‫یند‌تولید‌دو‌بعدی‌است‬
▫
‫بر‬
‫خالف‬
‫فر‬
‫ا‬
‫یندهای‌تولید‌سنتی‌که‌یک‌بعدی‌هست‬
‫ند‬
▪
‫این‌ابعاد‌عبارتند‌از‬
:
▫
‌‫بعد‬
(
‫محور‬
‌)
‫عمودی‬
‌:
‌‫گردش‌کارهای‌اصلی‌را‌نشان‬
‫می‬
‌‫دهد‬
▫
‌‫بعد‬
(
‫محور‬
‌)
‫افقی‬
‌:
‌‫‌افزار‌در‬
‫م‬‫ساختار‌چرخه‌تولید‌نر‬
RUP
‫در‌بستر‌زمان‌را‌نشان‌می‬
‌‫دهد‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫دیدگاه‬
‫بعدی‬ ‫دو‬
RUP
[
Kruchten 2004
]
68
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌پنج‬
‌:
‫معرفی‌و‌تحلیل‌یک‌نمونه‌متدولوژی‌شیء‌گرا‬
‫مورد‬ ‫در‬ ‫مطرح‬ ‫دهای‬ ‫ن‬ ‫بررسی‬
RUP
▪
‫همکاری‌میان‌افراد‌در‌تخصیص‌نقشها‌به‌شکل‌مناسب‌از‌جمله‌نکاتی‌است‌که‌در‬
RUP
‌‫چندان‌به‌آن‬
‫اهمیتی‌داده‌نشده‌است‬
▪
‫مدلسازی‌بیش‌از‌اندازه‌و‌تولید‌فرآورده‌های‌بی‌کیفیت‌و‌کم‌ارزش‌از‌جمله‌مواردی‌است‌که‌می‌ت‬
‌‫واند‬
‫اسباب‌شکست‌پروژه‌نرم‌افزاری‌را‌فراهم‌کند‬
▪
‌‫استفاده‌مجدد‌در‌توسعه‌نرم‌افزار‌توسط‌شیءگرایی‌و‬
RUP
‫چندان‌محقق‌نمی‌شود‬
‌.
‌‫ما‌به‌مؤلفه‌هایی‬
‫درشت‌دانه‌تر‌و‌با‌قابلیت‌استفاده‌مجدد‌بیشتر‌و‌روشهایی‌برای‌توسعه‌نرم‌افزار‌با‌کمک‌چ‬
‌‫نین‌مؤلفه‬
‫هایی‌نیاز‌داریم‬
▪
RUP
‫یک‌متدولوژی‌سنگین‌وزن‌است‌که‌برای‌پاسخ‌به‌نیازهای‌متغیر‌پروژههای‌متوسط‌وک‬
‌‫وچک‬
‫چندان‌کارا‌نیست‬
▪
RUP
‫از‌فرایند‌توسعه‌پیچیده‌و‌سازمان‌نیافته‌ای‌برخوردار‌است‬
▪
‌‫‌های‌شیءگرا‌از‌جمله‬
‫ی‬‫یکی‌از‌نقاط‌ضعف‌متدولوژ‬
RUP
‫توجه‌ناکافی‌به‌موضوع‌طراحی‌پایگاه‌داده‬
‌‫ها‬
‌‫به‌ویژه‌در‌هنگامی‌که‌قصد‌تولید‌سیستمی‌از‌نوع‌تمرکز‌بر‌پردازش‌داده‬
(
Data centric
‌)
‌‫را‌داشته‬
‫باشیم‌تلقی‌شده‌است‬
69
‫فصل‬
6
‫طراحی‬ ‫الگوهای‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
▪
«
‫بهترین‌طراحان‌کسانی‌هستند‌که‌الگوهای‌طراحی‌بسیاری‌را‌جف‬
‌‫ت‌و‬
‫جور‌کرده‌و‌به‌هم‌می‬
‫‌تر‌را‌تولید‌نم‬
‫گ‬‫بافند‌تا‌بتوانند‌یک‌کل‌بزر‬
‫ایند‬
.
‌»
▪ Eric Gamma
▪
71
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫استف‬ ‫قابلیت‬ ‫به‬ ‫دستیابی‬ ‫برای‬ ‫رایج‬ ‫های‬‫روش‬ ‫از‬ ‫یکی‬ ‫عنوان‬ ‫به‬ ‫الگو‬
‫مجدد‬ ‫اده‬
▪
‌‫‌گرا‌بر‬
‫ء‬‫‌های‌تحلیل‌و‌طراحی‌شی‬
‫ش‬‫رو‬
‫استفاده‌از‌نمادها‌در‌طراحی‬
‫تأکید‌دارند‬
▫
‫برای‌مستندسازی‌و‌ذکر‌خصوصیات‌مناسب‌هستند‬
▪
‫‌گرا‌تنها‌رسم‌نمودار‌نیست‬
‫ء‬‫اما‌تحلیل‌و‌طراحی‌شی‬
▫
‫نقاشی‌خوب‌دلیل‌بر‌طراحی‌خوبی‌نیست‬
!
▪
‫‌ها‌تجربه‌دارد‬
‫ل‬‫‌گرای‌خوب‌نیاز‌به‌سا‬
‫ئ‬‫طراحی‌ش‬
▫
‫طراحی‌به‌اندازه‌دانستن‌گرامر‌زبان‌اهمیت‌دارد‬
▪
‫‌افتد‬
‫ی‬‫بیشترین‌استفاده‌مجدد‌در‌هنگام‌طراحی‌اتفاق‌م‬
▫
‫‌شوند‬
‫ی‬‫مشکالت‌با‌تجربه‌طراحی‌رفع‌م‬
72
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫طراحی‬ ‫الگوی‬
▪
‫تجریدی‌از‌ساختار‌طراحی‌تکرارشونده‌است‬
▪
‫شامل‌کالس‌و‬
/
‫یا‌اشیاء‬
▫
‌‫‌ها‬
‫ی‬‫وابستگ‬
(
Dependencies
)
▫
‌‫ساختارها‬
(
Structures
)
▫
‌‫تعامالت‬
(
Interactions
)
▫
‌‫قراردادها‬
(
Conventions
)
▪
‫‌کند‬
‫ی‬‫‌صورت‌صریح‌تعیین‌م‬
‫ه‬‫‌ها‌و‌ساختار‌طراحی‌را‌ب‬
‌
‫م‬‫نا‬
▪
‫‌ای‌از‌تجربیات‌طراحی‌است‬
‫ه‬‫چکید‬
73
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫پیشنهادی‬ ‫طراحی‬ ‫الگوی‬ ‫ساختار‬
GOF
▪
‌‫نام‬
(
Name
)
▫
‫‌دهد‬
‫ی‬‫‌طور‌خالصه‌و‌موجز‌کاربرد‌الگو‌را‌نشان‌م‬
‫ه‬‫ب‬
▪
‌‫‌بندی‬
‫ه‬‫طبق‬
(
Classification
)
▫
‫‌دهد‬
‫ی‬‫‌بندی‌براساس‌کاری‌که‌الگو‌انجام‌م‬
‫ه‬‫طبق‬
▫
Creational
▫
Structural
▫
Behavioral
▫
‫‌ها‌هستند‬
‫س‬‫حوزه‌کاربرد‌الگوها‌شامل‌اشیاء‌و‌کال‬
74
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫طراحی‬ ‫الگوهای‬ ‫انواع‬
75
Creational
Structural
Behavioral
‫‌ها‌تمرکز‌دارند‬
‫س‬‫بر‌روی‌فرایند‌ایجاد‌اشیا‌و‌کال‬
.
‫‌ها‌و‌اشیا‌تمرکز‌دارند‬
‫س‬‫بر‌روی‌ترکیب‌کال‬
.
‫‌ها‌و‌اشیا‌و‌توزیع‌وظیفه‌تمرکز‌دارند‬
‫س‬‫بر‌روی‌رفتار‌کال‬
.
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫نقش‌الگوهای‌طراحی‌در‌مواجهه‌با‌پیچیدگی‌نرم‌اف‬
‫زار‬
▪
‫‌شوند‌چرا‌که‌موجب‌ساده‬
‫ی‬‫در‌بلندمدت‌الگوها‌باعث‌کاهش‌پیچیدگی‌م‬
‫شدن‌تغییرات‌خواهند‌شد‬
▪
‌‫‌شود‌درک‬
‫ی‬‫‌کنند‌که‌سبب‌م‬
‫ی‬‫الگوهای‌طراحی‌زبان‌مشترکی‌را‌ایجاد‌م‬
‫‌تر‌و‌در‌نتیجه‌پیچیدگی‌کاهش‌یابد‬
‫ه‬‫طراحی‌سیستم‌ساد‬
▪
‫‌کنند‌که‌ب‬
‫ی‬‫الگوهای‌طراحی‌سطوح‌تجرید‌جدیدی‌را‌حول‌مسئله‌ایجاد‌م‬
‌‫ه‬
‌‫‌کند‬
‫ی‬‫مدیریت‌پیچیدگی‌کمک‌م‬
▪
‌‫‌ای‌که‌از‌الگوی‬
‫ه‬‫در‌برنام‬
Composite
‫استفاده‌کنیم‌یعنی‌در‌طراحی‌سیستم‬
‌‫از‬
‫‌پذیری‌حاصل‌از‌ف‬
‫س‬‫خاصیت‌فرکتال‌استفاده‌کرده‌ایم‌و‌قابلیت‌مقیا‬
‌‫رکتال‌تا‬
‫حد‌زیادی‌پیچیدگی‌را‌کاهش‌خواهد‌داد‬
76
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫ضدالگوها‬
(
AntiPatterns
)
▪
‌‫ایده‌ضدالگوها‌از‌آنجا‌ناشی‌شده‌است‌که‌اغلب‌کارهای‌منتشر‌شده‌در‬
‌‫‌افزار‌بر‬
‫م‬‫مهندسی‌نر‬
‌‫‌های‌سازنده‌و‌مؤثر‬
‫ل‬‫‌ح‬
‫ه‬‫را‬
‫تمرکز‌دارد‬
▪
‌‫ضدالگوها‌بر‬
‌‫‌های‌منفی‌و‌ناموفق‬
‫ل‬‫‌ح‬
‫ه‬‫را‬
‫تمرکز‌دارند‬
▪
‫‌های‌متداول‌که‌برای‬
‫ل‬‫‌ح‬
‫ه‬‫‌ای‌از‌را‬
‫ه‬‫ضدالگو‌مجموع‬
‌‫‌افتند‌و‬
‫ی‬‫حل‌یک‌مسئله‌اتفاق‌م‬
‫‌طورقطعی‌نتایج‌منفی‬
‫ه‬‫ب‬
‌‫یا‌ناموفق‬
‫‌نماید‬
‫ی‬‫‌اند‌را‌توصیف‌م‬
‫ه‬‫تولید‌نمود‬
77
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫بازبینی‌میزان‌موفقیت‌الگوها‌در‌دستیابی‌به‌قابلیت‌استفاده‌م‬
‫جدد‌نرم‌افزار‬
▪
‫‌جا‌که‌الگوی‌های‌طراحی‌تعدادی‌کالس‌و‌ارتباطات‌میان‌اشیاء‌مربوط‬
‫ن‬‫از‌آ‬
‫‌توان‌گفت‌سطح‌استفاده‌مج‬
‫ی‬‫‌شوند‌م‬
‫ی‬‫‌های‌مختلف‌را‌شامل‌م‬
‫س‬‫به‌کال‬
‌‫دد‌در‬
‫‌ها‌است‬
‫س‬‫‌تر‌از‌استفاده‌مجدد‌از‌کال‬
‫ه‬‫‌دان‬
‫ت‬‫الگوهای‌طراحی‌درش‬
▪
‫استفاده‌مجدد‌از‌کالس‌به‌صورت‌جعبه‌سفید‌است‌اما‌در‌استفاده‌مجدد‬
‌‫از‬
‫الگوهای‌طراحی‌ما‌از‌ساختار‌داخلی‌الگو‌خبر‌داریم‌و‌از‌آن‌برای‌حل‌مسئل‬
‌‫ه‬
‫‌کنیم‌و‌به‌ندرت‌ای‬
‫ی‬‫طراحی‌پیش‌آمده‌در‌زمینه‌مورد‌نظرمان‌استفاده‌م‬
‌‫ن‬
‫‌دهیم‬
‫ی‬‫ساختار‌را‌تغییر‌م‬
‌.
‫به‌بیان‌دیگر‌سبک‌استفاده‌مجدد‌از‌الگوه‬
‌‫ای‬
‫‌خاکستری‌است‬
‫ه‬‫‌استفاده‌مجدد‌جعب‬،‫طراحی‬
▪
‫‌دهند‬
‫ی‬‫گرچه‌الگوهای‌طراحی‌میزان‌موفقیت‌در‌استفاده‌مجدد‌را‌افزایش‌م‬
‫اما‌هنوز‌این‌سطح‌از‌استفاده‌مجدد‌کافی‌نیست‬
78
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌شش‬
‌:
‫الگوهای‌طراحی‬
‫بندی‬ ‫دسته‬
‫مجدد‬ ‫استفاده‬ ‫انواع‬
79
‫فصل‬
7
‫افزار‬‫نرم‬ ‫مهندسی‬
‫مؤلفه‬ ‫بر‬ ‫مبتنی‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
81
«
‫‌های‌ضعیفی‌بنیان‌گ‬
‫ه‬‫‌افزار‌بر‌پای‬
‫م‬‫به‌نظر‌من‌صنعت‌نر‬
‌‫ذاشته‬
‌‫‌های‬
‫ه‬‫شده‌است‌و‌دلیل‌آن‌هم‌نبود‌زیرصنعتی‌همچون‌مؤلف‬
‫‌افزاری‌است‬
‫م‬‫نر‬
‌.
‫‌افزاری‌ف‬
‫م‬‫ویژگی‌مهم‌یک‌صنعت‌مؤلفه‌نر‬
‌‫راهم‬
‌‫‌های‌قابل‌استفاده‌مجدد‌برای‌هر‬
‫ل‬‫‌ای‌از‌روا‬
‫ه‬‫نمودن‌خانواد‬
‫زمینه‌کاری‌است‬
.
»
Douglas McIlroy
‌‫سخنران‌کلیدی‌در‌اولین‌کنفرانس‌مهندسی‌نرم‌افزار‬
NATO
‌‫در‌سال‬
1968
82
‫اهمیت‌و‌جایگاه‌قابلیت‌استفاده‌مجدد‬
‫‌افزار‬
‫م‬‫در‌مهندسی‌نر‬
▪
«
‫‌ای‌است‌که‌سخن‌گفتن‌در‌مورد‌آن‬
‫ه‬‫استفاده‌مجدد‌پدید‬
‫‌تر‌از‌انجام‌دادن‌آن‌است‬
‫ن‬‫به‌مراتب‌آسا‬
‌.
‌‫زیرا‌انجام‌آن‌نه‬
‫تنها‌نیازمند‌یک‌طراحی‌خوب‌بلکه‌مستلزم‌مستندس‬
‌‫ازی‬
‫خیلی‌خوب‌است‬
‌.
‫حتی‌طراحی‌خوب‌هم‌بدون‌مستندسازی‬
‫‌های‌قابل‌استفاده‌مجدد‌ک‬
‫ه‬‫خوب‌برای‌دستیابی‌به‌مؤلف‬
‌‫افی‬
‫نیست‬
.
»
David Parnas
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هفت‬
‌:
‫‌افزار‌مبتنی‌بر‌مؤلفه‬
‫م‬‫مهندسی‌نر‬
‫مجد‬ ‫استفاده‬ ‫انواع‬
‫افزار‬ ‫نرم‬ ‫در‬ ‫د‬
83
‫طراحی‬ ‫الگوهای‬
‫معماری‬ ‫الگوهای‬
‫های‬‫چارچوب‬
‫کاربردی‬ ‫های‬‫برنامه‬
‫افزار‬‫نرم‬ ‫تولید‬ ‫خ‬ ‫سیستم‬ ‫سازی‬‫یکپارچه‬
‫های‬‫سیستم‬
‫منابع‬ ‫ریزی‬‫برنامه‬
‫سازمانی‬
‫ها‬‫سیستم‬ ‫از‬ ‫سیستمی‬
‫بندی‬‫لفافه‬
‫ی‬ ‫مورو‬ ‫های‬‫سیستم‬
‫کاربردی‬ ‫های‬‫برنامه‬
‫تنظیم‬ ‫قابل‬
‫افزار‬‫نرم‬ ‫مهندسی‬
‫گرا‬ ‫سروی‬
‫مهندسی‬
‫رانه‬‫مدل‬
‫افزار‬‫نرم‬ ‫مهندسی‬
‫لفه‬ ‫م‬ ‫بر‬ ‫مبتنی‬
‫افزار‬‫نرم‬ ‫مهندسی‬
‫جنبه‬ ‫بر‬ ‫مبتنی‬
‫برنامه‬ ‫های‬‫کتابخانه‬
‫برنامه‬ ‫مولدهای‬
‫کمک‬ ‫با‬ ‫توسعه‬
‫ها‬ ‫میکروسروی‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هفت‬
‌:
‫‌افزار‌مبتنی‌بر‌مؤلفه‬
‫م‬‫مهندسی‌نر‬
‫مجدد‬ ‫استفاده‬ ‫انواع‬
▪
‫‌سیاه‬
‫ه‬‫استفاده‌مجدد‌جعب‬
▫
‌‫‌افزاری‌برای‬
‫م‬‫‌های‌نر‬
‫ه‬‫عدم‌امکان‌مشاهده‌اجزای‌داخلی‌مؤلف‬
‫‌کنندگان‬
‫ه‬‫استفاد‬
▫
‌‫عدم‌امکان‌تغییر‬
▪
‌‫استفاده‬
‌‫مجدد‌جعبه‬
‫سفید‬
▫
‌‫قابلیت‌مشاهده‬
‌‫‌افزاری‌برای‬
‫م‬‫‌های‌نر‬
‫ه‬‫اجزای‌داخلی‌مؤلف‬
‫‌کنند‬
‫ه‬‫استفاد‬
‫گان‬
▫
‌‫امکان‌تغییر‬
‌‫‌های‌جعبه‬
‫ه‬‫مؤلف‬
▫
‌‫عموما‌ابتدا‬
‌‫به‌طور‌جزئی‌تغییر‌داده‌شده‌و‌سپس‌مورد‌استفاده‌قرار‬
‫‌گیرن‬
‫ی‬‫م‬
‌‫د‬
84
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هفت‬
‌:
‫‌افزار‌مبتنی‌بر‌مؤلفه‬
‫م‬‫مهندسی‌نر‬
‫شیءگرایی‬ ‫در‬ ‫مجدد‬ ‫استفاده‬
▪
‫استفاده‌مجدد‌جعبه‌سفید‬
▫
‫‌ها‬
‫س‬‫‌بری‌کال‬
‫ث‬‫ار‬
▫
‌‫‌ها‌قابل‬
‫س‬‫جزئیات‌ساختار‌درونی‌کالس‌پدر‌برای‌زیرکال‬
‫مشاهده‌است‬
▫
‫‌سیاه‬
‫ه‬‫استفاده‌مجدد‌جعب‬
▫
‫ترکیب‌اشیاء‬
▫
‌‫واگذاری‬
(
Delegation
)
85
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هفت‬
‌:
‫‌افزار‌مبتنی‌بر‌مؤلفه‬
‫م‬‫مهندسی‌نر‬
‫مجدد‬ ‫استفاده‬ ‫سطوح‬
86
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هفت‬
‌:
‫‌افزار‌مبتنی‌بر‌مؤلفه‬
‫م‬‫مهندسی‌نر‬
‫جنبه‬ ‫پنج‬
‫لفه‬ ‫م‬ ‫اصلی‬
▪
‫مشخصات‬
▪
‫‌سازی‬
‫ه‬‫یک‌یا‌چند‌پیاد‬
▪
‫استاندارد‌محدود‌کننده‌برای‌مؤلفه‬
▪
‫‌بندی‬
‫ه‬‫روش‌بست‬
▪
‌‫روش‌استقرار‬
87
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هفت‬
‌:
‫‌افزار‌مبتنی‌بر‌مؤلفه‬
‫م‬‫مهندسی‌نر‬
‫م‬ ‫بر‬ ‫مبتنی‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫روی‬ ‫پیش‬ ‫های‬‫چالش‬
‫لفه‬
▪
‌‫‌های‬
‫ه‬‫‌سادگی‌استفاده‌مجدد‌از‌مؤلف‬
‫ه‬‫‌افزاری‌ب‬
‫م‬‫‌های‌نر‬
‫ه‬‫استفاده‌مجدد‌از‌مؤلف‬
‫‌افزاری‌نیست‬
‫ت‬‫سخ‬
!
▪
‌‫‌های‌مناسب‌و‌مورد‌نیاز‬
‫ه‬‫یافتن‌مؤلف‬
▫
‫‌ها‌بلکه‌به‌دلیل‌وسعت‌و‌تنوع‌زیاد‌مؤلف‬
‫ن‬‫‌‌دسترسی‌به‌آ‬
‫م‬‫نه‌به‌خاطر‌عد‬
‌‫‌ها‬
‫ه‬
‫‌دهنده‌ممکن‌است‌در‌یافتن‌راهکار‌بهینه‌دچار‌سردرگمی‌بشود‬
‫ه‬‫توسع‬
▪
‫درک‌نحوه‌کارکرد‌مؤلفه‬
▫
‫‌ها‌وابس‬
‫ن‬‫‌های‌مورد‌نیاز‌یافت‌شوند‌درک‌نحوه‌کارکرد‌آ‬
‫ه‬‫‌که‌مؤلف‬
‫ی‬‫حتی‌زمان‬
‌‫ته‬
‫‌اند‬
‫ه‬‫به‌مستنداتی‌است‌که‌همراه‌مؤلفه‌ارائه‌شد‬
▪
‫‌ها‬
‫ه‬‫‌سازی‌مؤلف‬
‫ه‬‫نحوه‌ترکیب‌و‌یکپارچ‬
88
‫فصل‬
8
‫افزار‬‫نرم‬ ‫مهندسی‬
‫گر‬‫سرویس‬
‫ا‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
90
▪
‫‌افزاری‌سرویس‬
‫م‬‫‌های‌نر‬
‫م‬‫سیست‬
-
‌‫محور‌یک‌ساحت‬
(
‫پارادایم‬
‌)
‫چند‌وجهی‌مرتب‬
‌‫ط‬
‫‌افزاری‌است‌که‌به‌عنوان‌ترکیبی‌از‌سرویسهای‌مستقل‬
‫م‬‫‌های‌نر‬
‫ه‬‫با‌سامان‬
‌‫از‌هم‬
‫‌شوند‬
‫ی‬‫ساخته‌م‬
‌.
‫‌هایی‌ایده‌معماری‌سرویسگرا‌را‌به‌منظور‌ت‬
‫ه‬‫چنین‌سامان‬
‌‫مرکز‬
‫‌اند‬
‫ه‬‫‌افزار‌بسط‌و‌گسترش‌داد‬
‫م‬‫‌توسعه‌و‌نگهداشت‌نر‬،‫بر‌طراحی‬
.
▪
Olivier Nano, Andrea Zisman, Guest Editors’ Introduction: Realizing Service-Centric
Software Systems, IEEE Software, 2007
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫ی‬ ‫منط‬ ‫محدوده‬ ‫و‬ ‫اندازه‬
91
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫لفه‬ ‫م‬ ‫و‬ ‫شیء‬ ‫مفاهیم‬ ‫با‬ ‫سروی‬ ‫ارتباط‬
92
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫طراحی‬ ‫اصول‬
93
‫استفاده‬ ‫قابلیت‬
‫مجدد‬
‫تجرید‬ ‫سست‬ ‫اتصال‬ ‫سروی‬ ‫قرارداد‬
‫ترکیب‬ ‫قابلیت‬ ‫کشف‬ ‫قابلیت‬ ‫حالتی‬ ‫بدون‬ ‫خودمختاری‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫افزار‬‫نرم‬ ‫مهندسی‬
‫گرا‬ ‫سروی‬
Service-Oriented Software Engineering
▪
‫رویکردی‬
‫‌مند‬
‫م‬‫نظا‬
‫برای‬
،‫طراحی‬
‫توسعه‬
‫و‬
‫نگهداری‬
‫‌های‬
‫ه‬‫برنام‬
‫‌افزاری‬
‫م‬‫نر‬
‫ب‬
‫ا‬
‫استفاده‬
‫از‬
‫اصول‬
‫معماری‬
‫‌گرا‬
‫س‬‫سروی‬
▪
‫روشی‬
‫برای‬
‫توسعه‬
‫‌افزارهای‬
‫م‬‫نر‬
‌
‫ه‬‫‌شد‬
‫ع‬‫توزی‬
‫که‬
‫‌های‬
‫ه‬‫مؤلف‬
‫‌دهنده‬
‫ل‬‫تشکی‬
‫آ‬
‫ن‬
‫‌های‬
‫س‬‫سروی‬
‫مستقل‬
‫هستند‬
▫
‫در‬
‫این‬
،‫روش‬
‫‌های‬
‫م‬‫سیست‬
‫‌افزاری‬
‫م‬‫نر‬
‫را‬
‫‌توان‬
‫ی‬‫م‬
‫با‬
‫ترکیب‬
‫‌های‬
‫س‬‫سروی‬
‫محلی‬
‫یا‬
‫‌هایی‬
‫س‬‫سروی‬
‫که‬
‫توسط‬
‫‌دهندگان‬
‫ه‬‫ارائ‬
‫خارجی‬
‫عرضه‬
‫‌اند‬
‫ه‬‫شد‬
‫و‬
‫ایجاد‬
‫تعامل‬
‫میان‬
‫‌ها‬
‫ن‬‫آ‬
‫ساخت‬
94
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫حیات‬ ‫چرخه‬
95
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫حیات‬ ‫چرخه‬
(
‫ادامه‬
)
▪
‫راهبرد‌سرویس‬
‌:
‫‌های‌فناوری‌اطالعات‌برای‌دستیا‬
‫س‬‫‌کارگیری‌سروی‬
‫ه‬‫راهبرد‌سرویس‌نحوه‌ب‬
‌‫بی‌به‬
‫‌کند‬
‫ی‬‫اهداف‌مورد‌نظر‌را‌ارائه‌م‬
‌.
‫بر‌این‌اساس‌سبد‌خدمات‌سازمان‌تنظیم‌و‌متناسب‌با‌تغییر‬
‫‌گردد‬
‫ی‬‫راهبردهایش‌اصالح‌م‬
▪
‫طراحی‌سرویس‬
‌:
‫‌وکار‌ر‬
‫ب‬‫‌های‌با‌کیفیتی‌که‌نیازهای‌مشتریان‌و‌اهداف‌کس‬
‫س‬‫طراحی‌سروی‬
‌‫ا‬
‫‌تم‬،‫‌کنند‬
‫ی‬‫‌اند‌حمایت‌م‬
‫ه‬‫‌سازند‌و‌از‌راهبردهای‌سرویس‌که‌در‌فاز‌قبلی‌تعیین‌شد‬
‫ی‬‫برآورده‌م‬
‫رکز‌دارد‬
▪
‫انتقال‌سرویس‬
‌‌:
‌‫‌سازی‌خروجی‌حاصل‌از‌فاز‌طراحی‌متمرکز‌است‬
‫ه‬‫انتقال‌سرویس‌بر‌پیاد‬
‫‌پذیرد‬
‫ی‬‫‌‌م‬
‫ت‬‫‌های‌موجود‌در‌این‌فاز‌صور‬
‫س‬‫‌اصالح‌و‌تغییر‌سروی‬،‫همچنین‬
▪
‫عملیات‌سرویس‬
‌:
‫‌های‌فناوری‌اطالعات‌به‌ش‬
‫س‬‫هدف‌اصلی‌فاز‌عملیات‌اطمینان‌از‌ارائه‌سروی‬
‌‫کل‬
‌‫کارا‌و‌مؤثر‌و‌مطابق‌با‌قرارداد‌سرویس‌به‌مشتریان‌است‬
▪
‫بهبود‌مداوم‬
‌:
‫بهبود‌مداوم‌کلید‌اصلی‌برای‌یافتن‌جایی‌است‌که‌بهبود‌باید‌صورت‌پذی‬
‌‫رد‬
96
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫گرا‬ ‫سروی‬ ‫معماری‬
Service-Oriented Architecture
▪
‫سبکی‌از‌معم‬
‫ـ‬
‌‫اری‬
‫با‬
‫هدف‌دستیابی‌به‌اتص‬
‫ـ‬
‫ال‌سست‌در‌ارتباطات‌بین‌م‬
‫ؤ‬
‫لفه‬
‫های‌ن‬
‫رم‬
‫افزاری‬
▪
‫رهیافتی‌برای‌ساخت‌سیستم‬
‫های‌توزیع‌شده‌که‌کارکردهای‌نرم‬
‫افزاری‌را‌در‌قالـب‌سـر‬
‌‫ویس‬
‫ارائه‌می‬
‫کند‬
‌.
‫این‌سرویس‬
‫ها‌هم‌توسط‌دیگر‌نرم‬
‫افزارها‌قابـل‌فراخـوانی‌هسـتند‌و‌هـم‌بـرای‬
‫ساخت‌سرویس‬
‫های‌جدید‌مورد‌استفاده‌قرار‌می‬
‫گیرند‬
▪
‫این‌رهیافت‌برای‌یکپارچـه‬
‫سـازی‌فنـاوری‬
‌‫هـا‌در‌محیطـی‌کـه‌انـواع‌مختلفـی‌از‌سـکوهای‬
‫نرم‬
‫افزاری‌و‌سخت‬
‌‫افزاری‌وجود‌دارد‬
‫ایده‬
‌‫آل‬
‌‫است‬
97
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫وک‬‫کسب‬ ‫فرایندهای‬ ‫مدلسازی‬ ‫و‬ ‫گرا‬ ‫سروی‬ ‫معماری‬ ‫ارتباط‬
‫ار‬
98
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫بر‬ ‫مبتنی‬ ‫کاربردی‬ ‫برنامه‬
▪
‫‌های‌مختلف‌که‌به‌منظور‌دستیابی‌به‌کارک‬
‫س‬‫ترکیبی‌است‌از‌سروی‬
‌‫رد‌مورد‬
‫‌اند‬
‫ه‬‫نظر‌با‌یکدیگر‌یکپارچه‌شد‬
▫
‫‌ها‌در‌یک‌برنامه‌کاربردی‌مبتنی‌بر‌سرویس‬
‫س‬‫ترتیب‌اجرای‌سروی‬
‌‫یکی‬
‫‌رود‬
‫ی‬‫از‌موارد‌مهم‌در‌حصول‌کارکرد‌مورد‌انتظار‌به‌شمار‌م‬
99
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫بر‬ ‫مبتنی‬ ‫کاربردی‬ ‫برنامه‬ ‫حیات‬ ‫چرخه‬
▪
‫در‌این‌چرخه‌تکیه‬
‫اصلی‌بر‌روی‬
‫ارتقاء‌قابلیت‬
‫استفاده‬
‫مجدد‬
‫‌ها‬
‫س‬‫سروی‬
‫و‌ساخت‬
‫سریع‌و‌آسان‬
‫‌های‬
‫ه‬‫برنام‬
‫کاربردی‌مبتنی‬
‫برسرویس‬
‫در‬
‫‌های‬
‫ط‬‫محی‬
‫کاری‬
‫متفاوت‌قرار‌دارد‬
100
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
‫سروی‬ ‫بر‬ ‫مبتنی‬ ‫معماری‬ ‫و‬ ‫مدلسازی‬
(
SOMA
)
101
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌هشت‬
‌:
‫‌گرا‬
‫س‬‫مهندسی‌نرم‌افزار‌سروی‬
▪
‫‌گرایی‌قدم‌رو‌به‌جلویی‌برای‌دستیابی‌به‌قابلیت‌استفاده‌مجدد‌محسوب‌می‬
‫س‬‫سروی‬
‫‌شود‬
▪
‫‌سازی‌تا‌حدی‌پیچ‬
‫ه‬‫‌سازی‌جزئیات‌پیاد‬
‫ن‬‫‌ها‌با‌افزایش‌سطح‌استفاده‌مجدد‌و‌پنها‬
‫س‬‫سروی‬
‌‫یدگی‬
‫‌کنند‬
‫ی‬‫را‌مدیریت‌م‬
▪
‫‌روزرسانی‌و‌قابل‌جایگزینی‌در‌مواجهه‌با‬
‫ه‬‫‌افزاری‌قابل‌ب‬
‫م‬‫‌‌به‌عنوان‌یک‌قطعه‌نر‬
‫س‬‫سروی‬
‫‌است‬
‫ه‬‫پیچیدگی‌نسبتا‌موفق‌عمل‌کرد‬
▪
‌‫‌ها‌و‬
‫س‬‫‌شود‌تا‌برقراری‌تعامالت‌میان‌سروی‬
‫ی‬‫‌ها‌نیز‌موجب‌م‬
‫س‬‫اتصال‌سست‌میان‌سروی‬
‫‌ها‌ساده‌شود‬
‫ن‬‫‌سازی‌آ‬
‫ه‬‫یکپارچ‬
▪
‌‫‌ها‌همچون‌امنیت‌به‬
‫ه‬‫‌ها‌و‌مدیریت‌برخی‌از‌دغدغ‬
‫س‬‫واگذاری‌مدیریت‌تعامالت‌سروی‬
ESB
‫‌شود‬
‫ی‬‫‌تری‌م‬
‫ه‬‫‌افزار‌ساد‬
‫م‬‫‌‌پیچیده‌جلوگیری‌کرده‌و‌سبب‌ایجاد‌نر‬
‫م‬‫از‌ایجاد‌کد‌دره‬
▪
‌‫‌مدیران‌و‌مشتریان‬،‫‌دهندگان‬
‫ه‬‫سرویس‌زبان‌مشترک‌میان‌توسع‬
‫به‬
‫‌آید‬
‫ی‬‫حساب‌م‬
102
‫فصل‬
9
‫افزا‬‫نرم‬ ‫توسعه‬ ‫چابک‬ ‫روشهای‬
‫ر‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
▪
«
‌‫‌از‌کار‌بسیاری‌که‌از‌آن‌به‌ستوه‌آیی‬،‫کار‌اندکی‌که‌ادامه‌یابد‬
‫‌تر‌است‬
‫ه‬‫امیدوارکنند‬
.
»
▪
‌‫حکمت‬
278
‫‌البالغه‬
‫ج‬‫‌نه‬،
104
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫چابکی‬ ‫معرفی‬
▪
‫‌ها‬
‫ی‬‫‌ها‌و‌متدولوژ‬
‫ش‬‫‌ای‌از‌رو‬
‫ه‬‫مجموع‬
▫
‌‫‌های‌بهتر‬
‫م‬‫‌کار‌مؤثرتر‌و‌تصمی‬،‫برای‌دستیابی‌به‌تفکر‌کارآمدتر‬
▫
‌‫‌افزار‬
‫م‬‫‌های‌مهندسی‌نر‬
‫ه‬‫در‌تمام‌حوز‬
▫
‫‌ها‬
‫ن‬‫استفاده‌ساده‌از‌آ‬
▫
‫‌ها‬
‫ت‬‫ارائه‌فعالی‬
▪
‫شیوه‌تفکر‬
▫
‫کار‌گروهی‬
▫
‫‌گذاری‌اطالعات‬
‫ک‬‫به‌اشترا‬
▫
‫‌گیری‌گروهی‬
‫م‬‫تصمی‬
▫
‫‌گیرد‬
‫ی‬‫مدیر‌به‌تنهایی‌تصمیم‌نم‬
105
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫کنیم‬ ‫استفاده‬ ‫چابک‬ ‫از‬ ‫زمانی‬ ‫چه‬
‫؟‬
‫گیری‬‫تصمیم‬ ‫در‬ ‫یرگذار‬ ‫تأ‬ ‫عوامل‬
106
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫چابک‬ ‫بیانیه‬
107
‫تعامالت‬ ‫و‬ ‫افراد‬
‫برتر‌از‌فرایندها‌و‬
‫ابزارها‬
‫عملیاتی‬ ‫افزار‬‫نرم‬
‫برتر‌از‌مستندات‬
‫جامع‬
‫مشتریان‬ ‫با‬ ‫همکاری‬
‫برتر‌از‌مذاکرات‌مبتنی‌بر‌قرارداد‬
‫تغییر‬ ‫به‬ ‫پاسخ‬
‫برتر‌از‌پیروی‌از‌طرح‬
http://agilemanifesto.org/
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫ن‬ ‫توسعه‬ ‫چابک‬ ‫های‬‫روش‬ ‫جایگاه‬ ‫و‬ ‫کاربردپذیری‬ ‫بر‬ ‫تحلیلی‬
‫افزار‬‫رم‬
▪
‫‌گویی‌در‌مقابل‌تغییرات‌را‌فراهم‌می‬
‫خ‬‫چابکی‌توانایی‌تطبیق‌و‌پاس‬
‌‫‌کند‌و‌با‬
‫‌ش‬
‫ی‬‫‌فرصت‌محسوب‌م‬،‫‌که‌یک‌تهدید‌باشد‬
‫ن‬‫‌تغییر‌بیش‌از‌ای‬،‫چابکی‬
‫ود‬
▪
‫‌افزاری‌را‌تضمین‌نمی‬
‫م‬‫‌های‌چابک‌موفقیت‌پروژه‌نر‬
‫ی‬‫استفاده‌از‌متدولوژ‬
‌‫‌کند‬
‫‌اند‬
‫ه‬‫ِ‌متعددی‌به‌شکست‌منجر‌شد‬‫ک‬‫‌های‌چاب‬
‫ه‬‫و‌پروژ‬
▪
‫‌گیری‌از‌مزایای‌هر‌یک‌وجود‌دارد‬
‫ه‬‫‌های‌چابک‌و‌بهر‬
‫ش‬‫امکان‌ترکیب‌رو‬
‌.
‫برای‬
‌‫‌تیم‬،‫مثال‬
Scrum
‌‫‌های‬
‫ت‬‫‌تواند‌از‌فعالی‬
‫ی‬‫م‬
XP
‌‫‌سازی‌بهره‌ببرد‬
‫ه‬‫‌‌برنام‬
‫ج‬‫مثل‌زو‬
‌‫‌های‬
‫م‬‫یا‌در‌تی‬
Kanban
‫جلسات‌روزانه‌اسکرام‌برگزار‌شود‬
▪
‫‌شیوه‬،‫‌ها‌بیش‌از‌این‌که‌راهکاری‌برای‌توسعه‌نرم‌افزار‌باشند‬
‫ش‬‫این‌رو‬
‌‫‌ای‬
‌‫‌های‌نرم‌افزاری‌به‌منظور‌کار‌گروهی‌و‌بروز‬
‫م‬‫برای‌مدیریت‌و‌هدایت‌تی‬
‫خالقیت‌افراد‌تیم‌هستند‬
108
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫متدولوژی‬
XP
109
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫فرایند‬ ‫مدل‬
XP
110
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫های‬‫ارزش‬
Scrum
111
‫شجاعت‬
‫ِ‌درست‌و‌دست‌و‌پنجه‌نرم‌کردن‌با‌مسائل‌دش‬‫ر‬‫شجاعت‌انجام‌کا‬
‫وار‬
‫تمرکز‬
‌‫تمرکز‌بر‌هدف‌تیم‌و‌کاری‌که‌باید‌در‬
sprint
‌‌‫انجام‌شود‬
‫تعهد‬
‫متعهد‌بودن‌اعضای‌تیم‌نسبت‌به‌دستیابی‌به‌اهداف‬
‫احترام‬
‌‫احترام‌متقابل‌اعضای‌تیم‌برای‌حفظ‬
‌‫توانمندی‌و‌استقالل‬
‫‌رویی‬
‫ه‬‫گشاد‬
‌‫تیم‬
Scrum
‫و‌ذینفعان‌در‌خصوص‌پروژه‌با‌هم‌صریح‌هستند‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫جریان‬
Scrum
112
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫پایه‬ ‫اصول‬
Kanban
▪
‫‌دهید‌شروع‌کنید‬
‫ی‬‫از‌آنچه‌اکنون‌انجام‌م‬
▫
Kanban
‫‌شود‬
‫ی‬‫‌ها‌آغاز‌م‬
‫ه‬‫با‌درک‌روش‌فعلی‌توسعه‌پروژ‬
▫
‌‫‌تواند‬
‫ی‬‫این‌روش‌م‬
Scrum
‌،
XP
‌‫‌روش‌آبشاری‌و‌هر‌روش‌توسعه‬،
‫‌افزار‌دیگری‌باشد‬
‫م‬‫نر‬
▪
‫توافق‌کنید‌که‌تغییر‌مداوم‌و‌تکاملی‌را‌دنبال‌خواهید‌کرد‬
▪
‫‌ها‌و‌عناوین‌فعلی‌را‌در‌نظر‌بگیرید‬
‫ت‬‫‌مسئولی‬،‫‌ها‬
‫ش‬‫در‌ابتدا‌نق‬
113
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫اصلی‬ ‫تمایز‬ ‫وجه‬
Kanban
‫چابک‬ ‫های‬‫روش‬ ‫سایر‬ ‫از‬
114
Kanban XP Scrum
‫تمرکز‌بر‌بهبـود‌روش‌توسـ‬
‌‫عه‬
‫‌افزار‬
‫م‬‫نر‬
،‫تـــیم‬
‌‫تصـــویر‌روشـــنی‌از‬
‌،‫‌افـزار‬
‫م‬‫‌های‌سـاخت‌نر‬
‫ت‬‫فعالی‬
‫‌ه‬
‫ش‬‫نحوه‌تعامل‌با‌دیگر‌بخ‬
‌‫ا‌و‬
‫اعضای‌سازمان‬
‫و‌نحوه‌بهبـود‬
‫در‌طول‌زمان‌را‌دارند‬
‫‌افزار‬
‫م‬‫تمرکز‌بر‌توسعه‌نر‬
‌‫بــه‌دنبــال‌ایجــاد‌محیطــی‬
‫مساعد‌بـرای‌توسـعه‌و‌تغییـ‬
‌‫ر‬
‫‌نویسان‌به‌سـم‬
‫ه‬‫‌‌برنام‬
‫ت‬‫عاد‬
‌‌‫ت‬
‌‫طراحی‌و‌تولیـد‌کـد‌سـاده‌و‬
‫قابل‌تغییر‌است‬
‫تمرکز‬
‫بر‌مدیریت‌پروژه‬
‌،‫به‌مواردی‌مانند‌حوزه‌پـروژه‬
‌‫زمـــان‌تحویـــل‌و‌بررســـی‬
‌‫ـرآورده‬
‫ـ‬‫ـاظ‌ب‬
‫ـ‬‫ـا‌از‌لح‬
‫ـ‬‫‌ه‬
‫ی‬‫خروج‬
‫‌های‌کاربران‌و‬
‫ی‬‫شدن‌نیازمند‬
‫‌پردازد‬
‫ی‬‫ذینفعان‌م‬
‌‫‌های‬
‫ی‬‫‌ترین‌ویژگ‬
‫م‬‫مه‬
Kanban
:
‫‌افزار‬
‫م‬‫‌های‌توسعه‌نر‬
‫ی‬‫قابلیت‌اعمال‌آن‌بر‌تمام‌متدولوژ‬
‫تأکید‌بر‌تکامل‌و‌بهبود‌تدریجی‌و‌پرهیز‌از‌تغییرات‌انقالبی‬
‫‌افزار‌پیشرفته‌برای‌مواجهه‌با‌پیچیدگی‬
‫م‬‫اصول‌مهندسی‌نر‬
‫فصل‌نهم‬
‌:
‫‌افزار‬
‫م‬‫روشهای‌چابک‌توسعه‌نر‬
‫ن‬ ‫توسعه‬ ‫چابک‬ ‫های‬‫روش‬ ‫جایگاه‬ ‫و‬ ‫کاربردپذیری‬ ‫بر‬ ‫تحلیلی‬
‫افزار‬‫رم‬
▪
‫‌گویی‌در‌مقابل‌تغییرات‌را‌فراهم‌می‬
‫خ‬‫چابکی‌توانایی‌تطبیق‌و‌پاس‬
‌‫‌کند‌و‌با‬
‫‌ش‬
‫ی‬‫‌فرصت‌محسوب‌م‬،‫‌که‌یک‌تهدید‌باشد‬
‫ن‬‫‌تغییر‌بیش‌از‌ای‬،‫چابکی‬
‫ود‬
▪
‫‌افزاری‌را‌تضمین‌نمی‬
‫م‬‫‌های‌چابک‌موفقیت‌پروژه‌نر‬
‫ی‬‫استفاده‌از‌متدولوژ‬
‌‫‌کند‬
‫‌اند‬
‫ه‬‫ِ‌متعددی‌به‌شکست‌منجر‌شد‬‫ک‬‫‌های‌چاب‬
‫ه‬‫و‌پروژ‬
▪
‫‌گیری‌از‌مزایای‌هر‌یک‌وجود‌دارد‬
‫ه‬‫‌های‌چابک‌و‌بهر‬
‫ش‬‫امکان‌ترکیب‌رو‬
‌.
‫برای‬
‌‫‌تیم‬،‫مثال‬
Scrum
‌‫‌های‬
‫ت‬‫‌تواند‌از‌فعالی‬
‫ی‬‫م‬
XP
‌‫‌سازی‌بهره‌ببرد‬
‫ه‬‫‌‌برنام‬
‫ج‬‫مثل‌زو‬
‌‫‌های‬
‫م‬‫یا‌در‌تی‬
Kanban
‫جلسات‌روزانه‌اسکرام‌برگزار‌شود‬
▪
‫‌شیوه‬،‫‌ها‌بیش‌از‌این‌که‌راهکاری‌برای‌توسعه‌نرم‌افزار‌باشند‬
‫ش‬‫این‌رو‬
‌‫‌ای‬
‌‫‌های‌نرم‌افزاری‌به‌منظور‌کار‌گروهی‌و‌بروز‬
‫م‬‫برای‌مدیریت‌و‌هدایت‌تی‬
‫خالقیت‌افراد‌تیم‌هستند‬
115
‫فصل‬
10
‫افزار‬‫نرم‬ ‫مهندسی‬
‫ت‬ ‫بر‬ ‫مبتنی‬
‫لفیق‬
‫میکروسر‬ ‫و‬ ‫عملیات‬ ‫و‬ ‫توسعه‬
‫ویس‬
‫شمس‬ ‫فریدون‬
‫پی‬ ‫با‬ ‫مواجهه‬ ‫برای‬ ‫پیشرفته‬ ‫افزار‬‫نرم‬ ‫مهندسی‬ ‫اصول‬
‫چیدگی‬
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf
Principles of Advanced Software Engineering for Managing Complexity.pdf

More Related Content

What's hot

When IoT Meets Artificial Intelligence
 When IoT Meets Artificial Intelligence When IoT Meets Artificial Intelligence
When IoT Meets Artificial IntelligenceVeselin Pizurica
 
Ai for Human Communication
Ai for Human CommunicationAi for Human Communication
Ai for Human CommunicationMills Davis
 
AI Introduction for high school students
AI Introduction for high school studentsAI Introduction for high school students
AI Introduction for high school studentsMireaCartabbia
 
Artificial Intelligence.pdf
Artificial Intelligence.pdfArtificial Intelligence.pdf
Artificial Intelligence.pdfTauqeerIqbal6
 
Smart city as a Digital Twin
Smart city as a Digital TwinSmart city as a Digital Twin
Smart city as a Digital TwinSANGHEE SHIN
 
Digital Governance & Artificial Intelligence
Digital Governance & Artificial IntelligenceDigital Governance & Artificial Intelligence
Digital Governance & Artificial IntelligenceYannis Charalabidis
 
スプラトゥーン2 × 数学(訂正版)
スプラトゥーン2 × 数学(訂正版)スプラトゥーン2 × 数学(訂正版)
スプラトゥーン2 × 数学(訂正版)Takunology
 
Agile HR: Transforming a Human Resources Team Using Scrum
Agile HR:  Transforming a Human Resources Team Using ScrumAgile HR:  Transforming a Human Resources Team Using Scrum
Agile HR: Transforming a Human Resources Team Using ScrumSeedbox
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドToshiyasu Miyabe
 
Deep Learning - The Past, Present and Future of Artificial Intelligence
Deep Learning - The Past, Present and Future of Artificial IntelligenceDeep Learning - The Past, Present and Future of Artificial Intelligence
Deep Learning - The Past, Present and Future of Artificial IntelligenceLukas Masuch
 
Gestion du budget dans un contexte agile : Approche capacitaire
Gestion du budget dans un contexte agile : Approche capacitaireGestion du budget dans un contexte agile : Approche capacitaire
Gestion du budget dans un contexte agile : Approche capacitaireAlain Buzzacaro
 
Object Oriented Business Capability Map - IIBA 2022 - Draft.pptx
Object Oriented Business Capability Map - IIBA 2022 - Draft.pptxObject Oriented Business Capability Map - IIBA 2022 - Draft.pptx
Object Oriented Business Capability Map - IIBA 2022 - Draft.pptxAustraliaChapterIIBA
 
NVIDIA CES 2016 Press Conference
NVIDIA CES 2016 Press ConferenceNVIDIA CES 2016 Press Conference
NVIDIA CES 2016 Press ConferenceNVIDIA
 
Solve for X with AI: a VC view of the Machine Learning & AI landscape
Solve for X with AI: a VC view of the Machine Learning & AI landscapeSolve for X with AI: a VC view of the Machine Learning & AI landscape
Solve for X with AI: a VC view of the Machine Learning & AI landscapeEd Fernandez
 
Color Science for Games(JP)
Color Science for Games(JP)Color Science for Games(JP)
Color Science for Games(JP)Hajime Uchimura
 

What's hot (20)

When IoT Meets Artificial Intelligence
 When IoT Meets Artificial Intelligence When IoT Meets Artificial Intelligence
When IoT Meets Artificial Intelligence
 
Ai for Human Communication
Ai for Human CommunicationAi for Human Communication
Ai for Human Communication
 
AI Introduction for high school students
AI Introduction for high school studentsAI Introduction for high school students
AI Introduction for high school students
 
Artificial Intelligence.pdf
Artificial Intelligence.pdfArtificial Intelligence.pdf
Artificial Intelligence.pdf
 
Smart city as a Digital Twin
Smart city as a Digital TwinSmart city as a Digital Twin
Smart city as a Digital Twin
 
Digital Governance & Artificial Intelligence
Digital Governance & Artificial IntelligenceDigital Governance & Artificial Intelligence
Digital Governance & Artificial Intelligence
 
Strategy Execution Cycle
Strategy Execution CycleStrategy Execution Cycle
Strategy Execution Cycle
 
The future of AI is hybrid
The future of AI is hybridThe future of AI is hybrid
The future of AI is hybrid
 
Business Agility com Strategic Inception na Icatu Seguros
Business Agility com Strategic Inception na Icatu SegurosBusiness Agility com Strategic Inception na Icatu Seguros
Business Agility com Strategic Inception na Icatu Seguros
 
CHAT GPT
CHAT GPTCHAT GPT
CHAT GPT
 
スプラトゥーン2 × 数学(訂正版)
スプラトゥーン2 × 数学(訂正版)スプラトゥーン2 × 数学(訂正版)
スプラトゥーン2 × 数学(訂正版)
 
Bryan_Cassady - AI Powered Innovation.pdf
Bryan_Cassady - AI Powered Innovation.pdfBryan_Cassady - AI Powered Innovation.pdf
Bryan_Cassady - AI Powered Innovation.pdf
 
Agile HR: Transforming a Human Resources Team Using Scrum
Agile HR:  Transforming a Human Resources Team Using ScrumAgile HR:  Transforming a Human Resources Team Using Scrum
Agile HR: Transforming a Human Resources Team Using Scrum
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
 
Deep Learning - The Past, Present and Future of Artificial Intelligence
Deep Learning - The Past, Present and Future of Artificial IntelligenceDeep Learning - The Past, Present and Future of Artificial Intelligence
Deep Learning - The Past, Present and Future of Artificial Intelligence
 
Gestion du budget dans un contexte agile : Approche capacitaire
Gestion du budget dans un contexte agile : Approche capacitaireGestion du budget dans un contexte agile : Approche capacitaire
Gestion du budget dans un contexte agile : Approche capacitaire
 
Object Oriented Business Capability Map - IIBA 2022 - Draft.pptx
Object Oriented Business Capability Map - IIBA 2022 - Draft.pptxObject Oriented Business Capability Map - IIBA 2022 - Draft.pptx
Object Oriented Business Capability Map - IIBA 2022 - Draft.pptx
 
NVIDIA CES 2016 Press Conference
NVIDIA CES 2016 Press ConferenceNVIDIA CES 2016 Press Conference
NVIDIA CES 2016 Press Conference
 
Solve for X with AI: a VC view of the Machine Learning & AI landscape
Solve for X with AI: a VC view of the Machine Learning & AI landscapeSolve for X with AI: a VC view of the Machine Learning & AI landscape
Solve for X with AI: a VC view of the Machine Learning & AI landscape
 
Color Science for Games(JP)
Color Science for Games(JP)Color Science for Games(JP)
Color Science for Games(JP)
 

Similar to Principles of Advanced Software Engineering for Managing Complexity.pdf

آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEWآموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEWfaradars
 
Cloud Computing7
Cloud Computing7Cloud Computing7
Cloud Computing7amiriano
 
Scrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob YavariScrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob YavariIran Agile Community
 
10- Scrum Challenges - Yaghob Yavari
10- Scrum Challenges - Yaghob Yavari10- Scrum Challenges - Yaghob Yavari
10- Scrum Challenges - Yaghob YavariAli Moghadam
 
مجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیک
مجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیکمجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیک
مجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیکfaradars
 
رابط کاری / تجربه کاری (UI/UX)
رابط کاری / تجربه کاری (UI/UX)رابط کاری / تجربه کاری (UI/UX)
رابط کاری / تجربه کاری (UI/UX)Yousef Alipour
 
Macroscop VMS (in Persian)
Macroscop VMS (in Persian)Macroscop VMS (in Persian)
Macroscop VMS (in Persian)Macroscop
 
نرم افزار حضور غیاب تحت ویندوز رایگان
 نرم افزار حضور غیاب تحت ویندوز رایگان  نرم افزار حضور غیاب تحت ویندوز رایگان
نرم افزار حضور غیاب تحت ویندوز رایگان JahangostarParsRaden
 

Similar to Principles of Advanced Software Engineering for Managing Complexity.pdf (12)

آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEWآموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
 
Cloud Computing7
Cloud Computing7Cloud Computing7
Cloud Computing7
 
Burp suite
Burp suiteBurp suite
Burp suite
 
Scrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob YavariScrum Challenges | By Yaghob Yavari
Scrum Challenges | By Yaghob Yavari
 
10- Scrum Challenges - Yaghob Yavari
10- Scrum Challenges - Yaghob Yavari10- Scrum Challenges - Yaghob Yavari
10- Scrum Challenges - Yaghob Yavari
 
مجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیک
مجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیکمجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیک
مجموعه آموزش های برنامه نویسی آردوینو با محوریت پروژه های رباتیک
 
چه هنگام نرم‌افزار آزاد به دام غیرآزاد می‌افتد؟
چه هنگام نرم‌افزار آزاد به دام غیرآزاد می‌افتد؟چه هنگام نرم‌افزار آزاد به دام غیرآزاد می‌افتد؟
چه هنگام نرم‌افزار آزاد به دام غیرآزاد می‌افتد؟
 
رابط کاری / تجربه کاری (UI/UX)
رابط کاری / تجربه کاری (UI/UX)رابط کاری / تجربه کاری (UI/UX)
رابط کاری / تجربه کاری (UI/UX)
 
Macroscop VMS (in Persian)
Macroscop VMS (in Persian)Macroscop VMS (in Persian)
Macroscop VMS (in Persian)
 
نرم افزار حضور غیاب تحت ویندوز رایگان
 نرم افزار حضور غیاب تحت ویندوز رایگان  نرم افزار حضور غیاب تحت ویندوز رایگان
نرم افزار حضور غیاب تحت ویندوز رایگان
 
Brain Storming Tools
Brain Storming ToolsBrain Storming Tools
Brain Storming Tools
 
توسعه امن نرم افزار
توسعه امن نرم افزارتوسعه امن نرم افزار
توسعه امن نرم افزار
 

More from Iranian Domain-Driven Design Community (10)

Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd   seven years afterIan Cooper webinar for DDD Iran: Kent beck style tdd   seven years after
Ian Cooper webinar for DDD Iran: Kent beck style tdd seven years after
 
Clean architecture تاملی در
Clean architecture تاملی درClean architecture تاملی در
Clean architecture تاملی در
 
کشف ناشناخته‌ها به سبک EventStorming
کشف ناشناخته‌ها به سبک EventStormingکشف ناشناخته‌ها به سبک EventStorming
کشف ناشناخته‌ها به سبک EventStorming
 
Event sourcing
Event sourcingEvent sourcing
Event sourcing
 
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلیهنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
هنر کشف گنج، تطبیق مرزها - علیرضا رحمانی خلیلی
 
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
"DDD Balm on Legacy Wounds" presented at 2nd #DDDTalks event, Tehran, Iran
 
How Event Strming can helps to find Bounded Contexts
How Event Strming can helps to find Bounded ContextsHow Event Strming can helps to find Bounded Contexts
How Event Strming can helps to find Bounded Contexts
 
Autonomous Bounded Contexts
Autonomous Bounded ContextsAutonomous Bounded Contexts
Autonomous Bounded Contexts
 
How #BDD helps #DDD
How #BDD helps #DDDHow #BDD helps #DDD
How #BDD helps #DDD
 
جادوی زبان، طلسم پیچیدگی
جادوی زبان، طلسم پیچیدگیجادوی زبان، طلسم پیچیدگی
جادوی زبان، طلسم پیچیدگی
 

Principles of Advanced Software Engineering for Managing Complexity.pdf