چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

فرآیند ساخت محصول نرم افزاری، یک پروژه پیچیده است. روش اسکرام، راه‌حلی است که اجرای چنین فرآیند پیچیده‌ای را سهولت می‌بخشد. در واقع اسکرام به تیم توسعه کمک می‌کند تا بر روی تمامی جنبه‌های محصول مانند کیفیت، عملکرد، قابل استفاده بودن و بهره‌وری آن تمرکز کنند. فریمورک اسکرام، یک چارچوب تکرارپذیر و افزایشی برای مدیریت پروژه‌های نرم افزاری است که معمولا در زیرشاخه مدل فرآیند توسعه نرم افزار چابک قرار می‌گیرد. در این مطلب سعی بر آن است تا شما عزیزان بازدیدکننده را به شکلی مختصر با تاریخچه این فریمورک (یا متدولوژی!) آشنا کرده و سپس به این سوال پاسخ دهیم که: به‌کارگیری اسکرام (Scrum) در فرآیند توسعه نرم افزاری چابک چه مزایایی را در پی خواهد داشت؟

مفهوم واژه اسکرام

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

رویکرد توسعه چابک نرم افزار، از چارچوب اسکرام برای مدیریت بهینه و موثرتر محصول استفاده می‌کند. در این روش، تیم توسعه محصول به عنوان یک واحد منسجم کار کرده و برای رسیدن به هدفی مشترک تلاش می‌کنند. برای بهبود شانس موفقیت، تیم اسکرام با نقش‌هایی خودسازمان‌دهی شده برای یک رسیدن به یک هدف مشترک (همانند یک تیم در ورزش راگبی) با یکدیگر کار می‌کنند.

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

منشأ واژه اسکرام در توسعه نرم افزار

تفکر توسعه چابک نرم افزار، عمیقا تحت تاثیر بهترین شیوه‌های مدیریتی در صنعت ژاپن به ویژه شرکت‌های تویوتا (Toyota)، هوندا (Honda) و استراتژی‌های مدیریت دانش است که توسط هیروتاکا تاکوچی (Takeuchi Hiroyuki) و ایکوجیرو نوناکا (Nogami Yujiro) توسعه یافته‌اند. با ایده‌برداری از تحقیقات فوق و بسط دادن آن به عموم پروژه‌های نرم افزاری در سراسر جهان، جف ساترلند (Jeff Sutherland) برای اولین بار در سال ۱۹۹۳ فرآیند اسکرام را به عنوان یک متدولوژی رسمی برای تولید نرم‌افزار معرفی کرد.

همانطور که در مطالب پیشین هم اشاره شد، در سال ۲۰۰۱، تعداد ۱۷ متخصص نرم افزار گرد هم آمدند تا درباره سهولت و ساده‌سازی فرآیند توسعه نرم افزار به گفتگو بپردازند. در پایان این رویداد، بیانیه جدیدی تحت عنوان اصول توسعه نرم افزار چابک مطرح شد که اسکرام یکی از مهم‌ترین زیرشاخه‌های آن به شمار می‌رود.

سه ستون اصلی در اسکرام

پایه و اساس اسکرام، در متدهای تجربه‌گرا ریشه دارد که می‌گوید: دانش از تجربه به دست می‌آید و تصمیمات را باید از همین تجربیات واقعی اتخاذ کرد. به طور کلی، اسکرام بر پایه سه ستون مهم استوار است:

چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

چرا اسکرام؟

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

چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

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

فریمورک اسکرام معمولا با این واقعیت سر و کار دارد که الزامات یک پروژه احتمالا تغییر می‌کنند و یا اینکه در اکثر اوقات در ابتدای پروژه تصویر روشنی از آنان در دست نیست. به طور کلی سه ویژگی اصلی در رابطه با اسکرام وجود دارد:

  • سبک‌وزن است
  • یادگیری آن آسان است
  • (ولی) تسلط بر آن دشوار است!

مزایای اسکرام

