تطبيق منهجية اجايل في المشاريع البرمجية


المنهجية الرشيقة
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

  1. كل جزئية من الـ Scrum  تدعى Sprint
  2. Product Backlog هو قائمة من التفاصيل المحددة للوصول إلى المنتج النهائي 
  3. خلال كل sprint يتم اختيار أحد متطلبات العميل (الزبون) لإضافتها إلى الـBacklog الخاص بالـ Sprint  الحالي 
  4. يقوم الفريق بالكامل بالعمل على المهمة المحددة 
  5. هناك اجتماع يومي بين أعضاء الفريق لمناقشة كافة التطورات والمشاكل التي تواجه الفريق
  6. في نهاية كل sprint يقوم الفريق بتسليم منتج مصغَر للزبون 

 
المراجع :
 
https://www.guru99.com/agile-scrum-extreme-testing.html
– https://bit.ly/2RJEqle