دورة حياة تطوير البرمجيات هي الرد على على من يستصغر عملك

System Development Life Cycle | SDLC

أرجو أن تطور لي برنامجاً يفعل كذا وكذا وكذا، ترد عليه بأن هذا البرنامج يتطلب س من الوقت و ص من المال فيرد عليك: لماذا؟ المطلوب من هذا البرنامج بسيط جداً وبالإمكان تنفيذه خلال يوم واحد.

كل من عمل في مجال تطوير البرمجيات لمصلحة عملاء لا بد وأن يكون قد مر بشيء مشابه لهذه التجربة، سواءً كان عمله كمستقل أو كان يعملُ موظفاً في قسم تقني لشركة غير تقنية.

يتوقع الأشخاص غير التقنيون أن تطوير البرمجيات أمرٌ بسيط، ففي وجهة نظرهم أن تطوير البرمجيات عبارة عن شفرة مصدرية أو كود يتم كتابته خلال ثوان أو دقائق فيعمل البرنامج.

دعنا نكُن عادلين، لا نستطيع أن نلومهم على اعتقادهم هذا لسببٍ واحد، وهو أنهم لا يعلمون فعلاً كيف يتم تطوير البرمجيات! فهذه النوع من الردود الذي يشعر فيه المختص بالتقليل من عمله يكونُ معتمداً على اعتقادٍ خاطئ وهي حالةٌ غيرُ مقتصرةٍ على المجال البرمجي فقط.

هذه الردود تُقال للمصممين وللأطباء والبنّاء والنجّار والسبّاك وغيرها من المهن.

من وجهة نظري تقعُ على عاتق مختصي الحاسب مهمة شرح وإيضاح وتعليم كل من يمتلك اعتقاداً خاطئاً عن مجالات علوم الحاسب أو تنقصُه بعضُ المعرفة دونَ أن تذمُّرٍ من جهلِ شخصٍ يُريد أن يتعلم.

في هذه التدوينة نمر على مراحل تطوير النظم أو البرمجيات والتي لو علمها طالبُ البرنامج لما استخف أو قلل من الجهد والوقت المطلوب لتطويرها.

بدءاً يجبُ أن تعلم أن هذه الخطوات عبارة عن خطوط عريضة لتطوير البرمجيات، وتوجد العديد من نماذج ومنهجيات تطوير النظم المُشتقة من هذه الخطوات الرئيسية مثل النموذج الرشيق Agile Model ونموذج الشلال Waterfall Model والنموذج الحلزوني Spiral Model وغيرها.

دورة حياة تطوير البرمجيات - نموذج الشلال
دورة حياة تطوير البرمجيات – نموذج الشلال

(1) التخطيط وجمع المتطلبات وتحليل النظام

بعض أجزاء هذه المرحلة تتم قبل الاتفاق مع العميل، وفي حال لم يكتمل الاتفاق على المشروع يُعتبر المجهود المبذول ضائعاً.

في هذه المرحلة يتم فهم النظام الحالي في حال كان المطلوب أتمتة إحدى العمليات أو إحلال نظام محل نظام آخر أو التواصل معه.

من المهم جداً أن يفهم فريق تطوير البرنامج النظام الحالي بدرجة أقرب ما تكون بصاحب العمل، لذلك تجد أن الذي يعمل في تحليل النظم لديه معارف متعددة وفقاً لمجالات البرامج التي عمل فيها، فمن الطبيعي أن تجد محللاً للنظم خبيراً بالمحاسبة و إجراء الأشعة الطبية وإدارة المستشفيات والموارد البشرية وغيرها.

تحليل النظام
تحليل النظام

بالإضافة إلى فهم النظام الحالي، يجلس محلل النظم -وهو المسؤول الأول في هذه المرحلة غالباً- مع العميل ويفهم منه ما يريده بالضبط ويناقش معه قابلية تطبيق ما يريده وسبل تحسينه ليخرج في النهاية بمتطلبات للنظام.

كما أن تطوير النظم هو مشروع له هدف محدد وتاريخ بداية ونهاية في العادة وبالتالي فإنه يحتاج إلى تخطيط، فقبل أو أثناء أو بعد فهم النظام الحالي ووضع المتطلبات يتم التخطيط للمشروع وطريقة تنفيذه وعمله من قبل مدير المشروع.

(2) تصميم النظام

بعد فهم متطلبات العميل ومعرفتك للنظام الحالي تتحول إلى مرحلة تصميم النظام.

في هذه المرحلة تبدأ التفكير في وسيلة تنفيذ هذه المتطلبات والتقنيات التي ستستخدمها في التنفيذ.

هنا يبدأُ المشروع بالتوجه إلى الاتجاه التقني قليلاً، المسؤول الأول في هذه المرحلة مهندس البرمجيات في العادة، فمع توفر العديد من التقنيات التي تستطيع أداء نفس الهدف وربما بنفس الجودة تقع على عاتقه مسؤولية اختيار التقنيات الأفضل لتفنيذ المشروع مع اعتبار عدة محاور.

