أزمة البرمجيات في مشاريع التقنية
لقد أدت أزمة البرمجيات في أواخر الستينيات إلى عقد المؤتمر الأول لهندسة البرمجيات برعاية حلف شمال الأطلسي- باعتباره الطرف المستفيد من النهوض بمشاريع التقنية- وذلك لاقتراح الحلول لمشاكل البرمجيات الشائعة، مثل: التأخر في تسليم مشاريع التقنية، والتجاوز الكبير لميزانيتها، وقلة جودة برمجياتها وعدم تلبيتها للمتطلبات وكثرة كوارثها والصعوبة البالغة في صيانتها وتحديثها. وأشعلت توصيات المؤتمر جذوة تطوير هندسة البرمجيات حتى وصلت إلى الطفرة التي نعيشها اليوم. ومع ذلك ما زال هناك بعض القصور في بعض الجوانب، ما ينذر بحدوث أزمة برمجيات أخرى؛ لذا لا بد من التفكير في تطوير منهجيات متخصصة لمجالات العلوم المتعلقة بهندسة البرمجيات لحل هذه الأزمة.
وحيث إن التقنية تحتل أهمية بالغة في حياتنا، إذ تتحكم أنظمتها في الطائرات والعمليات الجراحية وحسابات البنوك والاتصالات والأعمال الإدارية وغيرها، لذا فإن أي خطأ في برمجيات تلك الأنظمة قد يؤدي إلى كوارث بشرية ومالية واجتماعية خطيرة. ووجد أن نسبة فشل المشاريع التقنية في أمريكا وحدها عام 1996، بلغت 58 في المائة من إجمالي المشاريع، أي ما يعادل 145 مليار دولار ذهبت هدرا من دون فائدة. ونشر علماء التقنية من خلال تطابق دراسات أوروبية وأمريكية، أن أكثر من 85 في المائة من مشاكلِ وكوارث وفشل مشاريع التقنية كان بالإمكان تفاديها؛ لأنها تعود إلى عدم الفهم الصحيح للمشكلة المراد حلها، أو بمعنى آخر في عدم معرفة الاحتياجات الفعلية ومتطلبات الأطراف المستفيدة من النظام أو المشروع المطلوب إنشاؤه.
ونظرا لتطور مشاريعِ التقنية وضخامتها، والحاجة إلى تحصينها ضد الفشل وتَحسين نوعيةِ برمجياتها ومَنْع كوارث أخطائها البرمجية، فقد تجاوب العلماء لحل هذه الأزمة في اتجاهين: (الأول) إيجاد فرع متخصص للمساعدة على تفادي هذه المشاكل أو على الأقل تقليل نسبة أخطائها، وأطلق على هذا الفرع اسم (هندسة المتطلبات). (الثاني) رفع كفاءة مقاولي مشاريع التقنية بإيجاد معايير عالمية لشركاتهم سميت (نموذج القدرات والنضج المتكامل) Capability Maturity Model Integration أو CMMI.
من ناحية هندسة المتطلبات: فهي أولى مراحل حياة بناء المشروع التقني- قبل مراحل التصميم والتنفيذ- يتم خلالها عمل الدراسات والتخطيط والتحليل المعلوماتي ومناقشة الجدوى ومحاولة حل جميع الخلافات والمتناقضات الإدارية والبيئية والتقنية لاكتمال صورة المشروع واتفاق الأطراف المستفيدة على ذلك، ليصبح الناتج النهائي لهذه المرحلة (متطلبات دقيقة ومحددة وواضحة وشاملة وصحيحة وعلى مستوى عال من الجودة). وتعتبر هذه المتطلبات قاعدة لعقود العمل بين الأطراف (المستفيدة) و(المنفذة) وكتاب إرشادات ومرجعا لجميع العاملين في المشروع.
لقد اكتسبت هندسة المتطلبات أهمية بالغة لأثرها المباشر في جودة العملية وجودة المنتج النهائي للبرمجيات؛ لأن بقية مراحل حياة المشروع ترتبط بها مباشرة. فعندما يتم تصميم النظام، على المصممين اتباع ما قرره مهندسو المتطلبات تماما. فكلما اجتهد مهندس المتطلبات في تحقيق كمال وصحة متطلبات مشروعه، اقترب من ضمان نجاح المشروع، وبالتالي تقليل جهد وتكاليف صيانته.
لقد كانت بعض المفاهيم السابقة لتحليل النظم تركز على المشروع وتهمل البيئة، بينما هندسة المتطلبات تشمل الرؤية كاملة حول (المشروع والبيئة معا)، وتكون بمثابة الجسر بين معرفة احتياجات (الأطراف المستفيدة من المشروع) وقيود البيئة التي سيُطور ويعمل ضمنها النظام، وبين القدرات والفرص التي توفرها تقنية البرمجيات. ومن أهم فوائدها توفير عدد من الحلول لتتمكن الأطراف المستفيدة من اشتقاق الخيار المناسب من هذه الحلول والخيارات المتاحة حتى يتم فيما بعد اختيار التقنية المناسبة لهذه الحلول.
وهناك الكثير من النظريات والتطبيقات والطرق والأدوات لهندسة المتطلبات وأحد أنواعها الأكثر فاعلية هو هندسة المتطلبات باستخدام الأهداف Goal Oriented Requirements Engineering، لأن مناقشة الأهداف مع الأطراف المستفيدة تساعد على فهم المتطلبات. ويتم التركيز فيها على تحديد أهداف المشروع التي بني من أجلها النظام، ووجوب ربطها بأهداف المنشأة لتوضح كيفية عمل النظام عندما يتحد مع البيئة الذي سيصبح جزءا منها. ويتم تناول: لماذا وضع كل هدف؟ وكيف يمكن أن يتحقق؟ وكيف يمكن التغلب على قيود وموانع تحقيقه، ومن ثم تحول هذه الأهداف إلى متطلبات يتحدد فيها المسؤول عن تنفيذها في النظام أو البيئة سواء موظفين، أو أجهزة تحكم أو برامج. وبالتالي يتضح ما يمكن أتمتته وما لا تستطيع التقنية برمجته، وهذا هو الجزء الأكثر صعوبة في بناء مشاريع التقنية. ومع أن إدارة المتطلبات وهندستها بشكل دقيق وكامل ما زالت تعاني تعقيدات كثيرة، إلا أن العلماء يأملون في تراكم الخبرات عبر الوقت لحل هذه التعقيدات.
أما من ناحية نموذج القدرات والنضج المتكامل CMMI: فقد اتجهت وزارة الدفاع الأمريكية عام 1991م إلى علماء معهد هندسة البرمجيات SEI في جامعة (كرنقيه ميلون) للبحث عن حلول لأزمة البرمجيات التي أعاقت تطور مشاريعها التقنية. وتمخضت هذه البحوث عن نموذج معايير مكون من خمس مراحل، يطبق لرفع مستوى كفاءة القوى البشرية، وتعزيز القدرة التقنية في شركات صناعة التقنية، ويغطي دورة حياة المشروع التقني من الفكرة الأولى مرورا ببرمجة نظامه وانتهاء بتسليمه. وحقق تطبيقه نجاحا هائلا، أدى إلى تطويره لاستخدامه في مجالات أخرى غير التقنية في المنشآت الحكومية والتجارية والصناعية. وأطلق عليه اسم نموذج القدرات والنضج المتكامل CMMI.
واشترطت وزارة الدفاع الأمريكية حصول شركات صناعة التقنية- على الأقل- على المستوى الثالث- حسب معايير CMMI - لتصبح مؤهلة للتقدم لمناقصات ومشتريات الوزارة. وبفضل هذا الشرط طرأ خفض هائل في نفقات وتكاليف مشاريع التقنية وارتفاع جودتها. وأغرى هذا النجاح كبريات الشركات الأخرى المستهلكة للتقنية للاقتداء بها وتطبيق هذه المعايير مثل شركة جنرال موتورز، حيث أدى ذلك إلى نجاح تنفيذ مشروعاتها من 50 في المائة إلى أكثر من 95 في المائة، نتيجة الكشف المبكّر عن الأخطاء والثغرات البرمجية. وتبعتها شركة بوينج ووكالة ناسا، وشركات: نوكيا، وإركسون، وبي إم دبليو، وإنتل، وبنك أمريكا وغيرها الكثير.
ويتكوّن نموذج CMMI من خمسة مستويات، يتم في المستويات الأولى توجيه الشركة للتعامل مع مشاكل التخطيط، ورصد المشاريع والتحكم والقياس، وإدارة المتطلبات، ومعرفة كتابة العقود مع العملاء والموردين، ثم ينتقل في المستويات العليا، لمساعدة الشركات على تحديد أطر السياسة العامة، والعمل المؤسسي المعتمد على تراكم الخبرة، وتطور إدارة العمليات الإحصائية، وتقديم أفضل الإجراءات لتحسين القدرة على التنبؤ، ورفع الكفاءة، وتقليل التكاليف.