هذه مجموعة من المحاضرات الرائعة بالعربية في علم هندسة البرمجيات software engineering قام احد طلاب جامعة البعث جزاه الله كل خير بتدوينها و تنسيقها بحيث تشبة كتيب و عدد صفحاتها 50 صفحة الا انها عظيمة الفائدة ومن افضل ما هو موجود من محتوي عربي في هذا العلم والان مع المحتويات
المحتويات:
المحاضرة الأولى
ما هي هندسة البرمجيات
تعريف هندسة البرمجيات
تحليل التعريف
1-حل المشاكل التي يسببها الزبون
2-التطوير المنظم والمنهجي
3-أنظمة برمجيات ضخمة وعالية الجودة
4-الوقت والكلفة والقيود الأخرى
أربع مكونات (مصطلحات) في هندسة البرمجيات تبدأ بحرف( P ) هي
الأخطار والصعوبات التي يجب أن تؤخذ بعين الاعتبار قبل البدء ببناء البرمجية
Risks and difficulties in software engineering
مراحل بناء البرمجية
Reg. Eng
Specification
Predesign
Detail design
Implementation
•للبرنامج جودة داخلية وأخرى خارجية
المحاضرة الثانية
طبيعة البرمجية:The Software Nature
1-أي برمجية هي عبارة عن شيء سهل الإنتاج في حال كان قابل للتطبيق
•تقسم كلفة البرمجية إلى
a-كلفة تكرارية
b-كلفة غير تكرارية
2-عملية التطوير عملية صعبة الأتمتة
3-البرمجية شيء تخيلي غير ملموس
4-أي مجموعة غير مدربة من الأشخاص تستطيع إنجاز عمل معين لكنه قد لا يخضع لمعايير الجودة المطلوبة.
5-البرمجية سهلة التعديل
•حتى يسهل علينا التعديل علينا أثناء تطوير البرمجية يجب التقليل من
a-Coupling
b-Cohesion.
c-Dependency : (الترابط- الاعتمادية):
هرم البرمجيات وأسبابه
أسباب هرم البرمجية
1-Maintenance (قلة الصيانة للبرمجية):
2-Architecture erosion : (البنية الخاطئة):
3-Inflexibility from beginning : (عدم المرونة):
4-Documentation not enough or not exist: (عدم وجود التوثيق الكافي):
•التوثيق له ثلاثة أنواع
a-توثيق تقني
b-توثيق للمستخدم
c-توثيق الأعمال
5-Code duplication : (تكرار الكود):
6-Miss of modularity : (المعيارية):
7-Increasing of complexity: (زيادة التعقيد):
أنواع البرمجيات:Types Of Software:
1-Custom
2-Generic
3-Embedded
مقارنة (الاختلاف) بين الأنواع المختلفة للبرمجيات
هناك خواص “صفات” للبرمجية منها
1-الزمن الحقيقي للبرمجية : Real time software
2-برمجية معالجة المعطيات : Data processing software
3-بعض البرمجيات تمتلك الخاصتين السابقتين معاً
يوجد عدة أنواع من النظم البرمجية
•نظم المعلومات
•نظم إنتاجية
•نظم التحكم
الأشخاص الذين يحق لهم تطوير وإدارة هندسة البرمجيات:
The human in software engineering(Stack holders):
مشروع هندسة البرمجيات: Software engineering project
الأسباب التي تؤدي إلى تطوير البرمجية
إدارة البرمجية
أولاً- مقدمة عن إدارة هندسة البرمجيات
التحكم بمشروع تطوير البرمجية:
1-الوقت :
2-المعلومات:
3-التنظيم
4-الجودة
5-المال
طرق تطوير و إدارة البرمجيةSoftware life cycle::
1-System study:
2-Analyse:
3-Design and realization:
4-Installation
ثانيا دورة حياة البرمجية
1-طريقة (نموذج) الشلال:Water Fall Method:
مساوئ العمل بطريقة الشلال
المحاضرة الثالثة
تتمة في طرق تصميم البرمجيات
2-Prototype(النماذج):
مساوئ طريقة النماذج
محاسن طريقة النماذج
3-RAD:Rapid Application Development:
ميزات طريقة RAD
المحاضرة الرابعة
4-Incremental Development:
محاسن Incremental Development:
5-The Spiral Model: طريقة الحلزون (هو المستخدم):
الأخطار التي قد نواجهها:
6-Parallel Development Life Cycle:
7-Process modelling:
ثالثا تهيئة الإدارة Configuration management:
المحاضرة الخامسة
رابعاً : إدارة الأشخاص وتنظيم الفرق :
•قضايا إدارة الأشخاص المشاكل التي تواجهها :
أنواع الميكانيكات التنظيم (التوافق) بين الأشخاص :
•الإشراف المباشرDirect Supervision – بنية بسيطة
•تنظيم معالجة العمل – بيروقراطية العمل
•التقسيمية :
•بيروقراطية احترافية :
•التلاؤمية:
•إتجاهات الإدارة :
هناك أربع أنماط للإدارة
1-النمط المنفصل Separation low low:
الحسنات:
المساوئ:
2-نمط العلاقات Relation r+ r-:
السلبيات:
3-النمط الإلزامي : T+ R-
السلبيات:
4-النمط المتكامل : T+ r+ integrating
المحاسن :
المساوئ :
تنظيم الفرق وإدارتها:
1-التنظيم الهرمي: هيكلي :
2-المصفوفي:
3-مدير مشروع برمجي: Chief Programmer Team
المساوئ :
4-SWA :
مجموعة مبادئ تتعلق بتنظيم الفرق :
ما هي الجودة؟ Quality Assurance :
وهناك طرق للتحكم بالجودة منها :
الفحص والتنقيح :
التحقيق :
الاختبار :
للاختبار أنواع :
1- اختبار الوحدة فحص وحدوي:
2- اختبار التكامل
3- اختبار النظام
4- اختبار القبول
للجودة مقياسين
أ-الزمن القصير على المدى القريب :
ب- من حيث الزمن الطويل:
عند الحديث عن الجودة يجب اعتبار أربعة أشياء:
1- USER
2- Customer
3- Developer
4- Deve- manager
معايير الجودة
Usability (سهولة الاستخدام):
Efficiency الكفاءة والفعالية)
Reliability (موثوق)
Maintainability (الإصلاح)
Reusability (إمكانية إعادة الاستخدام)
Portability (المحمولية)
Flexibility (المرونة)
Understandability (القدرة على الفهم)
Interoperability
التمييز بين جوانب (مظاهر) محددة لتصميم البرمجية
الجودة الداخلية Internal Quality
قياس الجودة الداخلية :
المحاضرة السادسة
هندسة المتطلبات
يجب خلال مرحلة توصيف المعطيات معرفة :
المراحل الأساسية في هندسة البرمجيات:
أولاً- جمع المعطيات:
ثانياً- توصيف المعطيات:
ثالثاً- التحقق والتصديق:
هيكلية البرمجية: Software Architecture:
مخططات الهيكليات :
KWIC: Key Word in Context
برنامج رئيسي وبرامج جزئية مع معطيات مشتركة
main program and subroutine with shared data
ADT ( Abstruct Data Type) :
الاستدعاء الضمني: implicit invocation
الأنابيب والفلاتر :
المحاضرة السابعة: Cost estimation
لدينا طريقتين لتحديد الكلفة
1-معادلة تستند إلى التجربة والخبرة
2-تحليل المعطيات الحقيقية للمشروع
طريقة halstead
كيف يتم تقدير الكلفة بشكل خاطئ:
Early Algorithm Model
ممكن تقدير التكلفة بطريقتين:
1-Bottom up Process:
2-Wolverton Model:
Constructive cost cocomo
Putnam
التحميل من هنــــاالمحتويات:
المحاضرة الأولى
ما هي هندسة البرمجيات
تعريف هندسة البرمجيات
تحليل التعريف
1-حل المشاكل التي يسببها الزبون
2-التطوير المنظم والمنهجي
3-أنظمة برمجيات ضخمة وعالية الجودة
4-الوقت والكلفة والقيود الأخرى
أربع مكونات (مصطلحات) في هندسة البرمجيات تبدأ بحرف( P ) هي
الأخطار والصعوبات التي يجب أن تؤخذ بعين الاعتبار قبل البدء ببناء البرمجية
Risks and difficulties in software engineering
مراحل بناء البرمجية
Reg. Eng
Specification
Predesign
Detail design
Implementation
•للبرنامج جودة داخلية وأخرى خارجية
المحاضرة الثانية
طبيعة البرمجية:The Software Nature
1-أي برمجية هي عبارة عن شيء سهل الإنتاج في حال كان قابل للتطبيق
•تقسم كلفة البرمجية إلى
a-كلفة تكرارية
b-كلفة غير تكرارية
2-عملية التطوير عملية صعبة الأتمتة
3-البرمجية شيء تخيلي غير ملموس
4-أي مجموعة غير مدربة من الأشخاص تستطيع إنجاز عمل معين لكنه قد لا يخضع لمعايير الجودة المطلوبة.
5-البرمجية سهلة التعديل
•حتى يسهل علينا التعديل علينا أثناء تطوير البرمجية يجب التقليل من
a-Coupling
b-Cohesion.
c-Dependency : (الترابط- الاعتمادية):
هرم البرمجيات وأسبابه
أسباب هرم البرمجية
1-Maintenance (قلة الصيانة للبرمجية):
2-Architecture erosion : (البنية الخاطئة):
3-Inflexibility from beginning : (عدم المرونة):
4-Documentation not enough or not exist: (عدم وجود التوثيق الكافي):
•التوثيق له ثلاثة أنواع
a-توثيق تقني
b-توثيق للمستخدم
c-توثيق الأعمال
5-Code duplication : (تكرار الكود):
6-Miss of modularity : (المعيارية):
7-Increasing of complexity: (زيادة التعقيد):
أنواع البرمجيات:Types Of Software:
1-Custom
2-Generic
3-Embedded
مقارنة (الاختلاف) بين الأنواع المختلفة للبرمجيات
هناك خواص “صفات” للبرمجية منها
1-الزمن الحقيقي للبرمجية : Real time software
2-برمجية معالجة المعطيات : Data processing software
3-بعض البرمجيات تمتلك الخاصتين السابقتين معاً
يوجد عدة أنواع من النظم البرمجية
•نظم المعلومات
•نظم إنتاجية
•نظم التحكم
الأشخاص الذين يحق لهم تطوير وإدارة هندسة البرمجيات:
The human in software engineering(Stack holders):
مشروع هندسة البرمجيات: Software engineering project
الأسباب التي تؤدي إلى تطوير البرمجية
إدارة البرمجية
أولاً- مقدمة عن إدارة هندسة البرمجيات
التحكم بمشروع تطوير البرمجية:
1-الوقت :
2-المعلومات:
3-التنظيم
4-الجودة
5-المال
طرق تطوير و إدارة البرمجيةSoftware life cycle::
1-System study:
2-Analyse:
3-Design and realization:
4-Installation
ثانيا دورة حياة البرمجية
1-طريقة (نموذج) الشلال:Water Fall Method:
مساوئ العمل بطريقة الشلال
المحاضرة الثالثة
تتمة في طرق تصميم البرمجيات
2-Prototype(النماذج):
مساوئ طريقة النماذج
محاسن طريقة النماذج
3-RAD:Rapid Application Development:
ميزات طريقة RAD
المحاضرة الرابعة
4-Incremental Development:
محاسن Incremental Development:
5-The Spiral Model: طريقة الحلزون (هو المستخدم):
الأخطار التي قد نواجهها:
6-Parallel Development Life Cycle:
7-Process modelling:
ثالثا تهيئة الإدارة Configuration management:
المحاضرة الخامسة
رابعاً : إدارة الأشخاص وتنظيم الفرق :
•قضايا إدارة الأشخاص المشاكل التي تواجهها :
أنواع الميكانيكات التنظيم (التوافق) بين الأشخاص :
•الإشراف المباشرDirect Supervision – بنية بسيطة
•تنظيم معالجة العمل – بيروقراطية العمل
•التقسيمية :
•بيروقراطية احترافية :
•التلاؤمية:
•إتجاهات الإدارة :
هناك أربع أنماط للإدارة
1-النمط المنفصل Separation low low:
الحسنات:
المساوئ:
2-نمط العلاقات Relation r+ r-:
السلبيات:
3-النمط الإلزامي : T+ R-
السلبيات:
4-النمط المتكامل : T+ r+ integrating
المحاسن :
المساوئ :
تنظيم الفرق وإدارتها:
1-التنظيم الهرمي: هيكلي :
2-المصفوفي:
3-مدير مشروع برمجي: Chief Programmer Team
المساوئ :
4-SWA :
مجموعة مبادئ تتعلق بتنظيم الفرق :
ما هي الجودة؟ Quality Assurance :
وهناك طرق للتحكم بالجودة منها :
الفحص والتنقيح :
التحقيق :
الاختبار :
للاختبار أنواع :
1- اختبار الوحدة فحص وحدوي:
2- اختبار التكامل
3- اختبار النظام
4- اختبار القبول
للجودة مقياسين
أ-الزمن القصير على المدى القريب :
ب- من حيث الزمن الطويل:
عند الحديث عن الجودة يجب اعتبار أربعة أشياء:
1- USER
2- Customer
3- Developer
4- Deve- manager
معايير الجودة
Usability (سهولة الاستخدام):
Efficiency الكفاءة والفعالية)
Reliability (موثوق)
Maintainability (الإصلاح)
Reusability (إمكانية إعادة الاستخدام)
Portability (المحمولية)
Flexibility (المرونة)
Understandability (القدرة على الفهم)
Interoperability
التمييز بين جوانب (مظاهر) محددة لتصميم البرمجية
الجودة الداخلية Internal Quality
قياس الجودة الداخلية :
المحاضرة السادسة
هندسة المتطلبات
يجب خلال مرحلة توصيف المعطيات معرفة :
المراحل الأساسية في هندسة البرمجيات:
أولاً- جمع المعطيات:
ثانياً- توصيف المعطيات:
ثالثاً- التحقق والتصديق:
هيكلية البرمجية: Software Architecture:
مخططات الهيكليات :
KWIC: Key Word in Context
برنامج رئيسي وبرامج جزئية مع معطيات مشتركة
main program and subroutine with shared data
ADT ( Abstruct Data Type) :
الاستدعاء الضمني: implicit invocation
الأنابيب والفلاتر :
المحاضرة السابعة: Cost estimation
لدينا طريقتين لتحديد الكلفة
1-معادلة تستند إلى التجربة والخبرة
2-تحليل المعطيات الحقيقية للمشروع
طريقة halstead
كيف يتم تقدير الكلفة بشكل خاطئ:
Early Algorithm Model
ممكن تقدير التكلفة بطريقتين:
1-Bottom up Process:
2-Wolverton Model:
Constructive cost cocomo
Putnam