اسکرام Scrum یکی از روشهای کنترل و مدیریت پروژه است که در پیشبرد پروژههای نرمافزاری و پیچیده در حوزههای مختلف استفاده میشود. اسکرام را یک فریمورک یا چارچوب چابک میدانند که در کار گروهی استفاده میشود و موجب هماهنگی بیشتر در همکاری افراد خواهد شد. متدولوژی اسکرام به حدی در پروژههای نرم افزاری متداول است که حدود هفتاد درصد از پروژههای تولید نرمافزار بر اساس این روش انجام میشوند. علت محبوبیت اسکرام در این است که پروژههای بزرگ را به پروژههای کوچکتر تقسیم میکند و بازههای زمانی کوتاه و مشخصی را برای به اتمام رساندن هر بخش از پروژه تعیین میکند تا کنترل و مدیریت کافی بر روی انجام هر بخش از پروژه اعمال شده باشد. در این روش پیشرفت انجام کارها به صورت روزانه پیگیری و اهداف کوتاهمدت برای هر بخش از پروژه تعیین میشود. به این ترتیب محصولی باکیفیت به دست خواهد آمد.
متد اسکرام
این متد بر پایه چارچوب توسعه چابک یا اجایل گذاشته شده است. اولین بار از این متد برای پروژههای توسعه نرمافزاری استفاده شد که در آن فرایندهای تکراری و افزایشی به عنوان راه پیشبرد پروژه معرفی شد. با موفقیت بیشتر این روش تبدیل به یک روش فراگیر در انجام پروژهها شد.
در مراحل اول پیادهسازی اسکرام برای حل یک مسئله، دانش کافی وجود ندارد و بهتدریج با پیشرفت پروژه و تکمیل اطلاعات در مورد محصول موردنظر، راهحلهای مختلفی شناسایی میشود. در پیادهسازی متدولوژی اسکرام نیز ابتدا نیازمندیهای اولیه پروژه در نظر گرفته میشود و در مراحل بعد با دریافت بازخورد از مشتریان یا کارفرمایان، برای تکامل آن جزئیات و مشخصات بیشتری پیشبینی و اجرا میشود.
به عبارت دیگر میتوان گفت اسکرام روشی اکتسابی و بر مبنای یادگیری پیوسته و سازگاری با تغییر شرایط برنامهریزی شده است. در فریمورک اسکرام اولویتبندیها با گذشت زمان تغییر میکنند و اعضای تیم پیوسته در حال یادگیری و پیشرفت بیشتر هستند.
به طور خلاصه در پاسخ به اینکه “اسکرام چیست؟”باید گفت اسکرام یک چارچوب تکرارشونده با قابلیت افزودن عناصر و فاکتورهای جدید در کنترل پروژه است که بیشتر در توسعه نرمافزاری استفاده میشود.
ارزشهای اسکرام
اسکرام روشی برای پیشبرد پروژه به سبک چابک است که برای کار گروهی یا تیمی کاربرد دارد. در ابتدا باید دانست که ارزشهای اسکرام چیست و چرا تیم باید به این ارزشها پایبند باشد. ارزشهایی که برای یک تیم اسکرام مطرح شده است عبارتند از: شهامت Courage، تمرکز Focus، تعهد Commitment، احترم Respect و پذیرش Openness.
شهامت به معنی روبهرو شدن با چالشها و توانایی انتخاب و پیادهسازی روش درست حل مسئله است.
تمرکز به معنای توانایی هر فرد از اعضای گروه برای صرف دقت تمام و عدم حواسپرتی و حاشیهروی از اصل پروژه و انجام وظیفه است.
تعهد تعریف وفاداری و ضمانت انجام کار توسط هر کدام از اعضای گروه است.
احترام به حفظ حریم و استقلال متقابل از سوی اعضای گروه گفته میشود.
پذیرش وجود صراحت در شرح وقایع و وضعیت و استقبال از پذیرفتن شرایط به همان شکل، در کار تیمی و روبهرویی با چالشها است.
ساختار متدولوژی اسکرام چیست؟
ساختار متدولوژی اسکرام از نقشهای تیمی Roles، رویدادها Events، مصنوعات یا خروجی Artifacts و قوانین Rules تشکیل شده است.
نقشها در متدولوژی اسکرام
تیم اسکرام معمولاً از هفت عضو تشکیل میشود. در این تیم هیچ نقش رهبری برای تفویض وظایف یا تصمیمگیری وجود ندارد. تصمیمگیری به صورت گروهی است. هر عضو تیم یک بخش اصلی در انجام پروژه است و در تمام مراحل نیز فعالیت میکند. سه نقش اصلی تیم صاحب محصول یا Product Owner و استاد اسکرام یا Scrum Master و تیم توسعه یا Development Team هستند. مربی چابک Agile Coach نقش دیگری در تیم است. ممکن است که تیم 5 نفره یا 9 هم نفره باشد.
- اسکرام اونر یا مالک محصول در واقع مشتری یا ذینفع پروژه است که از این پروژه نفع میبرد. این نقش رسالت و چشمانداز کلی محصول را به تیم نشان میدهد. مدیریت بکلاگ Backlog بر عهده مالک محصول است. چالشهای تیم توسعه محصول را برطرف و جهتگیری اصلی را در رسیدن به اهداف مشخص میکند.
- اسکرام مستر یا استاد اسکرام نقش اصلی تیم است که هر روز پروژه را دنبال میکند تا از درستی پیشرفت کارها اطمینان حاصل کند. در واقع اسکرام مستر مجری طرح است و از پایبندی تیم به اصول و قوانین اسکرام اطمینان حاصل میکند. اسکرام مستر برای بهبود و ارتقای عملکرد تیم فعالیت میکند.
- تیم توسعه افرادی هستند که در هر اسپرینت Sprint مشغول به کار هستند. تیم توسعه متشکل از متخصصانی است که بکلاگها را اجرا میکنند.
- مربی چابک یا اجایل کوچ یک نقش مستقل است که در چند تیم نقش مدیریت یا مربیگری را بر عهده دارد. مربی چابک بر پیادهسازی روش چابک تأکید دارد و اموری مثل چگونگی پیشرفت بکلاگها موارد فنی و تخصصی پروژه در حیطه وظایف او نیست.
- رویدادها در متدولوژی اسکرام
رایجترین رویدادهایی که در اسکرام وجود دارند عبارتند از:
- اسپرینت Sprint
- برنامهریزی اسپرینت Sprint Planning
- اسکرام روزانه Daily Scrum
- نقد و بررسی اسپرینت Sprint Review
- Retrospective یا عقب گرد (Retro)
اسپرینت
بازه زمانی در اسکرام را اسپرینت میگویند که معمولاً حدود 2 تا 4 هفته طول میکشد و حتی ممکن است یک هفته هم باشد. اما در پایان هر اسپرینت بخشی از کار پروژه انجام میشود و به اتمام میرسد.
برنامهریزی اسپرینت
کارهایی که باید در طول هر اسپرینت انجام شود را برنامهریزی اسپرینت میگویند که به صورت یک لیست از بکلاگها در میآید.
در برنامهریزی اسپرینت مالک محصول و اعضای تیم در مورد ادامه پروژه توافق میکنند. سپس چگونگی انجام کار را مشخص و بکلاگها را به صورت مجزا ثبت میکنند.
زمانی که هر اسپرینت مشخص شود دیگر نمیتوان موردی به بکلاگها افزود یا تغییری در اسپرینت ایجاد کرد.
اسکرام روزانه
جلسه کوتاهی که هر روز برگزار و به آن Daily Stand-Upنیز گفته میشود تا اعضای گروه فعالیتهای خود را با یکدیگر هماهنگ کنند. دقت داشته باشید که اسکرام روزانه به معنی گزارش وضعیت یا بحثهای طولانی بر سر حل مسئله نیست و حدود 15 دقیقه طول میکشد.
نقد و بررسی اسپرینت
با پایان هر اسپرینت تمام اعضای تیم که شامل مالک محصول هم میشود نتایج را بررسی میکنند. در این جلسه مالک محصول تمامی موارد لازم را در محصول بررسی و نتیجه را یا میپذیرد و یا رد میکند.
این نقد و بررسی به معنای گزارش وضعیت نیست. بازخوردهای این جلسه در بکلاگ محصول قرار میگیرند. مدت این جلسه با طول اسپرینت مشخص میشود. هر هفته معادل یک ساعت جلسه است و دو ساعت بیشتر برای هر جلسه قابل قبول نیست. یعنی اگر یک اسپرینت با طول 4 هفته داشته باشید دو جلسه دو ساعته برای آن اسپرینت برگزار میشود.
عقبگرد یا رترو
آخرین جلسه تیم در اسپرینت را رترو میگویند. این جلسه با حضور اعضای تیم و اسکرام مستری برگزار میشود. در رترو مشخص میشود که کدام کارهای خوب پیشرفتهاند و کدام با مشکل مواجه بودهاند و چطور میتوان در اسپرینت بعدی پیشرفت بیشتری داشت. در این جلسه اعضای تیم عملکرد خود را بررسی میکنند تا بتوانند راههای بهبود بیشتر را شناسایی کنند. حداکثر زمانی که به رترو تعلق میگیرد سه ساعت است. اسپرینت یک هفتهای به 45 دقیقه زمان برای رترو نیاز دارد و اسپرینت چهار هفتهای به سه ساعت.
تفاوت رترو و نقد و بررسی اسپرینت در این است که در نقد و بررسی اسپرینت بر روی محصول تمرکز میشود و در رترو روند کار کانون توجه و بررسی است.
مصنوعات در متدولوژی اسکرام
مصنوعات اسکرام عبارتند از:
- بکلاگ محصول Product Backlog
- بکلاگ اسپرینت Sprint Backlog
- جمعبندی Increment
بکلاگ محصول لیست کلیه تغییراتی است که در محصول ایجاد میشود و نیازهای پروژه را مشخص میکند.
بکلاگ اسپرینت از بکلاگ محصول به دست میآید و شامل مواردی است که در یک اسپرینت انجام میشوند.
جمعبندی تمام بکلاگ محصول است که پس از آخرین مرحله از پروژه به دست میآید.
قوانین در متدولوژی اسکرام
قوانین اسکرام متناسب با تیم و بر اساس فرایندهای آن است. چرخه زندگی اسکرام چارچوب کلی اسکرام است.
اصول متدولوژی اسکرام
اسکرام ماهیتی تجربی و گروهی دارد. اصول بنیادی متدولوژی اسکرام عبارتند از شفافیت، بازبینی و انطباق.
اصل شفافیت در متدولوژی اسکرام در مورد آگاهی کامل تمام اعضای گروه از مسائلی است که تیم با آنها سروکار دارد و در حال انجام آن است.
اصل بازبینی در مورد چارچوب اسکرام و مرور و بازبینیهای پیوسته و مکرر نتیجه هر بخش از پروژه است. این بازبینیها به صورت روزانه و در پایان هر بخش یا اسپرینت انجام میشود.
اصل انطباق به معنای منطقی بودن تمام اجزای فرایند است. هر موردی که منطقی نباشد در اسکرام نیاز به اصلاح دارد.
از متدولوژی اسکرام چه وقتی استفاده میشود؟
در پروژههای پیشرفته که با پیچیدگی همراه هستند و قابلیت بخشبندی زمانی در بازههای زمانی 2 تا 4 هفتهای وجود دارد میتوان از متدولوژی اسکرام استفاده کرد.
مزایای استفاده از متدولوژی اسکرام
- بهرهوری بالا
- محصولات با کیفیت
- افزایش رضایت ذینفعان
- پویایی بیشتر
- رضایت بیشتر کارکنان
فرق چابک و اسکرام
چابک به مجموعهای از اصول گفته میشوند که به چندین روش اجرا میشود و تعامل و فعالیتهای روزانه یک تیم را در خود جای میدهد.
اسکرام محبوبترین و یکی از چندین روش اجرای چارچوب چابک است. اسکرام مشخصات و تعاریف بیشتری نسبت به اصول چابک دارد.
سخن پایانی
اسکرام متداولترین و محبوبترین روش از فریمورک چابک است که بیشتر برای توسعه و نگهداری محصولات پیچیده مورد استفاده قرار میگیرد. در اسکرام قوانین سادهای پیادهسازی میشوند و پروژه به قسمتهای کوچک در مقاطع زمانی مشخص تقسیم میشود.
با شناخت ارزشها و اصول اسکرام و پیادهسازی ساختار آن میتوان پروژههای سنگین را در چندین مرحله مشخص و کوتاهمدت مدیریت کرد و به نتیجه مطلوب رساند.