المعلوماتية > برمجيات

منهجية Agile في هندسة البرمجيات؛ تعريف بمنهجية Agile

يعتمد نجاح أي مشروع برمجي على عاملين: خطة عمل مُثلى وواقعية، ودرجة عالية من التعاون بين أعضاء فريق العمل والزبون من جهة، وبين بعضهم البعض من جهة ثانية.

في أثناء التسعينيّات، طُوِّر عدد من أساليب تطوير البرمجيات الرشيقة (Agile) بمثابة ردّ فعل على الأساليب المعقدة السائدة حينها *(أنموذج الشلال Waterfall) التي وصفها النقاد بأنها شديدة التنظيم والتخطيط وتُدار على نحو صارم؛ مما يجعلها غير قادرة على تلبية تغيُّر المتطلبات الذي يحدث في المشاريع البرمجية غالبًا (1).

ولذلك؛ دمج المطورون الأدوات القديمة -التي كانت متّبعة في آلية تطوير البرمجيات التقليدية- مع الأفكار الحديثة التي كانت تبصر النور يومًا بعد يوم، وذلك لإيجاد مزيج بينهما يساعدهم على حل مشكلة معينة تواجههم في أثناء التطوير، وكلما وجد المطورون مزيجًا يساعد على حل مشكلة ما؛ حفظوا هذا المزيج ضمن طريقة معينة تساعدهم على تذكر المزيج كلما واجهوا المشكلة نفسها، وكانت هذه الطريقة فعّالة مع كثير من الشركات والمطوّرين (2). 

تنبّه المطورون بعد مرور فترة من الزمن إلى وجود ثغرة في هذه الطريقة، وهي احتمالية وجود مطورين آخرين في شركات اُخرى قد تواجههم مشكلات مشابهة دون القدرة على حلها لعدم امتلاكهم مفتاح الحل؛ وهو المزيج الصحيح. لذلك قرر المطورون إيجاد وسيلة تساعدهم على تبادل الطرائق الجديدة التي توصّلوا إليها لحل مشكلات معينة، وهنا أتت فكرة إنشاء أُطر عمل (Frameworks) مختلفة تساعد على نقل الأفكار والطرائق بين فِرق وشركات مختلفة (2).

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

ولكن لاحظ المطورون مع مرور الوقت مشكلةً جدية، وهي كثرة الأفكار والأُطر؛ أي عدم وجود منهجية واحدة متّبعة لحل المشكلات؛ إذ نشر كل فريقِ مطورين طريقةَ حل مشكلة معيّنة واجهته بعد أن تغلب عليها على الرغم من احتمالية وجود طريقة اتّبعها فريق آخر بأسلوب مختلف. هذا ما ناقشه فريق مكون من سبعة عشر مطورًا كانوا في رحلة تزلج في Snowbird, Utah عام 2001، وفي نهاية الرحلة كانت منهجية Agile قد أبصرت النور بعد الاتفاق على ميثاق العمل ومبادئه، وتلاها ببضعة أشهر إعلانٌ عن المكان الرئيس لمطوّري هذه المنهجية (Agile Alliance (2.

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

ما يميز منهجية Agile عن باقي منهجيات هندسة البرمجيات هو ارتكازها على فكرة تعامل الأشخاص بعضهم مع بعض؛ إذ ترى هذه المنهجية أنّ عمل الأشخاص بعضهم مع بعض هو العامل الأساسي في إيجاد الحلول للمشكلات التي يمكن أن تعترض أي مشروع. ولكن كأيّة منهجية في هذا المجال؛ يجب إقرار خطة عمل ومبادئ تساعد على ضبط قواعد العمل المشترك بين جميع الأفراد؛ سواءً أكانوا مطورين أم إداريين أم حتى الزبائن الذين يطلبون تطوير المشروع، كلُّ شيء في هذه المنهجية له قواعده ومبادؤه (2,3).

تضم منهجية Agile أربع قيم واثني عشر مبدأً لتحديد الطريقة المثلى للتعامل بين الأفراد وكيفية استجابتهم لأي تغير في العمل، كذلك ينصّ الميثاق الأساسي للمنهجية على ضرورة استجابة الأفراد وتفاعلهم مع بيئة وأدوات العمل، وذلك لتسهيل قدرة الأفراد على الانخراط في المشروع على نحو فعال ومؤثر. فضلًا عن ذلك، دعا الميثاق إلى أهمية توثيق مراحل العمل كلها؛ مما يضمن فهم الأفراد لماهية المشروع وضمان التزام الأفراد كافة بالعقد الموقّع من الأطراف كافة، لكنّ هذا لا يمنع توفر المرونة في العمل تجاه أي تغيير يطرأ على المشروع. بهذه القيم الأربع حُدِّد ميثاق العمل الأساسي لمنهجية (Agile (2,3.

وفي نهاية الأمر لا يسعنا إلّا القول إنّ منهجية Agile -بقيمها الأربع ومبادئها الاثني عشر وميثاقها الأساسي- تضمن للفرد إمكانيات واسعة وعديدة لتطوير البرمجيات من جهة، ومساعدة مجتمع المطورين في مشاريعهم من جهة أخرى.

هامش

*أنموذج الشلال Waterfall:

هنا 

هنا

المصادر:

1. Kerr J, Hunter R. Inside RAD. New York: McGraw-Hill; 1994.  

2. What is Agile Software Development? [Internet]. Agile Alliance. [cited 26 May 2020]. Available from: هنا

3. Kumar G. Impact of Agile Methodology on Software Development Process. International Journal of Computer Technology and Electronics Engineering [Internet]. 2012 [cited 27 May 2020];2(4). Available from: هنا