هندسة البرمجيات حقل من حقول علوم الكمبيوتر ، يهتم ببناء الانظمة البرمجية الكبيرة والمعقدة بواسطة فريق أو فرق من المهندسين .
تختلف هندسة البرمجيات عن البرمجة في نقاط كثيرة ، وسنذكر الآن بعض الأفكار عن هندسة البرمجيات والبرمجة، قد يتوضح الفرق من خلالها :
- في هندسة البرمجيات فإننا نتحدث عن مهندس البرمجيات بدلاً من المبرمج والنظام البرمجي أو البرمجية ( اختصاراً ) بدلاً من البرنامج .
- تعتمد البرمجة في دراستها بالدرجة الأولى على بنى المعطيات ، الخوارزميات واللغات البرمجية .
- لايحتاج المبرمج عادة لأن يكون ضمن فريق عمل . ذلك أن البرامج المطلوبة مهما كانت كبيرة يمكن اعتبارها نشاط يمكن القيام به شخصياً . أي أن بإمكان المبرمج أن يقوم بكتابة وتنفيذ البرنامج المطلوب كاملاً.
- يبنى البرنامج عادة من أجل حل المسألة تهم شخص ( مثلاً كتابة برنامج لحل معادلة تفاضلية ) وبالتالي فالأشخاص المتضمنين بالعمل قليلي العدد .
- النظام البرمجي هو نتاج فريق أو عدة فرق من مهندسي البرمجيات ، يقوم مهندس البرمجيات بإنتاج مركبة يتم ضمها إلى مركبات أخرى منتجة من قبل مهنسين آخرين من أجل الحصول على النظام البرمجي المطلوب . ويمكن أن يتم لاحقاً تعديل المركبات من قبل مهندسين آخرين .
- النظام البرمجي يكون عادة بذاته مركبة في منظمة أكبر فعلى سبيل المثال يحتوي نظام الاتصالات الهاتفية على حواسب ، خطوط هاتف ، معدات صلبة أخرى كالأقمار الصناعية وبرمجيات تقوم بالتحكم بين مختلف هذه المركبات .وبالتالي فمتطلبات ومواصفات النظام الكلي يجب أن تأخذ بعين الاعتبار جميع هذه المكونات . وبالنتيجة إنجاز العمل البرمجي بشكل جيد يتطلب رؤية عامة للمسألة الهندسية المطروحة من قبل مهندس البرمجيات . وهذا يقتضي بالضرورة وجود مهندس برمجيات في فريق توصيف وتطوير متطلبات النظام الكلي .
- يجب على مهندس البرمجيات أن يكون :
- مبرمج جيد .
- مصمم جيد .
- منمذج جيد .
- يمتلك مهارات جيدة في الاتصالات مع الآخرين .
__________________
اللهم أرنا الحق حقاً وارزقنا اتباعه وأرنا الباطل باطلاً وارزقنا اجتنابه
__________________