مختبر عيناوي
النبض البرمجي

البرمجة القصوى 1

21‏/05‏/2011

سأقدم لكم من خلال هذه التدوينة (وتدوينات لاحقة) المبادئ الرئيسية والطريقة المستخدمة في برمجة الأنظمة والبرامج بشكل غير معقد وبطريقة مختلفة عن الأسلوب الشائع في عمل الشركات وأغلب المؤسسات الحكومية التي تمتلئ مكاتبهم بالأوراق والملفات الخاصة بجميع مراحل دورة حياة الأنظمة والبرامج.

ملاحظة: سيتم تقديم الشرح في أكثر من مقالة!

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


ممارسات حيوية
جميع المساهمين في مشروع البرمجة القصوى يمثلون فريقا واحداً، ويجب أن يحتوي الفريق على ممثل للمشروع الذي يقوم بتزويد الفريق بجميع التفاصيل الخاصة بالمتطلبات  والأولويات ويشرف على المشروع أولا بأول. ويفضل أن يكون هذا الممثل أحد المستخدمين الذين يُلمّون بتفاصيل العمل في المؤسسة/الشركة. وبالطبع يجب أن يحتوي  الفريق على المبرمجين والمحللين الذي يساهمون في تحديد المتطلبات بمساعدة ممثل الشركة. ولا ننسى مختبري البرمجيات الذين تنطوي مسؤولياتهم باختبار أجزاء المشروع والتأكد من  مطابقتها للمتطلبات. وأحد أهم أعضاء الفريق هو مسؤول الفريق الذي يلعب دوراً في التأكد من أن الفريق يسير في الاتجاه الصحيح. بالإضافة إلى مدير المشروع  الذي يقوم بتوفير المصادر ويجري الاتصالات الخارجية ويقوم بالتنسيق بين الأطراف. وعلى الرغم من هذا كله ليس بالضرورة أن يقوم شخص واحد فقط بأي وظيفة  معينة بل يجب على كل عضو من أعضاء الفريق المساهمة بخبراته بأي طريقة كانت. حيث أن الفريق الأمثل لا يحتوي على المختصين فقط؛ بل يحتوي على المساهمين ذات المهارات الخاصة.

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

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

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

تعتبر خطوات التخطيط هذه غاية في البساطة، إلا أنها توفر معلومات جيدة جدا وتوجيه ممتاز في أيدي العملاء. حيث يعتبر تقدم المشروع مرئي وبوضوح كل أسبوعين. ولايوجد هناك ما يسمى "تم إنجاز 50%" أو "تم إنجاز 90%" من المشروع؛ إما تم إنجاز المطلوب أو لا! ويتم التركيز بهذه الطريقة على النتائج بكل وضوح في مفارقة صغيرة ولطيفة: حيث في جهة واحدة، وفي درجة وضوح معينة للمشروع، يمكن للعميل/المالك أن يلغي المشروع إذا كان تقدم المشروع غير كافي وغير مقنع. وفي الجهة المقابلة، إذا كان التقدم في المشروع واضحا جدا والمقدرة على تحديد ما سيتم إنجازه مكتملا سيتكلل المشروع بالنجاح حيث يمكن باستخدام منهجية "البرمجة القصوى" من تقديم أكثر مما هو مطلوب بقليل من الجهد.


اختبارات مالك المشروع
كجزء من برمجة مطالب العميل في المشروع، يتم تنفيذ اختبارات معينة يطلبها العميل على أجزاء تم الانتهاء منها للوقوف وتجاوز الأخطاء المتوقعة سواء كانت من المستخدم (User Error) أو أخطاء في منطق البرمجة المتبع (Logical Error). يقوم فريق البرمجة (أو المعنيين بإجراء الاختبارات) بإثبات صدقية وتطابق عمل الجزء الذي يتم اختباره للعميل ولأنفسهم بأنه تم عمل ما هو مطلوب بشكل سليم وصحيح. وحسب أفضل ممارسة في البرمجة القصوى يقوم فريق البرمجة بإجراء الاختبارات التي يطلبها العميل بنفس درجة الاختبار التي يجرونها لأجزاء المشروع بأنفسهم (Unit Testing).


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

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

** يتبع **

0 تعليقات :