البرمجة القصوى
أسلوب تعاوني في تطوير البرمجيات يعد بإنتاج تطبيقات أفضل، في الموعد المحدد، وضمن الميزانية المخصصة.
تصور أسلوباً جماعياً للبرمجة، لا تواجه فيه مفاجئات كثيرة، ويسمح بتنفيذ التغييرات بسهولة، وتتراكم الشيفرة المختبرة خلال جدول زمني محدد. هذا هو هدف البرمجة القصوى (Extreme Programming (XP
ما هي البرمجة القصوى (XP)؟
تعرّف البرمجة القصوى (Extreme Programming) أسلوباً يضع الزبائن والمبرمجين ضمن فريق واحد متماسك بقوة، وتحت شروط عمل تشجع الاتصال بينهم لحل المشكلات. ابتكر "كينت باك" (Kent Back) هذه الطريقة في تطوير التطبيقات في العام 1996، وهي تتطلب التعاون والاتصال والانضباط. وبسبب التفاعل الشديد بين أعضاء الفريق، فإن أسلوب البرمجة القصوى، يناسب أفضل ما يمكن فرق العمل الصغيرة، وحتى المتوسطة، التي يتراوح عدد أفرادها 15 عضواً. بينما يمكن لعدة فرق عمل أن تتحد لتنفيذ المشاريع الكبيرة، ويمكن لأعضائها التحرك عبر تلك الفرق، بالإضافة إلى التحرك ضمن كل فريق.
تقسّم البرمجة القصوى عملية التطوير إلى "قضمات" متعددة، وتعتمد على الاتصال اليومي وجهاً لوجه بين أعضاء الفريق، بالإضافة إلى تنفيذ اختبارات كثيرة، ويتم تغيير المواصفات أثناء جريان عملية التطوير.، حيث يحدث تطوير المشاريع بشكل تزايدي، فتكتب الشيفرة الكافية لتنفيذ الوظائف المطلوبة في كل مرحلة فقط، ويتم تقييم وتعديل كل شيء (التصميم، والمزايا، والشيفرة) باستمرار للحصول على النتيجة المطلوبة.
يتألف أسلوب البرمجة القصوى رسمياً من 12 ممارسة أساسية ( انظر الجدول في نهاية المقالة ). وتبدأ بلعبة التخطيط، التي يكتب فيها الزبون سيناريوهات استخدام بسيطة، على بطاقات بقياس 3×5 بوصة، بدون تعقيدات ووثائق مواصفات متخمة بالكلمات. وتؤدي هذه التقنية البسيطة إلى زيادة الاتصال الشخصي بين أفراد فريق البرمجة، ويدفع تخفيض الكلمات المكتوبة إلى حدّها الأدنى، بالنقاشات إلى حدّها الأقصى. ويؤدي وجود الزبون في موقع العمل إلى تفاعله مع المطورين، ويمكنه بهذا إحداث التغييرات على التصميم سريعاً.
تشمل النقاشات بين أعضاء الفريق، تقدير الوقت والموارد المطلوبة لإنهاء كل ميزة. ويعتمد التوقيت على فترات قصيرة، تمتد عادة من أسبوع إلى ثلاثة أسابيع. وينجز خلالها قسم صغير، لكنه فعّال، من المشروع. وتتضمن كل فترة التصميم، والتشفير، والاختبار، والإصدار، ثم يدمج كل إصدار مع الإصدارات السابقة. ولأن المشروع مبني من خلال خطوات صغيرة لكنها فعّالة، فإن الإصدار النهائي للتطبيق، لا يعتبر حدثاً كبيراً. ويصبح التطبيق أو النظام كاملاً عندما يتضمن من الوظائف الفعّالة ما يكفي الزبائن، أو يسمح ببيعه لهم.
تتطلب طريقة البرمجة القصوى، أن يعمل المبرمجون زوجاً زوجاً، كل زوج على محطة عمل واحدة، حيث يكتب أحدهم الشيفرة، بينما يراقب الآخر الصورة العامة. وتسمح البرمجة الزوجية، بكثير من النقاشات، ويمكن لهذين المبرمجين تبادل الأماكن دورياً. وبينما يقول بعض قدماء البرمجة، أن هذه الطريقة ليست كفؤة، إلا البرمجة الزوجية تقدم كفاءة أكبر من ما يقدمه عمل شخصين بشكل منفصل، لأنها تقلل احتمال الدخول في مسارات تطوير جانبية.
يجب الالتزام أثناء كتابة كامل الشيفرة بالمواصفات القياسية. وعلى المطورين الاتفاق بداية، على نمط النظام، وهي طريقة قياسية لتسمية الأصناف والطرق، ومعمارية قياسية تسهل إعادة استخدام وفهم الشيفرة بين أعضاء الفريق. ومن الأفضل مع زيادة الاتصال والانفتاح، الالتزام بالمواصفات القياسية بحذافيرها. يغيّر المبرمجون شركاءهم دورياً، ويعملون على جميع أوجه المشروع، ما يعطي مجموعة العمل كاملة، ملكية الشيفرة. والحالة النموذجية، أن يعمل جميع أعضاء الفريق، الذي يشمل المطورين والزبائن، ضمن غرفة واحدة لا تفصل بينهم حواجز.
تتم الاختبارات أثناء العمل، ولها مستويين أساسيين:
- مستوى اختبارات الوحدة Unit tests، التي يكتبها المبرمجون، تجرب شيفرة الإنتاج، بالاعتماد على الصنف أو الوحدة البرمجية.
- مستوى اختبارات القبول Acceptance tests، المشتقة من سيناريوهات الزبون، والتي تفحص تنفيذ الميزة بشكل صحيح.
ولكل شيفرة اختبار مقترناً بها، وتضاف الاختبارات الجديدة إلى القديمة ضمن إطار عمل الاختبار. ما ينشئ طقم اختبار شامل. ويمكن للمبرمجين باستمرار مراجعة الشيفرة، وإزالة التكرار فيها، وضبط التصميم إلى الوضع الأمثل. ويسمح هذا، مجتمعاً مع طقم الاختبار، للمبرمجين بتجنب العلل البرمجية التقليدية الناتجة عن إصلاح شيء، وإفساد أشياء أخرى.
على فريق العمل في البرمجة القصوى أن يكافح لتنفيذ 40 ساعة عمل في الأسبوع، مع تجنب العمل الإضافي المجهد الذي يسبب تنفيذ العمل بدون اتقان. حالة أي مشروع منفذ بأسلوب البرمجة القصوى معروفة باستمرار، ويمكن بهذا للفريق أن يخطط بشكل أفضل ويعمل بخطوات ثابتة على المدى الطويل.
الهموم
أي شيء جديد يمكن أن يكون مصدراً للخلاف، خاصة عند الاعتماد على التقنيات التي تحتاج إلى تحول بزاوية 180 درجة. وهو ما تدعو إليه تماماً البرمجة القصوى. يقول جوشوا كيريفسكي (Joshua Kerievsky) رئيس شركة Industrial Logic، وهي شركة ملتزمة جداً بأسلوب البرمجة القصوى، أن الخطوة الأكثر أهمية في تقييم النجاح المتوقع لمشروع يعتمد على البرمجة القصوى، هو تحديد إذا كان كل من المطورين والزبون يستطيع التعامل مع ضرورات التغيير الضخمة. ويشير إلى أن التغييرات كبيرة جداً بالنسبة للعديد من الشركات. فالبيئات المفتوحة تزيل الأشياء الخاصة بالأفراد مثل غرف مكاتبهم، وتؤذي الملكية الجماعية للشيفرة غرور غلاة خبراء البرمجة.
يقول منتقدو البرمجة القصوى، أنها تقوم بمجرد دمج أفضل الممارسات التي وجدت منذ سنوات، وهذا صحيح، لكن ما لذي يجعل عملية البرمجة القصوى تقدم جميع أفضل الممارسات التي استخدمت في كل الأوقات؟
وعدُ البرمجة القصوى بشيفرة مصممة جيداً، ومختبرة جيداً، وتسلم في الوقت المحدد، ولا تزيد تكلفتها عن الميزانية المحددة، يجعلها أسلوباً يستحق التفكير به.
| لب ممارسات البرمجة القصوى : |
| البدء لعبة التخطيط. |
| وجود الزبون في موقع التنفيذ. |
| وضع نمط للنظام. |
التصميم البسيط. |
| ملكية تعاونية للشيفرة. |
| الالتزام بمقاييس التشفير. |
| البرمجة ضمن أزواج. |
| الاختبار المستمر. |
| الدمج المستمر. |
| إصدارات صغيرة. |
| المراجعة والضبط. |
| تنفيذ 40 ساعة عمل أسبوعياً كحد أدنى. |

