مروری سریع بر اسکرام

مقدمه

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

بررسی لغوی معنای اسکرام[۱]

اسکرام در لغت به فعالیتی اشاره دارد که در خلال بازی راگبی صورت می گیرد و در معنی به شور و مشورت جهت انجام کاری اشاره دارد.[۲]

پیدایش [۳]

در ۱۹۸۶ توسط هیروتاکا تاکوچی[۴] و ایکوجیرو نوناکا[۵] به مثابه یک راهبرد جدید در تولید نرم افزارهای تجاری که باید دو فاکتور انعطاف پذیری[۶] و سرعت[۷] را با خود به همراه داشته باشند ارائه شد. این متدولوژی که نخستین بار در ژاپن [۸]  ابداع شد در ۱۹۹۱ توسعه داده شد و ۱۹۹۵ بصورت یک متدولوژی رسمی مطرح و پیاده سازی شد.

چیستی [۹]

اسکرام یک چارچوب است یا یک متدولوژی ؟ مبدع آن تاکید زیادی بر استفاده از لفظ چارچوب دارد اما برخی دیگر از صاحب نظران از لفظ متدولوژی را ارجح می دانند. مایک کان [۱۰]  تعریف خوبی را ارائه داده است بدین صورت که اسکرام یک چارچوب می باشد و بجای اینکه جزئیات دقیق و کاملی را در مورد چگونگی انجام پروژه ارائه دهد این مسئولیت را به خود تیم واگذار می کند [۱۱]  نکته ی مهم و در خور تامل در رابطه با اسکرام این است که بجای حل مشکلات بیشتر سعی در نمایاندن و شفاف کردن آنها دارد. برای روشن شدن موضوع به کلام کن شوئبر و جف سادرلند در راهنمای اسکرام می پردازیم :

“Scrum employs an iterative, incremental approach to optimize predictability and control risk” [12]

بدین معنی که این چارچوب از رویکردی تکراری افزایشی[۱۳] جهت بهینه سازی پیش بینی و کنترل ریسک بهره می برد. اما در چرایی ایجاد این چارچوب آمده است که :

“Scrum is an Agile Framework for Completing complex projects”[14]

بعضا چنین عنوان می شود که اسکرام فقط در پروژه های کوچک استفاده می شود اما وقتی بهتر بررسی می کنیم می بینیم کمپانی های بزرگی همچون گوگل[۱۵] یاهو[۱۶] و مایکروسافت [۱۷]  از این چارچوب استفاده می کنند پس این تفکر که اسکرام خاص پروژه های کوچک است تفکری است غلط و نابجا. در همین رابطه باید گفت اسکرام خاصیت تقسیم پذیری پروژه ای بزرگ به پروژه ای کوچک را داراست که می توان بصورت همزمان و موازی این پروژه را انجام داد.[۱۸]

نقش ها