فقد يكون اختيار التقنية بناءً على توفر مبرمجيها في السوق أو تكلفتها بالنسبة للعميل أو سرعة أداءها أو استقرارها أو غيرها من المحاور.

تصميم النظام - احدى المخرجات من تصميم النظام أو تحليله
تصميم النظام – احدى المخرجات من تصميم النظام أو تحليله

بعد اختيار التقنيات يجب على مهندس البرمجيات أن يرسم مخطط النظام أو هيكل النظام، وهو يماثل الكروكي أو الرسم الهندسي للمنزل قبل بناءه. وبناءً على هذا الرسم تصبح المهام التالية واضحة لجميع الأقسام من مبرمجين ومصممين ومختبرين وغير ذلك.

كما يستطيع العميل الآن تصور النظام الذي سيتحصل عليه في النهاية.

(3) بناء النظام

بناء النظام هي المرحلة التي لا يختلف عليها اثنان. التقني وغير التقني يعلم عنها.

في هذه المرحلة يتم بناء النظام وفقاً للمخطط الذي تم الاتفاق عليه أثناء تصميم النظام، لاحظ أنني لم أقل برمجة إنما بناء.

هل تعلم لماذا؟

برغم أن البرمجة عملية أساسية ومحورية وجوهرية في بناء النظام إلا أنها ليست العملية الوحيدة في بناءه! فتصميم أشكال الشاشات جزءٌ من البناء ورسم الصور واختيار الألوان، وتصميم وبناء قواعد البينات، وإدارة الاجتماعات التقنيّة مثل اجتماعات مراجعة الشفرات المصدرية Code Review وإعادة بناء الشفرات المصدرية Code Refactoring وغيرها من العمليات تعتبر جزءاً أصيلاً من مرحلة بناء النظام.

تطوير النظام
تطوير النظام

في مرحلة بناء النظام يعمل المبرمجون وغيرهم من المنفذين بمختلف مهامهم بصورة مكثفة لإخراج المنتج النهائي.

بنهاية مرحلة بناء النظام يكون المنتج جاهزاً للاستخدام، ولكن ليس من قبل العميل، بل الأحرى أن لا يرى العميل المنتج في هذه المرحلة، لأن المراحل التالية مهمةٌ جداً ولها أهمية قصوى في الحصول على رضا العميل وحتى صلاحية المنتج ودقة عمله.

(4) اختبار النظام

مرحلة اختبار النظام هي مرحلة مظلومة إعلامياً، فاختبار النظم هو ما يضمن أن المنتج الذي تم تطويره يعمل كما تم الاتفاق عليه في مرحلة جمع المتطلبات.

لا تستبسط مرحلة اختبار النظام، ولا تستبسط حتى اختبار النظم، فهو علمٌ قائمٌ بذاته ولهُ شهاداتٌ يحصل عليها مختبرو النظم.

المسؤول الأول في هذه المرحلة في العادة هو مختبر النظام، ومهمته هي مقارنة طريقة عمل النظام الناتج من مرحلة بناء النظم مع وثائق متطلبات النظام.

لا يقوم مختبر النظام بالنظر في المتطلبات ويجري عمليات الاختبار كما يهوى عشوائياً، فبنهاية مرحلة تحليل النظام وجمع المتطلبات يبدأ عمل قسم اختبار النظم بدراسة وثائق المتطلبات وإنشاء وثائق أخرى تساعد في اختبار النظام مثل خطة اختبار النظام و حالات اختبار النظام وأتمتة عمليات الاختبار المتكررة وغيرها من العمليات.

اختبار النظام
اختبار النظام

عند الوصول إلى مرحلة اختبار النظام يقوم قسم اختبار النظم بتنفيذ خطته المعدة مسبقاً وإرسال الأخطاء Bugs إلى قسم تطوير النظم، بمعنى أنه يعيد العمل إلى مرحلة بناء النظام وينتظر أن يتم حل هذه المشاكل ليقوم بإعادة اختبار النظام.

ومن الطبيعي أن يتطلب الأمر عدة دورات بين قسم تطوير النظم واختبار النظم حتى يقوم قسم اختبار النظم بإصدار التصريح النهائي بنجاج النظام في موافقة المتطلبات المتفق عليها.

(5) إطلاق النظام

يعتقدُ بعض التقنيين وغير التقنيين أنه بالانتهاء من المراحل السابقة فإن العمل قد انتهى وما تبقى من عمل ليس بالأهمية التي تُذكر لأنه سهل أو غير مهم جداً.

دعني أغير لك الفكرة بأن مرحلة إطلاق النظام من أهم مراحل دورة حياة تطوير البرمجيات وأحياناً تكون أعقد المراحل.

