هندسة البرمجيات الرشيقة: المناهج الرشيقة، سكروم، والبرمجة المتطرفة
CLO1: التعرف على مبادئ هندسة البرمجيات، مراحل دورة الحياة، العمليات، والأنشطة.
عملية البرمجيات هي مجموعة منظمة من الأنشطة المطلوبة لتطوير نظام برمجي.
هناك العديد من عمليات البرمجيات المختلفة، لكن جميعها تتضمن أربعة أنشطة أساسية:
ملاحظة: نموذج عملية البرمجيات هو تمثيل مجرد لعملية. يقدم وصفًا لعملية من منظور معين.
عندما نصف ونناقش العمليات، عادةً ما نتحدث عن الأنشطة أو الإجراءات في هذه العمليات مثل تحديد نموذج بيانات، تصميم واجهة مستخدم، إلخ. وترتيب هذه الأنشطة.
قد تتضمن أوصاف العمليات أيضًا:
عمليات يتم فيها تخطيط جميع أنشطة العملية مسبقًا ويتم قياس التقدم مقابل هذا الخطة.
التخطيط تدريجي ومن السهل تغيير العملية لتعكس متطلبات العملاء المتغيرة.
مهم: في الممارسة العملية، معظم العمليات العملية تتضمن عناصر من النهجين المخطط والرشيق. لا توجد عمليات برمجيات صحيحة أو خاطئة.
نموذج مخطط مع مراحل منفصلة ومميزة للمواصفات والتطوير.
ملاحظة: كل مرحلة رئيسية يتم تمييزها بمعالم ونتائج (مخرجات).
الشلال المعدل: تم تعديل النموذج للسماح بالعودة إلى المراحل السابقة، مما فتح الباب أمام النماذج التكرارية الأخرى.
النموذج التزايدي: بدلاً من تسليم النظام كتسليم واحد، يتم تقسيم النظام إلى زيادات حيث تضيف كل زيادة جزءًا من الوظائف المطلوبة.
يجمع النموذج التزايدي عناصر التدفق الخطي والمتوازي للعملية. يركز نموذج العملية التزايدية على تسليم منتج تشغيلي مع كل زيادة.
باستخدام قائمة الميزات في المنتج المخطط، اختر الميزات التي يمكن تنفيذها في زيادة المنتج التالية.
أضف تفاصيل لأوصاف الميزات حتى يكون لدى الفريق فهم مشترك لكل ميزة ويكون هناك تفاصيل كافية لبدء التنفيذ.
نفذ الميزة وطور اختبارات آلية لتلك الميزة، اختبارات ستتحقق من أن سلوك النظام متوافق مع وصفه.
دمج الميزة المطورة مع النظام الحالي واختبارها للتحقق من أنها تعمل مع الميزات الأخرى.
تسليم زيادة النظام لمدير المنتج للفحص والتعليقات. إذا تم تنفيذ ميزات كافية، أطلق نسخة من النظام لاستخدام العميل.
الفرق الرئيسي: يتم ترتيب متطلبات المستخدم حسب الأولوية، ثم يتم تضمين أعلى المتطلبات أولوية في الزيادات المبكرة. بمجرد بدء تطوير زيادة، يتم تجميد المتطلبات، رغم أن متطلبات الزيادات اللاحقة يمكن أن تستمر في التطور.
الفرق مع النماذج التطورية: يتم تعريف قائمة الميزات من البداية في النموذج التزايدي الكلاسيكي.
النماذج التطورية تكرارية. يتم توصيفها بطريقة تمكنك من تطوير إصدارات أكثر اكتمالًا من البرمجيات تدريجيًا.
يستخدم عندما تكون المتطلبات الأساسية أو متطلبات النظام مفهومة جيدًا لكن متطلبات النظام الإضافية لم يتم تعريفها بعد.
غالبًا ما يحدد العميل مجموعة من الأهداف العامة للبرمجيات، لكنه لا يحدد تفاصيل الوظائف والميزات. في حالات أخرى، قد لا يكون المطورون متأكدين من كفاءة خوارزمية. في هذه الحالات، قد يكون النمذجة الأولية هي أفضل نهج.
ملاحظة: يمكن أن يخدم النموذج الأولي كـ "النظام الأول". رغم أن بعض النماذج الأولية تُبنى كـ "يتم التخلص منها"، إلا أن البعض الآخر تطوري بمعنى أن النموذج الأولي يتطور ببطء إلى النظام الفعلي.
يجمع النموذج الحلزوني الطبيعة التكرارية للنماذج الأولية مع الجوانب المتحكم فيها والمنهجية للشلال. يوفر إمكانية التطوير السريع لإصدارات أكثر اكتمالًا من البرمجيات.
النموذج الحلزوني هو مولد نموذج عملية مدفوعة بالمخاطر. له ميزتان رئيسيتان مميزتان:
نقاط رئيسية:
مبني على إعادة استخدام البرمجيات حيث يتم دمج الأنظمة من مكونات موجودة أو أنظمة تطبيقات (تسمى أحيانًا COTS - أنظمة جاهزة تجاريًا).
العملية لتطبيقها عندما يكون إعادة الاستخدام هدفًا للتطوير. تريد استخدام مكونات مصنوعة مسبقًا أو تريد صنع مكونات قد يعاد استخدامها.
ملاحظة: يمكن تكوين العناصر المعاد استخدامها لتكييف سلوكها ووظيفتها مع متطلبات المستخدم. إعادة الاستخدام هي الآن النهج القياسي لبناء العديد من أنواع أنظمة الأعمال.
العملية الموحدة هي عملية تطوير تكرارية وتزايدية. يتم تقسيم مراحل التفصيل، البناء، والانتقال إلى سلسلة من التكرارات المحددة زمنيًا. كل تكرار يؤدي إلى زيادة، وهي إصدار من النظام يحتوي على وظائف مضافة أو محسنة مقارنة بالإصدار السابق.
خاصية رئيسية: تدمج العملية الموحدة أنشطة التخطيط، النمذجة، البناء، والنشر خلال جميع المراحل، مع تركيز متغير في مراحل مختلفة من التطوير.
يجب إحضار منتجات البرمجيات للسوق بسرعة، لذا فإن التطوير والتسليم السريع للبرمجيات ضروري. تقريبًا جميع منتجات البرمجيات تُطور الآن باستخدام نهج رشيق (باستثناء أنظمة السلامة الحرجة، التي تكون في تعارض مباشر مع بيان الرشاقة ومبادئ التطوير).
تركز هندسة البرمجيات الرشيقة على:
الرشاقة هي عقلية محددة بأربع قيم، موجهة باثني عشر مبدأً، وتتجلى من خلال العديد من الممارسات المختلفة. يختار ممارسو الرشاقة الممارسات بناءً على احتياجاتهم.
نكتشف طرقًا أفضل لتطوير البرمجيات من خلال فعل ذلك ومساعدة الآخرين على فعله. من خلال هذا العمل وصلنا لتقدير:
الأفراد والتفاعلات
بدلاً من
العمليات والأدوات
برمجيات عمل
بدلاً من
توثيق شامل
تعاون العميل
بدلاً من
تفاوض العقد
الاستجابة للتغيير
بدلاً من
اتباع الخطة
أي أنه بينما هناك قيمة في العناصر على اليمين، فإننا نقدّر العناصر على اليسار أكثر.
أعلى أولوياتنا هي إرضاء العميل من خلال التسليم المبكر والمستمر لبرمجيات قيمة.
الترحيب بالمتطلبات المتغيرة، حتى في مراحل التطوير المتأخرة. عمليات الرشاقة تستغل التغيير لمصلحة العميل التنافسية.
تسليم برمجيات عمل بشكل متكرر، من بضعة أسابيع إلى بضعة أشهر، مع تفضيل المقياس الزمني الأقصر.
يجب أن يعمل رجال الأعمال والمطورون معًا يوميًا طوال المشروع.
بناء المشاريع حول أفراد متحمسين. أعطهم البيئة والدعم الذي يحتاجونه وثق بهم لإنجاز العمل.
الطريقة الأكثر كفاءة وفعالية لنقل المعلومات إلى وداخل فريق التطوير هي المحادثة وجهًا لوجه.
البرمجيات العاملة هي المقياس الأساسي للتقدم.
تعزز عمليات الرشاقة التطوير المستدام. يجب أن يكون الرعاة، المطورون، والمستخدمون قادرين على الحفاظ على وتيرة ثابتة إلى أجل غير مسمى.
الاهتمام المستمر بالتميز التقني والتصميم الجيد يعزز الرشاقة.
البساطة - فن تعظيم كمية العمل غير المنجز - أساسية.
أفضل البنى، المتطلبات، والتصميمات تنبثق من فرق التنظيم الذاتي.
على فترات منتظمة، يتأمل الفريق في كيفية أن يصبح أكثر فعالية، ثم يضبط سلوكه وفقًا لذلك.
الرشاقة مصطلح شامل للعديد من المناهج، بما في ذلك:
| العملية | مراحل مميزة | تسليم تدريجي | تكرارية | مواصفات متطورة | تكرارات محددة زمنيًا | إدارة المخاطر |
|---|---|---|---|---|---|---|
| الشلال | ✓ | |||||
| تزايدي | ✓ | |||||
| تطوري | ✓ | ✓ | ✓ | ✓ | ||
| حلزوني | ✓ | ✓ | ✓ | ✓ | ✓ | |
| العملية الموحدة | ✓ | ✓ | ✓ | ✓ | ✓ | |
| الرشاقة العامة | ✓ | ✓ | ✓ | |||
| سكروم | ✓ | ✓ | ✓ | ✓ | ✓ |