المنهجية الرشيقة Agile و السكرام Scrum في بناء البرمجيات وإدارة المشاريع

المنهجية الرشيقة  Agile و السكرام Scrum في بناء البرمجيات وإدارة المشاريع

يتجه الكثيرين عند تعلم لغة برمجة ما إما من خلال الدراسة الذاتية أو من خلال الكلية في جامعة إلى تعلم تقنيات كتابة الأكواد البرمجية وتحسينها, أي “كيف تقوم بكتابة كود برمجي” , فيما يتم اهمال الجانب الأهم في صناعة البرمجيات وهو “كيف تقوم ببناء نظام برمجي متكامل” و كيف أقوم ب “إدارة فريق برمجي”.

في هذه المقالة سنقوم بإلقاء الضوء على أسلوب حديث وفعّال يتم اتباعه في بناء وإدارة المشاريع البرمجية والمعروف اليوم ب Scrum ولكن قبل الحديث عن ال Scrum لابدّ من التعريف بالمنهجية الرشيقة المشهورة Agile.

أكمل قراءة المقالة

اﻹكمال التلقائي للنصوص

الإكمال التلقائي للنصوص هي الميزة التي تسمح للتطبيق بالتنبأ بالنص الكامل، وذلك بمجرد كتابة بادئة من النص، من المأكد أنك قمت باستخدامه كثيراً في حياتك اليومية مثل:

  • محركات البحث: محرك البحث جوجل يقترح لك اكمالاً تلقائياً للنص بمجرد كتابة جزء منه في مستطيل البحث، عادة تكون هذه الاقتراحات مرتبة حسب أكثر اﻷمور التي يتم البحث عنها حالياً. 
  • في البريد الالكتروني، بمجرد أن تكتب جزأ من العنوان سوف تظهر لك قائمة من الاقتراحات. 
  • وسائل التواصل الاجتماعي، مثل فيسبوك، لينكيد إين، انستغرام… 
  • في محررات كتابة الأكواد، أنا أستخدم حاليا تطبيق Atom ولقد قمت باستخدام ميزة الإكمال التلقائي على اﻷقل 10 مرات في هذا الجزأ البسيط من المقالة. 
أكمل قراءة المقالة

8 مواقع يحتاجها المبرمجون بكثرة

في هذه المقالة سأتحدث عن افضل 8 مواقع ستجد فيها أكواد جاهزة ومفتوحة المصدر. سواء كنت مبرمج محترف أو مبتدئ أو بدأت في تعلم البرمجة ستحتاج عاجلاً ام أجلاً الى مجموعة من الأكواد الجاهزة التي ستختصر لك الوقت أو التي ستتعلم من خلالها مجموعة من المهمات التي ستحتاجها في طريقك الى الاحتراف أو في مشاريعك .

أكمل قراءة المقالة

الخوارزميات وبنى المعطيات في بايثون: الدرس الأول تحليل الخوارزميات

الخوارزميات وبنى المعطيات في بايثون: الدرس الأول تحليل الخوارزميات

في هذه السلسلة من الدروس, سأقوم شرح مفاهيم عامة في الخوارزميات وبنى المعطيات في لغة البرمجة بايثون، رغم أن الأمثلة في هذه الدروس مكتوبة في لغة بايثون، إلا أن المفهوم العام المراد إيصاله يمكن تعميمه على جميع لغات البرمجة.

أكمل قراءة المقالة

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


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