Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
روش هاي چابک
(Agile Methods)
سید امیرهادي مینوفام
روش چابکمهندسی نرم افزار چابک، از راهبردهاي فلسفی و یک مجموعه توسعه،•
.ترکیب شده است
:توسعه دهندگان را به موارد زیر تشویق می کندراهبردهاي فلسفی •
oرضایت مشتري
oتحویل افزایشی زود
o تیم هاي پروژه کوچک با انگیزة باال
oوش هاي غیررسمیر
oحداقل محصوالت کاري مهندسی نرم افزار
o سادگی توسعه
:، بر موارد زیر تاکید دارندراهبردهاي توسعه•
o تحویل در مدت تحلیل و طراحی
oارتباطات فعال و ادامه دار بین توسعه دهندگان و مشتریان
بیانیۀ توسعۀ نرم افزار چابکنفر از توسعه دهندگان نرم 16و ) Kent Beck(، کنت بک 2001در سال •
منسوب » اتحاد چابک«که به ( افزار معروف، نویسندگان و مشاوران،
امضا کردند که عبارت بود » بیانیه اي براي توسعه نرم افزار چابک«) است
:از
...یافته ایم که در آنهاروش هاي بهتري براي ایجاد نرم افزارها ما •
.ترجیح می دهیم فرآیندهارا بر افراد و تعامالت -1
.ترجیح می دهیممستندات زیاد ي که کار می کند را بر نرم افزار -2
.ترجیح می دهیممذاکرات قراردادي را بر مشارکت مشتریان -3
.ترجیح می دهیمپیشروي بر اساس طرح و برنامه را بر پاسخ به تغییرات -4
دالیل اهمیت روش هاي چابک
محیط تجارت مدرن که بذر سیستم هاي مبتنی بر کامپیوتر و محصوالت •
. استدایم التغییر و تندگامکامپیوتري را پراکنده است،
قابل قبول مهندسی نرم افزار جایگزینمهندسی نرم افزار چابک، یک •
مرسوم براي رده هاي معین نرم افزار و انواع معین پروژه هاي نرم
.افزاري ارائه می دهد
سرعت باال را با موفقروش هاي چابک ثابت کرده اند که سیستم هاي •
.می دهند تحویل
گام هاي روش چابک
، مدلسازي، طراحی، ارتباطاتدر این روش، فعالیت هاي پایۀ چارچوب یعنی •
یک مجموعه کار کمینه اما به . ، به قوت خود باقی هستندبکارگیريو ساخت
.سوق می دهد تحویلو ساختمی شوند که تیم پروژه را به سمت نگاشت
قابل قبول مهندسی نرم افزار مرسوم جایگزینمهندسی نرم افزار چابک، یک •
براي رده هاي معین نرم افزار و انواع معین پروژه هاي نرم افزاري ارائه می
.دهد
سرعت باال تحویلرا با موفقروش هاي چابک ثابت کرده اند که سیستم هاي •
.می دهند
یچابک
. دهدپاسخ مناسبی ، تغییراتیک تیم چابک تیمی است که نسبت به •
:رخ می دهد مانندفرآیند ایجاد نرم افزار زیادي در تغییرات •
ساخته شدهنرم افزار تغییر در •
اعضاي تیمتغییر در •
فناوري جدیدتغییر در •
.و هر نوع تغییري که در نرم افزار نهایی تاثیر دارد •
روش هاي چابک تیم نرم افزاري را به انجام چه کارهایی تشویق می کنند؟
-1ایجاد ارتباط میان اعضاي تیم و نیز میان متخصصین با مشتریان و همچنین •
میان مهندسان نرم افزار با مدیران
در اهمیت کارهاي میانی بر عدم تاکید نرم افزار و تحویل سریع بر تاکید-2
ساخت نرم افزار
نرم افزاري می پذیرد و می کوشد تا نگرش بخشی از تیم را به عنوان مشتري -3
.تبدیل کند» ما «را به » ما و آنها «
هاي محدودیت در دنیاي غیرقطعی امروز، طرح و برنامه ریزي اینکه پذیرش -4
.بودانعطاف پذیر خاصی دارد و بنابراین باید نسبت به تغییرات
)1(چابکی و هزینۀ تغییرات .هزینه انجام تغییرات در نرم افزار با پیشرفت پروژه به صورت غیرخطی زیاد می شود•
در ابتداي ساخت نرم افزار یعنی هنگام جمع آوري نیازمندیها، پذیرش تغییرات نسبتا •
در این مرحله ممکن است یکی از سناریوهاي استفاده از سیستم تغییر کرده . آسان است
.یا لیستی از عملکردها به سیستم اضافه شود
.هزینه انجام تغییرات و زمان الزم براي انجام آنها حداقل است•
با گذشت چندماه از شروع پروژه، و بودن در مرحله تست، درخواست تغییر در •
عملکردهاي اصلی سیستم، ممکن است نیازمند انجام اصالحات در معماري نرم افزار،
طراحی و ساخت چند مولفه جدید، اصالح چند مولفه دیگر، طراحی قسمت هاي جدید
.باشد... و
)2(چابکی و هزینۀ تغییرات
در صورت انجام تغییرات هزینه به شدت افزایش می یابد و زمان الزم •
براي تضمین اینکه این تغییرات عوارض جانبی در عملکرد نهایی نرم افزار
.ندارند، بسیار زیاد می شود
طرفداران روشهاي چابک معتقدند فرآیند چابک هزینه تغییرات را •
کاهش می دهد، زیرا نرم افزار به صورت افزایشی انتشار می یابد، بنابراین
.در یک افزایش، تغییرات بهتر کنترل می شوند
)3(چابکی و هزینۀ تغییرات
هزینه تغییرات به عنوان تابعی از زمان در توسعه •
فرآیند چابک
فرضیات کلیدي براي فرآیند نرم افزار چابک•
پیش بینی اینکه کدام یک از نیازهاي نرم افزار، ثابت و کدامیک متغیرند و -1
.اولویت هاي مشتري چگونه تغییر می کنند، سخت است
پیش . ، یکی درمیان انجام می شوندساختو طراحیدر بسیاري از پروژه ها، -2
، براي اثبات طراحی ساختمورد نیاز است قبل از اینکه طراحیبینی اینکه چقدر
. استفاده شود، سخت است
آنطور که می خواهیم ) از دیدگاه طراحی( تحلیل، طراحی، ساخت و تست -3
.قابل پیش بینی نیستند
مهمترین و پرکاربردترین روشهاي چابک
)Extreme Programming(برنامه نویسی سریع -1
2- Scrum
)Extreme Programming(سریع نویسی برنامه
توسعه یافته Kent Beckیکی از پرکاربردترین روش هاي چابک است که توسط
.است
از شی گرایی استفاده می کند و چارچوب فعالیت هاي آن چهار مرحله XPفرآیند
:دارد
طرح و برنامه
طراحی
کدنویسی
تست
)Extreme Programming(سریع نویسی برنامه
توسعه Kent Beckیکی از پرکاربردترین روش هاي چابک است که توسط
.یافته است
ي آن چهار فعالیت هااز شی گرایی استفاده می کند و چارچوب XPفرآیند
:مرحله دارد
طرح و برنامه
طراحی
کدنویسی
تست
فرآیند برنامه نویسی سریع
XP :طرح و برنامه
:مراحل
o ي خود را بیان می کندخواسته هامشتري.
o تیمXP با گوش دادن به این خواسته ها مجموعه اي ازUser Story را جمع
مشابه . (آوري می کند که شامل نیازمندیهاي الزم و عملکردهاي نرم افزار است
Use Case ها(
o هر هزینه زمانیStory برآورده شده و در صورت نیاز به بیش از سه هفته، از
.هاي کوچکتر بشکند Storyمشتري خواسته می شود که آن را به
.می توانند ایجاد شونددر هر زمانی از پروژه ها Story: نکته
طراحی
o در این مرحله به شدت بر اصلKIS )Keep It Simple (تاکید می شود.
».طراحی ساده همیشه به طراحی پیچیده ترجیح داده می شود«
o بر انجام بازسازي)Refactory (به فرآیند بهبود کد نرم افزار به گونه [. تاکید می شود
اي که ساختار درونی نرم افزار بهتر شود، ولی رفتار خارجی آن تغییر نکند، بازسازي می
.گویند
o ،پاکسازيدر این مرحله، کد نرم افزار )Clean Up( ، طراحی)Design( ، اصالح
)Modify ( ساده سازي و)Simplify ( اشکاالتمی شود تا احتمال وجود )Bug ( به
. حداقل برسد
o ایده اصلیXP انجام شودپس از کدنویسی و هم پیش از کدنویسی هم طراحیاین است که.
کدنویسی
o واحد تستقبل از شروع کدنویسی ابتدا تعدادي )Unit Test ( ایجاد می
. شود
o یک نرم افزار، هر تستStory مربوط به انتشار نرم افزار را تست می کند.
oسواالت امتحانی را داریم و فقط روي یافتن جواب آنها تمرکز می : مثال
کنیم، یعنی کد را به گونه اي خواهیم نوشت که از این تست ها با
.موفقیت عبور کند
)Unit Test(تست واحد : کدنویسی
oساختمان داده هانرم افزار متمرکز می شود و مولفه تست واحد بر یک ،
اشتباهات آن با سایر مولفه ها را تست می کند تا واسط ارتباطی و عملکرد
.در آن مولفه را پیدا کند محلی
o برنامه نویسی درXP به صورت زوج برنامه نویسی)Pair Programming (
زوج برنامه نویسی به این صورت است که دو نفر همزمان . انجام می شود
.را می نویسند Storyکد یک
فواید زوج برنامه نویسی: کدنویسی
o انجام می شود زیرا دو فکر بهتر از یک فکر بی درنگ به صورت حل مساله
.است
oبهتر انجام می شود زیرا کد نرم افزار به هنگام نوشته تضمین کیفیت ،
.می شود بازبینیشدن
o ایفا می کند مثال یکی به نقش متفاوتی در حل مساله هر یک از این دو نفر
ي کدنویسی توجه استانداردهاکد دقت می کند و دیگري به جزئیات
.دارد
تست
o ،عملکر در این این مرحله عالوه بر انجام تست واحد
.نیز بررسی می شودکل نرم افزار
o مورد نیاز استتست جامع یک.
o ،نیز انجام می تست پذیرش یا تست مشتري در پایان
.شود
Scrum
o گرفته شده، در سال راگبی این روش که نام آن از یک فعالیت در بازي
.توسط جف ساترلند و تیمش ارائه شد 1990
oاین روش داراي پنج فعالیت است:
)Requirements(جمع آوري نیازمندیها -1
)Analysis(تحلیل -2
)Design(طراحی -3
)Evolution(تکامل -4
)Delivery(تحویل -5
Scrumمفاهیم موجود در روش
o لیست کارهاي ناتمام)Backlog(
o با تمام سرعت دویدن)Sprint(
o جلسات)Scrum(
o دموها)Demo(
�ند ٓScrumجر�ان فرا
)Backlog(لیست کارهاي ناتمام
o شامل فراهم کردن یک لیست اولویت بندي شده از
نیازمندیهاي پروژه یا ویژگی هایی از آن است که براي مشتري
.اهمیت دارد
o ممکن است در هر زمانی از پروژه، مواردي بهBacklog اضافه
.شود
oبوسیله آن می توان به استقبال تغییرات رفت.
)Sprint(با تمام سرعت دویدن
o براي انجام هر یک از موارد درونBacklog الزم است کارهایی
.انجام شوند
o روز انجام 30این کارها باید در یک زمان از پیش تعیین شده مثال
.می گویند Sprintدوره کاري شوند که به این
oدر طول یک : نکتهSprint تغییرات اضافه شده به ،Backlog مدنظر
کار محیط پایدار قرار نمی گیرند و بدین ترتیب اعضاي تیم در یک
. می کنند
)Scrum Meeting(جلسات اسکرام
o توسط هر روز دقیقه اي و 10و معموال کوتاهجلساتی هستند که به صورت بسیار
. تیم نرم افزاري برگزار می شوند
o برگزار می شوند به آن ایستادهاز آنجایی که جلسات به صورتStand up
meeting هم می گویند.
o 1: در هر جلسه پاسخ گویندسه سوال کلیدي همه اعضاي تیم موظفند به
o1- ؟چه کردیداز جلسه قبل تا حاال
o2- بر سر راه شماست؟چه مشکالتی
o3- ؟چه می خواهید بکنیدتا جلسه بعد
)Demo(دموها
o به مشتري تحویل می دمومشتري به صورت افزایشهر
.کند ارزیابیشود تا آن را
o حتی اگر این دمو داراي تمام عملکردهاي مورد نظر
مدت زمان مشخص مشتري نباشد، باز هم باید در یک
.داده شود تحویلبه مشتري