هندسة البرمجيات هي المسؤولة عن متابعة وإدارة البرمجيات في جميع مراحلها وهنا سيكون حديثنا في سلسلة دورة حياة تطوير البرمجيات عن مرحلتي الاختبار والصيانة في هندسة البرمجيات وهي اخر مراحل دورة حياة البرمجيات "SDLC".
بداية لابد لنا أن نتعرف على ما المقصود باختبار البرمجيات، ما هي أنواع الاختبار وكذلك ماهي الطرق المتبعة في اختبار البرمجيات، هناك مفهومين دائمًا ما تتكرر وهما الــWhite Box Testing أو الصندوق الأبيض في الاختبار والــBlack Box Testing وهو الصندوق الأسود في الاختبار.
إن اختبار البرمجيات يكمن في اختبار أمن وسلامة النظام وسد الثغرات قبل وصول الغير أخلاقيين لها, ولهذا لابد من الشخص المسؤول عن اختبار النظام سرعة التبليغ في حال اكتشافه لثغرة, وهناك طرقتين متبعة لإجراء الاختبار وهي الفحص التلقائي ويحتاج فيه مختبر النظام لـمجموعة من البرامج من أجل فحص النظام.
في المقابل هناك الفحص اليدوي وهو الفحص الذي يتم دون الحاجة إلى أي برنامج وإنما يعتمد فيه مختبر النظام على فحص تصرفات النظام والقيام بمجموعة من السيناريوهات من أجل اكتشاف ثغرات أو أخطاء برمجية وأيضًا لا بد من التوثيق وتسجيل نقاط الخلل في النظام كما هو حال المبرمج عند كتابة ترميز لا بد من وصفه وأيضًا المحلل أثناء تحليله للنظام فالتوثيق متزامن في جميع مراحل دورة حياة تطوير البرمجيات.
أما كطريقة عمل اختبار النظام فهو باتباع الطريقتين إما الصندوق الأبيض في الاختبار أو الصندوق الأسود في الاختبار وهذا أمر ضروري حيث أن مختبر النظام لديه علاقة مباشرة مع مطوري البرنامج، بالنسبة للصندوق الأبيض في الاختبار يعمل على فحص الكود المصدري للبرنامج من أجل الكشف عن ثغراته الأمنية، كما أن مختبر النظام بالاعتماد على طريقة الصندوق الأبيض في الفحص فإنه يوفر الوقت والجهد من جهته أما من جهة المستفيد فهو يوفر المال لأن الفحص بهذه الطريقة غير مكلف، أما الصندوق الأسود في الاختبار لا يكون لمختبر النظام إمكانية فحص الكود المصدري فهو يعمل على فحص النظام باستخدام عدة برامج من أجل الكشف عن الثغرات بالإضافة إلى أن عملية الفحص تأخذ وقت طويل وجهد كبير.
بعدما استطردنا في مرحلة اختبار النظام دعونا ننتقل إلى أخر وأهم مرحلة في دورة حياة البرمجيات وهي مرحلة الصيانة إن مرحلة الصيانة هي الأطول بين جميع المراحل لبقاء النظام قادرًا على مواكبة التطورات الحديثة والتعديلات التي تجرى على منتج برمجي بعد التسليم بهدف تصحيح العيوب أو تحسين أداء البرمجية أو أي خاصية من خصائصها, هناك عدد من الأسباب للصيانة وعلى سبيل المثال ظروف السوق - متطلبات العميل -تعديلات المضيف- تغييرات المنظمة ولا ننسى أبدًا عملية التوثيق أثناء التعديلات.
إن اختلاف نوع الصيانة معتمد على ماذا يحتاج النظام فهناك صيانة لأجل التصحيح لبعض المشكلات التي تم اكتشافها من قبل المستخدم, والصيانة التكيّفية من أجل الحفاظ على تحديث النظام, والصيانة الوقائية لمنع حدوث مشاكل في المستقبل.
عند النظر إلى دورة حياة تطوير البرمجيات نجد دراسات عدة تقول أن تكلفة مرحلة الصيانة ربما تتجاوز 60% من تكلفة دورة عملية البرنامج بالكامل.
عمليّة صيانة البرمجيات تتضمّن مجموعة من الخطوات ومنها تحديدمُتطلبات التغيير في البرامج من خلال تسجيل المُلاحظات أو الرسائلالخاطئة التي تصدُر منها، تحليل قابليّة البرمجيّات للتعديل ويشمل ذلك أمنالنظام وسلامته وفي حال كان التعديل مُكلفاُ يتم البحث عن بديل آخر، تصميم الإجراءات الجديدة التي تحتاج للتعديل وذلك باختبارها والتأكُّد منفعاليّتها، تنفيذ الترميز الجديد بحيث يُطلب من كل مبرمج اجراء الاختبار، اختبار تكاملي للنظام كاملاً، تسليم ونشر النظام ويتم إجراء الاختبارالنهائي بعد تسليم البرنامج وبهذا نكون قد انتهينا من دورة حياة تطويرالبرمجيات SDLC.