اسکرام(scrum) یک روش تکراری برای مدیریت پروژه های نرم افزاری است. در این روش سازمان دهی تیم توسعه و برقراری ارتباط مناسب با مشتری یا مشتریان امکان پذیر می گردد. هم چنین با مدیریت صحیح فرایند تولید و توسعه نرم افزار توسط این متدولوژی، امکان ارائه محصول با کیفیت در مدت زمان مشخص مقدور می گردد.
اسکرام(scrum) یک روش گروهی برای تولید و توسعه نرم افزار است. این متدولوژی یک مدل تکراری(iterative) از متدولوژی Agile برای حل مسایل پیچیده است. با اسکرام این امکان وجود خواهد داشت که مسایل پیچیده به راحتی مدیریت گردد.
در واقع اسکرام یک فرایند و یا تکنیک تولید محصول نیست، بلکه چارچوبی است که بوسیله آن می توان مدیریت تولید محصول را بهینه نمود.
این متدولوژی ساده و آسان است و همه می توانند به راحتی قوانین موجود در آن را فراگرفته و به کار گیرند، اما تسلط کامل به اسکرام معمولا دشوار است.
متدولوژی اسکرام در سال 1986 در کشور ژاپن توسط Hirotaka Takeuchi و Ikujiro Nonaka برای اولین بار اختراع شد. اسکرام در دهه 90 میلادی توسط Ken Schwober و Jeff Stherland توسعه داده شد و به عنوان یک متدولوژی رسمی جهت تولید محصولات نرم افزاری شناخته و به کار گرفته شد.
هسته اصلی اسکرام را اسپرینت ها تشکیل می دهند. در متدولوژی های تکرار شونده(iterative) دوره های زمانی تکراری(iteration) وجود دارد که در این دوره ها به تدریج محصول کامل می گردد. بدین صورت که در تولید یک محصول، تعدادی تکرار در نظر گرفته می شود که در پایان دوره زمانی هر تکرار، یک محصول قابل ارائه وجود دارد. به این دوره های زمانی تکرار شونده در اسکرام اسپرینت(sprint) می گویند. در پایان هر اسپرینت، محصول کامل تر شده و در نهایت محصول نهایی تولید می گردد. هر اسپرینت دارای تعریفی است که در آن باید مشخص شده باشد که چه چیزی قرار است ساخته شود، نیازمندی ها، راهنمای ساخت و محصول خروجی نیز باید مشخص باشند.
مجموعه نیازمندی های عملیاتی و غیر عملیاتی(Functional and NonFunctional Requirements) پروژه، که مستند شده است را backlog گویند. مجموعه نیازمندی هایی که در هر اسپرینت باید تمام شوند sprint Backlog نامیده می شود. هر sprintcycle تا زمانی ادامه پیدا می کند که محصول آماده release باشد. بعد از release محصول ممکن است صاحب پروژه نیازمندی های جدیدی به پروژه اضافه نماید که به آن ها Product Backlog گویند.
مدت زمان هر اسپرینت بستگی به نوع پروژه دارد. این مدت زمان می تواند از یک هفته تا یک ماه متغیر باشد. هر اسپرینت باید دقیقا سر وقت به اتمام برسد و اگر به هر دلیلی در پایان اسپرینت محصول آماده نبود باید نیازمندی های sprint backlog به product backlog منتقل شوند.
در ابتدا و در هنگام شروع اسپرینت، جلسه ای با حضور تمام اعضای تیم تشکیل می شود و به همه افراد هدف نهایی اسپرینت و وظایف هریک از اعضای تیم شرح داده می شود.
وظایف مشخص شده در هر اسپرینت شامل سه جنبه است:
-
Transparency: تمامی جنبه های فرایند برای همه اعضای تیم(مشتری و تیم برنامه نویس) باید مشخص و واضح باشد.
- Inception: اگر در هر مرحله، فرایند دچار انحراف شد، باید انحراف سریع تشخیص داده شود.
- Adaption: انحراف های شناسایی شده، در کم ترین زمان ممکن باید تعدیل شوند.
در هر اسپرینت، جلسه ای به صورت روزانه با حضور اعضای تیم(تیم تولید و ذینفعان) انجام می شود تا پیشرفت های پروژه بررسی گردد. در این جلسات باید به سه پرسش زیر پاسخ داده شود:
- چه پیشرفت هایی حاصل شده است؟
- چه موفقیت هایی در اسپرینت بعدی حاصل می گردد؟
- چه موانعی برسر راه ادامه کار وجود دارد؟
در انتهای هر اسپرینت جلسه ای برگزار می شود تا محصول نهایی به ذینفع یا ذینفعان نشان داده شود و نتیجه نهایی کار بررسی گردد.
نقش های اسکرام (scrum roles)
- اسکرام مستر(scrum master) : رهبر اسکرام وظیفه دارد تا تمامی اعضای تیم را هدایت و راهنمایی نماید تا هیچ یک از اعضای تیم از چارچوب و قوانین اسکرام خارج نشوند. رهبر اسکرام نقش مدیر را ندارد بلکه تنها وظیفه رهبری تیم را بر عهده دارد تا با رفع مشکلات و موانع پیش رو(در صورتی که اعضای تیم قادر به رفع موانع نباشند.) ، اجرای اسکرام را بهبود بخشد.
- نماینده صاحب پروژه و یا ذینفع(product owner) : صاحب پروژه با اعلام دقیق نیازمندی های خود به تیم تولید، با راهبر اسکرام و تیم تولید همکاری می نماید. صاحب پروژه باید به سوالات تیم پاسخ داده و همواره در دسترس باشد.
- تیم تولید و توسعه نرم افزار(development team) : افراد این تیم در چارچوب قوانین اسکرام، به تولید آن چه که صاحب پروژه درخواست کرده است، می پردازند. تعداد اعضای تیم تولید نه باید آن قدر کم باشد که همکاری گروهی و کار تیمی بی معنا شود و نه آن قدر زیاد باشد که هماهنگی بین اعضای تیم تبدیل به امری دشوار و وقت گیر گردد. تعداد اعضای تیم تولید، بستگی به پروژه دارد اما معمولا 6 تا 9 نفر اعضای این تیم را تشکیل می دهند.
هدف اسکرام جلوگیری از شکست های معمول در حین فرایند تولید و توسعه است. بوسیله اسکرام می توان از حداکثر توان و خلاقیت تیم تولید بهره برد. این متدولوژی در تعداد زیادی پروژه در سراسر دنیا توسط شرکت های مختلف مورد استفاده قرار گرفته و موفق بوده است.