جدول المحتوى
أولاً يجب أن نفهم ما تعنيه هندسة البرمجيات. يتكون المصطلح من كلمتين، البرمجيات والهندسة.
البرنامج هو أكثر من مجرد رمز برنامج. البرنامج عبارة عن تعليمات برمجية قابلة للتنفيذ، والتي تخدم بعض الأغراض الحسابية. يعتبر البرنامج بمثابة مجموعة من أكواد البرمجة القابلة للتنفيذ والمكتبات والوثائق المرتبطة بها. البرمجيات، عندما يتم تصنيعها لمتطلبات محددة تسمى منتج البرمجيات.
ومن ناحية أخرى، فإن الهندسة تدور حول تطوير المنتجات باستخدام مبادئ وأساليب علمية محددة جيدًا.
هندسة البرمجيات هي فرع هندسي مرتبط بتطوير منتج برمجي باستخدام مبادئ وأساليب وإجراءات علمية محددة جيدًا. نتيجة هندسة البرمجيات هي منتج برمجي فعال وموثوق.
تعريفات
يعرف IEEE هندسة البرمجيات بأنها:
(1) تطبيق نهج منهجي ومنضبط وقابل للقياس لتطوير البرمجيات وتشغيلها وصيانتها؛ أي تطبيق الهندسة على البرمجيات.
(2) دراسة المناهج كما في العبارة السابقة.
يعرف فريتز باور، عالم الكمبيوتر الألماني، هندسة البرمجيات بأنها:
هندسة البرمجيات هي إنشاء واستخدام مبادئ الهندسة السليمة من أجل الحصول على برامج اقتصادية موثوقة وتعمل بكفاءة على الأجهزة الحقيقية.
تطور البرمجيات
يشار إلى عملية تطوير منتج برمجي باستخدام مبادئ وأساليب هندسة البرمجيات باسم تطور البرمجيات. ويشمل ذلك التطوير الأولي للبرمجيات وصيانتها وتحديثاتها، حتى يتم تطوير المنتج البرمجي المطلوب، والذي يلبي المتطلبات المتوقعة.
يبدأ التطور من عملية جمع المتطلبات. وبعد ذلك يقوم المطورون بإنشاء نموذج أولي للبرنامج المقصود وعرضه للمستخدمين للحصول على تعليقاتهم في المرحلة المبكرة من تطوير منتج البرنامج. يقترح المستخدمون تغييرات، والتي تستمر أيضًا في تغيير العديد من التحديثات والصيانة المتتالية. تتغير هذه العملية إلى البرنامج الأصلي، حتى يتم إنجاز البرنامج المطلوب.
حتى بعد أن يرغب المستخدم في الحصول على البرنامج في متناول اليد، فإن التكنولوجيا المتقدمة والمتطلبات المتغيرة تجبر منتج البرنامج على التغيير وفقًا لذلك. إن إعادة إنشاء البرنامج من البداية والتوافق مع المتطلبات بشكل فردي أمر غير ممكن. الحل الوحيد المجدي والاقتصادي هو تحديث البرنامج الحالي بحيث يتوافق مع أحدث المتطلبات.
قوانين تطور البرمجيات
لقد أعطى ليمان قوانين لتطور البرمجيات. قام بتقسيم البرنامج إلى ثلاث فئات مختلفة:
النوع S (النوع الثابت) : هذا برنامج يعمل بدقة وفقًا للمواصفات والحلول المحددة. يتم فهم الحل وطريقة تحقيقه على الفور قبل البرمجة. برنامج s-type هو الأقل تعرضًا للتغييرات، وبالتالي فهو الأبسط على الإطلاق. على سبيل المثال، برنامج الآلة الحاسبة للحسابات الرياضية.
النوع P (النوع العملي) : هذا برنامج يحتوي على مجموعة من الإجراءات. ويتم تحديد ذلك من خلال ما يمكن أن تفعله الإجراءات بالضبط. في هذا البرنامج، يمكن وصف المواصفات ولكن الحل ليس واضحًا على الفور. على سبيل المثال، برامج الألعاب.
النوع الإلكتروني (النوع المضمن) : يعمل هذا البرنامج بشكل وثيق مع متطلبات بيئة العالم الحقيقي. يتمتع هذا البرنامج بدرجة عالية من التطور نظرًا لوجود تغييرات مختلفة في القوانين والضرائب وما إلى ذلك في مواقف العالم الحقيقي. على سبيل المثال، برامج التداول عبر الإنترنت.
تطور برمجيات النوع الإلكتروني
أصدر ليمان ثمانية قوانين لتطور برمجيات النوع E –
التغيير المستمر Continuing change : يجب أن يستمر النظام البرمجي من النوع E في التكيف مع تغيرات العالم الحقيقي، وإلا فإنه يصبح أقل فائدة بشكل تدريجي.
زيادة التعقيد Increasing complexity : مع تطور نظام برمجي من النوع E، يميل تعقيده إلى الزيادة ما لم يتم العمل على صيانته أو تقليله.
الحفاظ على الألفة Conservation of familiarity : يجب الاحتفاظ بالألفة مع البرنامج أو المعرفة حول كيفية تطويره، ولماذا تم تطويره بهذه الطريقة المحددة وما إلى ذلك، بأي ثمن، لتنفيذ التغييرات في النظام.
النمو المستمر Continuing growth : لكي يتمكن نظام E-type من حل بعض مشكلات الأعمال، فإن حجم تنفيذ التغييرات ينمو وفقًا لتغيرات نمط الحياة في الأعمال.
خفض الجودة Reducing quality : تنخفض جودة نظام برمجي من النوع E ما لم تتم صيانته بشكل صارم وتكييفه مع بيئة تشغيلية متغيرة.
أنظمة ردود الفعل Feedback systems : تشكل أنظمة برمجيات النوع E أنظمة ردود فعل متعددة الحلقات ومتعددة المستويات ويجب معاملتها على هذا النحو حتى يتم تعديلها أو تحسينها بنجاح.
التنظيم الذاتي Self-regulation : تكون عمليات تطوير النظام من النوع E ذاتية التنظيم مع توزيع مقاييس المنتج والعملية بالقرب من المعدل الطبيعي.
الاستقرار التنظيمي Organizational stability : لا يتغير متوسط معدل النشاط العالمي الفعال في نظام E-type المتطور طوال عمر المنتج.
نماذج البرمجيات
تشير نماذج البرمجيات إلى الأساليب والخطوات التي يتم اتخاذها أثناء تصميم البرنامج. هناك العديد من الأساليب المقترحة والتي يتم تطبيقها اليوم، ولكننا بحاجة إلى معرفة أين وصلت هذه النماذج في هندسة البرمجيات. ويمكن دمجها في فئات مختلفة، على الرغم من احتواء كل منها في بعضها البعض:
نموذج البرمجة هو مجموعة فرعية من نموذج تصميم البرمجيات والذي يعد أيضًا مجموعة فرعية من نموذج تطوير البرمجيات.
نموذج تطوير البرمجيات Software Development Paradigm
يُعرف هذا النموذج بنماذج هندسة البرمجيات حيث يتم تطبيق جميع المفاهيم الهندسية المتعلقة بتطوير البرمجيات. يتضمن العديد من الأبحاث وجمع المتطلبات التي تساعد على بناء منتج البرنامج. إنها تتكون من (جمع الشروط والمواصفات ، تصميم البرمجيات ، البرمجة).
نموذج تصميم البرمجيات Software Design Paradigm
هذا النموذج هو جزء من تطوير البرمجيات ويتضمن (التصميم ، الصيانة ، البرمجة).
نموذج البرمجة Programming Paradigm
يرتبط هذا النموذج ارتباطًا وثيقًا بجانب البرمجة في تطوير البرمجيات. هذا يتضمن (الترميز ، الاختبارات ، الاندماج).
الحاجة إلى هندسة البرمجيات
تنشأ الحاجة إلى هندسة البرمجيات بسبب ارتفاع معدل التغيير في متطلبات المستخدم والبيئة التي يعمل عليها البرنامج.
برمجيات كبيرة Large software : إن بناء جدار أسهل من بناء منزل أو مبنى، كذلك، عندما يصبح حجم البرمجيات كبيراً يجب على الهندسة أن تخطو خطوة لإعطائها عملية علمية.
قابلية التوسع Scalability : إذا لم تكن عملية البرنامج مبنية على مفاهيم علمية وهندسية، فسيكون من الأسهل إعادة إنشاء برنامج جديد بدلاً من توسيع نطاق البرنامج الحالي.
التكلفة Cost : نظرًا لأن صناعة الأجهزة أظهرت مهاراتها وأدى التصنيع الضخم إلى انخفاض أسعار أجهزة الكمبيوتر والأجهزة الإلكترونية. لكن تكلفة البرمجيات تظل مرتفعة إذا لم يتم تكييف العملية المناسبة.
الطبيعة الديناميكية Dynamic Nature : تعتمد طبيعة البرامج المتنامية والمتكيفة بشكل كبير على البيئة التي يعمل فيها المستخدم. إذا كانت طبيعة البرنامج تتغير دائمًا، فيجب إجراء تحسينات جديدة على البرنامج الحالي. هذا هو المكان الذي تلعب فيه هندسة البرمجيات دورًا جيدًا.
إدارة الجودة Quality Management : توفر العملية الأفضل لتطوير البرمجيات منتجًا برمجيًا أفضل وأكثر جودة.
خصائص البرمجيات الجيدة
يمكن الحكم على منتج البرنامج من خلال ما يقدمه ومدى جودة استخدامه. يجب أن يفي هذا البرنامج بالأسباب التالية:
التشغيل : ويشتمل على (الميزانية وسهولة الاستخدام والكفاءة والصحة والوظيفة والاعتمادية والأمن والسلامة).
الانتقالية : وتشتمل على (قابلية النقل، وقابلية التشغيل البيني، وقابلية إعادة الاستخدام، والقدرة على التكيف).
الصيانة : وتشتمل على (النمطية وقابلية الصيانة والمرونة وقابلية التوسع).