طبيعة مفهوم هندسة البرمجيات



 طبيعته ومفهومه
   منذ بدء ظهور الحاسبات العلمية Computing في الأربعينيات من القرن العشرين وحتى الآن، تمت تطبيقات واستخدامات الحاسبات الآلية بشكل مذهل ومثير للاهتمام. وصارت البرمجيات تلعب دورا مركزيا في كل أوجه الحياة اليومية: في الحكومة، البنوك والتمويل، الصناعة، النقل، الاقتصاد، الإدارة، التجارة، التعليم، الترفيه، الخ. كما نمي بصورة دراماتيكية عدد وحجم وتطبيق مجالات برامج الكمبيوتر. ونتيجة لذلك، تنفق مئات البلايين من الدولارات في تطوير البرمجيات التي صارت تمثل عصب الحياة لمعظم البشر الذين يعتمدون علي فعالية تطوير البرمجيات.
    وقد ساعدت منتجات البرمجيات الناس في أن يكونوا أكثر كفاءة وإنتاجية، حيث أن هذه المنتجات تجعل الناس أكثر فعالية في حل المشكلات التي تواجههم وتوفر لهم بيئة للعمل والأداء الأكثر مرونة والأقل تعقيدا. وعلي الرغم من هذا النجاح الكبير توجد كثير من المشكلات الخطيرة التي ترتبط بتكلفة وحداثة وجودة كثير من منتجات البرمجيات نظرا لطبيعتها المميزة. 
4/1 طبيعة هندسة البرمجيات:
    من الأسباب التي تكمن فيها المشكلات المتعلقة بهندسة البرمجيات تتمثل في طبيعتها التي تتميز بالعوامل الثلاث التالية:
· منتجات البرمجيات تكون من بين النظم الأكثر تعقيدا التي يؤديها البشر، وأن البرمجيات بطبيعتها تشتمل علي مكونات وخواص ضمنية ذات طبيعة جوهرية (علي سبيل المثال، التعقيد المتعاظم والصفة غير المنظورة والتغير المستمر) التي لا يمكن مخاطبتها بسهولة [Brooks, 1995] .
·أساليب وعمليات البرمجة التي أنجزت بفعالية بواسطة فرد أو فريق عمل صغير لتطوير البرامج المتواضعة الحجم لا تلائم أو ترفع بنسبة ما لتطوير النظم الكبيرة والمعقدة (علي سبيل المثال، النظم التي تشتمل علي ملايين من سطور التكويد أو التشفير وتتطلب سنوات من العمل الدءوب بواسطة مئات من مطوري البرمجيات).
·سرعة التغيير في تكنولوجيا الحاسبات والبرمجيات التي تدفع الطلب علي منتجات البرمجيات الجديدة والمتطورة باستمرار. وقد خلق هذا الوضع توقعات العملاء وقوي المنافسة التي تشد قدرتنا لإنتاج برمجيات تتسم بالجودة العالية في إطار تطوير وجدولة مقبولة.
وعلي هذا الأساس فإن مجال هندسة البرمجيات مختلف في طبيعته من مجالات الهندسة الأخرى بسبب طبيعته غير الحسية أو غير المنظورة وطبيعة عملياته المحددة المعالم، كما أن هذا المجال يسعى لتكامل مبادئ الرياضيات وعلم الكمبيوتر مع المزاولات المختلفة المطورة لإنتاج حقائق اصطناعية Artifacts طبيعية ومنظورة، كما يسعى أيضا لتطوير نماذج منظمة وأساليب موثوق منها لإنتاج برمجيات عالية الجودة.
4/2 مفهوم هندسة البرمجيات:
      بزغ مسمي "هندسة البرمجيات" كمجال علمي عام 1968 في نطاق مؤتمر الناتو NATO  عن هندسة البرمجيات [Naur,1969] . ومنذ ذلك الوقت صار مصطلح "هندسة البرمجيات" مستخدما بتوسع كبير في الصناعة والحكومة والدوائر الأكاديمية: ففي الوقت الحالي يتوافر مئات الآلاف من مهنيي الحاسبات الذين يطلق عليهم "مهندسي برمجيات"، ونشرت المطبوعات العديدة تحت هذا المسمي، وأطلق المصطلح عل عدد كبير من المجوعات والمنظمات والمؤتمرات المهنية واستحدثت مقررات وبرامج تعليمية تدرس هذا التخصص في كثير من الجامعات في الدول المتقدمة وعلي وجه الخصوص في الولايات المتحدة الأمريكية.
     وعلي الرغم من التوسع الكبير في استخدام مصطلح "هندسة البرمجيات"، إلا أنه لا زالت توجد كثير من الآراء التي تتفق  وتختلف عن معني ومفهوم وطبيعة المصطلح. وعلي الرغم من ذلك، فإن المؤيدين والمعارضين للمصطلح يشتركون جميعا بخيط مشترك يحدد ويتضمن أن هندسة البرمجيات هي أكثر من ترميز أو تشفير البرامج، حيث تتضمن جودة وجدولة واقتصاديات ومعرفة تطبيق المبادئ .  والعرض التالي يقدم ثلاث مفاهيم أو تعاريف تمثل تلك الآراء:
(1) "إنشاء واستخدام مبادئ الهندسة المحددة (الطرق) للحصول علي برمجيات اقتصادية الموثوق منها والتي تعمل علي الآلات الواقعية" [Bauer, 1972] .
(2) هندسة البرمجيات تمثل ذلك الشكل من الهندسة الذي يطبق مبادئ علم الحاسب الآلي والرياضيات لتحقيق حلول ترتبط بفعالية التكلفة لمشكلات البرمجيات.
(3) تطبيق مدخل منظمي محدد وكمي في تطوير وتشغيل وصيانة البرمجيات [IEEE, 1990].
     وباستعراض هذه المفاهيم الثلاث، يمكن ملاحظة تواجد أوجه معينة لكل من هذه التعاريف التي تسهم في منظور البرمجيات في إطار نمط منظم ومراقب وفعال. وتبع لذلك، يوجد تركيز هام علي تحليل وتقييم وتوصيف وتصميم وتطور البرمجيات. بالإضافة لذلك، تتوافر مجموعة من القضايا المرتبطة بالإدارة والجودة، والحداثة، والابتكارية، والمعايير والمهارات المرتبطة بالفرد وفريق العمل والمزاولة المهنية التي تطلب دورا حيويا في هندسة البرمجيات.