0% found this document useful (0 votes)
104 views

Software Engineering - 1 - Lect-1-Introduction

The document provides an introduction to software engineering. It discusses what software and software engineering are, as well as the costs associated with software engineering. It then covers key characteristics of good software like maintainability, reliability, efficiency, and usability. The document also discusses software products, the software development life cycle, common software development models like waterfall, incremental, and agile models, and compares plan-driven and agile development approaches.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
104 views

Software Engineering - 1 - Lect-1-Introduction

The document provides an introduction to software engineering. It discusses what software and software engineering are, as well as the costs associated with software engineering. It then covers key characteristics of good software like maintainability, reliability, efficiency, and usability. The document also discusses software products, the software development life cycle, common software development models like waterfall, incremental, and agile models, and compares plan-driven and agile development approaches.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

‫الجامعة العربية الخاصة للعلوم والتكنولوجيا‬

‫كلية الهندسة المعلوماتية‬


‫قسم تقانة المعلومات‬
‫السنة الثالثة‬

‫هندسة البرمجيات (‪)1‬‬


‫المحاضرة األولى‬

‫م‪ .‬ابراهيم أيوب‬


‫م‪ .‬اسماء الحداد‬
‫‪06/11/2023‬‬

‫‪1‬‬
‫مقدمة في هندسة البرمجيات‬
‫■ ماهي ‪Software‬؟‬
‫هي برنامج مكون من مجموعة من الخطوات مع الوثائق المرتبطة بها‪.‬‬
‫■ ماهي هندسة البرمجيات (‪)Software Engineering‬؟‬
‫هي تخصص هندسي يهتم بجميع جوانب إنتاج البرمجيات من المراحل األولى وحتى‬
‫صيانة النظام بعد استخدامه‪.‬‬

‫‪2‬‬
‫‪Software Engineering‬‬
‫■ هندسة البرمجيات‪:‬‬
‫➢ هي طرق وأساليب ونظريات وأدوات لتطوير برامج احترافية‪.‬‬
‫➢ من السهل إلى حد ما كتابة برنامج دون استخدام أساليب وتقنيات هندسة البرمجيات‬
‫‪ ،‬وغالبا ً تكون هذه البرامج أغلى ثمنا ً وأقل موثوقية‪.‬‬
‫■ ماهي تكاليف هندسة البرمجيات؟‬
‫تقريبا ً ‪ %60‬من تكاليف البرنامج عبارة عن تكاليف تطوير و ‪ %40‬من التكاليف هي‬
‫تكاليف اختبار‪.‬‬