در اینجا، به بخشی از مزایای اسکرام برای سازمان‌ها، تیم‌ها، محصولات و ذینفعان اشاره می‌شود:

کیفیت بهتر: پروژه‌ها به منظور دست‌یابی به یک چشم‌انداز یا هدف بزرگ وجود دارند. اسکرام، چارچوبی را برای دریافت بازخورد مداوم تعریف می‌کند تا اطمینان حاصل شود محصول نهایی از بهترین کیفیت ممکن برخوردار خواهد شد.
کاهش زمان لازم جهت عرضه به بازار: فریمورک اسکرام ارزش‌ها را بین ۳۰ الی ۴۰ درصد سریع‌تر از دیگر متدولوژی‌های توسعه نرم افزار در اختیار مشتری قرار می‌دهد.
افزایش بازده سرمایه‌گذاری: کاهش زمان لازم برای عرضه به بازار، ثابت می‌کند که پروژه‌های اسکرام بازده سرمایه‌گذاری بیشتری به نسبت سایر روش‌ها دارند.
روحیه تیمی بالاتر: کار کردن با افرادی که عاشق انجام وظایف خود هستند، تا حد زیادی برای کلیه افراد تیم‌ رضایت‌بخش است. علاوه بر این، قسمت عمده تصمیمات مربوط به هر واحد نیز توسط اعضای تیم اسکرام اخذ خواهد شد.
بهبود همکاری تیمی: تیم اسکرام برای خلق نتایج و ارزش‌های مهم، مسئولیت بخشی از پروژه را بر عهده می‌گیرند و این کار از طریق بهبود تعاملات و مشارکت بین اعضای تیم‌ها میسر خواهد بود.

اجزای اسکرام

چارچوب اسکرام بسیار ساده است. در واقع این روش، مجموعه‌ای از دستورالعمل‌ها را با تکیه بر قوانین، نقش‌ها، خروجی‌ها و رویدادها تعریف می‌کند. لازم به ذکر است که هرکدام از این مولفه‌ها دارای اهمیت خاص خود بوده و در راستای هدفی خاص در چارچوب اسکرام فعالیت می‌کنند. اجزای اصلی چارچوب اسکرام (Scrum Framework) به شرح زیر هستند:

  • نقش‌ها (Roles): اسکرام مستر (Scrum Master)، مالک محصول اسکرام (Scrum Product Owner) و تیم اسکرام (Scrum Team)
  • مصنوعات (Artifacts): اسپرینت بک‌لاگ (Sprint Backlog)، پروداکت بک‌لاگ (Product Backlog)، برن‌دان چارت (BurnDown Chart) و …
  • رویدادهای اسکرام (Scrum Events): برنامه‌ریزی اسپرینت (Sprint Planning)، بررسی اسپرینت (Sprint Review)، جلسات روزانه (Daily StandUp)، بازنگری اسپرینت (Sprint Retro) و …

نقش‌ها در اسکرام

مالک محصول (Product Owner)

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

البته باید توجه داشت که مالک محصول همیشه یک فرد مستقل نیست و برای پروژه‌های بزرگ می‌توان از یک تیم بدین منظور استفاده کرد. از مهم‌ترین وظایف نقش مالک محصول در اسکرام می‌توان به موارد زیر اشاره کرد:

  • جهت‌دهی و تصمیم‌گیری در رابطه با استراتژی محصولات، خدمات و اهداف کوتاه و بلند مدت
  • فهم نیاز و انتظار مشتری و تشریح آن برای تیم توسعه
  • جمع‌آوری، اولویت‌بندی و مدیریت نیازهای محصول یا خدمت
  • مدیریت بودجه تولید و نگهداری محصول نرم افزاری و سوددهی پروژه
  • تعیین تاریخ انتشار نسخه‌ها
  • همکاری روزانه با تیم توسعه جهت پاسخ به سوالات و اتخاذ تصمیمات مهم
  • پذیرش و یا رد کردن ویژگی‌های کامل شده برای هر اسپرینت (Sprint)
  • مرتب‌سازی لیست ویژگی‌های نرم افزار بر اساس اولویت نیاز تجاری (تهیه پروداکت بک‌لاگ – Product Backlog)

