# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > مقاله: آشنایی با متد Scrum

## arastou_edu

Scrum مجموعه ای گسترده از دستورالعمل هایی ست که پروسه توسعه یک محصول را از مرحله طراحی تا تکمیل آن ، کنترل و هدایت می کند. 


هدف Scrum مراقبت و پیشگیری از بروز شکست های معمول در پروسه توسعه است که چند نمونه از علل شکست ها در پروژه ها عبارتند از:
- بی نظمی و هرج و مرج در تغییرات پروژه
- تخمین غیر واقعی از زمان ، هزینه و کیفیت محصول
- اجبار برنامه نویسان به دروغ گویی در مورد پروسه پیشرفت پروژه
متد Scrum توسط صدها کمپانی مختلف در فیلدهای متفاوت به طور بسیار موفقیت آمیزی عمل کرده است. شما شباهت های زیادی میان Scrum و روش برنامه نویسی Extreme خواهید یافت. اما تفاوت عمده آنها در این است که Scrum مجموعه نسبتا عمومی تری ست که روند توسعه محصول را کنترل می کند. به همین دلیل این متد به عنوان یک wrapper (لفاف و بسته بندی) برای سایر متدولوژیها مثل XP یا CMM استفاده می شود. بنابراین این متد برای هدایت کل پروسه تولید نرم افزار در کنار سایر متدولوژیهاست.
*اهمیت و مزایای* *Scrum** :*
مزایای اسکرام از برتری ها و سودمندی روش توسعه نرم افزار Agile ناشی می شود.
*افراد و تعاملات بین پروسه ها و ابزارها:* پروسه ها و ابزارها، سودمند هستند اما در جایی که تیم همکاری و همبستگی مناسبی در انجام وظایفشان ندارند، ابزارها نیز سودمند نخواهند بود.
*مستند سازی جامع و فراگیر:* مستند سازی بسیار مهم است اما مهمترین مسئله درست کار کردن نرم افزار است.
*همکاری با مشتری در مذاکرات :* شما تنها برای بستن قرارداد و کسب درآمد کار نمی کنید. بلکه تصمیم دارید مشکل مشتریان را حل کنید.
*درنظر گرفتن تغییرات بر اساس یک برنامه و طرح :* در صورت تغییر در نیازمندیها، متناسب با آن برنامه ریزی صورت خواهد گرفت.
*فرآیند* *Scrum** :*
شکل 1 : فرآیندهای عمومی ScrumScrum دارای سه فاز اصلی است:
*1- برنامه ریزی* *(Planning)** :* دراین فاز طرح ریزی و طراحی اولیه پروژه در سطح بالا انجام میشود.
*2- حلقه های سریع**(Sprint Cycle)** :*
*
*

شکل 2 : SCRUM Sprint CycleSprint 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 نامیده می شود باید از میان اعضای تیم کاری پروژه انتخاب شود. وظیفه رهبر تیم بررسی پیشرفت پروژه ، برطرف سازی موانع انجام کار و هدایت جلسات تیم است.


منبع : سایت چکاد

----------


## Ishtar_4552

تقریبا دیگه همه این رو می دونن که تیم اسکرام شامل چه کسانی میشه و کارشون چیه ، لطفآ اطلاعات کامل تر و بیشتری بدین.. تا حداقل کسانی که این متد رو برای اولین بار می خوان توی برنامه شون استفاده کنن بدونن که در نهایت کل پروژه چطور بدون مشکل و ریسک به مشتری تحویل داده بشه، خیلی از مشکلات هستند که ربطی به نیاز های مشتری نداره و مشکل برنامه نویس هست، مثلا افزونگی داده ها توی طراحی دیتابیس ، این مشکل رو مشتری نمی تونه ببینه ولی برنامه نویس باید حلش کنه..آیا این متد راهکاری برای یکپارچه بودن اطلاعات داره یا اینکه لازمه از متدلوژی های دیگه کمک گرفته بشه..

----------


## m.hamidreza

پست اول کاملاً ناقص و در بعضی جاها کاملاً غلط است! اسکرام واقعاً این نیست. متاسفانه این پست، ترجمه یک مقاله قدیمی است که از "چکاد" که مجری برگزاری دوره های اسکرام است یک همچین محتوایی بعید است.
دوستان به هیچ وجه به این مطالب استناد نکنن...
موفق باشید!

----------


## Asad.Safari

دوستمون Ishtar_4552 خواستن که من این تایپک رو ببینم،
 همونطور که حمیدرضای عزیز هم گفتن یک سری از مفاهیم ارایه شده در این نوشته زیاد درست نیست و قابل ارجاع نیست، حالا کار ندارم چه مجموعه ای این رو داده بیرون یا ترجمه کرده است، ولی بالخره باید کمی دقت کنن، مثلا ترجمه ارزش های چابک کاملا اشتباه است.

اما در مورد سوال خودشون
این رو باید در نظر بگیرید که اسکرام یک چارچوبی هست که میتونید داخل اون از پرکتیس های دیگری استفاده کنید. بعبارتی اولین گام این است که درک نماییم اسکرام نیامده است تا مشکلات ما را رفع کند بلکه آمده
است که مشکلات ما را نمایان کند و همین.
حالا شما در بحث تکنیکال مشکل دارید، میتوانید از پرکتیس های چابک مثل TDD , Pair Programming ،  Agile Modeling  یا هر روش دیگری استاده کنید

مشکلی که ما فعلا در این جهان داریم این هست که همه ما دنبال نسخه برای بهتر شدن هستیم در حالیکه همه شرایط با هم فرق دارند، من چابک بودن خودم را دارم و شما هم باید چابک شدن خودتان را داشته باشید
البته این چشم بسته ایجاد نخواهد شد، شما باید ببینید دیگران چگونه در دنیای واقعی عمل می کنند، بعد آنها را کپی کنید در آنها تامل کنید و آنها را بشکنید و مال خود کنید سپس به چابک بودن خود دست بیابید

چابک و موفق باشید

----------


## amohebali

سلام به همه دوستان و تشکر بخاطر این تاپیک
از اونجا که من معتقدم آب رو باید از سرچمه خورد(با احترام به همه دوستانی که مطلب گذاشتن) لینک زیر رو برای دوستان قرار میدم. امیدوارم بدرد بخوره. جالبه که سایت رسمی اسکرام مطالب خودشو در راهنمای خودش به زبان فارسی هم ارائه  کرده.
http://www.scrumguides.org/

----------

