البرمجة المتطرفة

البرمجة المتطرفة ( XP ) هي منهجية لتطوير البرمجيات تهدف إلى تحسين جودة البرمجيات واستجابتها لمتطلبات العملاء المتغيرة. وباعتبارها نوعًا من أنواع تطوير البرمجيات الرشيقة ، [ 1 ] [ 2 ] [ 3 ] فهي تدعو إلى إصدارات متكررة ضمن دورات تطوير قصيرة، بهدف تحسين الإنتاجية وإدخال نقاط تفتيش يمكن من خلالها اعتماد متطلبات العملاء الجديدة.
تشمل عناصر البرمجة المتطرفة الأخرى البرمجة الثنائية أو إجراء مراجعة شاملة للتعليمات البرمجية ، واختبار جميع التعليمات البرمجية كوحدات، وعدم برمجة الميزات إلا عند الحاجة الفعلية إليها ، وهيكل إداري مسطح، وبساطة التعليمات البرمجية ووضوحها، وتوقع تغييرات في متطلبات العميل مع مرور الوقت وفهم المشكلة بشكل أفضل، والتواصل المستمر مع العميل وبين المبرمجين. [ 2 ] [ 3 ] [ 4 ] تستمد هذه المنهجية اسمها من فكرة تطبيق العناصر المفيدة لممارسات هندسة البرمجيات التقليدية إلى مستويات "متطرفة". فعلى سبيل المثال، تُعتبر مراجعات التعليمات البرمجية ممارسة مفيدة؛ وعند تطبيقها بشكل متطرف، يمكن مراجعة التعليمات البرمجية باستمرار (أي ممارسة البرمجة الثنائية).
تاريخ
طوّر كينت بيك منهجية البرمجة المتطرفة (XP) خلال عمله على مشروع نظام التعويضات الشامل لشركة كرايسلر (C3) . [ 5 ] أصبح بيك قائدًا لمشروع C3 في مارس 1996. وبدأ في تحسين منهجية التطوير المستخدمة في المشروع، وألّف كتابًا حول هذه المنهجية ( شرح البرمجة المتطرفة ، نُشر في أكتوبر 1999). [ 5 ] ألغت كرايسلر مشروع C3 في فبراير 2000، بعد سبع سنوات، عندما استحوذت دايملر بنز على الشركة. [ 6 ] وكان وارد كانينغهام من أبرز المؤثرين في منهجية البرمجة المتطرفة.
تُعدّ العديد من ممارسات البرمجة المتطرفة شائعة منذ فترة؛ إذ تأخذ هذه المنهجية " أفضل الممارسات " إلى مستويات متقدمة. على سبيل المثال، استُخدمت "ممارسة التطوير القائم على الاختبار أولاً، أي تخطيط وكتابة الاختبارات قبل كل زيادة صغيرة" منذ مشروع ميركوري التابع لوكالة ناسا في أوائل الستينيات. [ 7 ] ولتقليل إجمالي وقت التطوير، تم تطوير بعض وثائق الاختبار الرسمية (مثل اختبارات القبول ) بالتوازي مع (أو قبل) جاهزية البرنامج للاختبار. يمكن لفريق اختبار مستقل تابع لوكالة ناسا كتابة إجراءات الاختبار، استنادًا إلى المتطلبات الرسمية والحدود المنطقية، قبل أن يكتب المبرمجون البرنامج ويدمجوه مع الأجهزة. تأخذ البرمجة المتطرفة هذا المفهوم إلى أقصى حد، حيث تكتب اختبارات مؤتمتة (أحيانًا داخل وحدات برمجية) تتحقق من صحة عمل حتى الأجزاء الصغيرة من ترميز البرنامج، بدلاً من اختبار الميزات الأكبر فقط.
الأصول
كان هناك عاملان رئيسيان ساهما في تشكيل تطوير البرمجيات في التسعينيات:
- داخلياً، حلت البرمجة الموجهة للكائنات محل البرمجة الإجرائية كنموذج برمجة مفضل لدى بعض المطورين.
- من الناحية الخارجية، أكد صعود الإنترنت وازدهار شركات الإنترنت على سرعة الوصول إلى السوق ونمو الشركات كعوامل تنافسية في مجال الأعمال.
تطلبت المتطلبات المتغيرة بسرعة دورات حياة أقصر للمنتجات ، وغالباً ما تعارضت مع الأساليب التقليدية لتطوير البرمجيات.
بدأ نظام التعويضات الشامل لشركة كرايسلر (C3) بهدف تحديد أفضل طريقة لاستخدام تقنيات الكائنات، مع التركيز على أنظمة الرواتب في كرايسلر كموضوع للبحث، واستخدام لغة سمول توك وطبقة الوصول إلى البيانات جيمستون . استعانت كرايسلر بكينت بيك ، [ 5 ] وهو ممارس بارز للغة سمول توك، لتحسين أداء النظام، لكن دوره توسع بعد أن لاحظ عدة مشاكل في عملية التطوير. انتهز بيك هذه الفرصة لاقتراح وتنفيذ بعض التغييرات في ممارسات التطوير، استنادًا إلى عمله مع زميله الدائم، وارد كانينغهام . يصف بيك التصور الأولي لهذه الأساليب: [ 8 ]
في المرة الأولى التي طُلب مني فيها قيادة فريق، طلبت منهم القيام ببعض الأمور التي رأيتها منطقية، مثل الاختبارات والمراجعات. أما في المرة الثانية، فكان الأمر أكثر أهمية. فقلت في نفسي: "لا يهم ما سيحدث، على الأقل سيُكتب مقال جيد"، وطلبت من الفريق التركيز التام على الأمور التي اعتبرتها أساسية وتجاهل كل ما عداها.
دعا بيك رون جيفريز للانضمام إلى المشروع للمساعدة في تطوير هذه الأساليب وتحسينها. بعد ذلك، عمل جيفريز كمدرب لترسيخ هذه الممارسات كعادات في فريق C3.
انتشرت المعلومات حول مبادئ وممارسات البرمجة المتطرفة (XP) على نطاق أوسع من خلال مناقشات على موقع الويكي الأصلي، ويكي ويكي ويب لكونينغهام . ناقش العديد من المساهمين الأفكار ووسّعوها، ونتج عن ذلك بعض المنهجيات المشتقة (انظر تطوير البرمجيات الرشيقة ). كما تم شرح مفاهيم البرمجة المتطرفة، لعدة سنوات، باستخدام خريطة نظام نصية تشعبية على موقع البرمجة المتطرفة الإلكتروني http://www.extremeprogramming.org (حوالي عام ١٩٩٩ ).
قام بيك بتحرير سلسلة من الكتب حول البرمجة المتطرفة (XP)، بدءًا من كتابه الخاص Extreme Programming Explained (1999، ISBN). 0-201-61641-6ساهم ذلك في نشر أفكاره لجمهور أوسع بكثير. وتناول مؤلفو السلسلة جوانب مختلفة من حضور برنامج XP وممارساته. وتضمنت السلسلة كتابًا ينتقد هذه الممارسات.
مفهوم
الأهداف
يشرح كتاب "شرح البرمجة المتطرفة" البرمجة المتطرفة بأنها منهجية لتطوير البرمجيات تقوم بتنظيم الأشخاص لإنتاج برامج عالية الجودة بشكل أكثر إنتاجية.
تسعى منهجية البرمجة القصوى (XP) إلى تقليل تكلفة تغييرات المتطلبات من خلال اعتماد دورات تطوير قصيرة متعددة، بدلاً من دورة واحدة طويلة. [ 9 ] في هذا النهج، تُعتبر التغييرات جانبًا طبيعيًا وحتميًا ومرغوبًا فيه في مشاريع تطوير البرمجيات، وينبغي التخطيط لها مسبقًا، بدلاً من محاولة تحديد مجموعة ثابتة من المتطلبات.
كما يقدم البرمجة المتطرفة عددًا من القيم والمبادئ والممارسات الأساسية بالإضافة إلى منهجية أجايل.
أنشطة
يصف منهج البرمجة القصوى (XP) أربعة أنشطة أساسية تُنفذ ضمن عملية تطوير البرمجيات: البرمجة، والاختبار، والاستماع، والتصميم. وسيتم شرح كل نشاط من هذه الأنشطة أدناه.
البرمجة
يجادل أنصار منهجية البرمجة القصوى (XP) بأن المنتج الوحيد المهم حقًا في عملية تطوير النظام هو الكود - أي تعليمات البرمجيات التي يستطيع الحاسوب فهمها. فبدون الكود، لا يوجد منتج قابل للاستخدام.
يمكن استخدام البرمجة لإيجاد الحل الأمثل. كما يمكن أن تساعد في إيصال الأفكار حول مشاكل البرمجة. فالمبرمج الذي يواجه مشكلة برمجية معقدة، أو يجد صعوبة في شرح الحل لزملائه، قد يلجأ إلى كتابة الكود بطريقة مبسطة واستخدامه لتوضيح المقصود. ويؤكد أنصار هذا الرأي أن الكود يكون دائمًا واضحًا وموجزًا ولا يحتمل أكثر من تفسير واحد. ويمكن للمبرمجين الآخرين تقديم ملاحظاتهم على هذا الكود من خلال كتابة أفكارهم أيضًا.
الاختبار
يُعدّ الاختبار عنصراً أساسياً في البرمجة المتطرفة. [ 10 ] وتقوم منهجية البرمجة المتطرفة على أنه إذا كان بالإمكان القضاء على بعض العيوب من خلال إجراء القليل من الاختبارات، فإن إجراء الكثير من الاختبارات يمكن أن يقضي على العديد من العيوب الأخرى.
- تُحدد اختبارات الوحدة ما إذا كانت ميزة معينة تعمل كما هو مُخطط لها. يكتب المبرمجون أكبر عدد ممكن من الاختبارات الآلية التي قد تُسبب أعطالًا في الكود؛ إذا نجحت جميع الاختبارات، يكون الكود قد اكتمل. يتم اختبار كل جزء من الكود قبل الانتقال إلى الميزة التالية.
- تتحقق اختبارات القبول من أن المتطلبات كما فهمها المبرمجون تلبي متطلبات العميل الفعلية.
شُجِّعَ في البداية على إجراء اختبارات التكامل على مستوى النظام كنشاط يومي يُنفَّذ في نهاية اليوم للكشف المبكر عن الواجهات غير المتوافقة. ومع ذلك، فقد خُفِّضَت وتيرة إجراء اختبارات التكامل على مستوى النظام إلى مرة واحدة أسبوعيًا أو أقل، وذلك تبعًا لاستقرار الواجهات العامة في النظام. [ 11 ]
الاستماع
يجب على المبرمجين الاستماع إلى احتياجات العملاء فيما يتعلق بوظائف النظام، وما هي " المنطق التجاري " المطلوب. كما يجب عليهم فهم هذه الاحتياجات جيدًا بما يكفي لتقديم ملاحظات للعميل حول الجوانب التقنية لكيفية حل المشكلة، وما إذا كان بالإمكان حلها ضمن القيود المحددة. ويتم تناول التواصل بين العميل والمبرمج بشكل أوسع في لعبة التخطيط .
تصميم
من وجهة نظر التبسيط، يمكن القول إن تطوير النظام لا يتطلب أكثر من البرمجة والاختبار والاستماع. فإذا أُجريت هذه الأنشطة على أكمل وجه، ستكون النتيجة نظامًا فعالًا. لكن في الواقع، هذا غير ممكن. قد يقطع المرء شوطًا طويلًا دون تصميم، لكنه سيواجه في مرحلة ما عقبة. يصبح النظام معقدًا للغاية، وتتلاشى الترابطات الداخلية بين أجزائه. يمكن تجنب ذلك بإنشاء بنية تصميمية تُنظم منطق النظام. التصميم الجيد يُجنّب النظام العديد من الترابطات الداخلية؛ ما يعني أن تغيير جزء منه لن يؤثر على الأجزاء الأخرى.
قيم
أقرّت البرمجة المتطرفة في البداية أربع قيم عام 1999: التواصل، والبساطة، والتغذية الراجعة، والشجاعة. أُضيفت قيمة جديدة، وهي الاحترام، في الطبعة الثانية من كتاب " شرح البرمجة المتطرفة" . وفيما يلي وصفٌ لهذه القيم الخمس.
تواصل
Building software systems requires communicating system requirements to the developers of the system. In formal software development methodologies, this task is accomplished through documentation. Extreme programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, extreme programming favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback.
Simplicity
Extreme programming encourages starting with the simplest solution. Extra functionality can then be added later. The difference between this approach and more conventional system development methods is the focus on designing and coding for the needs of today instead of those of tomorrow, next week, or next month. This is sometimes summed up as the "You aren't gonna need it" (YAGNI) approach.[12] Proponents of XP acknowledge the disadvantage that this can sometimes entail more effort tomorrow to change the system; their claim is that this is more than compensated for by the advantage of not investing in possible future requirements that might change before they become relevant. Coding and designing for uncertain future requirements implies the risk of spending resources on something that might not be needed, while perhaps delaying crucial features. Related to the "communication" value, simplicity in design and coding should improve the quality of communication. A simple design with very simple code could be easily understood by most programmers in the team.
Feedback
Within extreme programming, feedback relates to different dimensions of the system development:
- Feedback from the system: by writing unit tests,[5] or running periodic integration tests, the programmers have direct feedback from the state of the system after implementing changes.
- Feedback from the customer: The functional tests (aka acceptance tests) are written by the customer and the testers. They will get concrete feedback about the current state of their system. This review is planned once in every two or three weeks so the customer can easily steer the development.
- Feedback from the team: When customers come up with new requirements in the planning game the team directly gives an estimation of the time that it will take to implement.
ترتبط التغذية الراجعة ارتباطًا وثيقًا بالتواصل والبساطة. يُمكن الإبلاغ عن عيوب النظام بسهولة من خلال كتابة اختبار وحدة يُثبت أن جزءًا معينًا من الكود سيتعطل. تُخبر التغذية الراجعة المباشرة من النظام المبرمجين بإعادة كتابة هذا الجزء. يستطيع العميل اختبار النظام دوريًا وفقًا للمتطلبات الوظيفية، والمعروفة باسم قصص المستخدم . [ 5 ] وكما قال كينت بيك : "التفاؤل مخاطرة مهنية في البرمجة، والتغذية الراجعة هي العلاج." [ 13 ]
شجاعة
تتجسد الشجاعة في العديد من الممارسات. إحداها هي الوصية بتصميم وبرمجة ما هو مناسب لليوم وليس للغد. وهذا جهد لتجنب الانغماس في تفاصيل التصميم واستنزاف الوقت والجهد في تنفيذ أي شيء آخر. تُمكّن الشجاعة المطورين من إعادة هيكلة أكوادهم عند الضرورة. [ 5 ] وهذا يعني مراجعة النظام الحالي وتعديله لتسهيل تنفيذ التغييرات المستقبلية. مثال آخر على الشجاعة هو معرفة متى يجب التخلص من الكود: شجاعة إزالة الكود المصدري القديم، بغض النظر عن الجهد المبذول في إنشائه. كما تعني الشجاعة المثابرة: قد يعلق المبرمج في مشكلة معقدة ليوم كامل، ثم يحلها بسرعة في اليوم التالي، ولكن ذلك لا يتحقق إلا بالمثابرة.
احترام
تشمل قيمة الاحترام احترام الآخرين واحترام الذات. يجب على المبرمجين تجنب إدخال أي تغييرات تُعطّل عملية الترجمة البرمجية، أو تُفشل اختبارات الوحدة الحالية، أو تُؤخّر عمل زملائهم. يحترم الأعضاء عملهم من خلال كتابة أكواد عالية الجودة والسعي إلى أفضل تصميم للحل المطروح عبر إعادة هيكلة الكود.
إن تبني القيم الأربع السابقة يُكسب الفريق احترام أعضائه. فلا ينبغي لأحد أن يشعر بعدم التقدير أو التجاهل. وهذا يضمن مستوى عالٍ من التحفيز ويعزز الولاء للفريق ولهدف المشروع. وتعتمد هذه القيمة على القيم الأخرى، وهي موجهة نحو العمل الجماعي.
قواعد
نُشرت النسخة الأولى من قواعد منهجية البرمجة القصوى (XP) عام ١٩٩٩ على يد دون ويلز [ ١٤ ] على موقع XP الإلكتروني. وتتضمن ٢٩ قاعدة موزعة على فئات التخطيط، والإدارة، والتصميم، والبرمجة، والاختبار. وقد ذُكرت قواعد التخطيط والإدارة والتصميم تحديدًا للرد على الادعاءات بأن منهجية XP لا تدعم هذه الأنشطة.
اقترح كين أوير [ 15 ] نسخة أخرى من قواعد البرمجة القصوى (XP ) في مؤتمر XP/Agile Universe 2003. ورأى أن البرمجة القصوى تُعرَّف بقواعدها، لا بممارساتها (التي تخضع لمزيد من التباين والغموض). وقد حدد فئتين: "قواعد الاشتباك" التي تُحدد البيئة التي يمكن فيها تطوير البرمجيات بفعالية، و"قواعد العمل" التي تُحدد الأنشطة والقواعد الدقيقة ضمن إطار قواعد الاشتباك.
فيما يلي بعض القواعد (غير مكتملة):
البرمجة
- العميل متاح دائمًا
- قم بكتابة اختبار الوحدة أولاً
- يقوم زوج واحد فقط بدمج التعليمات البرمجية في كل مرة
- اترك عملية التحسين حتى النهاية
- لا يوجد عمل إضافي
الاختبار
- يجب أن يحتوي كل كود على اختبارات وحدة
- يجب أن يجتاز كل الكود جميع اختبارات الوحدة قبل إصداره.
- عند اكتشاف خطأ برمجي ، يتم إنشاء الاختبارات قبل معالجة هذا الخطأ (الخطأ البرمجي ليس خطأ في المنطق؛ إنه اختبار لم تتم كتابته).
- تُجرى اختبارات القبول بشكل متكرر ويتم نشر النتائج
مبادئ
تستند المبادئ التي تشكل أساس منهجية البرمجة القصوى (XP) إلى القيم المذكورة آنفاً، وتهدف إلى تعزيز عملية اتخاذ القرارات في مشاريع تطوير الأنظمة. وتُعتبر هذه المبادئ أكثر واقعية من القيم، وأسهل تطبيقاً في المواقف العملية.
تعليق
تعتبر منهجية البرمجة المتطرفة أن التغذية الراجعة أكثر فائدة عندما تُقدم بشكل متكرر وفوري. وتؤكد على أن الحد الأدنى من التأخير بين الإجراء والتغذية الراجعة الناتجة عنه أمر بالغ الأهمية للتعلم وإجراء التغييرات. وعلى عكس أساليب تطوير الأنظمة التقليدية، يتم التواصل مع العميل في دورات متكررة. يتمتع العميل بفهم واضح للنظام قيد التطوير، ويمكنه تقديم التغذية الراجعة وتوجيه عملية التطوير حسب الحاجة. وبفضل التغذية الراجعة المتكررة من العميل، يُمكن ملاحظة أي خطأ في التصميم من جانب المطور وتصحيحه بسرعة، قبل أن يُهدر المطور الكثير من الوقت في تنفيذه.
تُساهم اختبارات الوحدات في مبدأ التغذية الراجعة السريعة. فعند كتابة التعليمات البرمجية، يُوفر تشغيل اختبار الوحدة تغذية راجعة مباشرة حول كيفية تفاعل النظام مع التغييرات المُدخلة. ويشمل ذلك تشغيل اختبارات الوحدات التي تختبر كود المطور، بالإضافة إلى تشغيل جميع اختبارات الوحدات على كامل البرنامج، باستخدام عملية مؤتمتة يُمكن تشغيلها بأمر واحد. وبهذه الطريقة، إذا تسببت تغييرات المطور في حدوث عطل في جزء آخر من النظام لا يعرف عنه المطور شيئًا يُذكر، فإن مجموعة اختبارات الوحدات المؤتمتة ستكشف عن العطل فورًا، مُنبهةً المطور إلى عدم توافق تغييره مع أجزاء أخرى من النظام، وضرورة إزالة هذا التغيير أو تعديله. في ظل ممارسات التطوير التقليدية، كان غياب مجموعة اختبارات وحدات مؤتمتة وشاملة يعني أن مثل هذا التغيير في التعليمات البرمجية، الذي يفترض المطور أنه غير ضار، كان سيُترك دون تغيير، ولن يظهر إلا أثناء اختبار التكامل - أو الأسوأ من ذلك، فقط في بيئة الإنتاج؛ وكان تحديد أي تغيير في التعليمات البرمجية تسبب في المشكلة، من بين جميع التغييرات التي أجراها جميع المطورين خلال الأسابيع أو حتى الأشهر التي سبقت اختبار التكامل، مهمة شاقة للغاية.
بافتراض البساطة
يتعلق الأمر هنا بالتعامل مع كل مشكلة كما لو كان حلها "بسيطًا للغاية". تنص أساليب تطوير الأنظمة التقليدية على التخطيط للمستقبل وكتابة التعليمات البرمجية مع مراعاة إمكانية إعادة استخدامها. أما البرمجة المتطرفة فترفض هذه الأفكار.
يؤكد أنصار البرمجة المتطرفة أن إجراء تغييرات جذرية دفعة واحدة لا يُجدي نفعاً. تعتمد البرمجة المتطرفة على التغييرات التدريجية؛ فعلى سبيل المثال، قد يُصدر النظام تحديثات صغيرة كل ثلاثة أسابيع. وعند تنفيذ خطوات صغيرة متعددة، يصبح لدى العميل سيطرة أكبر على عملية التطوير والنظام نفسه.
تقبّل التغيير
إن مبدأ تقبّل التغيير لا يعني مقاومة التغيير بل الترحيب به. فعلى سبيل المثال، إذا تبيّن خلال أحد اجتماعات التطوير المتكررة أن متطلبات العميل قد تغيّرت بشكل جذري، فعلى المبرمجين تقبّل هذا التغيير والتخطيط للمتطلبات الجديدة في الدورة التالية.
الممارسات
تم وصف البرمجة المتطرفة بأنها تتضمن 12 ممارسة، مجمعة في أربعة مجالات:
التغذية الراجعة الدقيقة
عملية مستمرة
- التكامل المستمر
- إعادة هيكلة أو تحسين التصميم [ 5 ]
- إصدارات صغيرة
التفاهم المشترك
رفاهية المبرمجين
الجوانب المثيرة للجدل
لقد خضعت ممارسات البرمجة المتطرفة (XP) لنقاشات حادة. [ 5 ] يزعم مؤيدو البرمجة المتطرفة أن السماح للعميل في الموقع [ 5 ] بطلب التغييرات بشكل غير رسمي يجعل العملية أكثر مرونة، ويوفر تكاليف الإجراءات الرسمية. بينما يرى منتقدو البرمجة المتطرفة أن هذا قد يؤدي إلى إعادة عمل مكلفة وتوسع نطاق المشروع بما يتجاوز ما تم الاتفاق عليه أو تمويله مسبقًا.
تُعدّ لجان مراقبة التغييرات مؤشراً على وجود تعارضات محتملة في أهداف المشروع وقيوده بين المستخدمين المتعددين. وتعتمد أساليب البرمجة المُسرّعة في منهجية البرمجة القصوى (XP) إلى حدٍّ ما على قدرة المبرمجين على تبنّي وجهة نظر موحدة للعميل، ما يسمح لهم بالتركيز على كتابة الكود بدلاً من توثيق أهداف وقيود المشروع. [ 16 ] وينطبق هذا أيضاً عند مشاركة منظمات برمجة متعددة، لا سيما تلك التي تتنافس على حصص من المشاريع.
تشمل الجوانب الأخرى التي قد تثير الجدل في البرامج المتطرفة ما يلي:
- يتم التعبير عن المتطلبات على شكل اختبارات قبول آلية بدلاً من وثائق المواصفات.
- يتم تحديد المتطلبات تدريجياً، بدلاً من محاولة الحصول عليها جميعاً مسبقاً.
- عادة ما يُطلب من مطوري البرامج العمل في أزواج.
- لا توجد خطة تصميم مُسبقة مُحكمة . تتم معظم أنشطة التصميم بشكل عفوي وتدريجي، بدءًا من "أبسط حل ممكن"، وإضافة التعقيد فقط عند الضرورة نتيجة فشل الاختبارات. يصف النقاد هذا الأسلوب بأنه " تصحيح أخطاء النظام حتى يظهر بمظهره الطبيعي"، ويخشون أن يؤدي ذلك إلى جهد أكبر لإعادة التصميم، بدلاً من الاكتفاء بإعادة التصميم عند تغير المتطلبات.
- يُعيّن ممثل للعميل للمشروع. قد يُصبح هذا الدور نقطة ضعف رئيسية للمشروع، وقد وجد البعض أنه مصدر للضغط النفسي. كما يُوجد خطر الإدارة التفصيلية من قِبل ممثل غير تقني يُحاول فرض استخدام ميزات البرمجيات التقنية وهيكليتها.
وقد أشار النقاد إلى العديد من العيوب المحتملة، [ 5 ] بما في ذلك مشاكل تتعلق بالمتطلبات غير المستقرة، وعدم وجود حلول موثقة لتضارب المستخدمين، والافتقار إلى مواصفات أو وثيقة تصميم شاملة.
قابلية التوسع
زعمت شركة Thoughtworks تحقيق نجاح معقول في مشاريع XP الموزعة التي تضم ما يصل إلى ستين شخصًا.
في عام 2004، طُرحت برمجة إكستريم الصناعية (IXP) [ 17 ] كتطور لبرمجة إكستريم (XP). وتهدف إلى توفير القدرة على العمل ضمن فرق كبيرة وموزعة. وتتضمن الآن 23 ممارسة وقيمًا مرنة.
قابلية الفصل والاستجابات
في عام ٢٠٠٣، نشر مات ستيفنز ودوغ روزنبرغ كتاب "إعادة هيكلة البرمجة المتطرفة: الحجة ضد البرمجة المتطرفة" ، الذي شكك في جدوى منهجية البرمجة المتطرفة واقترح سبلًا لتحسينها. [ ٦ ] أثار هذا الكتاب نقاشًا مطولًا في المقالات ومجموعات الأخبار على الإنترنت وغرف الدردشة. تتمحور الحجة الأساسية للكتاب حول ترابط ممارسات البرمجة المتطرفة، إلا أن قلة من المؤسسات العملية مستعدة أو قادرة على تبني جميع هذه الممارسات؛ وبالتالي تفشل العملية برمتها. كما يتضمن الكتاب انتقادات أخرى، ويقارن نموذج "الملكية الجماعية" في البرمجة المتطرفة بالاشتراكية بطريقة سلبية.
طرأت تغييرات على بعض جوانب منهجية البرمجة المتطرفة (XP) منذ نشر كتاب " إعادة هيكلة البرمجة المتطرفة" ؛ فعلى وجه الخصوص، باتت XP تسمح بتعديل الممارسات طالما بقيت الأهداف المطلوبة مُحققة. كما تستخدم XP مصطلحات أكثر عمومية للعمليات. يرى البعض أن هذه التغييرات تُبطل الانتقادات السابقة، بينما يرى آخرون أنها تُضعف المنهجية فحسب.
حاول مؤلفون آخرون التوفيق بين منهجية البرمجة القصوى (XP) والمنهجيات القديمة لتشكيل منهجية موحدة. سعت بعض هذه المنهجيات إلى استبدال منهجية البرمجة القصوى، مثل منهجية الشلال ؛ ومن الأمثلة على ذلك دورات حياة المشاريع: الشلال ، والتطوير السريع للتطبيقات (RAD)، وغيرها. حاولت شركة جيه بي مورغان تشيس دمج منهجية البرمجة القصوى مع أساليب برمجة الحاسوب، مثل نموذج تكامل نضج القدرات (CMMI) ومنهجية ستة سيجما . ووجدوا أن الأنظمة الثلاثة تعزز بعضها البعض بشكل جيد، مما يؤدي إلى تطوير أفضل، ولا يوجد بينها أي تعارض. [ 18 ]
نقد
أثارت الضجة الأولية التي أثيرت حول البرمجة المتطرفة ومبادئها المثيرة للجدل، مثل البرمجة الثنائية والتصميم المستمر ، انتقاداتٍ خاصة، منها تلك التي قدمها ماك برين [ 19 ] ، وبوهم وتيرنر [ 20 ] ، ومات ستيفنز ودوغ روزنبرغ [ 21 ] . ومع ذلك، يعتقد ممارسو منهجية أجايل أن العديد من هذه الانتقادات ناتجة عن سوء فهم لمنهجية التطوير الرشيقة [ 22 ] .
على وجه الخصوص، تمت مراجعة ونقد البرمجة المتطرفة من قبل مات ستيفنز ودوغ روزنبرغ في كتابهما Extreme Programming Refactored . [ 6 ]
انظر أيضاً
مراجع
- ↑ "ورشة عمل التكنولوجيا المتمحورة حول الإنسان 2006"، 2006، ملف PDF، ورشة عمل التكنولوجيا المتمحورة حول الإنسان 2006
- 1 2 UPenn-Lectures-design-patterns "أنماط التصميم وإعادة الهيكلة"، جامعة بنسلفانيا، 2003. مؤرشف في 2 أغسطس 2010، في Wayback Machine .
- 1 2 USFCA-edu-601-lecture Extreme Programming .
- ↑ "بيان تطوير البرمجيات الرشيقة" . Agilemanifesto.org. 2001. تم الاطلاع عليه بتاريخ 26 مارس 2019 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 Computerworld-appdev-92 "البرمجة المتطرفة"، Computerworld (عبر الإنترنت)، ديسمبر 2001 .
- 1 2 3 روزنبرغ، دوغ؛ ستيفنز، مات (2003). إعادة هيكلة البرمجة المتطرفة: الحجة ضد البرمجة المتطرفة . دار نشر أبريس. رقم ISBN 978-1-59059-096-6.
- ↑ لارمان وباسيلي 2003 .
- ↑ مقابلة مع كينت بيك ومارتن فاولر . 23 مارس 2001.
{{cite book}}تم|work=تجاهله ( مساعدة ) - ↑ ديبا، ت.؛ دينجسوير، ت. (2009). "ماذا نعرف عن تطوير البرمجيات الرشيقة؟". مجلة IEEE للبرمجيات . 26 (5): 6-9 . doi : 10.1109/MS.2009.145 . ISSN 0740-7459 .
- ↑ ليزا كريسبين؛ تيب هاوس (2003). اختبار البرمجة المتطرفة . أديسون-ويسلي بروفيشنال. ISBN 9780321113559.
- ↑ "العمليات الرشيقة في هندسة البرمجيات والبرمجة المتطرفة" . سلسلة محاضرات في معالجة معلومات الأعمال . 2016. doi : 10.1007/978-3-319-33515-5 . hdl : 2078/ebook:84765 . ISSN 1865-1356 . تاريخ الاسترجاع: 17 مايو 2026 .
- ↑ "الجميع مبرمج" بقلم كلير تريسترام. مجلة التكنولوجيا ، نوفمبر 2003، ص 39.
- ↑ بيك، ك. (1999). شرح البرمجة المتطرفة: تقبّل التغيير . أديسون-ويسلي. ISBN 978-0-321-27865-4.
- ↑ "قواعد البرمجة المتطرفة" . extremeprogramming.org .
- ↑ كين أوير، مؤرشف في 20 سبتمبر 2008، في أرشيف الإنترنت
- ↑ جون كارول؛ ديفيد موريس (29 يوليو 2015). إدارة المشاريع الرشيقة بخطوات سهلة، الطبعة الثانية . في خطوات سهلة. ص 162. ISBN 978-1-84078-703-0.
- ↑ مجموعة كتر. "البرمجة الصناعية المتقدمة: تطبيق البرمجة المتقدمة في المؤسسات الكبيرة - مجموعة كتر" . cutter.com .
- ↑ البرمجة المتطرفة (XP) ستة سيجما CMMI .
- ↑ ماك برين، ب. (2003). التشكيك في البرمجة المتطرفة . بوسطن، ماساتشوستس: أديسون-ويسلي. ISBN 978-0-201-84457-3.
- ↑ بوهم، ب .؛ ر. تيرنر (2004). الموازنة بين الرشاقة والانضباط: دليل للمتحيرين . بوسطن، ماساتشوستس: أديسون-ويسلي. ISBN 978-0-321-18612-6.
- ↑ ستيفنز، مات ؛ دوغ روزنبرغ (2004). مفارقة البرمجة المتطرفة . ماساتشوستس: مجلة دكتور دوبس.
{{cite book}}تم|work=تجاهله ( مساعدة ) - ↑ sdmagazine مؤرشف في 16 مارس 2006، على موقع Wayback Machine
للمزيد من القراءة
- كين أوير وروي ميلر. البرمجة المتطرفة المطبقة: اللعب من أجل الفوز ، أديسون-ويسلي.
- كين أوير؛ رون جيفريز ؛ جيف كانا؛ جلين ب. أليمان؛ ليزا كريسبين؛ جانيت غريغوري (2002). "هل انقرض المختبرون؟ كيف يمكن للمختبرين المساهمة في فرق البرمجة المتطرفة؟". البرمجة المتطرفة والأساليب الرشيقة - عالم البرمجة المتطرفة/الرشيقة 2002. سلسلة محاضرات في علوم الحاسوب. المجلد 2418. دار نشر سبرينغر. ص 287. doi : 10.1007/3-540-45672-4_50 . ISBN 978-3-540-44024-6.
- كينت بيك : شرح البرمجة المتطرفة: تقبّل التغيير ، أديسون-ويسلي. الطبعة الأولى، 1999. الطبعة الثانية، بالاشتراك مع سينثيا أندريس، 2004.
- كينت بيك ومارتن فاولر : تخطيط البرمجة المتطرفة ، أديسون-ويسلي.
- أليستير كوكبيرن : تطوير البرمجيات الرشيقة ، أديسون-ويسلي.
- مارتن فاولر : إعادة هيكلة الكود: تحسين تصميم الكود الحالي . بالاشتراك مع كينت بيك، وجون برانت، وويليام أوبدايك، ودون روبرتس (1999). أديسون-ويسلي.
- هارفي هيريلا (2005). دراسة حالة: نظام التعويض الشامل لشركة كرايسلر . مختبر جالين، جامعة كاليفورنيا في إرفاين.
- جيم هايسميث . أنظمة تطوير البرمجيات الرشيقة ، أديسون-ويسلي.
- رون جيفريز ، آن أندرسون وتشيت هندريكسون (2000)، البرمجة المتطرفة المثبتة ، أديسون-ويسلي.
- لارمان، سي .؛ باسيلي، في آر (يونيو 2003). "التطورات التكرارية والتراكمية: تاريخ موجز" (ملف PDF) . مجلة الكمبيوتر . 36 (6): 47-56 . رمز Bibcode : 2003Compr..36f..47L . doi : 10.1109/MC.2003.1204375 .
- مات ستيفنز ودوغ روزنبرغ (2003). إعادة هيكلة البرمجة المتطرفة: القضية ضد البرمجة المتطرفة ، دار نشر أبريس.
- فالدنر، جي بي. (2008). “أجهزة الكمبيوتر النانوية وذكاء السرب”. في: ISTE، 225-256.
روابط خارجية
- مقدمة لطيفة
- البرمجة الصناعية المتطرفة
- مشاكل وحلول تطبيق البرمجة القصوى
- استخدام منهجية تطوير البرمجيات الرشيقة مع التطوير الخارجي - تجارب شركة ThoughtWorks في تطبيق منهجية البرمجة القصوى (XP) في المشاريع الموزعة الكبيرة
- البرمجة المتطرفة
- فلسفات تطوير البرمجيات
- تطوير البرمجيات الرشيقة
