ما هي هندسة البرمجيات؟ خصائصها وتعريفها
⚡ ملخص ذكي
هندسة البرمجيات هي عملية منهجية لتحليل المتطلبات، ثم تصميم وبناء واختبار البرمجيات التي تلبيها. يشرح هذا المورد تعريفاتها، وأزمة البرمجيات التي أدت إلى ظهورها، وشعبيتها، والتخصصات ذات الصلة، والتحديات التي تواجهها، وخصائص البرمجيات الجيدة.

ما هي هندسة البرمجيات؟
تُعرَّف هندسة البرمجيات بأنها عملية تحليل متطلبات المستخدم ثم تصميم وبناء واختبار تطبيق برمجي يلبي تلك المتطلبات.
دعونا نلقي نظرة على التعريفات المختلفة لهندسة البرمجيات:
- IEEE، في معيارها 610.12-1990، تعرف هندسة البرمجيات بأنها تطبيق نهج منهجي ومنضبط وقابل للحوسبة لتطوير وتشغيل وصيانة البرمجيات.
- عرّفها فريتز باور بأنها "وضع واستخدام مبادئ هندسية قياسية. فهي تساعدك على الحصول، بشكل اقتصادي، على برامج موثوقة وتعمل بكفاءة على الأجهزة الحقيقية".
- يُعرّف بوهم هندسة البرمجيات بأنها "التطبيق العملي للمعرفة العلمية في التصميم الإبداعي وبناء برامج الحاسوب. كما تشمل أيضًا الوثائق المصاحبة اللازمة للتطوير".ping، وتشغيلها وصيانتها.
لماذا هندسة البرمجيات؟ أزمة البرمجيات وحلولها
ما هي أزمة البرمجيات؟
- كان ذلك في أواخر الستينيات عندما فشلت العديد من المشاريع البرمجية.
- تجاوزت تكلفة العديد من البرامج الميزانية المخصصة لها. وكانت النتيجة برامج غير موثوقة ومكلفة الصيانة.
- كانت صيانة البرامج الأكبر حجمًا صعبة ومكلفة للغاية.
- لم تتمكن العديد من البرامج من تلبية المتطلبات المتزايدة للعملاء.
- ازدادت تعقيدات مشاريع البرمجيات كلما زادت قدرة أجهزتها.
- زاد الطلب على البرامج الجديدة بشكل أسرع مقارنة بالقدرة على إنشاء برامج جديدة.
أدت جميع المشكلات المذكورة أعلاه إلى "أزمة البرمجيات".
نقدم الحلول الذكية
كان الحل للمشكلة هو تحويل جهود البرمجة غير المنظمة إلى تخصص في هندسة البرمجيات. وقد ساعدت هذه النماذج الهندسية الشركات على تبسيط العمليات وتقديم برامج تلبي متطلبات العملاء.
- شهدت أواخر سبعينيات القرن العشرين استخدامًا واسع النطاق لمبادئ هندسة البرمجيات.
- شهدت فترة الثمانينيات أتمتة عملية هندسة البرمجيات ونمو هندسة البرمجيات بمساعدة الحاسوب (CASE).
- شهدت فترة التسعينيات زيادة في التركيز على جوانب "الإدارة" للمشاريع ومعايير الجودة والعمليات، تمامًا مثل معيار ISO 9001.
لماذا تحظى هندسة البرمجيات بشعبية كبيرة؟
فيما يلي أسباب مهمة وراء شعبية هندسة البرمجيات:
- برامج كبيرة في الواقع، بناء جدار أسهل بكثير من بناء منزل أو مبنى. وبالمثل، كلما ازداد حجم البرنامج، ساعدتك هندسة البرمجيات في بنائه.
- التوسعة – إذا كانت عملية تطوير البرمجيات تستند إلى مفاهيم علمية وهندسية، فسيكون من الأسهل إعادة إنشاء برامج جديدة لتوسيع نطاق برنامج موجود.
- القدرة على التكيف – عندما تستند عملية تطوير البرمجيات إلى المبادئ العلمية والهندسية، يصبح من السهل إعادة إنشاء برامج جديدة بمساعدة هندسة البرمجيات.
- التكلفة لقد أظهرت صناعة الأجهزة مهاراتها، وقد أدى التصنيع الضخم إلى خفض تكلفة أجهزة الكمبيوتر والأجهزة الإلكترونية.
- الطبيعة الديناميكية – الطبيعة المتنامية والمتطورة باستمرار للبرمجيات. فهي تعتمد على البيئة التي يعمل فيها المستخدم.
- إدارة الجودة – يقدم طريقة أفضل لتطوير البرمجيات لتوفير منتجات برمجية عالية الجودة.
علاقة هندسة البرمجيات بالتخصصات الأخرى
إليكم كيف ترتبط هندسة البرمجيات بالتخصصات الأخرى:
- علوم الكمبيوتر: يوفر الأساس العلمي للبرمجيات، تمامًا كما أن الفيزياء هي الأساس للهندسة الكهربائية.
- علم الإدارة: هندسة البرمجيات عمل كثيف العمالة يتطلب تحكماً تقنياً وإدارياً. ولذلك، فهي تُستخدم على نطاق واسع في علوم الإدارة.
- اقتصاديات: في هذا القطاع، تساعدك هندسة البرمجيات في تقدير الموارد والتحكم في التكاليف. يجب تطوير نظام حاسوبي، وينبغي صيانة البيانات بانتظام في حدود ميزانية محددة.
- هندسة النظام: معظم البرامج هي جزء من نظام أكبر بكثير، مثل البرامج المستخدمة في أنظمة المراقبة الصناعية أو برامج الطيران في الطائرات. لذا، ينبغي تطبيق أساليب هندسة البرمجيات على دراسة هذه الأنواع من الأنظمة.
تحديات هندسة البرمجيات
فيما يلي بعض التحديات الحاسمة التي يواجهها مهندسو البرمجيات:
- في المجالات الحساسة للسلامة مثل الفضاء والطيران ومحطات الطاقة النووية، يمكن أن تكون تكلفة فشل البرمجيات هائلة لأن الأرواح معرضة للخطر.
- زيادة متطلبات السوق لوقت التسليم السريع.
- التعامل مع التعقيد المتزايد للبرمجيات اللازمة للتطبيقات الجديدة.
- تنوع أنظمة البرمجيات التي ينبغي أن تتواصل مع بعضها البعض.
سمات لمنتجات البرمجيات
تشمل خصائص أي منتج برمجي الميزات التي يعرضها المنتج عند تثبيته واستخدامه.
إنها ليست الخدمات التي يقدمها المنتج، بل تتعلق بسلوك المنتج الديناميكي وكيفية استخدامه.
ومن أمثلة هذه الصفات:
Efficiency, reliability, robustness, maintainability, etc.
ومع ذلك، فإن الأهمية النسبية لهذه الخصائص تختلف من نظام برمجي إلى آخر.
| خصائص المنتج | الوصف |
|---|---|
| قابلية الصيانة | يجب أن يتطور البرنامج لتلبية المتطلبات المتغيرة للعملاء. |
| الجدارة | تشمل الاعتمادية خصائص مختلفة. يجب ألا تتسبب البرامج التي يمكن الاعتماد عليها مطلقًا في حدوث أي ضرر مادي أو اقتصادي في وقت فشل النظام. |
| الكفاءة | يجب ألا يستهلك تطبيق البرنامج موارد النظام بشكل مفرط مثل الذاكرة ودورات المعالج. |
| قابليتها للاستخدام | يجب أن يحتوي تطبيق البرنامج على واجهة مستخدم مناسبة ووثائق توثيقية. |
يُعدّ تحسين السمات المذكورة أعلاه أمراً بالغ الصعوبة. فعلى سبيل المثال، قد يؤدي تقديم واجهة مستخدم أفضل إلى تقليل كفاءة النظام.
خصائص البرمجيات الجيدة
ينبغي تقييم أي برنامج بناءً على ما يقدمه والأساليب التي تساعدك على استخدامه.
يجب أن يلبي كل برنامج السمات التالية:
- التميز
- انتقالي
- الدورية
فيما يلي بعض الخصائص المهمة للبرامج الجيدة التي يطورها متخصصو البرمجيات.
التميز
تتيح لنا هذه الخاصية معرفة مدى جودة عمل البرنامج في العمليات، والتي يمكن قياسها بناءً على:
- الميزانية
- الكفاءة
- قابليتها للاستخدام
- الجدارة
- صحة
- الية عمل سفينة نوح
- سلامة
- الأمن والحماية
انتقالي
يعد هذا جانبًا أساسيًا عند نقل البرنامج من نظام أساسي إلى آخر:
- التوافقية
- إعادة استخدام
- قابلية النقل
- القدرة على التكيف
الدورية
يتناول هذا الجانب مدى قدرة البرمجيات على التكيف مع بيئة سريعة التغير:
- المرونة
- قابلية الصيانة
- نمطية
- التوسعة

