المنهجية الرشيقة
Agile Methodology
كما هو الحال في جميع المشاريع في أي مجال من مجالات الحياة العملية – حيث لا بد من وجود منهجية في العمل وفلسفيات متَبعة لإنجاز الأعمال بدقة وسرعة وكفاءة على حد سواء – كان الحال في مجال تطوير البرمجيات حيث تم وضع منهجيات ودراسات واسعة لتحقيق المتطلبات بكفاءة عالية
ف وضعت الأسس لتنظيم فرق العمل وتخطي العقبات التي تواجه المطورين في الوصول إلى الهدف المطلوب أو الوصول دون الكفاءة المطلوبة ..
فظهرت عدة منهجيات وكانت الأهم هي المنهجية الرشيقة (Agile) والتي خلقت ثورة في إدارة المشاريع البرمجية .
تعريفاً : آجايل هي منهجية متبعة في تطوير البرمجيات تعتمد على التطوير المستمر للبرمجيات والاختبارات المتزامنة مع التطوير , أي بعكس المنهجيات القديمة كنموذج الشلال (waterfall) .
من أهم ما تميزت به هذه المنهجية هو (رشاقتها) حيث برزت عدة ميزات منها :
المقدرة على الاستجابة لأي تغييرات في الخطة المقترحة لبناء البرمجيات خلال أي مرحلة من مراحل تطوير المشروع :
حيث يتم تقسيم المشروع كاملاً إلى جزئيات صغيرة وكل جزئية تعتبر مشروع صغير يمكن تقديمه للزبون وهذا ما يكسب الزبون الرضا كما يمكنه إبداء آرائه واقتراحاته حول كل مرحلة من مراحل المشروع .
تعزيز التفاعلات الفردية والجماعية للفريق سواء على مستوى العمليات أو الأدوات :
وهنا يظهر الاهتمام بالفريق ومعنوياته وخبراته أكثر من الاهتمام بالأدوات المستخدمة كما تتم المشاركة بالمعارف والأدوات المتوفرة لإنجاز المشروع
تسهيل التفاوض مع الزبون وقدرته على مراقبة التطورات القائمة على المشروع :
غالباً الزبون يملك نظرة ضبابية تجاه المشروع في بداية الأمر .. وهذا أمر طبيعي ولكنه غالبا ما كان يسبب العديد من المشاكل في المنهجيات القديمة حيث يكون المنتج في نهاية الأمر مخالف لتوقعات الزبون
وهذا ما قامت بحلَه هذه المنهجية بحيث كما ذكرنا سابقا يتم تسليم المشروع على مراحل مما يضع الزبون في صورة العمل خطوة بخطوة .
ورغم اتجاه نسبة كبيرة من مهندسي البرمجيات نحو منهجية ال Agile في تطوير المشاريع إلا أنه لا بد من وجود بعض التفاصيل التي لا يزال يتفوق بها نموذج الشلال مثلا :
الفرق بين المنهجية الرشيقة (Agile) ونموذج الشلال (Waterfall Method) :
عموما هناك طرق عديدة لتطبيق المنهجية الرشيقة وهي :
– SCRUM
يعتبر Scrum من طرق Agile التي تهتم خصوصا بكيفية إدارة المهام وبيئة العمل التي سيعمل ضمنها فريق التطوير وبشكل أساسي تم استخلاص فكرة Scrum من رياضة الركبي الأميركية (Rugby)
حيث تقوم Scrum على فكرة تطوير روح الفريق والتعاون بين أعضاءه بحيث لا يتجاوز عدد أفراد الفريق المسؤول عن تطوير خدمة معينة اكثر من (7-9) أشخاص .
وبشكل أساسي هناك ثلاث وظائف رئيسية في كل فريق هي :
Scrum master
Product owner
Scrum Team
حيث تكون مهمة كل منهم كالآتي :
– Scrum Master
يكون مسؤول عن تجهيز الفريق والإشراف على الاجتماعات الدورية للفريق وإزالة العقبات المواجهة للتقدم بالعمل
وتعتبر المهمة الأكثر أهمية هي فصل الفريق عم الزبون بحيث لا تؤثر متطلبات الزبون أو ضغوطات الزبون على الفريق حيث يكون صلة الوصل بين الزبون والفريق بدون تشتيت انتباه الفريق أو إضعاف روح الفريق
وتعتبر مهمة إدارة الاجتماعات الدورية أمر غاية في الأهمية بحيث تتكرر هذه الاجتماعات بشكل يومي لمدة لا تتجاوز ال 15 دقيقة لمناقشة التطورات الأخيرة في المشروع والعقبات التي واجهت المطورين وطرح أساليب لحل هذه المشكلات مما يساهم في رفع سوية وخبرة أعضاء الفريق
– Product Owner
من الغريب أن تدرك أن مالك المشروع (الزبون فعليا) يعتبر عنصر أساسي من فريق العمل ولكن كيف !؟
بكل بساطة مالك المشروع هو من يقوم بتحديد متطلبات المشروع (Product Backlog), و أولوية هذه المتطلبات ويتحمل مسؤولية اختبار الفعالية لكل مرحلة من مراحل التطوير
– scrum team
الفريق هو من يدير عمله ليكمل كل (sprint ) من كل دورة تطوير وهو فريق المطورين جميعا بحيث يكون الجميع سواسية في الفريق
– Product Backlog
ويمكننا تشبيه ال Product Backlog لمستودع خاص بالمشروع حيث تخزن ضمنه المتطلبات التي يجب تحقيقها والمطروحة من قبل ال Product owner بشكل قصص وهي ما يسمى (user stories) كما يتم تخزين مجريات تطوير المشروع وأولوية المتطلبات بعضها على بعض ويتم توزيعها على أعضاء الفريق , كما يمكن لأعضاء الفريق وضع متطلباتهم واحتياجاتهم ليتم تلبيتها من مالك المشروع .
أما عن طريقة تنفيذ منهجية Scrum او ما يعرف بـ Scrum practices فهي تضمن لنا تقديم منتج أصغري أو جزيئة (قابلة للعمل ) من المشروع الكلي
– SCRUM Practices
- كل جزئية من الـ Scrum تدعى Sprint
- Product Backlog هو قائمة من التفاصيل المحددة للوصول إلى المنتج النهائي
- خلال كل sprint يتم اختيار أحد متطلبات العميل (الزبون) لإضافتها إلى الـBacklog الخاص بالـ Sprint الحالي
- يقوم الفريق بالكامل بالعمل على المهمة المحددة
- هناك اجتماع يومي بين أعضاء الفريق لمناقشة كافة التطورات والمشاكل التي تواجه الفريق
- في نهاية كل sprint يقوم الفريق بتسليم منتج مصغَر للزبون