هندسة البرمجيات

القائمة الرئيسية

الصفحات

آخر الأخبار[LastPost]

هندسة البرمجيات. هي نهج هندسي منهجي لتطوير البرمجيات. حيث يعتبر مهندس البرمجيات هو الشخص الذي يطبق مبادئ هندسة البرمجيات لتصميم وتطوير وصيانة واختبار وتقييم برامج الكمبيوتر. يستخدم مصطلح المبرمج أحيانا كمرادف ، ولكنه قد يفتقر أيضا إلى دلالات التعليم أو المهارات الهندسية.
👇🏻قم بالنزول الى اخر المقالة لتحميل المحاضرات👇🏻
هندسة البرمجيات

هندسة البرمجيات

تستخدم التقنيات الهندسية لإثراء عملية تطوير البرمجيات وقد نسبت أصول مصطلح "هندسة البرمجيات" إلى مصادر مختلفة. ظهر مصطلح "هندسة البرمجيات" في قائمة الخدمات التي تقدمها الشركات في عدد يونيو 1965 وتم استخدامه بشكل أكثر رسمية في عدد أغسطس 1966 من اتصالات ACM "رسالة إلى عضوية ACM" من قبل رئيس ACM أنتوني أ. أوتينجر ، كما أنه مرتبط بعنوان مؤتمر الناتو في عام 1968 من قبل البروفيسور فريدريش ل. باور ، المؤتمر الأول حول هندسة البرمجيات. وصفت مارغريت هاميلتون الانضباط "هندسة البرمجيات" خلال بعثات أبولو لإعطاء ما كانوا يفعلونه شرعية. في ذلك الوقت كان ينظر إليها على أنها "أزمة برمجيات". يحتفل المؤتمر الدولي ال 40 لهندسة البرمجيات بمرور 50 عاما على "هندسة البرمجيات" من خلال الكلمات الرئيسية للجلسات العامة لفريدريك بروكس ومارغريت هاميلتون.

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

في عام 1984 ، تم تأسيس معهد هندسة البرمجيات كمركز بحث وتطوير ممول فيدراليا ومقره في حرم جامعة كارنيجي ميلون في بيتسبرغ ، بنسلفانيا ، الولايات المتحدة. أسس واتس همفري برنامج عملية برمجيات SEI ، الذي يهدف إلى فهم وإدارة عملية هندسة البرمجيات. ستصبح مستويات نضج العملية التي تم إدخالها تكامل نموذج نضج القدرات من أجل التنمية ، والذي حدد كيفية تقييم حكومة الولايات المتحدة لقدرات فريق تطوير البرمجيات.
تم جمع أفضل الممارسات الحديثة والمقبولة عموما لهندسة البرمجيات من قبل اللجنة الفرعية ISO / IEC JTC 1 / SC 7 ونشرت باسم هيئة المعرفة في هندسة البرمجيات. تعتبر هندسة البرمجيات واحدة من تخصصات الحوسبة الرئيسية.

خلافات التعاريف والمصطلحات

تشمل التعاريف البارزة لهندسة البرمجيات ما يلي:
"التطبيق المنهجي للمعرفة العلمية والتكنولوجية والأساليب والخبرات لتصميم وتنفيذ واختبار وتوثيق البرمجيات" - مكتب إحصاءات العمل - IEEE Systems and Software Engineering - المفردات
"تطبيق نهج منهجي ومنضبط وقابل للقياس الكمي لتطوير البرمجيات وتشغيلها وصيانتها" - مسرد مصطلحات هندسة البرمجيات IEEE القياسي
"تخصص هندسي يهتم بجميع جوانب إنتاج البرمجيات" - إيان سومرفيل
"إنشاء واستخدام مبادئ الهندسة السليمة من أجل الحصول اقتصاديا على برامج موثوقة وتعمل بكفاءة على آلات حقيقية" - فريتز باور
"فرع من علوم الكمبيوتر يتعامل مع تصميم وتنفيذ وصيانة برامج الكمبيوتر المعقدة" - Merriam-Webster

على ماذا تشمل هندسة البرمجيات؟

"لا تشمل "هندسة البرمجيات" فعل كتابة التعليمات البرمجية فحسب ، بل تشمل جميع الأدوات والعمليات التي تستخدمها المؤسسة لبناء هذه الشفرة وصيانتها بمرور الوقت. يمكن اعتبار هندسة البرمجيات "برمجة متكاملة بمرور الوقت". —هندسة البرمجيات في جوجل
كما تم استخدام المصطلح بشكل أقل رسمية:
كمصطلح معاصر غير رسمي لمجموعة واسعة من الأنشطة التي كانت تسمى سابقا برمجة الكمبيوتر وتحليل النظم ؛
كمصطلح واسع لجميع جوانب ممارسة برمجة الكمبيوتر ، على عكس نظرية برمجة الكمبيوتر ، التي تدرس رسميا كتخصص فرعي لعلوم الكمبيوتر ؛
كمصطلح يجسد الدعوة إلى نهج محدد لبرمجة الكمبيوتر ، وهو مصطلح يحث على معاملته كتخصص هندسي بدلا من كونه فنا أو حرفة ، ويدعو إلى تدوين الممارسات الموصى بها.

أصل كلمة "مهندس برمجيات"

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

ملاءمة المصطلح

اختلف المعلقون الأفراد اختلافا حادا حول كيفية تعريف هندسة البرمجيات أو شرعيتها كتخصص هندسي. قال ديفيد بارناس إن هندسة البرمجيات هي في الواقع شكل من أشكال الهندسة. لقد قال ستيف ماكونيل إنه ليس كذلك، ولكن ينبغي أن يكون كذلك. قال دونالد كنوث إن البرمجة فن وعلم. ادعى إدسجر و. ديكسترا أن مصطلحي هندسة البرمجيات ومهندس البرمجيات قد أسيء استخدامهما ويجب اعتبارهما ضارين ، خاصة في الولايات المتحدة.

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

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

المحاضرات اليومية

المحاضرة الاولى - ch1 المحاضرة الثانية - ch2 المحاضرة الثالثة - ch5 المحاضرة الرابعة - ch6 المحاضرة الخامسة - ch4 المحاضرة السادسة - ch3 المحاضرة السابعة المحاضرة الثامنة

تعليقات