كيف تعلم ما هو إطلاق النظام يجب أن تعلم كيف يتم تطوير النظم.

افترض أن هناك صاحب عمل لديه موقع يعمل، وكانت متطلباته عبارة عن تحسين في هذا الموقع بإضافة بعض الصفحات.

يمسى الموقع الخاص بصاحب العمل ببيئة الإنتاج Production Environment، ومن أجل التطوير في هذا النظام تُنشأ نسخة من بيئة الإنتاج تُسمى ببيئةُ التطوير Development Environment ومفصولة عنها تماماً بحيث يستطيع فريق تطوير النظام العمل والتعديل عليها دون التأثير على الأعمال الجارية حالياً.

هناك بيئات أخرى من الأفضل أن يتم إنشاؤها لإكمال دورة حياة تطوير البرمجيات بصورة جيدة مثل بيئة الاختبار وبيئة اختبار قبول النظام وغيرها من البيئات، ولكنها ليست محور حديثنا هنا.

فلنفترض أن الشفرة المصدرية النهائية المحتوي على الصفحات التي طلبها العميل موجودة ببيئة تطوير النظام، فإن الهدف من مرحلة إطلاق النظام هو نقل الملفات والإعدادات التي تدعم عمل النظام كما هو مطلوب من بيئة تطوير النظام إلى بيئة الإنتاج.

اطلاق النظام
اطلاق النظام

وأرجو أن تنتبه إلى أن إطلاقُ النظام لا يعني نسخ الملفات فقط، فقد يحتوي على إنشاء قواعد بيانات أو التعديل عليها أو تغيير إعداد الخوادم أو نقل النظام تماماً من موقع إلى آخر أو غيرها من العمليات.

لذلك فإن إطلاق النظام يتطلب دعماً من جميع الأطراف المعنية بالمشروع من مبرمجين ومحللين ومختبرين ومدراء المشاريع وأصحاب العمل.

(6) الدعم والصيانة

حسناً، لا يوجد نظام آمن أو صحيح بنسبة 100%.

خسرت ناسا في عام 1999 ما يقارب 125 مليون دولار أمريكي عندما خسرت مسبار بسبب خطأ برمجي لم يُكتشف أثناء دورة حياة تطوير البرمجيات.

الأخطاء تحدث، فلا نستطيع أن نُجزم بدقة عمل أي نظام حتى وإن تم اختباره مئات المرات، لذلك لا بد من مراقبة عمل النظام بعد إطلاقه والتأكد من أن مؤشرات عمله طبيعية مع الجاهزية لإصلاح الأخطاء التي تحدث.

المسؤول من أداء هذه العمليات في هذه المرحلة عادةً ما يُسمى بمدير النظام System Administrator ومهمته تتمحور حول ضمان عمل النظم بسلاسة ووفق ما هو مطلوب.

الدعم والصيانة
الدعم والصيانة

يقوم مدير النظام بدعم النظام وأداء مهام متعددة حتى وإن لم تتعلق بالنظام، مثل التأكد من الشبكات وعملها والأجهزة الطرفية مثل الطابعات وقارئات البطاقات وكل ما له علاقة بالنظام.

في حال لم يستطيع مدير النظام حل مشكلة متعلقة بالنظام وتطلب الامر تدخلاً برمجياً حينها يقوم برفع الأمر إلى الوحدة المختصة بالدعم والصيانة من أجل تحليل المشكلة وحلها أو شرح طريقة التغلب عليها في حال لم تكن المشكلة تتطلب تدخلاً برمجياً.

خاتمة

عندما يُخبرك أحدهم أن تطوير البرمجيات أمرٌ سهل، فكل ما عليك فعله هو أن تُنيره ببعضٍ مما ذكرناه عن دورة حياة تطوير البرمجيات، وبذلك تكون قد رفعت عنهُ عُذر الجهل بالمعرفة، وإذا أصرّ على استقلال واستصغار عملك أعتقدُ أنك على علم بما يجبُ عليك فعله 🙂

مصطفى الطيب

صديقٌ لنُظمِ المعلُومات و عُلومِ الحَاسِب و مُختصٌ بهما، مُحبٌ للعِلمِ و نَشرِه. أُشاركُ معارفي و تَجاربي و خِبراتي في تَدويناتٍ و دوراتٍ من خلال مُدونةِ عُلوم.

‫6 تعليقات

  1. شكرا جزيلا على هذا العمل الجمل اتمنى ان اكون مبرمجا محترف و اريد منك المساعدة بكل ما تملك من قدرات ومهارات و ايضا اريد ان اعرف إن كان لديكم كورسات خارجية
    وشكرا

  2. هل بالإمكان أستاذ مصطفى تطوير تطبيق لموقعك على أنظمة الموبايل
    ربما أفضل مع علمي أنه بالنسبة لك مكلف على الأقل مجهوداً
    الله يجزيك الخير

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق