هندسة البرمجيات.. فرع يجمع بين علم الحاسوب والهندسة
- ظهر فرع هندسة البرمجيات،في كليات تكنولوجيا المعلومات.. ولكن لهذه اللحظة فان معظم الناس لا يفرقون بين هندسة الحاسوب،وهندسة البرمجيات ،وعلم الحاسوب ، فهناك من يظن بان ابنه عند دراسته لفرع هندسة البرمجيات سينتمي الى نقابة المهندسين ،مثل المهندس المعماري والمدني ...الخ.
لاعطاء فكرة عامّة عن هندسة البرمجيات، تخيل انك تريد عمل منزل ؟ ستذهب بالطبع لمهندس معماري وتذكر له احتياجاتك بدقة وسيقوم بعمل مخطط واضح لا يمكن للمقاول الخروج عليه، وبعدها ستذهب للمقاول لبدء البناء وفق المخطط،فهنا مهندس البرمجيات هو المهندس المعماري ، والمبرمج هو المقاول ، وأنت العميل ، والمبنى هو البرنامج.
نشأ مجـــــــــال هندسة البرمجيات Software Engineering كحل حتمي لما يسمى بأزمة البرمجيات ، في مؤتمر عقد من قبل اللجنة العلمية في منظمة حلف شمال الاطلسي عام 1968 وتم من خلال هندسة البرمجيات ، التعرف على مجموعة أخطاء برمجية تسببت في كثير من الخسائر والكوارث المادية والبشرية، فالعديد من المشاريع البرمجية كلفت أضعاف ما رصد لها وتجاوزت الفترة الزمنية المجدولة لإنهائها، ومشاريع أخرى تسببت في خسائر مالية وزمنية وأودت بسمعة كبريات الشركات بسبب وجود ثغرات برمجية في أنظمة المعلومات، بل تعدى الأمر ذلك حيث أدت الأخطاء البرمجية في مشاريع أخرى الى خسائر بشرية كما في حالة جهاز الأشعة في أحد المستشفيات الأمريكية والذي تسبب الخطأ البرمجي في إعطاء جرعة زائدة من الإشعاع للمرضى مما أدى إلى وفاتهم،كل هذه الأخطاء البرمجية حدثت في ظل غياب منهجيات هندسة برمجيات قياسية مجربة ومعتمدة تساعد على تأكيد الجودة أثناء المراحل المختلفة لمنهجيات تطوير النظام بشكل دقيق ومنظم قبل تسليمه للمستخدم النهائي.
وبناءً على ما تقدم أصبح وجود حقل معرفة يعنى بتطوير المنهجيات والأساليب والأدوات للتأكد من جودة وموثوقية جميع مراحل النظام وقيامه بالغرض الذي أنشئ من أجله أمراً حتمياً. حيث تشمل تلك الجودة المراحل الأساسية لدورة حياة النظام ابتداءً من جمع المتطلبات وتوثيقها وتحليلها ومرحلة التصميم والبرمجة والاختبار وانتهاء بالصيانة. وقد تعارف المختصون على تسمية هذا الحقل المعرفي بـ هندسة البرمجيات وتسمية المختص في هذا المجال بـ مهندس برمجيات.
لذا يعد تخصص هندسة البرمجيات من التخصصات الجديدة التي ظهرت الحاجة إليها في مجالات عمل المتخصصين بالحاسوب حيث يقوم إخصائي هندسة البرمجيات بالعديد من المهام الضرورية لضمان تطوير وبناء النظم البرمجية وفق منهجيات هندسة برمجيات مجربة ومعايير قياسية معتمدة ، وذلك للتحقق من حسن ادائها وسلامتها من الاخطاء، ويتولى بناء وصيانة التطبيقات البرمجية باستخدام الأساليب والأدوات التقنية الحديثة لبناء البرامج، ويجمع مهندس البرمجيات لذلك بين المعارف العلمية والمهارات العملية من مجالات تخصصية متعددة تشمل : علوم الحاسوب ونظم المعلومات وإدارة المشاريع والعلوم الهندسية بالإضافة إلى المعرفة عن الحقل التطبيقي للبرنامج.
ويحقق مهندس البرمجيات ما يقوم به العديد من المهندسين عادة، من بناء وتطوير النظم مع تأكيد عناصر الجودة ، والتكلفة ، والإعتمادية للنظم المطورة، وفي مجالات الحاسب يعد ذلك مهماً للغاية وذلك لعدة أسباب منها تجنب الوقوع في مشاكل وأخطاء البرمجيات ، ومنها كذلك سهولة التعامل مع النظام وصيانته والتي تصبح أكثر تعقيداً وتكلفة ( مالاً وجهداً ووقتاً) كلما تقدمت مراحل التطوير وخصوصاً عندما يكون النظام ضخماً حيث أن بعض النظم البرمجية قد تتطلب الملايين من أوامر البرمجة الحاسوبية والتي يلزم التأكد من أدائها في ظروف متغيرة ومتنوعة وحرجة أحياناً وعلى سبيل المثال يشمل نظام الإدارة الحاسوبية بطائرة بوينج 777 الحديثة ما يزيد عن خمسة ملايين أمر حاسوبي مما يظهر الاهمية الفائقة في اعداد البرنامج للعمل بجودة وكفاءة عالية .
والسؤال الشائع في المجتمع : ما الفرق بين هندسة الحاسوب ،وعلم الحاسوب ،و هندسة البرمجيات؟
أولا: هندسة الحاسوب (Computer Engineering) تتعامل مع تصميم وتطوير وتشغيل أنظمة التشغيل للأجهزة الرقمية عامة، والأجهزة الرقمية هي أي جهاز مكون من معالج وذاكرة ودائرة كهربائية ، مثل الحاسوب المنزلي أو الموبايل ، أو حتى أجهزة ثانوية مثل كرت الشاشة والشبكة المرتبط بجهاز الحاسوب المنزلي،والفرق الأساسي بين هندسة الحاسوب وبين هندسة البرمجيات وعلوم الحاسب أنها تركز على حل المشكلات ببرمجة الهاردوير.
ثانيا: عـــــــــلوم الحــــــــــــــــاســــــــــــوب (Computer Science) تركز على فهم وتصميم وتطوير البرامج. كما تهتم بالبيانات وبنيتها وطرق تخزينها ونقلها وعلى طرق الحساب وطرق البرمجة ومفاهيم الشبكات والاتصال ونقل المعلومات،فمجال علوم الحاسوب غير متخصص ومركّز كهندسة البرمجيات أو هندسة الحاسب فهي مجموعة من العلوم المتخصصة بالحاسب في مجالاتٍ عدة، لذلك هي تتيح مجالا أوسع للطالب لبناء تطبيقات في مجالات مختلفة.
ثالثا: هندســــــــة البرمجــــــــــيات (Software Engineering) تتعامل مع بناء وصيانة البرامج وأنظمتها، والبرامج هنا هي البرامج الكبيرة أو الضخمة، كبرامج إدارة الشركات والمصانع أو أنظمة التشغيل،فهندسة البرمجيات أكثر تطبيقية وتخصصاً من علوم الحاسوب فهي aهندسةo أي تتضمن جمع المعلومات وتحليلها وإيجاد الحلول وتصميمها بطرق علمية ثم البرمجة وإنتاج البرنامج ثم صيانته وتطويره أكثر وأكثر، مع الأخذ في الاعتبار في جميع المراحل السابقة بالتكلفة الإجمالية للبرنامج وما يلحقه من تطويرات وتغييرات، كما تركز في أمن البرنامج وقوة الاعتماد عليه فهي تركز على عملية بناء برامج ذات جودة عالية جدا ، من بداية الفكرة إلى المنتج النهائي.
وأخيرا نقول : طالب هندسة البرمجيات ليس افضل من طالب علم الحاسوب ، حيث لا يوجد مقارنة بينهما ، فلكل منهما مجاله الذي يبدع فيه ، ويتفوق فيه على الاخر ، فمثلا يتفوق طالب علم الحاسوب على مهندس البرمجيات في عمل مترجمات اللغات والشبكات، بينما يتفوق مهندس البرمجيات ، بفهم طلبات العميل والتعبير عنها بوضوح ودقة . وكلا الفرعين يتبعان لنفس الكلية... كلية تكنولوجيا المعلومات.
المفضلات