اسکرام یک نوع چارچوب برای تولید نرمافزار است که از سری روشهای تفکر Agile (چابک) میباشد. امروز با هم اسکرام که یکی از متداول ترین چارچوبهای توسعه نرمافزار هست را مورد بررسی قرار میدهیم.
اسکرام یک چارچوب است یا یک فرایند یا متدولوژی؟
در این موضوع کاملاً بین متخصصان اسکرام دوگانگی وجود دارد. اشخاصی مانند کن شوئبر (Ken Schwaber) که جزو مبدعین اسکرام است دائماً از لفظ چارچوب(framework) استفاده میکنند و تاکید دارند که همه باید این مورد را قبول داشته باشند ولی بعضی دیگر از لفظ فرایند یا متدولوژی برای اسکرام استفاده میکنند.
اسکرام در سال ۱۹۸۶ توسط ایکوجیرو نوناکا و هیروتاکا تاکوچی به عنوان یک خط مشی جدید برای تولید نرمافزارهای تجاری(Commercial) که باید قابلیت انعطافپذیری و سرعت در تولید را داشته باشند، عرضه شد. اسم اسکرام از یک نوع بازی در فوتبال راگبی گرفته شده است. اسکرام (Scrum) یک متدولوژی افزایشی (Incremental) برای مدیریت پروژههای نرمافزاری است و از رده متدولوژیهای Agile محسوب میشود. این متدولوژی اولین بار در ژاپن اختراع شد. اسکرام به جای اینکه جزئیات دقیق و مشخص در مورد اینکه کارها در پروژه چگونه باید انجام شوند, بیشتر آن را به تیم واگذار میکند. این کار عملی خواهد بود زیرا تیم خواهد دانست که چطور به بهترین شکل مشکل خود را حل نماید. به عبارت ساده, در Scrum نسخه پیچی نداریم و بیشتر سعی در کشف و نمایان کردن مشکلات میکنیم. متدهای Agile که از آن جمله میتوان به اسکرام, XP ,Kanban و… اشاره کرد, روشهایی برای دست یابی به تفکر Agile میباشند. Agile یک تفکر در زمینه توسعه نرم افزار است و اسکرام یک روش برای پیاده سازی این تفکر. در حقیقت اسکرام یک چارچوب توسعه نرم افزار Agile میباشد که از روش iterative incremental بهره میبرد. تعریف هر نوع نقش یا سمت به جز این سه در اسکرام ممنوع است. به عنوان مثال اعضای تیم نمیتوانند سمتهای متفاوتی داشته باشند. در اسکرام دورههای زمانی یا iteration داریم که در آنها محصول نهایی پروژه به تدریج کامل میشود. این دورهها و سیکلهای زمانی را در به اصطلاح sprint مینامند. اسپرینت در واقع یک محدودهی زمانی با هدف یا اهداف کوتاه مدت مشخص است. از مجموع اسکرامها یک اسپرینت (Sprint) بوجود میاد و از مجموع این اسپرینتها هم کل فرایند توسعهی نرمافزار. در طی یک Sprint که معمولاً یک دورهی دو تا چهار هفتهای هست (البته طول دوره را خود تیم مشخص میکند) اعضاء یک محصولِ قابل استفاده و قابل ارائه را به تدریج تولید میکنند. Product Backlog نامی است که به بانک اطلاعاتی نیازمندهای عملیاتی و غیر عملیاتی کل پروژه داده میشود و در واقع مجموعهای اولویت بندی شده از نیازمندیها و وابستگیهای سطح بالای سیستمی است که در نهایت میبایست تحویل داده شود. مواردی از Product Backlog که در دورهی یک sprint میبایست انجام شود در مدت جلسه طراحی اسپرینت یا Sprint Planning Meeting مشخص میشود. در طول این جلسه، Product Owner اعضاء تیم را دربارهی مواردی از Product Backlog آگاه میکند. بعد از آن اعضای تیم مشخص میکنند که به چه مقدار از موارد مشخص شده توسط Product Owner میتوانند برسند (در این sprint انجام دهند) و چه میزان از آن را در sprintهای بعدی انجام دهند. مواردی از Product Backlog که قرار است در یک Sprint انجام شود را به اصطلاح Sprint Backlog مینامند. مفاد Sprint Backlog در واقع یک توافق است بین اعضا، که بعد از تصویب شدن مفاد یک sprint، هیچکس نمیتواند آنرا در طول sprint تغییر دهد. مانند تمام متدولوژیهای iterative توسعه نرمافزار در اسکرام نیز Time Boxed است، به این معنی که sprint میبایست به طور مشخص در سروقت خود تمام شود و اگر نیازمندیهای اشاره شده در Sprint Backlog به هر علتی تکمیل نشده باشند آنها را کنار گذاشته و دوباره وارد Product Backlog میکنند. بعد از خاتمه یک sprint، اعضای تیم با جلسهای به Product Owner و سایر ذینفعان پروژه نشان میدهند که چه انجام دادهاند و چطور از نسخه جاری میشود استفاده کرد. در سادهترین روش معمولا از نرمافزارهای صفحه گستره (Spread Sheet) همچون Microsoft Excel برای نگهداری و ساختن Product Backlog و Sprint Backlog استفاده میشود.اسکرام چیست؟
رابطه بین اسکرام (Scrum) و اجایل (Agile)
نقشها در اسکرام
اسپرینت (Sprint) در اسکرام چیست؟
روند کار اسکرام چگونه است