https://www.youtube.com/channel/UCd7lcZntY184Z2Auues8wZw?sub_confirmation=1
مراحل عملية تطوير البرمجيات:
1) Specification: توصيف النظام والخدمات التي يقدمها والقيود التي يجب احترامها.
2) Design & Implementation: تحويل الخدمات لنظام فعلي وهو التصميم أما التنفيذ فهو نقل هذا التصميم لكود بلغة معينة.
3) Validation: التحقق من كون البرمجية تنفذ ما يطلبه الزبون.
4) Evolution: تعديل النظام حسب لحاجة الزبون.
Software Process Models
1. النموذج الشلالي Waterfall Model
العمليات والأنشطة تتم بشكل تسلسلي لا يوجد عودة بالخطوات للوراء ويحوي الأنشطة التالية:
1. تحليل المتطلبات وتحديدها وهي الخدمات والقيود عليها.
2. تصميم النظام.
3. التكويد واختبار الواحدة.
4. تكامل النظام.
5. التشغيل والصيانة.
لماذا سميَّ بالشلالي؟ لأن الأنشطة تأتي بشكل تسلسلي مثل الشلال لا يوجد عودة للخلف كما لا يمكن البدء بأي نشاط من الأنشطة قبل انتهاء النشاط السابق له بشكل كامل وبالتالي يمكن استخدامه عندما تكون المتطلبات معروفة وواضحة وغير قابلة للتعديل.
ميزاته:
- بسيط سهل الفهم لكون العقل البشري يفضل الأفكار التسلسلية.
- مناسب لتدريب الفرق ذات الخبرة البسيطة.
- مناسب للأنظمة ذات الخدمات الثابتة التي لا تتغير مع الوقت.
مساوئه:
- لا يقبل التغيير عند وجود نظام ذو خدمات متغيرة لا يمكن استخدامه.
- أنظمتنا أصبحت معقدة ولم تعد بسيطة فلا يناسبها هذا النموذج.
2. النموذج التزايدي Incremental Development
بعكس الشلالي يشبه القيام ببناء عمارة كل طابق يعتمد على الطابق الذي يسبقه حيث يتم تقديم المنتج عبر سلسلة من الإصدارات لكن في كل عملية تطوير يشمل على النموذج الشلالي كما أننا نعتبر الإصدار السابق ممتاز فلا نقوم بالتعديل عليه وإنما فقط نطوره، نختاره عندما تكون متطلبات النظام متغيرة أمثلة عليه: تطبيقات الويب.
بالبداية لتطوير نظام بهذا النموذج نقوم بتحديد أولويات الخدمات وفي أول إصدار نقوم بتطوير عشر خدمات "مثلاً" من الخدمات الأساسية لهذا النظام والتي يحددها الزبون وفي كل إصدار جديد نزيد عدد الخدمات وهكذا... ويتم تقديم النظام على شكل مجموعة من الإصدارات.
يتم اختيار النموذج التزايدي عندما نريد الحصول على منتج فعال خلال فترة زمنية قصيرة أما في النموذج الشلالي فيوجد فترة زمنية طويلة بين بدء التطوير والوصول لمنتج كامل.عملية تحديد المتطلبات والتطوير والتحقق تتم على التوازي أما في المخطط الشلالي تتم على التسلسل وذلك من أجل خدمات قليلة.
ميزاته:
- الحصول على منتج فعال خلال فترة زمنية قصيرة كأسابيع قد لا يحوي كل الخدمات لكنه يحوي الخدمات الأساسية.
- ليس لديه مشكلة مع التغيير في الخدمات والمتطلبات.
مساوئه:
- غير مستقر.
- يوجد كم هائل من التوثيق فكل إصدار يحتاج لتوثيق كامل ومراجعة الإصدار السابق للاطلاع على كل محتواه.
3. Reuse-Oriented Software Engineering
إعادة الاستخدام مبدأ هام في هندسة البرمجيات ما يميز هذا النموذج أننا لا نقوم بالتطوير من الصفر بعكس النماذج السابقة حيث نبحث عن نظام برمجي موجود في السوق يناسب احتياجات الزبون وقابل لإعادة الاستخدام ونقوم بتعديله ليتناسب مع الخدمات المطلوبة.
تعتمد على Component Analysis أي تحليل وحدة البناء الأساسية والبحث عنها ثم التعديل عليها لتتناسب مع المتطلبات كما يجب تصميم النظام مع فكرة استخدام أجزاء جاهزة وأخيراً عملية التطوير والتكامل.
أثناء التطوير قد نبحث عن جزء ولا نجده عندها نقوم بتطويره يدوياً باستخدام أحد النماذج السابقة.
أثناء تطوير نظام برمجي نحاول الاعتماد على مبدأ إعادة الاستخدام لتوفير الوقت والجهد كما أن الأنظمة المستخدمة تكون ثابتة ومستقرة وخالية من الأخطاء تقريباً لذا فعلياً أي نظام لا يتم تطويره باستخدام نموذج برمجي واحد وإنما مزيج من النماذج.
ميزاته:
- السرعة والكلفة الأقل والجودة عالية نتيجة استقرار هذه الأنظمة.
مساوئه:
- عملية التكامل ليست عملية سهلة وهي الجزء الأساسي في هذا النموذج.
4. Prototyping Model
وهو ما يسمى النمذجة البدائية أو الأولية يستخدم عند وجود نظام معقد للبدء بشكل بسيط ثم زيادة التعقيد ويتم التخلص منه عند الوصول للمتطلبات وله نوعان:
1. Throw-away : تقنية من تقنيات جمع المتطلبات والهدف منها فقط جمع المتطلبات ونستخدم هذه الطريقة عندما يكون الزبون غير قادر على تحديد متطلبات النظام عندها نحاول رسم رسومات بسيطة أحياناً تمثل واجهات للنظام.
2. Exploratory Development: نبدأ النظام بنموذج بسيط ثم يأخذ بالتعقيد.
الفرق بين النموذج التطوري والنموذج التزايدي: في النموذج التزايدي نبدأ بالأكثر أولوية بالنسبة للزبون بينما في النموذج التطوري نبدأ بالخدمات الأبسط ثم نزيد تعقيد الخدمات.
مساوئه:
- ضياع الوقت بسبب التعديلات على النماذج دون الحصول على رضا الزبون.
ميزاته:
- سهولة الاستخدام لكون الزبون مشرف على جميع مراحل التصميم والتعديل يتم وفقاً لآراء الزبون.
- الحصول على نظام مطابق لحاجات الزبون.
- تحسن نوع التصميم.
- سهولة الصيانة.
- تقليل جهود التطوير.
5. النموذج الحلزوني Boehm’s spiral model
النموذج الحلزوني وهو نموذج معقد وضخم يستخدم في الأنظمة الحديثة بالمطلق والكبيرة الضخمة ليس للأنظمة البسيطة ويحتاج فريق عمل ذو خبرة عالية وهو قليل الاستخدام.
وهو عبارة عن مجموعة من التكرارات نبدأ بالاتصال مع الزبون لمعرفة متطلباته ثم تحليل المخاطر وهو النموذج الوحيد الذي يحوي هذه الخطوة بعدها تخطيط المشروع وإنجازه ثم اختباره وننتهي بالتحقق من قبل الزبون.
يتألف من عدة لفات وليس شرط عند الانتهاء من لفة الحصول على منتج جاهز للاستخدام وإنما قد نحتاج أكثر من لفة.
الفرق بينه وبين النموذج التزايدي أنه في التزايدي كلما انتهيت من تزايد نحصل على نظام جاهز للاستخدام أما بالنموذج الحلزوني ليس شرط عند الانتهاء من لفة الحصول على نظام جاهز.
ملاحظة: النظام الحلزوني هو النظام الوحيد الذي يتضمن مرحلة تحديد مخاطر.