28
روش ﻫﺎي ﭼﺎﺑﮏ(Agile Methods) ﺳﯿﺪ اﻣﯿﺮﻫﺎدي ﻣﯿﻨﻮﻓﺎم

ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

روش هاي چابک

(Agile Methods)

سید امیرهادي مینوفام

Page 2: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

روش چابکمهندسی نرم افزار چابک، از راهبردهاي فلسفی و یک مجموعه توسعه،•

.ترکیب شده است

:توسعه دهندگان را به موارد زیر تشویق می کندراهبردهاي فلسفی •

oرضایت مشتري

oتحویل افزایشی زود

o تیم هاي پروژه کوچک با انگیزة باال

oوش هاي غیررسمیر

oحداقل محصوالت کاري مهندسی نرم افزار

o سادگی توسعه

:، بر موارد زیر تاکید دارندراهبردهاي توسعه•

o تحویل در مدت تحلیل و طراحی

oارتباطات فعال و ادامه دار بین توسعه دهندگان و مشتریان

Page 3: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

بیانیۀ توسعۀ نرم افزار چابکنفر از توسعه دهندگان نرم 16و ) Kent Beck(، کنت بک 2001در سال •

منسوب » اتحاد چابک«که به ( افزار معروف، نویسندگان و مشاوران،

امضا کردند که عبارت بود » بیانیه اي براي توسعه نرم افزار چابک«) است

:از

...یافته ایم که در آنهاروش هاي بهتري براي ایجاد نرم افزارها ما •

.ترجیح می دهیم فرآیندهارا بر افراد و تعامالت -1

.ترجیح می دهیممستندات زیاد ي که کار می کند را بر نرم افزار -2

.ترجیح می دهیممذاکرات قراردادي را بر مشارکت مشتریان -3

.ترجیح می دهیمپیشروي بر اساس طرح و برنامه را بر پاسخ به تغییرات -4

Page 4: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

دالیل اهمیت روش هاي چابک

محیط تجارت مدرن که بذر سیستم هاي مبتنی بر کامپیوتر و محصوالت •

. استدایم التغییر و تندگامکامپیوتري را پراکنده است،

قابل قبول مهندسی نرم افزار جایگزینمهندسی نرم افزار چابک، یک •

مرسوم براي رده هاي معین نرم افزار و انواع معین پروژه هاي نرم

.افزاري ارائه می دهد

سرعت باال را با موفقروش هاي چابک ثابت کرده اند که سیستم هاي •

.می دهند تحویل

Page 5: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

گام هاي روش چابک

، مدلسازي، طراحی، ارتباطاتدر این روش، فعالیت هاي پایۀ چارچوب یعنی •

یک مجموعه کار کمینه اما به . ، به قوت خود باقی هستندبکارگیريو ساخت

.سوق می دهد تحویلو ساختمی شوند که تیم پروژه را به سمت نگاشت

قابل قبول مهندسی نرم افزار مرسوم جایگزینمهندسی نرم افزار چابک، یک •

براي رده هاي معین نرم افزار و انواع معین پروژه هاي نرم افزاري ارائه می

.دهد

سرعت باال تحویلرا با موفقروش هاي چابک ثابت کرده اند که سیستم هاي •

.می دهند

Page 6: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

یچابک

. دهدپاسخ مناسبی ، تغییراتیک تیم چابک تیمی است که نسبت به •

:رخ می دهد مانندفرآیند ایجاد نرم افزار زیادي در تغییرات •

ساخته شدهنرم افزار تغییر در •

اعضاي تیمتغییر در •

فناوري جدیدتغییر در •

.و هر نوع تغییري که در نرم افزار نهایی تاثیر دارد •

Page 7: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

روش هاي چابک تیم نرم افزاري را به انجام چه کارهایی تشویق می کنند؟

-1ایجاد ارتباط میان اعضاي تیم و نیز میان متخصصین با مشتریان و همچنین •

میان مهندسان نرم افزار با مدیران

در اهمیت کارهاي میانی بر عدم تاکید نرم افزار و تحویل سریع بر تاکید-2

ساخت نرم افزار

نرم افزاري می پذیرد و می کوشد تا نگرش بخشی از تیم را به عنوان مشتري -3

.تبدیل کند» ما «را به » ما و آنها «

هاي محدودیت در دنیاي غیرقطعی امروز، طرح و برنامه ریزي اینکه پذیرش -4

.بودانعطاف پذیر خاصی دارد و بنابراین باید نسبت به تغییرات

Page 8: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)1(چابکی و هزینۀ تغییرات .هزینه انجام تغییرات در نرم افزار با پیشرفت پروژه به صورت غیرخطی زیاد می شود•

در ابتداي ساخت نرم افزار یعنی هنگام جمع آوري نیازمندیها، پذیرش تغییرات نسبتا •

در این مرحله ممکن است یکی از سناریوهاي استفاده از سیستم تغییر کرده . آسان است

.یا لیستی از عملکردها به سیستم اضافه شود

.هزینه انجام تغییرات و زمان الزم براي انجام آنها حداقل است•

با گذشت چندماه از شروع پروژه، و بودن در مرحله تست، درخواست تغییر در •

عملکردهاي اصلی سیستم، ممکن است نیازمند انجام اصالحات در معماري نرم افزار،

طراحی و ساخت چند مولفه جدید، اصالح چند مولفه دیگر، طراحی قسمت هاي جدید

.باشد... و

Page 9: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)2(چابکی و هزینۀ تغییرات

در صورت انجام تغییرات هزینه به شدت افزایش می یابد و زمان الزم •

براي تضمین اینکه این تغییرات عوارض جانبی در عملکرد نهایی نرم افزار

.ندارند، بسیار زیاد می شود

طرفداران روشهاي چابک معتقدند فرآیند چابک هزینه تغییرات را •

کاهش می دهد، زیرا نرم افزار به صورت افزایشی انتشار می یابد، بنابراین

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

Page 10: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)3(چابکی و هزینۀ تغییرات

هزینه تغییرات به عنوان تابعی از زمان در توسعه •

Page 11: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

فرآیند چابک

فرضیات کلیدي براي فرآیند نرم افزار چابک•

پیش بینی اینکه کدام یک از نیازهاي نرم افزار، ثابت و کدامیک متغیرند و -1

.اولویت هاي مشتري چگونه تغییر می کنند، سخت است

پیش . ، یکی درمیان انجام می شوندساختو طراحیدر بسیاري از پروژه ها، -2

، براي اثبات طراحی ساختمورد نیاز است قبل از اینکه طراحیبینی اینکه چقدر

. استفاده شود، سخت است

آنطور که می خواهیم ) از دیدگاه طراحی( تحلیل، طراحی، ساخت و تست -3

.قابل پیش بینی نیستند

Page 12: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

مهمترین و پرکاربردترین روشهاي چابک

)Extreme Programming(برنامه نویسی سریع -1

2- Scrum

Page 13: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Extreme Programming(سریع نویسی برنامه

توسعه یافته Kent Beckیکی از پرکاربردترین روش هاي چابک است که توسط

.است

از شی گرایی استفاده می کند و چارچوب فعالیت هاي آن چهار مرحله XPفرآیند

:دارد

طرح و برنامه

طراحی

کدنویسی

تست

Page 14: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Extreme Programming(سریع نویسی برنامه

توسعه Kent Beckیکی از پرکاربردترین روش هاي چابک است که توسط

.یافته است

ي آن چهار فعالیت هااز شی گرایی استفاده می کند و چارچوب XPفرآیند

:مرحله دارد

طرح و برنامه

طراحی

کدنویسی

تست

Page 15: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

فرآیند برنامه نویسی سریع

Page 16: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

XP :طرح و برنامه

:مراحل

o ي خود را بیان می کندخواسته هامشتري.

o تیمXP با گوش دادن به این خواسته ها مجموعه اي ازUser Story را جمع

مشابه . (آوري می کند که شامل نیازمندیهاي الزم و عملکردهاي نرم افزار است

Use Case ها(

o هر هزینه زمانیStory برآورده شده و در صورت نیاز به بیش از سه هفته، از

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

.می توانند ایجاد شونددر هر زمانی از پروژه ها Story: نکته

Page 17: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

طراحی

o در این مرحله به شدت بر اصلKIS )Keep It Simple (تاکید می شود.

».طراحی ساده همیشه به طراحی پیچیده ترجیح داده می شود«

o بر انجام بازسازي)Refactory (به فرآیند بهبود کد نرم افزار به گونه [. تاکید می شود

اي که ساختار درونی نرم افزار بهتر شود، ولی رفتار خارجی آن تغییر نکند، بازسازي می

.گویند

o ،پاکسازيدر این مرحله، کد نرم افزار )Clean Up( ، طراحی)Design( ، اصالح

)Modify ( ساده سازي و)Simplify ( اشکاالتمی شود تا احتمال وجود )Bug ( به

. حداقل برسد

o ایده اصلیXP انجام شودپس از کدنویسی و هم پیش از کدنویسی هم طراحیاین است که.

Page 18: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

کدنویسی

o واحد تستقبل از شروع کدنویسی ابتدا تعدادي )Unit Test ( ایجاد می

. شود

o یک نرم افزار، هر تستStory مربوط به انتشار نرم افزار را تست می کند.

oسواالت امتحانی را داریم و فقط روي یافتن جواب آنها تمرکز می : مثال

کنیم، یعنی کد را به گونه اي خواهیم نوشت که از این تست ها با

.موفقیت عبور کند

Page 19: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Unit Test(تست واحد : کدنویسی

oساختمان داده هانرم افزار متمرکز می شود و مولفه تست واحد بر یک ،

اشتباهات آن با سایر مولفه ها را تست می کند تا واسط ارتباطی و عملکرد

.در آن مولفه را پیدا کند محلی

o برنامه نویسی درXP به صورت زوج برنامه نویسی)Pair Programming (

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

.را می نویسند Storyکد یک

Page 20: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

فواید زوج برنامه نویسی: کدنویسی

o انجام می شود زیرا دو فکر بهتر از یک فکر بی درنگ به صورت حل مساله

.است

oبهتر انجام می شود زیرا کد نرم افزار به هنگام نوشته تضمین کیفیت ،

.می شود بازبینیشدن

o ایفا می کند مثال یکی به نقش متفاوتی در حل مساله هر یک از این دو نفر

ي کدنویسی توجه استانداردهاکد دقت می کند و دیگري به جزئیات

.دارد

Page 21: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

تست

o ،عملکر در این این مرحله عالوه بر انجام تست واحد

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

o مورد نیاز استتست جامع یک.

o ،نیز انجام می تست پذیرش یا تست مشتري در پایان

.شود

Page 22: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

Scrum

o گرفته شده، در سال راگبی این روش که نام آن از یک فعالیت در بازي

.توسط جف ساترلند و تیمش ارائه شد 1990

oاین روش داراي پنج فعالیت است:

)Requirements(جمع آوري نیازمندیها -1

)Analysis(تحلیل -2

)Design(طراحی -3

)Evolution(تکامل -4

)Delivery(تحویل -5

Page 23: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

Scrumمفاهیم موجود در روش

o لیست کارهاي ناتمام)Backlog(

o با تمام سرعت دویدن)Sprint(

o جلسات)Scrum(

o دموها)Demo(

Page 24: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

�ند ٓScrumجر�ان فرا

Page 25: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Backlog(لیست کارهاي ناتمام

o شامل فراهم کردن یک لیست اولویت بندي شده از

نیازمندیهاي پروژه یا ویژگی هایی از آن است که براي مشتري

.اهمیت دارد

o ممکن است در هر زمانی از پروژه، مواردي بهBacklog اضافه

.شود

oبوسیله آن می توان به استقبال تغییرات رفت.

Page 26: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Sprint(با تمام سرعت دویدن

o براي انجام هر یک از موارد درونBacklog الزم است کارهایی

.انجام شوند

o روز انجام 30این کارها باید در یک زمان از پیش تعیین شده مثال

.می گویند Sprintدوره کاري شوند که به این

oدر طول یک : نکتهSprint تغییرات اضافه شده به ،Backlog مدنظر

کار محیط پایدار قرار نمی گیرند و بدین ترتیب اعضاي تیم در یک

. می کنند

Page 27: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Scrum Meeting(جلسات اسکرام

o توسط هر روز دقیقه اي و 10و معموال کوتاهجلساتی هستند که به صورت بسیار

. تیم نرم افزاري برگزار می شوند

o برگزار می شوند به آن ایستادهاز آنجایی که جلسات به صورتStand up

meeting هم می گویند.

o 1: در هر جلسه پاسخ گویندسه سوال کلیدي همه اعضاي تیم موظفند به

o1- ؟چه کردیداز جلسه قبل تا حاال

o2- بر سر راه شماست؟چه مشکالتی

o3- ؟چه می خواهید بکنیدتا جلسه بعد

Page 28: ﮏﺑﺎﭼ يﺎﻫ شور (Agile Methods)naiau.ac.ir/wp-content/uploads/2015/10/Agile-Methods.pdf · ﮏﺑﺎﭼ شور يﺎﻫ مﺎﮔ ،يزﺎﺴﻟﺪﻣ ،ﯽﺣاﺮﻃ

)Demo(دموها

o به مشتري تحویل می دمومشتري به صورت افزایشهر

.کند ارزیابیشود تا آن را

o حتی اگر این دمو داراي تمام عملکردهاي مورد نظر

مدت زمان مشخص مشتري نباشد، باز هم باید در یک

.داده شود تحویلبه مشتري