arastou_edu
یک شنبه 04 دی 1390, 15:55 عصر
Scrum مجموعه ای گسترده از دستورالعمل هایی ست که پروسه توسعه یک محصول را از مرحله طراحی تا تکمیل آن ، کنترل و هدایت می کند.
هدف Scrum مراقبت و پیشگیری از بروز شکست های معمول در پروسه توسعه است که چند نمونه از علل شکست ها در پروژه ها عبارتند از:
- بی نظمی و هرج و مرج در تغییرات پروژه
- تخمین غیر واقعی از زمان ، هزینه و کیفیت محصول
- اجبار برنامه نویسان به دروغ گویی در مورد پروسه پیشرفت پروژه
متد Scrum توسط صدها کمپانی مختلف در فیلدهای متفاوت به طور بسیار موفقیت آمیزی عمل کرده است. شما شباهت های زیادی میان Scrum و روش برنامه نویسی Extreme خواهید یافت. اما تفاوت عمده آنها در این است که Scrum مجموعه نسبتا عمومی تری ست که روند توسعه محصول را کنترل می کند. به همین دلیل این متد به عنوان یک wrapper (لفاف و بسته بندی) برای سایر متدولوژیها مثل XP یا CMM استفاده می شود. بنابراین این متد برای هدایت کل پروسه تولید نرم افزار در کنار سایر متدولوژیهاست.
اهمیت و مزایای Scrum :
مزایای اسکرام از برتری ها و سودمندی روش توسعه نرم افزار Agile ناشی می شود.
افراد و تعاملات بین پروسه ها و ابزارها: پروسه ها و ابزارها، سودمند هستند اما در جایی که تیم همکاری و همبستگی مناسبی در انجام وظایفشان ندارند، ابزارها نیز سودمند نخواهند بود.
مستند سازی جامع و فراگیر: مستند سازی بسیار مهم است اما مهمترین مسئله درست کار کردن نرم افزار است.
همکاری با مشتری در مذاکرات : شما تنها برای بستن قرارداد و کسب درآمد کار نمی کنید. بلکه تصمیم دارید مشکل مشتریان را حل کنید.
درنظر گرفتن تغییرات بر اساس یک برنامه و طرح : در صورت تغییر در نیازمندیها، متناسب با آن برنامه ریزی صورت خواهد گرفت.
فرآیند Scrum :
796877968679687http://www.chakad-it.com/Portals/0/Images/Articles/Scrum/scrm01.png
شکل 1 : فرآیندهای عمومی Scrum
Scrum دارای سه فاز اصلی است:
1- برنامه ریزی (Planning) : در این فاز طرح ریزی و طراحی اولیه پروژه در سطح بالا انجام میشود.
2- حلقه های سریع (Sprint Cycle) :
http://www.chakad-it.com/Portals/0/Images/Articles/Scrum/scrum02.png
http://www.chakad-it.com/Portals/0/Images/Articles/Scrum/scrum02.png
شکل 2 : SCRUM Sprint Cycle
Sprint Cycle یک حلقه تکرار شونده در طول 3 الی 4 هفته است و در آن توسعه نرم افزار حقیقتا اتفاق می افتد. این حلقه با یک جلسه برنامه ریزی سریع (Sprint Planning Meeting) شروع می شود که در آن برنامه های جلسه بعدی مشخص می شود. سپس توسعه نرم افزار انجام می شود. هر Sprint با یک جلسه مرور وقایع آن بسته می شود و در آن جلسه پیشرفت های پروژه نمایش داده می شود. Sprint بررسی می شود و تغییرات و بهبودهای لازم در مورد ادامه روند انجام پروژه لحاظ می شود.
Sprint Cycle تکرار می شود تا زمانی که توسعه نرم افزار پایان یابد. محصول زمانی کامل می شود که متغیرهای زمان، کیفیت، رقابت و هزینه در حد متعادل باشند.
مراحل هر Sprint عبارتند از:
· توسعه محصول – پیاده سازی، تست و مستند سازی
· انسجام کارها (Wrap) – آماده سازی کار برای ارزیابی و کامل کردن
· مرور کارهای انجام شده در Sprint
· تنظیم تغییرات در نیازمندیها یا طراحی پروژه
3- خاتمه (Closure) :
در این فاز توسعه محصول پایان یافته و محصول Release می شود.
تیم Scrum:
این تیم شامل 2 گروه می باشد، تیم افراد ذینفع که کاری انجام نمی دهند. و تیم کاری که وظیفه انجام پروژه را بر عهده دارند.
هر تیم به طور معمول بین 6 تا 9 عضو دارد.(البته اسکرام برای تیم های بزرگتر نیز موفق عمل کرده است)
اگر تعداد افراد از این بیشتر باشد قابل مدیریت نیست و بهتر است پروژه به تعدادی پروژه کوچکتر تقسیم شود تا هر تیم روی وظایف خود متمرکز شوند و محیط کاری کاملا مستقل از بقیه باشد. این کار به 2 دلیل صورت می گیرد اول برای تضمین کیفیت انجام کار و دوم برای مستندسازی بهتر؛ در این صورت باید افرادی نقش رابط میان تیم های مختلف را داشته باشند. اعضای تیم ها نیز باید هماهنگی کامل را داشته و در جلسات همکاری فعال داشته باشند.
رهبر تیم (Scrum Master) :
رهبر تیم که Scrum Master نامیده می شود باید از میان اعضای تیم کاری پروژه انتخاب شود. وظیفه رهبر تیم بررسی پیشرفت پروژه ، برطرف سازی موانع انجام کار و هدایت جلسات تیم است.
منبع : سایت چکاد (http://www.chakad-it.com/%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA/tabid/66/ctl/Details/mid/401/ItemID/14/Default.aspx)
هدف Scrum مراقبت و پیشگیری از بروز شکست های معمول در پروسه توسعه است که چند نمونه از علل شکست ها در پروژه ها عبارتند از:
- بی نظمی و هرج و مرج در تغییرات پروژه
- تخمین غیر واقعی از زمان ، هزینه و کیفیت محصول
- اجبار برنامه نویسان به دروغ گویی در مورد پروسه پیشرفت پروژه
متد Scrum توسط صدها کمپانی مختلف در فیلدهای متفاوت به طور بسیار موفقیت آمیزی عمل کرده است. شما شباهت های زیادی میان Scrum و روش برنامه نویسی Extreme خواهید یافت. اما تفاوت عمده آنها در این است که Scrum مجموعه نسبتا عمومی تری ست که روند توسعه محصول را کنترل می کند. به همین دلیل این متد به عنوان یک wrapper (لفاف و بسته بندی) برای سایر متدولوژیها مثل XP یا CMM استفاده می شود. بنابراین این متد برای هدایت کل پروسه تولید نرم افزار در کنار سایر متدولوژیهاست.
اهمیت و مزایای Scrum :
مزایای اسکرام از برتری ها و سودمندی روش توسعه نرم افزار Agile ناشی می شود.
افراد و تعاملات بین پروسه ها و ابزارها: پروسه ها و ابزارها، سودمند هستند اما در جایی که تیم همکاری و همبستگی مناسبی در انجام وظایفشان ندارند، ابزارها نیز سودمند نخواهند بود.
مستند سازی جامع و فراگیر: مستند سازی بسیار مهم است اما مهمترین مسئله درست کار کردن نرم افزار است.
همکاری با مشتری در مذاکرات : شما تنها برای بستن قرارداد و کسب درآمد کار نمی کنید. بلکه تصمیم دارید مشکل مشتریان را حل کنید.
درنظر گرفتن تغییرات بر اساس یک برنامه و طرح : در صورت تغییر در نیازمندیها، متناسب با آن برنامه ریزی صورت خواهد گرفت.
فرآیند Scrum :
796877968679687http://www.chakad-it.com/Portals/0/Images/Articles/Scrum/scrm01.png
شکل 1 : فرآیندهای عمومی Scrum
Scrum دارای سه فاز اصلی است:
1- برنامه ریزی (Planning) : در این فاز طرح ریزی و طراحی اولیه پروژه در سطح بالا انجام میشود.
2- حلقه های سریع (Sprint Cycle) :
http://www.chakad-it.com/Portals/0/Images/Articles/Scrum/scrum02.png
http://www.chakad-it.com/Portals/0/Images/Articles/Scrum/scrum02.png
شکل 2 : SCRUM Sprint Cycle
Sprint Cycle یک حلقه تکرار شونده در طول 3 الی 4 هفته است و در آن توسعه نرم افزار حقیقتا اتفاق می افتد. این حلقه با یک جلسه برنامه ریزی سریع (Sprint Planning Meeting) شروع می شود که در آن برنامه های جلسه بعدی مشخص می شود. سپس توسعه نرم افزار انجام می شود. هر Sprint با یک جلسه مرور وقایع آن بسته می شود و در آن جلسه پیشرفت های پروژه نمایش داده می شود. Sprint بررسی می شود و تغییرات و بهبودهای لازم در مورد ادامه روند انجام پروژه لحاظ می شود.
Sprint Cycle تکرار می شود تا زمانی که توسعه نرم افزار پایان یابد. محصول زمانی کامل می شود که متغیرهای زمان، کیفیت، رقابت و هزینه در حد متعادل باشند.
مراحل هر Sprint عبارتند از:
· توسعه محصول – پیاده سازی، تست و مستند سازی
· انسجام کارها (Wrap) – آماده سازی کار برای ارزیابی و کامل کردن
· مرور کارهای انجام شده در Sprint
· تنظیم تغییرات در نیازمندیها یا طراحی پروژه
3- خاتمه (Closure) :
در این فاز توسعه محصول پایان یافته و محصول Release می شود.
تیم Scrum:
این تیم شامل 2 گروه می باشد، تیم افراد ذینفع که کاری انجام نمی دهند. و تیم کاری که وظیفه انجام پروژه را بر عهده دارند.
هر تیم به طور معمول بین 6 تا 9 عضو دارد.(البته اسکرام برای تیم های بزرگتر نیز موفق عمل کرده است)
اگر تعداد افراد از این بیشتر باشد قابل مدیریت نیست و بهتر است پروژه به تعدادی پروژه کوچکتر تقسیم شود تا هر تیم روی وظایف خود متمرکز شوند و محیط کاری کاملا مستقل از بقیه باشد. این کار به 2 دلیل صورت می گیرد اول برای تضمین کیفیت انجام کار و دوم برای مستندسازی بهتر؛ در این صورت باید افرادی نقش رابط میان تیم های مختلف را داشته باشند. اعضای تیم ها نیز باید هماهنگی کامل را داشته و در جلسات همکاری فعال داشته باشند.
رهبر تیم (Scrum Master) :
رهبر تیم که Scrum Master نامیده می شود باید از میان اعضای تیم کاری پروژه انتخاب شود. وظیفه رهبر تیم بررسی پیشرفت پروژه ، برطرف سازی موانع انجام کار و هدایت جلسات تیم است.
منبع : سایت چکاد (http://www.chakad-it.com/%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA/tabid/66/ctl/Details/mid/401/ItemID/14/Default.aspx)