صفحه 1:
Agile
صفحه 2:
سخت افزار و ضعف روشهای توسعه نرم افزار در ۲
1
باعث بوجود آمدن بحران نرم افزار كرديده است كه يكى از علل
بحران » عدم وجود روشهاى مناسب جهت توليد و توسعه نرم افزار
ليد و توسعه نرم افزار» ذاتأ يكك فرآ يند بى نظم است كه جهت نه
توسعه نرم افزار مشخص مى كند كه جه ف رآورده اى ( :10171284
0 و در جه زمانى ( 1/17126©12) توليد شود.
صفحه 3:
۳۳
۳
“bes ١
0
ull
صفحه 4:
۳
“i
متد: فازها به
ژٍی » فازها ب
تدولوق
ele : CLigh
it wei
eight
۵(
صفحه 5:
۳
۱ ۲ ِا"
Mell
my
1 ۱۱۱
صفحه 6:
11
wh
صفحه 7:
صفحه 8:
صفحه 9:
“ii
صفحه 10:
ا
ull
صفحه 11:
زياد است اما
جابكك بسيار زيا
ها (2(/65)) در روشهای چاب
00
ار
0
صفحه 12:
های چابک اندازه تیم کوچک است (بین Care bye
های سنگین وزن اندازه تیم توسعه بز رگ است
صفحه 13:
صفحه 14:
14
Heavy Methods
Predictive
Conformation to plan
Large
‘Autocratic
Heavy
Process-Oriented
Limited
Predictable
Large
Agile Methods
‘Adaptive
Business Value
Small
Low
People-Oriented
Numerous
Unpredictable/Exploratory
Small/Creative
ww.prozhe.c
parameter
‘Approach’
Success Measurement
Project Size
Management Style
Documentation
‘Emphasis
Gycles
Domain
Team Size
صفحه 15:
00
0
1 My
7 نا ۳ ۳
صفحه 16:
۱۲6۲۵۲6 ۲
Adaptive software develop
Dynamic software devel
Open source soft ware d
صفحه 17:
صفحه 18:
ia
۳۳۳
ار کامل شده است . در واقع در توسعه افزایشی ما پروژه را به تکه ها
صفحه 19:
]ند
1
می کند E
محصول خود را توسعه دهید »
ید هرلت 000
سعه محصول می گیرد.
صفحه 20:
که امکان دارد
اجایی
سيستم
نامه نویسی ت
انجام هر یک از فعالیت های ( طراحی بر
ni
صفحه 21:
ل است بر برنامه نویسی دو نفره ( ۳۳۲۲۳7۳۳۸۷ (pair » بازنویسی کا
1
۳ كدهاء جلوگیری از کد نویسی واحد هاتازما. ۲ ۲
صفحه 22:
صفحه 23:
۳۳
صفحه 24:
صفحه 25:
0
صفحه 26:
رن ی ۷
۸
oT ان
Y i)
صفحه 27:
in ۳۳
ا ۱۱
۱
۳ 00
صفحه 28:
یش پیروی از اصول
Wt
۱۸۸
Mm
1
il!
iil
۳
Agile
www.prozhe.com
1
مقدمه :
پیشرفت شگرف سخت افزار و ضعف روشهای توسعه نرم افزار در کنترل پیچیدگی
نرم افزار باعث بوجود آمدن بحران نرم افزار گردیده است که یکی از علل اساسی در
خلق این بحران ،عدم وجود روشهای مناسب جهت تولید و توسعه نرم افزار می باشد.
فرآیند تولید و توسعه نرم افزار ،ذاتأ یک فرآیند بی نظم است که جهت نظم دادن به
این بی نظمی ها ،از متدولوژی ها توسعه نرم افزار بهره می گیریم.
متدولوژی توسعه نرم افزار مشخص می کند که چه فرآورده ای ( ، ) Whatتوسط
چه کسی ( ) Whoو در چه زمانی ( ) Whenتولید شود.
2
www.prozhe.com
تعریف ( Agileچابک )
ک تد ت وسعه ن رم افزار استک ه ب ر پ ایه ت وسعه ت کراریو افزایشی
Agileی م
عریف یک ند .م تد
م
ل دریجیرا ت
ب نا ش ده استک ه رویه ط راحیس ازگار ،ت کام ت
اعث یش وند ک ه
م
ک ا ت قسیم ک رد نک ارها ب ه ط رح هایک وچکتر ،ب
چاب ب
سبت ه ت غییراتانعطاف
ب
ت کرارها در چارچوبهایزمان یک وتاه ت ریانجام ش ده و ن
پ ذیر ب اشند.
ویژگی متفاوت فرآیندهای چابک این است که در جهت رقابت بر سر مشتری حتی از
تغییراتی که در اواخر توسعه نرم افزار پدیدار می شوند استقبال کرده و رفتار خود را بر
اساس تفکرات اعمال شده ،تنظیم و هم سو می کند.
3
www.prozhe.com
تقسیم بندی متدولوژی ها
– 1سنگین وزن ( : ) Heavy weightاین متدولوژی ها بیش از اندازه ماشین گرا
و مکانیزه بوده و به صورت فرآیندی وارد جزئیات غیر ضروری می شود .فازها به طور
کامل اجرا می شوند و مستندات به طور کامل ایجاد می شوند.
– 2سبک وزن ( : ) Light weightدر این متدولوژی ،فازها به صورت کوتاه
مدت بوده و مستندات به اندازه ایجاد می شوند .متدولوژی چابک در دسته متدولوژی
های سبک وزن قرار می گیرد.
4
www.prozhe.com
مقایسه متدولوژی ها با یکدیگر
•روش
•معیار موفقیت
•اندازه پروژه
•سبک مدیریت
•چرخه
•اندازه تیم
5
www.prozhe.com
روش
روشهای چابک بصورت Adaptiveيا سازگار عمل میکنند يعنی با
شرايط منطبق میشوند
روشهای سنگين وزن بصورت پيشگو يا Predictiveعمل میکنند
يعنی در آغاز همه چيز را پيشبينی میکنند
نیست.
بينینیست.
شبينی
قابلپيپيش
ابتداقابل
چيز ازازابتدا
همهچيز
همه
6
www.prozhe.com
معيار موفقيت
معيار موفقيت در روشهای
( )Business Valueاست
چاب ک دس تيابی ب ه ارزش کاری
در روشهای س نگين وزن معيار موفقيت پيش رفت ن در راس تای طرح اوليه
است
ندارند
پذيریندارند
فپذيری
انعطاف
وزنانعطا
سنگينوزن
هایسنگين
روشهای
روش
7
www.prozhe.com
7
اندازه پروژه
اندازه پروژه در روشهای چابک کوچک است
اندازه پروژه در روشهای سنگين وزن میتواند بسيار بزرگ باشد
کاهد!!!!!!
چابکنمنمییکاهد
هایچابک
روشهای
محبوبيتروش
مسألهازازمحبوبيت
اينمسأله
اين
بيشتر
بسياربيشتر
کوچکبسيار
هایکوچک
پروژهههای
تعدادپروژ
کهتعداد
دهدکه
نشانممییدهد
(آمارنشان
(آمار
است)
است)
8
www.prozhe.com
سبک مديريت
مديريت در روشهای چابک بصورت غيرمتمرکز و آزاد است
در روشهای سنگين وزن مديريت بصورت مطلق و استبدادی است
کند
فراهمممییکند
بهتررارافراهم
گيریبهتر
تصميمگيری
امکانتصميم
غيرمتمرکزامکان
مديريتغيرمتمرکز
مديريت
9
www.prozhe.com
نحوه مستندسازی
مستندسازی در روشهای چابک بصورت بسيار محدود انجام میشود
در روشهای سنگين وزن مستندسازی بصورت کامل و جامع انجام میشود
بسيار
کاربسيار
سنگين,کار
هایسنگين,
سازيهای
مستندسازي
مواردمستند
بسياریازازموارد
دربسياری
در
است
زمانبریاست
دشوارووزمانبری
دشوار
10
www.prozhe.com
چرخهها
تعداد چرخهها ( )Cyclesدر روشهای چابک بسيار زياد است اما زمان
آنها کوتاست
در روشهای سنگين وزن تعداد چرخهها کم است ولی زمان آنها بسيار زياد
است
انتظار
زمانانتظار
شدنزمان
طوالنیشدن
موجبطوالنی
توليد,موجب
هایتوليد,
چرخههای
بودنچرخه
زمانبربودن
زمانبر
شود
نشرهاممییشود
رسيدنبهبهنشرها
برایرسيدن
برای
11
www.prozhe.com
اندازه تيم
در روشهای چابک اندازه تيم کوچک است (بين 20تا 30نفر)
در روشهای سنگين وزن اندازه تيم توسعه بزرگ است
بود
خواهدبود
بيشترخواهد
بسياربيشتر
کوچکبسيار
تيمکوچک
درتيم
همکاریدر
خالقيتووهمکاری
خالقيت
12
www.prozhe.com
برگشت سرمايه
در روشهای چابک سرمايه خيلی زود در طول پروژه بر میگردد
در روشهای سنگين وزن برای برگشت سرمايه بايد تا انتهای پروژه صبر
کرد
اند
بصرفههاند
اقتصادیبصرف
لحاظاقتصادی
چابکازازلحاظ
هایچابک
روشهای
روش
13
www.prozhe.com
parameter
Agile Methods
Heavy Methods
Adaptive
Predictive
Business Value
Conformation to plan
Small
Large
Decentralized
Autocratic
Low
Heavy
People-Oriented
Process-Oriented
Cycles
Numerous
Limited
Domain
Unpredictable/Exploratory
Predictable
Small/Creative
Large
Approach
Success Measurement
Project Size
Management Style
Documentation
Emphasis
Team Size
www.prozhe.com
14
تیم ها بین 5الی 9نفره
بیانیه توسعه نرم افزار چابک
تیم ها دارای ساختاری باز می
افراد و
تعامالت
کاهش ریسک پروژه
پا س خ
گ
و
ی
ی
به
شکستن پروژه به طرح
تغییرات
های کوچکتر
زار
م اف
نر
لا
قاب
هدف اصلی هر توسعه نرم افزار
15
ارتباط بین تیم ها از طریق ویدئو
کنفرانس
اصول بیانیه
جرا
باشند
هریک از اعضای تیم باید به
ه
م
ک
ار
یکدیگر گزارش دهند
ی با
م
شت
ر
ی
ارتباط از طریق نماینده Stack holderو
نماینده هر تیم
اولویت بندی و ارزشگذاری اهداف
www.prozhe.com
متد چابک
XP•
FDD•
Crystal•
Scrum•
Water Fall•
Iterate & Incremental•
Adaptive software development•
Dynamic software development•
Open source soft ware development•
www.prozhe.com
16
مدل : incremental & iterate
توسعه تکراری & افزایشی ،در واقع قلب چرخه توسعه نرم افزار است .این مدل با
طراحی اولیه شروع کرده و با استفاده از چرخه تکرار ،توسعه محصول را به پیش می
برد .مدل مذکور بخش اصلی بسیاری از فرآیندهای توسعه نرم افزار نظیر Rupو XP
و تمامی متد توسعه نرم افزار می باشد .این امکان وجود دارد که هریک از متد باال را به
صورت جداگانه یا ترکیبی استفاده کرد.
17
www.prozhe.com
تعریف توسعه : incremental
مرحل ه بندی ،زمان بندی اس تراتژی در بخ ش های مختلف س یستم که در زمان های
مختلف و به میزان متفاوت پیشرفت کرده اند و با اجتماع بخش های مختلف در حال
حاضر کامل شده است .در واقع در توسعه افزایشی ما پروژه را به تکه های کوچکتر
تقسیم کرده و آنها را جهت توسعه ،زمان بندی کرده و به محض تکمیل شدن آنها را
یکپارچ ه م ی کنیم .ای ن روی ه مان ع توس عه تکراری نبوده بلک ه م ی توان د ب ا استراتژی
iterateهمکاری کند.
18
www.prozhe.com
تعریف توسعه : iterate
زمان بندی مجدد اس تراتژی که زمان مجموع ه ایس ت از بخ ش های مختل ف سیستم
جه ت بازبین ی و توس عه بخ ش های مختل ف س یستم .در واق ع در توسعه تکراری ،
کارهایی را که باید انجام دهیم ،در یک مجموعه زمانی کنار یکدیگر می گذاریم و به
شما کمک می کند محصول خود را توسعه دهید ،هر لحظه ای که تصمیم به اعمال
تغییرات یا توسعه محصول می گیرد.
19
www.prozhe.com
مزایا :
•توسعه سیستم تا جایی که امکان دارد
• امکان انجام هر یک از فعالیت های ( طراحی ،برنامه نویسی ،تست ،تحلیل
) چندین دفعه
• امکان انجام هر یک از فعالیت های ( طراحی ،برنامه نویسی ،تست ،تحلیل
) در زمان های مختلف
20
www.prozhe.com
مدل ) : XP ( extreme programming
ی ک متدولوژ ی توس عه نرم افزار م ی باش د ک ه جه ت افزای ش کیفیت نرم افزار و
پاسخگویی به تغییرات مورد نیاز مشتری به کار گرفته می شود .عناصر مدل XP
مشتمل است بر برنامه نویسی دو نفره ( ، ) pair programmingبازنویسی کدها ،
تست واحد کلیه کدها ،جلوگیری از کد نویسی واحد ها تا زمانی که واقعا به آنها نیاز
داریم ،ساختار مدیریت یکپارچه ،کد نویسی به صورت ساده و واضح ،پیش بینی
تغییر در نیازهای مشتری و میزان روابط مشتری و برنامه نویسان
21
www.prozhe.com
شامل پنج فاز استXP چرخه حيات
Exploration
Planning
Iterations To Release
Product Tionizing
Maintenance and Dead
www.prozhe.com
22
Pair programming
•تعریف
•شرایط الزم جهت PP
•کاربرد PPدر صنعت
•مزایا و معایب
23
www.prozhe.com
برنامه نویسی جفتی یکی از تکنیک های توسعه نرم افزار چابک است که در آن ؛
برنامه نویسی با یکدیگر در یک محیط کاری و بر روی یک پروژه کار می کنند.
PPرا می توان یک توانایی اجتماعی دانست که منجر به یادگیری شده و شما می
کوشید که کاری را با همکاری یکدیگر بدون در نظر گرفتن شرایط و وضعیت
همکاریتان انجام دهید.
24
www.prozhe.com
– 1برنامه نویس ( ) Driverکه کد نویسی برنامه را به عهده دارد.
– 2مشاهده گر ( ) Navigatorکه در طول زمانی که برنامه نویس در حال
کد نویسی است ،هر یک از خطوط نوشته شده را مورد بازبینی قرار می دهد.
مشاهده گر در طول بازبینی پروژه مسیر ( استراتژی ) پروژه را در نظر گرفته و ایده
هایی را برای حل مسئله به برنامه نویس ارائه می دهد.
25
www.prozhe.com
شرایط الزم جهت: PP 1
•همدیگر را از لحاظ دهنی برای کد نویسی آماده کنید.
•بر روی یک راه حل توافق کنید.
•زیاد صحبت کنید.
•لحظاتی را برای تفریح و سرگرمی هایتان صرف کنید.
•غالبا نقش هایتان را عوض کنید ( هر نیم ساعت )
•سطح رابطه بین خودتان را باال ببرید.
•بر روی هدف های کوچک سریعا توافق کنید.
•قبل از شروع به کار ،راجع به کاری که قرار است انجام دهید ،فکر کنید و با یکدیگر صحبت
کنید.
•هم گروهی خود را حمایت کرده و سواالت او را پاسخگو باشید.
26
www.prozhe.com
در صنعتPP کاربرد
www.prozhe.com
27
مزایا
•افزایش پیروی از اصول
•کدنویسی بهتر
•خطای کمتر
•افزایش خردمندی
•افزایش روحیه افراد
•افزایش همکاری تیمی
28
www.prozhe.com