روش scrum
در روشهاي قديمي و معمول ساخت نرمافزار، طراحان نرمافزار معمولاً ابتدا فرض ميكنند كه تمامي نيازهاي كاربران سيستم را درك كردهاند. اما هميشه نيازهاي كاربران سيستم در ابتدا مشخص نيست و كاربران ممكن است در همان مراحل ابتدايي، نيازهاي خود را تغيير دهند و اين چيزي است كه برنامهنويسان و طراحان سيستم هميشه از آن شكايت ميكنند و به دنبال راهحلي براي رفع اين موضوع ميگردند. بهعنوان مثال مدل قديمي آبشاري (waterfall) را در نظر بگيريد.
اين مدل حاوي مشكلات فراواني است كه به صورت مستقيم به غيرقابل انعطافبودن اين مدل ارتباط دارد. اين مدل مانند يك جاده يك طرفه ميباشد كه وقتي اتومبيل در آن حركت ميكند، نميتواند مسير خود را تغيير دهد و در جهت ديگري حركت كند. در ابتداي كار كاربر سيستم ممكن است نظراتي در مورد سيستم داشته باشد ولي نميتواند ببيند كه سيستم چگونه كار خواهد كرد و در نتيجه ممكن است وقتي كه سيستم آماده شد، از ساختار و كارايي آن راضي نباشد و تقاضاي تغيير در سيستم را بنمايد. در نتيجه اگر بتوانيم كاربر را از ابتدا در جريان ساخت نرمافزار قرار دهيم، ممكن است كه اين مشكل حل شود؛ زيرا ميتواند نظرات خود را در طول مدت ساخت و قبل از اتمام كار اعلام كنند و در نتيجه از نرمافزار تهيه شده راضي باشد.
امروزه يكي از روشهاي توليد نرمافزار كه به خصوص براي پروژههاي نرمافزاري كوچك مورد استفاده قرار ميگيرد و توسط بسياري از اساتيد و صاحبنظران مورد تأييد قرار گرفته است، روش SCRUM است. با استفاده از اين روش كه روشي به اصطلاح iterative ( تكراري يا چرخشي ) ميباشد، ميتوان نرمافزارهاي كوچك را با كيفيت بالا تهيه نمود. در اين روش كه به روش هوشمند يا Agile نيز مشهور است، مديريت قوي توليد نرمافزار وجود دارد كه به برنامهنويسان اجازه ميدهد با استفاده از آن در پروژهها به سرعت نرمافزار موردنظر را تهيه نمايند. اسم Scrum در حقيقت از بازي راگبي گرفته شده است (در بازي راگبي Scrum تيمي متشكل از هشت نفر است كه با همكاري بسيار نزديك با يكديگر بازي ميكنند).
در اين روش هر عضو از گروه موظف به درك وظيفه خود در پروژه است و بايد يك هدف مشخص را در تمامي مراحل عملياتي يا فازهاي اجرايي دنبال كند. لازم به ذكر است كه در Scrum هر فاز عملياتي سيستم به Sprint مشهور است.
روش Scrum همانند پروسههاي داراي مرحله برنامهريزي مقدماتي يا Initial Planning است. در اين فاز اعضاي تيم بايد يك نقشه مقدماتي و يك معماري سيستم قابل تغيير به وجود آورند. بعد از اين فاز يك سري از Sprintها به صورت مرتب و جزء جزء نرمافزار مورد نظر را به وجود ميآورند. انجام دادن هر Sprint ممكن است از يك تا چهار هفته به طول بينجامد و مجموع اين Sprintها نرمافزار كاملي را بهوجود مي آورند.
فهرست تكاليف در هر Sprint به Backlog مشهور است كه تكاليف تيم عملياتي در هر Sprint را مشخص ميكند. اين Backlog در هر Sprint بروز ميشود و هر تكليف براساس اهميتي كه دارد در فهرست تكاليف تعيين اولويت ميگردد. هر فرد در گروه يك كار يا تكليف خاص از اين فهرست را به عهده ميگيرد و موظف ميشود تا شروع Sprint بعدي آن را به اتمام برساند. وقتي كه يك Sprint شروع شد، ديگر انجام هيچ تغييري در تكاليف امكان ندارد و حتي درخواستكننده نرمافزار نيز حق تغيير يا درخواست نياز ديگري در نرمافزار را نخواهد داشت.
البته درخواستكننده ميتواند از قسمتي از نرمافزار كه بايد در هر مرحله توليد شود بكاهد، اما نميتواند تاريخ تحويل آن قسمت را تغييردهد. شايد بتوان گفت كه اين كار باعث ايجاد نظم در گروه ميشود و تاريخ تحويل نرمافزار به تعويق نخواهد افتاد. علاوه بر اين، در طول هر Sprint گروه موظف است روزانه جلساتي جهت بررسي روند پيشرفت و قابليتهاي نرمافزار داشته باشد كه اين نيز به هماهنگي بيشتر گروه كمك خواهد كرد. در اين جلسات كه معمولاً به صورت روزانه است، سه گروه ميتوانند شركت كنند: گروه تهيهكننده نرمافزار، مديريت، و درخواستكنندگان نرمافزار.
در طول اين جلسات مسئول جلسه كه اغلب مدير پروژه است، از تمامي اعضاي تيم سه سؤال مي پرسد:
1- مسئوليت شما (تكاليف) از جلسه قبلي تاكنون چه بوده است و آيا توانستهايد اين تكاليف را به اتمام برسانيد؟
2- در طول اين دوره به چه مشكلاتي برخوردهايد؟
3- بر طبق فهرست وظايف، مسئوليت شما از حالا تا جلسه بعدي چه خواهد بود؟
مدير Scrum در حقيقت مسئوليت شناسايي تكاليف محوله به اعضا، بررسي روند تكميلي ساخت نرمافزار، بررسي قابليتهاي اعضاي گروه و فعاليت در راستاي كم كردن ريسك در پروژه را داراست.
اما چه تفاوتي بين Scrum و ديگر روشهاي توليد نرمافزار وجود دارد؟ در جواب اين سؤال بايد يادآورشد كه در Scrum هر مرحله يا Sprint قسمتي از نرمافزار را آماده مي كند. در اين روش مي توان پيشرفت در توليد نرمافزار را در هر مرحله به خوبي احساس نمود. علاوه بر اين، گروه ميتواند پس از اتمام هر Sprint تصميمگيريكند كه آيا مي خواهد به كار روي پروژه ادامه دهد يا انجام پروژه مذكور غيرممكن است. روش Scrum وقتي ميتواند بيشتر مفيد باشد كه در ابتداي پروژه نيازهاي كاربران به صورت دقيق مشخص نباشد و يك گروه كوچك مسئول پروژه نرم افزاري باشد.
شايد اين سؤال در ذهن شما به وجود آيد كه چرا Scrum ممكن است براي توليد نرمافزارهاي كوچك راه حل خوبي باشد؟ در جواب ميتوان گفت، از آن جايي كه در تيمهاي كوچك، اعضاي گروه بايد از تمامي مسائل پروژه آگاه باشند و در Scrum تمامي مراحل ساخت توسط تمامي اعضاي گروه قابل مشاهده است. لذا اين روش ميتواند روش مناسبي باشد.
معايب روش Scrum
مزاياي استفاده از Scrum بسيار است، اما اين روش چند اشكال نيز دارد. از جمله:
1-Scrum روش جديدي است و با روشهاي مرسوم تفاوتهاي زيادي دارد.
2- برخي از برنامهنويسان حرفهاي ممكن است از تكاليفي كه مدير Scrum به ايشان ميدهد راضي نباشند و بخواهند روش قديمي خود را اجرا نمايند و در صورت اجبار، در روند اجراي پروژه كارشكني كرده و مشكلآفريني كنند.
3- از آنجا كه مدير Scrum هم از نظر كيفي و هم كمي بايد پروژه را مديريت كند، Scrum نياز به مديريت بسيار قدرتمند دارد.
4-Scrum را ميتوان به عنوان روش توليد نرمافزار نام برد، اما اين روش بيشتر روش مديريت پروژه هوشمند خوبي است و نميتوان آن را به صورت منفرد استفاده نمود و ميتوان گفت براي حصول اطمينان از موفقيت پروژههاي نرمافزاري (به خصوص در سطح كوچك) بايد اين روش را با روشهاي ديگر ادغام نمود Scrum را از آن جهت ميتوان روش خوبي برشمرد كه روشي تحقيقي براساس تخمين، اولويتبندي، عملكرد گروه و بررسي نتايج است كه اگر به صورت صحيح مورد استفاده قرار گيرد و قبل از استفاده به صورت كامل آموزش داده شود، ميتواند راندمان پروژههاي نرمافزاري، به خصوص توليد نرمافزارهاي كوچك را به صورت بسيار محسوسي بالا ببرد.