غالب نقش ها در اسکرام عبارتند از :

  • [SM[19: وظیفه نگهداری فرآینده را برعهده دارد.
  • [۲۰]PO: نماینده بیزینس [۲۱]  و ذی نفعان [۲۲] پروژه است.
  • [۲۳]TM: عضوی است از تیمی که حداکثرهفت نفر می باشند اما اندازه پنج تا نه نفر ترجیج داده میشود که وظیفه تحلیل طراحی پیاده سازی تست و … را بر عهده دارند. [۲۴]

 

نکته مهم این است که نقش های اسکرام جز در سه قالب فوق نمی گنجند و اعضاء نمی توانند چندین سمت داشته باشند.

PO مسئولیت تعیین هدف و فلسفه آن را روشن می سازد ولی به چگونگی رسیدن تیم به هدف کاری نخواهد داشت.

از جمله نقش های که TM ها بر عهده دارند می توان به برنامه نویس [۲۵]  تحلیل گر [۲۶]  مدیر پایگاه داده [۲۷]  و … اشاره داشت.

دو  ویژگی متمایز تیم های اسکرام که دیگر تیم ها فاقد آن هستند خود رهبری [۲۸]  و  [۲۹]Cross-Functionality می باشد.

پروسه کاری

از آنجایی که اسکرام بصورت ترکیبی از دو متدولوژی Iterative و Incremental می باشد محصول بصورت تدریجی و در قطعه های زمانی پیوسته تکمیل می گردد. این دوره های زمانی را Sprint می نامیم. غالبا هر Sprint در بازه زمانی دو تا چهار هفته زمان می برد تا تکمیل شود و تعیین بازه چون بخشی از جزئیات است و همانطور که در بالا اشاره شد اسکرام جزئیات را به دستان تیم می سپارد پس تیم تعیین کننده بازه زمانی است. Product Backlog ها مجموعه نیازمندی هایی با اولویت بالا هستند که می بایست تکمیل شوند. گزینه هایی (وظایف) [۳۰]  از Product Backlog ها که می بایست در یک Sprint تکمیل شوند با نام Sprint Backlog شناخته می شوند. در واقع Sprint ها مجموعه ای هستند از Task های لازم الاجرا. نکته مهم اینست که این گزینه ها پس از توافق با  [۳۱]PO  در جلسات به هیچ وجه قابل تغییر نیست  و حتما می بایست انجام شوند. چون از متدولوژی های افزایشی و تکراری در Sprint ها بهره می جوییم در طی اجرای هر Sprint محصول ما کامل و کامل تر می شود.[۳۲]

از جمله سوالات مهمی که در Daily Meeting ها ما بین اعضای تیم و PO صورت می گیرد موارد ذیل است : [۳۳]

  • از دیدار قبل تا کنون چه فعالیت هایی انجام داده اید؟ [۳۴]
  • با چه موانعی مواجه هستید ؟ [۳۵]
  • از حالا تا جلسه آینده چه برنامه هایی مد نظر دارید ؟[۳۶]

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

راجر اس پرسمن در رابطه با اسکرام چنین می گوید :

“Scrum incorporates a set of process patterns that emphasize project priorities, compartmentalized work units, communication, and frequent customer feedback”[37].

 اسکرام شامل مجوعه ای از الگوهای فرآیندی است که بر اولویت های پروژه , واحدهای کاری تقسیم بندی شده , ارتباطات و بازخوردهای مکرر مشتری تاکید می ورزد.

 

بصورت خلاصه اگر بخواهیم مراحل پیاده سازی اسکرام را بیان کنیم باید هفت مرحله را طی کنیم تا عملیاتی شدن این چارچوب را شاهد باشیم :

مرحله اول : تهیه Product Backlog که تمام خواسته های صاحب محصول را پوشش می دهد و در طی یک یا دو جلسه در پی ملاقات حضوری با مشتری تکمیل خواهد شد. مرحله دوم فازبندی پروژه می باشد که یک به چندین Task تبدیل خواهد شد. مرحله سوم جلسات برنامه ریزی اسپرینت ها خواهند بود که اهداف و چگونگی رسیدن به اهداف بحث می شود و می توان از Scrum Board [38] استفاده کرد. مرحله چهارم هم تهیه سند اسپرینت [۳۹] می باشد. مرحله پنجم Scrum Execution نام دارد که اعضای تیم فعالیت هایشان را با Scrum Board بروزرسانی می کنند.

 

مرحله ششم تحویل اسپرینت می باشد که می تواند بخشی از تحویل تکمیلی یک فاز یا تمام یک فاز باشد. مرحله هفتم ارایه گزارش اسپرینت هست و مرحله پایانی بازنگری اسپرینت[۴۰] می باشد که پایان اسپرینت می باشد و بعد از این اسپرینت جدید آغاز شده و بازگشت به مرحله سوم صورت میگیرد و این تناوب تا اتمام و نگهداری پروژه ادامه پیدا می کند.[۴۱]

[۱] scrum

[۲] . حمید خورسند رحیم زاده , محمد حیدری مقدمه ای بر مهندسی نرم افزار

[۳] Wikipedia

[۴] Hirotaka Takeuchi

[۵] Ikujiro Nonaka

[۶] Flexibility

[۷] Speed

[۸] Japan

[۹] What

[۱۰] Mike Cohn

[۱۱] Mike Cohn Blog

[۱۲] scrum guide

[۱۳] iterative incremental

[۱۴] Scrum Alliance

[۱۵] Google

[۱۶] Yahoo

[۱۷] Microsoft

[۱۸] فریدون شمس علیئی مهندسی نرم افزار پیشرفته

[۱۹] Scrum Master

[۲۰] Product Owner

[۲۱] Business

[۲۲] Stakeholders

[۲۳] Team Member

[۲۴] Wikipedia

[۲۵] Programmer

[۲۶] Analyzer

[۲۷] Database Administrator

[۲۸] Self-Organize

[۲۹] denoting or relating to a system whereby people from different areas of an organization work together as a team

[۳۰] Task

[۳۱] Product Owner

[۳۲] مهدی تاچیک, مدیریت اسکرام به زبان ساده

[۳۳] حمید خورسند رحیم زاده , محمد حیدری مقدمه ای بر مهندسی نرم افزار

[۳۴] What did you do since the last meeting?

 

[۳۵]What obstacles are you encountering?

[۳۶] What do you plan to accomplish by the next meeting?

[۳۷] R.S. PressMan , an Approach to Software Engineering

[۳۸] تخته ایست شامل سه بخش ToDo Doing و Done

[۳۹] Sprint Backlog

[۴۰] Sprint Retrospective

[۴۱] منصور جوادی, اسکرام به زبان ساده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *