الدورة المستندية للمبيعات
تعريف الدورة المستندية للمبيعات :هي عملية تسويقية تتضمن الخطوات المحددة التي يجب اتباعها لتحقيق النجاح في المبيعات. وتشمل هذه الخطوات ...
انطلاقا من أهمية تخصص هندسة البرمجيات ، تحدثنا في المقال الأول عن مفهوم هندسة البرمجيات وما هي شروط البرنامج الجيد بالإضافة لمفهوم تطوير البرمجيات. واستكمالا لسردنا لأهم المفاهيم المرتبطة بهندسة البرمجيات ، نستعرض في هذا المقال دورة حياة تطوير البرمجيات لعرض المراحل الأساسية لتطوير البرمجيات المختلفة وأهم نماذج تطوير البرمجيات .
يرمز لها أيضا علي سبيل الإختصار ب (SDLC) ، وتعرف بأنها تسلسل منظم ومُحدد جيدًا لمراحل هندسة البرمجيات لتطوير منتج البرنامج المقصود [1]. وبناء علي ذلك ، يمكن توصيف إطار العمل هذه الدورة (SDLC Framework) بأنه يتكون من الخطوات التالية :
1- الإتصال (Communication):
وهي بمثابة أولي خطوات تطوير البرمجيات، حيث يلجأ العميل (يسمي أيضا بالمستخدم) إلى طلب تنفيذ منتج البرمجيات الذي يقوم بتلبية رغباته ويحاول التفاوض علي الشروط مع مزود الخدمة .
2- جمع المتطلبات (Requirements Gathering):
في هذه الخطوة يقوم فريق تطويرالبرمجيات بإجراء نقاشات لجمع المعلومات الكافية عن متطلبات العميل في المنتج البرمجي بحيث يتم النظر إلى المتطلبات وفصلها إلى متطلبات العميل ومتطلبات النظام والمتطلبات الوظيفية. يتم جمع هذه المتطلبات من خلال عدة ممارسات :
3- دراسة الجدوى (Feasibility Study):
بعد جمع المتطلبات ، يأتي فريق تطوير البرمجيات بخطة تقريبية لعمل البرنامج . حيث يقوم المسئول عن دراسة الجدوى في الفريق باتحليل ما إذا كان من الممكن تصميم برنامج ما لتلبية جميع متطلبات العميل ، وما إذا كان هناك أي احتمال بأن يكون البرنامج المطلوب غير مفيد. و يتم أيضا تحليل إذا كان المشروع مجديًا علي المستوى المالي والعملي والتقني لكي تقوم المؤسسة بتبنيه. هناك العديد من الخوارزميات المتاحة ، والتي تساعد المطورين على استنتاج جدوى مشروع البرمجيات [1].
4- تحليل النظام (System Analysis):
الغرض من هذه الخطوة هو وضع خارطة الطريق لخطة التطويروطرح نموذج البرنامج المناسب للمشروع . تتضمن هذه المرحلة محاولة فهم وتحديد القيود المتلعقة بالمنتج البرمجي والمشكلات أو التغييرات التي يجب إجراؤها على الأنظمة المشابه الموجوده بالفعل وبالتالي وفقا لذلك، يحلل الفريق نطاق المشروع ويخطط الجدول الزمني والموارد .
5- تصميم البرمجيات (Software Design):
تقوم هذه المرحلة بالاستفادة من المعلومات التي تم جمعها في مرحلة جمع المتطلبات فتكون هي بمثابة المدخلات لهذه المرحلة ويكون الناتج في شكل تصميمين ؛ التصميم المنطقي والتصميم المادي. ويتم أيضا انتاج البيانات الوصفية (Meta-data) وقواميس ألبيانات والمخططات المنطقية ومخططات تدفق البيانات .
6- التكويد (Coding):
في هذه الخطوة يتم كتابة كود البرنامج بلغة البرمجة المناسبة والتأكد من قابلة للتنفيذ خالية من الأخطاء بكافة أنواعها.
7- الإختبار (Testing):
نظرا لأن الأخطاء قد تؤدي إلى إتلاف المنتج البرمجي والتي يمكن أن تصل خطورتها إلى إزالته، لذلك يتم إجراء اختبار للبرنامج أثناء التكويد بواسطة المطورين ويتم أيضا إجراء اختبار شامل بواسطة خبراء الاختبار(Software Testing Engineers) على مستويات مختلفة من الكود.
8- التكامل (Integration):
في هذه المرحلة قد يلزم دمج البرامج مع المكتبات وقواعد البيانات والبرامج الأخرى. تشارك هذه المرحلة في تكامل البرامج مع كيانات العالم الخارجي.
9- التشغيل (Implementation):
هذه المرحلة مسئولة عن تثبيت البرنامج على أجهزة العميل. أيضا يتم اختبارقابلية النقل والتكيف ويتم حل المشكلات المتعلقة بالتكامل [1].
10- التشغيل والصيانة (Operation and Maintenance):
تسعي هذه المرحلة الى التأكد من تشغيل المنتج من حيث المزيد من الكفاءة وقلة الأخطاء. في بعض الأحيان قد يتم تدريب العملاء أو المستخدمين على كيفية الاستخدام عن طريق الوثائق الخاصة بالمنتج (Documentations) . يتم اجراء الصيانة للمنتج عن طريق تحديث الكود وفقًا للتغييرات التي تحدث في بيئة العميل أو المستخدم أوالتغييرات التكنولوجية.
يسعي نموذج تطوير البرمجيات مساعدة مطوري البرمجيات على اختيار استراتيجية لتطوير البرنامج،، وذلك باستخدام مجموعة خاصة من الأدوات والأساليب والإجراءات . من أمثلة هذه النماذج:
1- نموذج الشلال (Classical Waterfall Model):
وهو أبسط نماذج تطوير البرمجيات، فيه يجب إكمال كل مرحلة من مراحل SDLC بالكامل قبل أن تبدأ المرحلة التالية. يستخدم هذا النوع من نماذج تطوير البرمجيات في المشروعات الصغيرة أو التي لا توجد بها متطلبات غير مؤكدة أو محددة [2].
في نهاية كل مرحلة ، يتم إجراء مراجعة لتحديد ما إذا كان المشروع يسير على المسار الصحيح وما إذا كان يجب الاستمرار أو تجاهل المشروع. في هذا النموذج ، يبدأ اختبار البرنامج فقط بعد اكتمال التطوير.
علي الرغم من سهولة استخدام هذا النموذج وبساطته ، إلا أن عيوب هذا النموذج شائكة فعلي سبيل المثال ، بمجرد أن يكون البرنامج في مرحلة الاختبار ، من الصعب جدًا العودة وتغيير شيء لم يتم التفكير فيه مسبقا. كما أنه ليس نموذجًا جيدًا للمشاريع المعقدة والطويلة. ولكنه يعتبر نموذجا مناسبا اذا كان المطور قد عمل علي مشروع مماثل من قبل ويعرف ويدرك تماما حيثياته ومشاكله وتفاديها من قبل البدأ.
2- نموذج الشلال التكراري (Iterative Waterfall Model):
يمثل هذا النموذج محاولة للتغلب علي أوجه القصور في النموذج السابق ، حيث يقوم بتقديم مسارات المراجعة (Feedback Paths) لتصحيح الأخطاء عند اكتشافها لاحقًا في مرحلة ما [2] . الميزة الأساسية في هذا النموذج أنه يقدم نموذج عمل للنظام في مرحلة مبكرة جدًا من التطوير مما يسهل العثور على عيوب وظيفية أو تصميمية.
في المقابل أحد أهم عيوب هذا النموذج هو أنه قابل للتطبيق فقط على مشاريع البرامج الكبيرة.
3- النموذج الأولي ( Prototype Model):
الفكرة الأساسية لهذا النموذج هي أنه بدلاً من تجميد المتطلبات (Requirements) قبل المضي قدمًا في التصميم أو التكويد ، يتم إنشاء نموذج أولي لفهم المتطلبات. تم تطوير هذا النموذج الأولي بناءً على المتطلبات المعروفة حاليًا ، ومن خلال هذا النموذج يمكن للعميل الحصول على "إحساس فعلي" بالنظام بل وفهم وتحديد ما يحتاجه والمرغوب فيه من متطلبات بشكل أدق. بمعني اخر ، هو عملية تقديم واجهة مستخدم (User interface) دون إضافة وظائف تفصيلية للعميل للمساعدة في ترجمة خصائص البرنامج المطلوبة [1] .تعد النماذج الأولية فكرة جذابة للأنظمة المعقدة والكبيرة التي لا توجد لها عملية يدوية أو نظام موجود للمساعدة في تحديد المتطلبات.
يوجد العديد من النماذج الأخري مثل النموذج المرن (Agile Model) [3]، والنموذج الحلزوني (Spiral Model) [4] .
في الختام
تعد دورة حياة تطوير البرمجيات (SCLC) هي بمثابة التسلسل المنظم للحصول علي منتج برمجي يلائم احتياجات العملاء ويحقق الهدف المنشود منه وبأقل تكفلة وأقل أخطاء للوصول لأفضل جودة ، وفي هذه الإطار يمثل نموذج دورة حياة تطوير البرمجيات (SDLC Model or Paradigm) جميع الأنشطة المطلوبة لجعل منتج البرمجيات المطلوب يمر عبر مراحل دورة حياته. كما أنه يحدد الترتيب الذي سيتم تنفيذ هذه الأنشطة به وصولا للمنتج النهائي . توفر هندسة البرمجيات نماذج عديدة تختلف فيما بينها في المميزات والعيوب ما يتلائم مع خصائص كل مشروع وحجمه .
المراجع :
[1]: https://www.tutorialspoint.com/software_engineering/software_engineering_tutorial.pdf
[2]: http://www.gvpcew.ac.in/LN-CSE-IT-22-32/CSE-IT/3-Year/32-SE/SE-KNSC-UNIT-1.pdf
[3]: https://motwr.com/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-software-engineering
[4]: https://www.vssut.ac.in/lecture_notes/lecture1428551142.pdf