اسکرام چیست؟
اسکرام یک چارچوب برای تولید نرمافزار است(البته در زمینه های دیگر هم کاربرد دارد) که از تفکر Agile (چابک) میباشد. اگر شما با یک مسئله یا پروژه ای مواجه هستید، که در حین اجرا دائم با تغییرات مختلف برخورد میکنید، بعبارتی از اول، آخر کار مشخص نیست و با دیدن خروجیها، مرحله به مرحله مسئله شفاف تر می شود، اسکرام یک گزینه مناسب برای شما میتواند باشد.
که اسکرام یک چارچوب تکرارشدنی با قابلیت افزودن عنصر و فاکتور یا بهاصطلاح، چرخشی برای کنترل پروژههاست. این چارچوب بخشی از شاخه فرایند تولید نرمافزار چابک و سریع است؛ بنابراین، مدلی در مهندسی نرمافزار به حساب میآید. تفکر و فلسفه اصلی اسکرام بر مبنای چابکبودن (Agile) بنا شده است و برای حل مسائل پیچیده بسیار کارآمد است؛ یعنی مسائلی که دانش ما نسبت به آن ناقص است و بهتدریج کامل میشود. اسکرام یک چارچوب چابک است که با آن میتوانیم مسئله های پیچیده را حل نماییم. مسئله پیچیده به مواردی گفته می شود، دانش ما نسبت به مسئله ناقص است و به مرور این دانش پدیدار خواهد شد. مثلا توسعه نرم افزار برای یک بانک، راه اندازی یک استارتاپ، ترافیک، پیش بینی آب و هوا، یا ساختن واکسن کرونا.در این دسته از مسائل، اول از همه، نیازمندیهای ابتدایی پروژه در رأس کار قرار میگیرد و سپس با دریافت بازخورد از مشتری میتوان نظرات جدید یا متفاوت را در قالب یک نیاز طرحشدنی به پروژه اضافه کرد.
این نوع مسائل پیچیده در شرکتهای تجاری و کسبوکارها بهوفور وجود دارد یا بروز میکند. با پیچیدهترشدن روزافزون روال کارها، نیاز به تسریع در فرایند تولید محصولات و رسیدن به چابکی بیشتر همراه با جبران کمبود نیروی انسانی، بیش از پیش احساس میشود؛ یعنی همان چیزی که اسکرام میتواند به آن پاسخ دهد؛ بنابراین، به این نکته توجه کنید اسکرام چیست، اسکرام یک فرایند یا تکنیک تولید محصول نیست، بلکه چارچوبی است که بهوسیله آن میتوان تولید محصول را بهینه کرد.
تاریخچه اسکرام
اسکرام در سال ۱۹۸۶ توسط ایکوجیرو نوناکا و هیروتاکا تاکوچی به عنوان یک خط مشی جدید برای تولید نرمافزارهای تجاری که باید قابلیت انعطافپذیری و سرعت در تولید را میداشتند، عرضه شد. اسم اسکرام از یک نوع بازی در فوتبال راگبی گرفته شده است. یعنی از کلمه scrummage. این متدولوژی اولین بار در ژاپن اختراع شد.
اسکرام چارچوب است یا متدولوژی؟
اشخاصی مانند کن شوئبر (Ken Schwaber) که جزو مبدعین اسکرام است دائماً از لفظ چارچوب(framework) استفاده میکنند و تاکید دارند که همه باید این مورد را قبول داشته باشند ولی بعضی دیگر از لفظ فرایند یا متدولوژی برای اسکرام استفاده میکنند.
چرا اسکرام چارچوب است و نه متدولوژی؟
متدولوژی مجموعه روش هایی است که علاوه بر توصیه ما را به انجام آن فرایندها میکند ولی اسکرام فقط ما را توصیه به رویکردها و افکار خیلی ساده و کاربردی میکند.
اسکرام (Scrum) یک متدولوژی افزایشی (Incremental) برای مدیریت پروژههای نرمافزاری است و از رده متدولوژیهای تفکر چابک محسوب میشود
اسکرام به جای اینکه جزئیات دقیق و مشخص در مورد اینکه کارها در پروژه چگونه باید انجام شوند, بیشتر آن را به تیم واگذار میکند. این کار عملی خواهد بود زیرا تیم خواهد دانست که چطور به بهترین شکل مشکل خود را حل نماید.
به عبارت ساده, در Scrum نسخه پیچی نداریم و بیشتر سعی در کشف و نمایان کردن مشکلات میکنیم.
۳ اصل اساسی چارچوپ اسکرام
اسکرام ۳ اصل اساسی دارد که اصلا به همین سه ویژگی مهم در پروژه های نرم افزاری معروف شده است:
- شفافیت (Transparency): یعنی تمام مسائلی که در تیم انجام می شوند توسط تمام اعضای تیم اسکرام قابل بررسی و کنترل است.
- بررسی (Inspection): مراحل مختلف پیاده سازی به صورت مداوم چک می شوند.در صورت بروز هرگونه مشکل، سریع آن موضوع رفع می شود تا سرعت تیم کاسته نشود.
- تطبیق پذیری (Adaptation): تغییرات بازار، تغییر نیاز، تغییر سیاست های شرکت و تغییر تکنولوژی های مورد استفاده از جمله دلایلی هستند که موجب اهمیت تطبیق پذیری پروژه های اسکرامی می باشند.
رویکرد اسکرام در پروژه ها
اسکرام یک روش افزایشی (Incremental) است. یعنی با گذشت زمان و طی شدن مراحل، روند تکامل پروژه نیز افزایش مییابد. اسکرام شامل چرخههای متفاوتی است که با اطمینان از پیاده سازی صحیح پروژه در هر چرخه، به کاهش ریسکهای احتمالی و هزینههای مازاد کمک میکند.
اسکرام برای بهینهسازی پیشبینی و مدیریت ریسک در طول مدیریت پروژه از یک روش چرخشی-افزایشی استفاده میکند؛ این کار برای پاسخ به این ۲ سؤال است:
- آیا ما «محصول درستی» را میسازیم؟
- آیا ما محصول را به «شیوه درستی» میسازیم؟
برای برخی از پروژهها پاسخ به این سؤالات دشوار نیست، اما در برخی از پروژهها امکان دارد که یک بازخورد از سوی مشتری در انتهای پروژه، ما را غافلگیر کند؛ اینجاست که مشخص میشود کاربرد و اهمیت اسکرام چیست.
رویکرد اسکرام به طور کلی بدین صورت است که ابتدا با مشارکت تیم توسعه و مالک محصول یا مشتری، جلسه ای تشکیل میشود. در طی این جلسه باید تمامی نیازمندیهای سیستمی و غیر سیستمی، اهداف و همه نیازمندیهایی که باید پیاده سازی شوند روشن شوند. تمام اعضا در مجموع به توافق می رسند. در ادامه یک پروژه بزرگ تعریف شده، به بخش های کوچکتری تقسیم می شود. هر بخش آن به دوره زمانی هایی با تایم مشخص و محدود عنوان اسپرینت (Sprint) تعریف میشوند.هسته اصلی اسکرام را اسپرینتها (sprint) تشکیل میدهند. اسپرینت دورههای زمانی تکرارشونده است. همان طور که گفتیم، متدولوژی اسکرام بر تکرارشوندگی بنا شده است. در این دورههای تکراری است که محصول بهتدریج کامل میشود و در پایان دوره زمانی هر تکرار، شرایط محصول بررسی میشود. این روند تکراری آنقدر ادامه مییابد تا در پایان، محصول نهایی تولید شود. در اسپرینتها باید مشخص شود که چه کارهایی قرار است انجام شود، چه نیازمندیهایی وجود دارد و چطور میتوان به آنها جامه عمل پوشاند.
هر اسپرینت معمولا با مشورت اعضا تیم، ۱ تا ۲ هفته ای خواهد بود. البته بیشتر و کم تر هم می تواند باشد و محدودیتی ندارد. اسپیرینت ها دارای مدت زمان مشخص هستند. یعنی در تاریخ مشخصی خاتمه می یابند. چه کار به پایان رسیده باشد چه نه. آنها هرگز تمدید نمی شوند. در آغاز هر اسپرینت یک جلسه برگزار می کنیم که جلسات روزانهای با حضور اعضای تیم (تیم تولید و ذینفعان) است که در آن برنامه ریزی های اسپرینت جاری را انجام خواهیم داد. هر روز هم دور هم جمع می شویم و در مورد کارها صحبت می کنیم.
پیشرفتهای پروژه در قالب ۳ پرسش زیر پاسخ داده میشود:
- چه پیشرفتهایی حاصل شده است؟
- چه موفقیتهایی در اسپرینت بعدی حاصل میشود؟
- چه موانعی برای ادامه کار پیش رو است؟
پس از پایان هر اسپرینت جلسه ای تشکیل می دهیم و نتایج کار را بررسی میکنیم و چگونگی انجام کارها و بازدهی را ادارگیری می کنیم. پس از پایان اسپرینت دوباره برای اسپرینت بعدی آماده می شویم.
نقشها در اسکرام
- ScrumMaster- اسکرام مستر: وظیفه حفظ و نگهداری فرایندها و اجرای صحیح اسکرام در تیم را برعهده دارد.
- Product Owner- پروداکت اونر: که نماینده ذینفعان (Stakeholders) پروژه و کسب و کار است.
- Team Member- اعضای توسعه تیم: اعضایی از یک گروه چند عملکردی است که معمولاً بین ۳ الی ۹ نفر هستند. این افراد عملیات طراحی، تحلیل، پیادهسازی، تست و… را انجام میدهند. در واقع توسعه دهندگان، طراحان و اعضای فنی تیم که کار اجرایی را انجام می دهند هستند.
رویدادهای اسکرام
- جلسات برنامه ریزی اسپرینت(sprint planing):در آغاز هر اسپیرینت، جلسه برنامه ریزی برای اسپیرینت برگزار می شود. مالک محصول و تیم اسکرام در مورد اهداف و موارد اجرایی بحث می کنند. تیم اسکرام موارد را برای به اتمام رساندن آن تا پایان اسپیرینت انتخاب میکنند. البته به ترتیب اولویت هایی که مشخص شده است
- جلسه روزانه – استندآپ میتینگ(stand up meeting): این جلسههای کوتاه حداکثر ۱۵ دقیقهای اول ساعت کاری روز بین اعضای تیم اسکرام برگزار میشود. بهتر است که این جلسات به صورت ایستاده باشد تا وقت زیادی از دست ندهید. اعضای تیم کارهایی که روز گذشته انجام داده اند، کارهایی که در طول روز جاری قرار است انجام بدهند و مشکلاتی که با آن ها روبرو شدند را خیلی سریع بیان میکنند. با اینکار برای مشکلات جاری راه حل پیدا میکنیم و کارها بهتر و با تاخیر کم تر انجام می شوند.
- جلسه بررسی اسپیرینت: جلسهای غیررسمی است که پس از پایان اسپیرینت، جلسه بررسی اسپیرینت وجود دارد. جلسه بررسی اسپرینت تیم اسکرام و ذینفعان آنچه را که در طول اسپرینت انجام داده اند را بررسی می کنند. در مورد آن بحث می کنند. در این جلسه، مالک محصول، اعضای تیم و متخصص اسکرام، علاوه بر مشتریان، ذینفعان، کارشناسان، مدیران و هر کس دیگری که علاقه مند است حضور دارند.پس از بررسی اسپرینت، تیم برای نگاهی به گذشته اسپرینت، دور یکدیگر جمع می شوند که فرصتی برای تیم است تا درباره آنچه انجام شده یا نشده بحث کنند، و برای تغییرات توافق کنند.
- جلسه بازبینی(retrospective): صرفنظر از اینکه تیم اسکرام چقدر موفق عمل میکند، همیشه جایی برای بهبودیافتن هست. تیم باید هدفی مشخص کند و تا پایان اسپرینت، طبق برنامه پیش رود. بههمیندلیل، تیم همیشه راههایی برای بهبود پیدا میکند و ما بازتاب این اتفاق را در رویداد بازنگری اسپرینت مشاهده میکنیم.