اسکرام مستر (Scrum Master)

اسکرام مستر، فردی است که سهولت بخشیدن به رویکرد توسعه چابک نرم افزار بر عهده اوست. در واقع این فرد وظیفه هموار ساختن کار برای تیم توسعه را عهده‌دار می‌شود. به بیان دیگر، این نقش وظیفه دارد که اعضای تیم را هدایت و راهنمایی کند تا قوانبن اسکرام به درستی اجرا شده و تیم از چارچوب اسکرام خارج نشود. اسکرام مستر وظایف متعددی دارد که از جمله مهم‌ترین این نقش می‌توان به موارد زیر اشاره کرد:

  • ایفای نقش به عنوان یک مربی و کمک به تیم جهت دنبال کردن ارزش‌های اسکرام
  • تلاش برای از بین بردن موانع و محافظت از تیم در برابر مداخلات خارجی
  • ارتقای همکاری و تعامل بین اعضای تیم و ذینفعان
  • سازماندهی و تسهیل جلسات اسکرام
  • هدایت جلسه برنامه‌ریزی اسپرینت
  • نظارت بر هماهنگی و کار تیمی
  • حفظ نظم تیم در سازمان

تیم اسکرام (Scrum Team)

تیم اسکرام (تیم توسعه)، معمولا گروهی بین ۳ تا ۹ نفره برای تحویل محصول نرم افزاری مطابق با کلیه نیازهای فنی است. اعضای این تیم توسط اسکرام مستر راهنمایی ولی به طور مستقیم مدیریت نمی‌شوند. در واقع تیم اسکرام، یک گروه خود‌سازمان‌‌دهی شده است که می‌تواند تمامی اقدامات مورد انتظار را در موعد مقرر تکمیل کند.

تیم توسعه وظیفه دارد در پایان هر اسپرینت، بخشی از محصول نرم افزاری و یا ویژگی‌های آن که قابل ارائه به مشتری باشد را آماده عرضه کند. به بیان کلی‌تر، فرآیند توسعه و تست ریلیزها به طور جامع در حوزه مسئولیت تیم اسکرام قرار دارد.

مصنوعات اسکرام

مصنوعات اسکرام (Scrum Artifacts)، مجموعه‌ای از اطلاعات کلیدی را به تیم اسکرام و دینفعان ارائه می‌کند تا افراد بتوانند درک بهتری از محصول در دست توسعه، فعالیت‌های انجام شده و دیگر اقدامات باقی مانده در ادامه مسیر پروژه داشته باشند. در چارچوب فرآیند اسکرام، مصنوعات زیر تعریف شده‌اند:

چشم‌انداز محصول (Product Vision)

چشم‌انداز محصول، تعریفی برای مشخص کردن اهداف بلند مدت پروژه است. در واقع این بخش، جهت کلی پروژه را در راستای هدایت تیم تعریف می‌کند. همه افراد در سطوح مختلف پروژه باید چشم‌انداز محصول را به خاطر بسپارند؛ به همین سبب لازم است که این چشم‌انداز کوتاه و دقیق باشد.

هدف اسپرینت (Sprint Goal)

در هر اسپرینت، تعیین هدف امری الزامی است. اهداف هر اسپرینت، دلیل اجرای آن را مشخص می‌کند تا کلیه اعضای تیم با داستان یک هدف مشترک به ایفای نقش خود بپردازند. معمولا اهداف اسپرینت به نحوی هستند که با استفاده از آن بتوانید به این دست سوال‌ها پاسخ دهید: چرا می‌خواهید این اسپرینت را انجام دهید؟ چگونه می‌خواهید به اهداف برسید و راه تشخیص برآورده شدن این اهداف چیست؟


پروداکت بک‌لاگ (Product Backlog)

پروداکت بک‌لاگ (Product Backlog)، در واقع یک لیست رتبه‌بندی شده از موارد مورد نیاز برای محصول است. این فهرست، شامل نیازمندی‌هایی است که به واسطه آن‌ امکان اعمال هرگونه تغییر در محصول میسر می‌شود. مالک محصول، مسئول پروداکت بک‌لاگ است و این شامل وظایفی همچون مدیریت محتوا، در دسترس بودن و رتبه‌بندی آیتم‌ها می‌شود.

به طور معمول، انتظارات مشتری از محصول دائما تغییر می‌کند. این تغییر ممکن است بنا بر دلایل مختلفی رخ دهد که از جمله آن می‌توان به الزامات تجاری محصول، شرایط بازار و یا فناوری روز اشاره کرد. بنابراین، بک‌لاگ محصول باید به طور مداوم بررسی و بروز شود تا همواره خصوصیات یک محصول مطابق با انتظار کاربر را در خود داشته باشد.


اسپرینت بک‌لاگ (Sprint Backlog)

بک‌لاگ اسپرینت، فهرستی از اقلام انتخابی مربوط به لیست بک‌لاگ محصول به همراه یک برنامه دقیق برای تحقق اهداف اسپرینت (Sprint Goal) و ارائه فرآورده (Increamen) است. آیتم‌های موجود در این فهرست، بر مبنای اولویت‌ها از فهرست بک‌لاگ محصول استخراج شده و تیم اسکرام باید به شکل متعهدانه آن‌ها را تا پایان اسپرینت به انجام برساند. نکته مهم در مورد بک‌لاگ اسپرینت این است که هرگونه اصلاح و تغییر در این فهرست، منحصرا از سوی تیم توسعه انجام‌پذیر است.


تعریف انجام‌شده (Definition of Done)

در پایان هر اسپرینت، باید یک نسخه کارکننده به مشتری تحویل داده شود. تعریف Done، در واقع چک لیستی است که به ما اطمینان می‌دهد آنچه در طول اسپرینت توسعه داده شده، واقعا «انجام‌شده» (Done) است. مجموعه این معیارها در یک لیست جامع با نام «تعریف Done» یا (DoD) تعریف می‌شوند. این عبارت، دیدگاهی از «کار انجام‌شده» را به تیم اسکرام می‌دهد و عمدتا شامل معیارهایی برای کنترل کیفیت، رفع عیوب و … است.

چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

افزایش (Increment)

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

برن‌داون چارت (Burn-down chart)

نمودار برن‌داون، یک نمای بصری از اقدامات انجام گرفته در مقایسه با زمان را نشان می‌دهد. محور افقی نمایانگر زمان و محور عمودی مجموعه کار انجام شده را نشان می‌دهد. این نمودار، برای اعضای تیم به خوبی روشن می‌کند که در هر روز، چند ساعت کار برای انجام هر وظیفه باقی مانده است. تیم توسعه نیز موظف است که هر روز روند کار در حال پیشرفت را بروزرسانی و میزان اقدامات باقی مانده را نیز برآورد کند. با وجود اینکه نمودار فوق عمدتا در پروژه‌های توسعه نرم افزار چابک استفاده می‌شود، اما می‌توان آن را در انواع دیگر پروژه‌ها به منظور پیگیری روند پیشرفت به نسبت زمان نیز مورد استفاده قرار داد.

رویدادها در اسکرام

ارتباطات بسیار مهم هستند! اسکرام به تمامی جنبه‌های تیم بودن و کار شفاف (یکی از سه ستون اصلی اسکرام) اتکا دارد. در کنار آن، متدولوژی اسکرام برای حصول اطمینان از وجود دو ستون دیگر (بازدید و سازگاری)، اجرای شماری از رویدادها را نیز توصیه می‌کند.

رویدادها در اسکرام، به اعضای تیم کمک می‌کنند تا کارها با همکاری موثر کلیه اعضا به انجام برسد تا در نهایت امکان رسیدن به نتایج مدنظر فراهم گردد. رویدادهای اسکرام با تکیه بر مجموعه‌ای از اصول و قواعد برگذار می‌شود که در ادامه به شرح آن خواهیم پرداخت. انواع رویداد در اسکرام به شرح زیر است:

برنامه‌ریزی اسپرینت (Sprint Planning)

کلیه اسپرینت‌ها در اسکرام با برنامه‌ریزی شروع می‌شوند. در طول این جلسه، فهرستی از اقدامات جهت انجام در طول اسپرینت تهیه و برنامه‌ریزی می‌شود. کلیه این برنامه‌ریزی با همکاری اعضای تیم انجام می‌گیرد و اسکرام مستر، مسئول برگذاری جلسه و هدایت تیم را بر عهده دارد.

این مرحله، بخشی است که اسکرام مستر بهترین نقش خود را ایفا می‌کند. صاحب محصل، ویژگی‌های حائز اهمیت از دیدگاه مشتری را تعیین می‌کند. تیم اسکرام، ضمن بررسی اقلام موجود در این لیست، آیتم‌هایی را که آماده‌سازی آن طی اسپرنت آتی امکان‌پذیر است را انتخاب و اسکرام مستر سعی می‌کند همه‌چیز را در جای خود قرار دهد تا هر دو سمت جلسه (تیم اسکرام / صاحب محصول) از خروجی آن راضی باشند.

چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

اسکرام روزانه (Daily Scrum)

روز شما در محیط کار چگونه آغاز می‌شود؟ در متدولوژی اسکرام، کلیه تیم‌ها در هر روز اسپرینت، در اسکرام روزانه (جلسات ایستاده‌ی روزانه) شرکت دارند. این جلسه به شکلی است که برای هر فرد، نهایتا ۳ دقیقه زمان برای صحبت، پرسش و پاسخ و … صرف می‌شود.

چارچوب اسکرام (Scrum) در توسعه چابک نرم افزار

جلسات اسکرام روزانه، معمولا هر روز به طور ثابت در یک بازه زمانی خاص برگذار می‌شود. در اسکرام روزانه، کارهای روز قبل بررسی و کارهای روز جاری پیش‌نبی می‌شوند. در این جلسات، اسکرام مستر وظیفه تسهیل‌گر جلسه را بر عهده دارد.

بازبینی اسپرینت (Sprint Review)

جلسه بازبینی نسخه نمایشی، در پایان هر اسپرینت برگذار می‌شود. تیم توسعه، در این جلسه نتیجه افزایشی (Increment) پیشرفت را با تمرکز بر روی اهداف اسپرینت به نمایش می‌گذارد. در این جلسه، مالک محصول ارزش تولید شده را بازبینی و تایید می‌کند.

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

بازنگری اسپرینت (Sprint Retrospective)

بازنگری اسپرینت، معمولا آخرین کاری است که در پایان یک اسپرینت به انجام می‌رسد. بسیاری از تیم‌ها، عمدتا بلافاصله پس از جلسه بازبینی اسپرینت این کار را انجام می‌دهند. کل اعضای تیم، اسکرام مستر و مالک محصول باید در این جلسه حضور داشته باشند. این جلسه که حدود طی یک بازه زمانی ۱ ساعته برگذار می‌شود، سه جنبه اصلی زیر را بررسی خواهد کرد:

  • چه کارهایی در طی اسپرینت با خوبی انجام شده‌اند؟
  • کدام بخش از کارها به خوبی انجام نگرفته‌اند؟
  • جهت بهبود امور، چه کارهایی لازم است انجام شوند؟

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

متخصص استقرار سیستم‌های هوشمند کسب‌و‌کار و یکپارچه‌سازی فرایندها، کارشناس ارشد تست و تضمین کیفیت نرم افزار، متخصص طراحی و پیاده سازی محیط کار دیجیتال

جوابی بنویسید:

آدرس ایمیل شما به صورت عمومی منتشر نخواهد شد.

Site Footer