تصميم وتطوير البرمجيات

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

وهو الذي يطلق عليه دورة حياة تطوير البرمجيات Software Development Life Cycle SDLC. يتم تصميم وتطوير البرمجيات لتحقيق أهداف معينة هي التي يتم تشكيل وبناء البرنامج وفقا لها مثل البرامج المخصصة لاستعمال شركة معينة أو البرمجيات مفتوحة المصدر.

دورة حياة تطوير البرمجيات
مرحلة التخطيط والتحليل:

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

مرحلة التصميم:

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

مرحلة كتابة الشفرة (Coding):

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

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

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

المراحل الخمسة في النموذج الذكي تطابق تلك الموجودة في نموذج الشلال مع بعض الاختلافات الطفيفة حيث أن تلقي التقييم يحدث بشكل دائم ولا تكون مرحلة البحث والتصميم مفصلة ومعمقة كما في نموذج الشلال.

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

قد يستغرق هذا النموذج فترة زمنية بين الأسبوع وثلاثة أسابيع للتكرار الواحد. يتم في هذا النموذج اعتماد فلسفة مبنية على أن الأفراد عليهم أن يكونوا منظمين ومحفزين معنويا لأجل العمل والتعاون سويا.

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

أخيرا أهم نقطة أن يكون هناك سرعة في التعامل مع التغيير بشكل مستمر.

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

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

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

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

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

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

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

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

مع كل حلزونة يتم تجاوزها فإنه الصورة تتضح بالنسبة للتعديلات والمتطلبات للبرنامج النهائي. مرحلة التقييم وتحليل المخاطر Risk Analysis يتم في هذه المرحلة تعريف وتقييم امكانية التطبيق للبرنامج والمخاطر الإدارية المحتملة مثل التكلفة وما إلى ذلك ثم الانتقال إلى التكرار الثانية. هذه أربعة نماذج تستعمل في تصميم وتطوير البرمجيات تبين مدى ضخامة هذا المجال.

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