‫‪3‬‬
‫الخصائص األساسية للبرمجيات الجيدة‬
‫‪ (1‬قابلية الصيانة‪:‬‬
‫يجب كتابة البرامج بطريقة بحيث يمكن أن تتطور لتلبية االحتياجات المتغيرة للعمالء‪.‬‬
‫‪ (2‬الموثوقية‪:‬‬
‫يجب أال تتسبب البرامج التي يمكن االعتماد عليها في حدوث أضرار مادية واقتصادية‬
‫في حال فشل النظام‬
‫ويجب أال يتمكن المستخدمون الضارون من الوصول للنظام وإتالفه‪.‬‬
‫‪ (3‬الكفاءة‪:‬‬
‫يجب أال يهدر البرنامج استخدام موارد النظام مثل الذاكرة والمعالج‪ ،‬وتتضمن الكفاءة‬
‫أيضا ً سرعة االستجابة و وقت المعالجة‪.‬‬
‫‪ (4‬القبول‪:‬‬
‫يجب أن يكون البرنامج مقبول من المستخدمين الذي تم تصميمه من أجلهم ‪ ،‬وهذا يعني‬
‫أنه يجب أن يكون مفهوم وقابل لالستخدام‪.‬‬

‫‪4‬‬
‫‪Software Products‬‬
‫❑ لدينا نوعين‪:‬‬
‫‪ (1‬منتجات عامة‪:‬‬
‫هي برامج يتم إنتاجها ألغراض عامة تطور وتباع في السوق‪ ،‬ويستطيع أي زبون‬
‫(شركة) شرائه والعمل عليه‪.‬‬
‫مثال‪Microsoft Office :‬‬
‫‪ (2‬منتجات خاصة‪:‬‬
‫برامج يتم إنتاجها بواسطة مبرمج لعميل معين لتلبية احتياجاته الخاصة‪.‬‬
‫مثال‪ :‬نظام إدارة الكلية‪.‬‬

‫‪5‬‬
‫‪Software Products & Software Process‬‬

‫✓ ‪:Software Product‬‬
‫هو البرنامج النهائي القابل لالستخدام‪.‬‬
‫✓ ‪:Software Process‬‬
‫هي خطوات يعمل بها المهندس إلنتاج برنامج يلبي المطلوب بكفاءة عالية‪.‬‬

‫‪6‬‬
‫‪Software Development Life Cycle‬‬
‫دورة حياة تطوير البرمجيات‪:‬‬
‫❑ هي عملية تستخدم في صناعة البرمجيات لتصميم وتطوير واختبار برامج عالية‬
‫الجودة‪.‬‬
‫❑ تهدف إلى إنتاج برنامج عالي الجودة تلبي توقعات العمالء أو يفوقها ‪ ،‬وتصل إلى‬
‫اكتماله ضمن أوقات وتقديرات التكلفة‪.‬‬
‫❑ تحدد المهام التي يجب تنفيذها في كل خطوة من عملية تطوير البرمجيات‪.‬‬
‫ضا باسم "عملية تطوير البرامج"‪.‬‬
‫❑ وتسمى أي ً‬

‫‪7‬‬
‫‪Software Development Life Cycle‬‬
‫مراحل دورة حياة تطوير البرمجيات‪:‬‬
‫‪ (1‬توصيف البرنامج(تحليل المتطلبات)‪:‬‬
‫وهي أهم مرحلة ‪،‬حيث يحدد العميل والمهندس البرنامج الذي سيتم إنتاجه والقيود‬
‫المفروضة على تشغيله‪.‬‬
‫‪ (2‬تطوير البرنامج‪:‬‬
‫حيث يتم في هذه المرحلة تصميم البرنامج وبرمجته‪.‬‬
‫‪ (3‬التحقق من صحة البرنامج‪:‬‬
‫في هذه المرحلة يتم فحص البرنامج والتأكد من أنه يحقق ما طلبه العميل‪.‬‬
‫‪ (4‬تطور البرنامج‪:‬‬
‫حيث يتم تعديل البرنامج ليعكس متطلبات العميل والسوق المتغيرة‪.‬‬

‫‪8‬‬
‫‪SDLC Models‬‬
‫نماذج تطوير البرمجيات‪:‬‬
‫❑ ‪:Plan Driven processes‬‬
‫نماذج التطوير المقادة بخطة ‪ ،‬حيث تتم عملية تطوير البرمجية وفق هذا النموذج ضمن‬
‫خطة ثابتة ومتسلسلة زمنيا ً ‪ ،‬أي يتم التخطيط لكافة مراحل المشروع قبل البدء بالمشروع‬
‫"التخطيط لكل شيء قبل البدء بأي شيء"‪.‬‬
‫نماذج التطوير التي تنطوي تحت هذا الصنف نذكر منها‪:‬‬ ‫▪‬
‫‪Waterfall Model‬‬ ‫✓ النموذج الشاللي‬
‫✓ النموذج التزايدي ‪Incremental Model‬‬
‫‪Spiral Model‬‬ ‫✓ النموذج الحلزوني‬
‫تختلف هذه النماذج فيما بينها بالمراحل التي يتم إتباعها لتطوير البرمجية‪ ،‬حيث يتم‬
‫اعتماد النموذج األنسب للتطوير بحسب البرمجية المطلوبة وخصائصها‪.‬‬

‫‪9‬‬
‫‪SDLC Models‬‬
‫نماذج تطوير البرمجيات‪:‬‬
‫❑ ‪:Agile processes‬‬
‫في بعض األحيان قد ال تكون مناسبة عملية التطوير وفق النماذج الثابتة الخطة كتلك‬ ‫▪‬
‫البرمجيات التي لها متطلبات متغيرة أثناء عملية التطوير‪ ،‬لذلك ظهرت نماذج‬
‫‪ Agile‬والتي تسمح بتعديل المتطلبات حتى بعد مراحل متأخرة من عملية التطوير‪.‬‬
‫تتم عملية تطوير البرمجية وفق هذا النموذج من خالل تحقيق المتطلبات والوظائف‬ ‫▪‬
‫المطلوبة من البرمجية بشكل تزايدي وتكراري على عدة مرات‪.‬‬
‫في كل مرة من المرات يتم تحديد جزء من وظائف البرمجية من قبل الزبون ليقوم‬ ‫▪‬
‫فريق التطوير بتحقيقها وإطالع الزبون عليها ومن ثم االنتقال إلى جزء آخر‪ ،‬وهكذا‬
‫تتكرر العملية حتى الوصول إلى المنتج النهائي‪.‬‬

‫‪10‬‬
‫‪Plan driven .VS. Agile Models‬‬
‫‪Plan driven‬‬ ‫‪Agile‬‬

‫تكون نتائج المراحل في نماذج ‪" Plan driven‬‬ ‫تكون نتائج مراحلها على شكل نسخ تتطور‬
‫" ‪ Development‬ثابتة و مخطط لها مسبقا‪.‬‬ ‫تباعا نتيجة مالحظات الزبون و تقييماته للنسخ‬
‫السابقة التي استلمها أو نتيجة قرارات الفريق‪.‬‬
‫قد يتأخر التسليم في نماذج " ‪Plan driven‬‬ ‫تتميز نماذج "‪ "Agile‬بالسرعة و االلتزام الشديد‬
‫" ‪ Development‬نتيجة الوقت الكبير الذي‬ ‫بموعد التسليم‪.‬‬
‫تستهلكه‬
‫بالنسبة ل " ‪ "Plan driven Development‬فإن‬ ‫نماذج "‪ "Agile‬التخطيط و التصميم يكون أثناء‬
‫التخطيط المسبق و التصميم نقطة أساسية‬ ‫العمل و ال حاجة لتحديد التصميمات مسبقا‪.‬‬
‫قبل البدء بالعمل‪.‬‬
‫تحتاج " ‪ ”Plan driven Development‬لفرق كبيرة‬ ‫" ‪ " Agile‬تتطلب فرق صغيرة يتواصل أعضاؤها‬
‫و تعد الشركات الكبيرة أكثر من يستخدمها‬ ‫فيما بينهم مباشر‪.‬‬
‫لكلفتها المرتفعة‪.‬‬

‫‪10/10/2017‬‬ ‫‪11‬‬
‫‪Software Engineering Ethics‬‬
‫أخالقيات هندسة البرمجيات‪:‬‬
‫تتضمن هندسة البرمجيات مسؤوليات أكبر من مجرد تطبيق المهارات التقنية‪.‬‬
‫❑ الجانب األخالقي في هندسة البرمجيات‪ ،‬منه‪:‬‬
‫‪ (1‬السرية والحفاظ على خصوصية الزبون‪.‬‬
‫‪ (2‬حقوق الملكية الفكرية‪.‬‬
‫‪ (3‬سوء االستخدام‪ :‬مثل نشر الفيروسات على جهاز العميل‪.‬‬

‫‪12‬‬

You might also like