الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

رائج
بدأه time1 في 1 سبتمبر 2008 · 2 رد · 26,513 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اخواني الاعزاء , اقدم لكم اليوم هذا السيمنار بعنوان هندسة البرمجيات , وهو احد المواضيع التي تطرقنا لها في احد المقررات الجامعية , ولا اخفي اعجابي الشديد بهذا السيمنار لذلك احببت ان انقله لكم للفائدة.

الأهداف Objectives

- تقديم هندسة البرمجيات و توضيح أهميتها

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

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

- توضيح لماذا تهتم بهندسة البرمجيات

الهندسة Engineering

هو تطبيق العلم و الرياضيات للتصميم و بناء المصنوعات المفيدة للإنسانية

الهندسة المهيكلة Structural Engineering

هي العلم و الفن و التصميم و الإنشاء الاقتصادي و الرشيق للبيانات و الجسور و هياكل البيانات وتكون خاضعة للسلامة

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

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

- اقتصاديا كل الأمم معتمدة علي البرامج

- الاعتماد الأكثر للبرمجيات و النظم علي برامج التحكم

- هندسة البرمجيات معنية بالنظريات و الطرق و الأدوات لتطوير برمجيات محترفة

- نفقات هندسة البرمجيات تمثل جزء هام من الإنتاج القومي الإجمالي (GNP)

تكلفة البرمجيات Software costs

- تسيطر تكلفة البرامج علي تكاليف أي نظام

- تكلفة البرامج علي الحاسبات الشخصية PC أكبر من تكلفة المكونات الصلبة

- تكلفة صيانة البرامج أكبر من تكلفة التطوير

- تكلفة الصيانة للأنظمة طويلة الأمد أكبر عدة مرات من تكلفة التطوير

- هندسة البرمجيات معنية بربحية تطوير البرمجيات

الأسئلة الشائعة عن هندسة البرمجيات FAQs about software engineering

- ما هي البرمجيات ؟

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

- ما الفرق بين هندسة البرمجيات و علوم الحاسب ؟

- ما الفرق بين هندسة البرمجيات و هندسة النظم ؟

- ما هي إجرائية تطوير البرمجيات ؟

- ما هو نموذج إجرائية تطوير البرمجيات ؟

- ما هي التكاليف في عملية إنتاج البرمجيات ؟

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

- ما هي الأدوات CASE ؟

- ما هي خصائص البرمجيات الجيدة ؟

- ما هي أهم التحديات التي تواجه هندسة البرمجيات اليوم ؟

ما هي البرمجيات ؟ What is software

هي عبارة عن مجموعة من البرامج إضافة إلي معطيات التوثيق و معطيات التشكيل

- يمكن أن يكون المنتج البرمجي عام أي للسوق بشكل عام أو أن يكون خاص بمعني أنه قد تم تطويره بناءً علي متطلبات زبون معين

- تقسم المنتجات البرمجية ألي نوعين أساسين :

1- المنتجات العامة Generic : تطور لتباع لعدة زبائن مختلفين

2- المنتجات الخاصة Bespoke (custom): تطور لزبون واحد حسب مواصفاته

ما هي هندسة البرمجيات ؟ What is software engineering

هندسة البرمجيات هو ذلك الفرع الهندسي الذي يعني بدراسة جميع جوانب إنتاج البرمجيات

ونقف عند نقطتين هامتين :

- فرع هندسي : مهندسو البرمجيات يتبعوا جانب منظم لعملهم و استخدام الأدوات و التقنيات الملائمة بالاعتماد علي المشكلة المراد حلها ، ويجب أن تكون قيود التطوير و المصادر متوفرة .

- جوانب أنتاج البرمجيات : مهندس البرمجيات يدرس نشاطات غير تقنية مثل إدارة المشاريع البرمجية وتطوير منهجيات جديدة

ما الفرق بين هندسة البرمجيات وعلوم الحاسب ؟ What is the difference between software engineering and computer science

- تهتم علوم الحاسب بدراسة و استنباط النظريات و المنهجيات التي تشكل أساس الأنظمة البرمجية و الحاسوبية

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

- العديد من نظريات علوم الحاسب تقف عاجزة عن حل المشكلات البرمجية الواقعية المعقدة

ما الفرق بين هندسة البرمجيات وهندسة النظم؟ What is the difference between software engineering and system engineering

- هندسة النظم مهتمة بكل سمات تطوير الأنظمة المعتمدة علي الحاسوب التي تتضمن المكونات الصلبة و البرامج و هندسة الإجراءات

- مهندسو النظم يقومون بفهم النظام و تعريف الهيكلة العامة و مكاملة مكوناته المختلفة وصولا للنظام النهائي

ما هي إجرائية تطوير البرمجيات ؟ What is a software process

- هي مجموعة النشاطات التي تعني بإنتاج المنتج البرمجي

- أي إجرائية برمجية تضم النشاطات التالية :

• التوصيف Specification : في هذه المرحلة يتم توضح ما الذي يقوم به النظام و قيود التطوير

• التطوير Development : في هذه المرحلة يتم تصميم وبرمجة البرمجية

• إثبات الصحة (التحقق) Validation : في هذه المرحلة يتم التأكد من أن البرمجية تنجز وظائف الزبون

• التقييم (تطور) Evolution : في هذه المرحلة يتم إجراء التعديلات علي البرمجية لتنفيذ وظائف أو متطلبات جديدة

ما هو نموذج إجرائية البرمجيات ؟ What is a software process model

- هو أسلوب لتنظيم نشاطات إجرائية البرمجيات وفق طريقة معينة

- يمكن النظر إلي نماذج إجرائية البرمجيات من عدة زوايا (نماذج) :

• نموذج تدفق العمل Workflow perspective : يوضح تسلسل نشاطات إجرائية البرمجية و العلاقات بين هذه الأنشطة

• نموذج تدفق المعطيات Data-flow perspective : يوضح تدفق المعلومات

• نموذج الدور/الفعل Role/action perspective : يوضح الأدوار التي يقوم بها الأشخاص المشاركين

- نماذج إجرائية البرمجية العامة Generic process models هي :

• النموذج الشلالي Waterfall

• التطوير ألتقييمي Evolutionary development

• التحويل ألرسمي Formal transformation

• تكامل المكونات القابلة للاستخدام Integration from reusable components

ما هي تكاليف هندسة البرمجيات ؟ What are the costs of software engineering

- تقريبا 60% من التكلفة هي تكلفة تطوير و 40% تكلفة اختبار ومكاملة للبرامج

- تتجاوز تكلفة التطور(تعديل المنتج البرمجي) غالبا تكلفة التطوير

- التكلفة تعتمد علي النظام الذي يطور و متطلبات وخصائص النظام مثل الأداء و وثوقية النظام

- توزيع التكلفة يعتمد علي نموذج الإجرائية المستخدم في التطوير

ما هي منهجيات هندسة البرمجيات ؟ What are software engineering methods

- هي عبارة عن أسلوب منظم في تطوير البرمجيات يتضمن نماذج النظام ، الملاحظات ، القواعد ، ويهدف إلي تسهيل إنتاج منتجات برمجية عالية الجودة ، وبتكلفة معقولة

- من هذه المنهجيات :

• منهجية وظيفية Structured: تتناول النظام من وجهة نظر وظيفية ( تهتم بوظائف النظام )

• منهجية غرضية التوجه Object Oriented

- تحتوي كل منهجية من هذه المنهجيات علي عدد من العناصر المختلفة و هي :

• نماذج النظام Model descriptions: توضح النماذج الرسومية التي توصف النظام مثل نموذج تدفق البيانات و نموذج الحالة

• القواعد Rules : جملة القواعد المفروضة علي نماذج النظام

• التوصيات Recommendations : هي مجموعة الممارسات (النصائح) التي تساعد علي التصميم الجيد

• دليل الإجرائية Process guidance : هي مجموعة النشاطات التي يجب الالتزام بها لتطوير نماذج النظام

ما هي CASE (هندسة البرمجيات بمساعدة الحاسب ) ؟ What is CASE (Computer-Aided Software Engineering)

- هي مجموعة من الأدوات البرمجية التي تستخدم لدعم نشاطات إجرائية البرمجيات مثل رسم المخططات وتوليد التقارير

- أنظمة هندسة البرمجيات بمساعدة الحاسب تستخدم لدعم الطرق

- تنقسم الـ ACSE إلي :

• الأدوات الكبيرة Upper-CASE : وهي أدوات لدعم نشاطات العمليات المبكرة من المتطلبات و التصميم

• الأدوات الصغيرة Lower-CASE : وهي أدوات لدعم النشاطات التالية مثل البرمجة و تصحيح الأخطاء و الاختبار

ما هي خصائص البرمجيات الجيدة ؟ What are the attributes of good software

- هناك جملة من المواصفات التي يجب أن تتحلي بها البرمجية حتى نقول أنها برمجية جيدة مثل تحقيق الوظيفة و الأداء المطلوب للمستخدم و أن تكون قابلة للاستعمال وموثوقة و قابلة للدعم و الصيانة

- المواصفات التي يجب أن تحققها البرمجية الجيدة هي :

• سهولة الصيانة Maintainability : البرمجية بإمكانها أن تتطور بسهولة لتتوافق مع المتطلبات المتغيرة

• الاعتمادية Dependability : البرمجية تكون جديرة بالثقة و لا تسبب ضرر كبير في حال إخفاقها

• الفاعلية Efficiency : البرمجية يجب أن لا تكون مفرطة في استهلاك موارد الحاسب مثل الذاكرة و المعالج

• سهولة الاستخدام Usability : البرمجية يجب أن تكون سهلة الاستخدام من قبل الزبون للغرض الذي صممت من اجله

ما هي التحديات التي الأساسية تواجه هندسة البرمجيات ؟ What are the key challenges facing software engineering

- التحول في الأنظمة القديمة و تحول التطور و التحول في المتطلبات مع تقليل زمن التسليم

- ويمكن تمثيل هذه التحديات بالتالي :

• تحدي الأنظمة القديمة Legacy challenge : الأنظمة القديمة يجب أن تبقي وتجدد

• تحدي عدم التجانس (التنوع) Heterogeneity challenge : الأنظمة تعمل علي أجهزة حاسوبية من أنواع مختلفة وبأنظمة تشغيل وبرامج دعم مختلفة

• تحدي زمن التسليم Delivery challenge : هناك ضغط متزايد للتسليم السريع للبرامج

هندسة البرمجيات و المسؤوليات الأخلاقية و المهنية Professional and ethical responsibility

- تتضمن هندسة البرمجيات مسؤوليات أوسع من تطبيق المهارات التقنية

- مهندسو البرمجيات يجب أن يتصرفوا بمسؤوليات أخلاقية صادقة ليحترموا كمحترفين

- السلوك الأخلاقي أكثر من سهل بتأييد القانون

قضايا المسؤولية الأخلاقية Issues of professional responsibility

- الجوانب الأخلاقية التي يجب أن يلتزم بها مهندس البرمجيات :

• السرية Confidentiality : مهندسو البرمجيات يجب أن يحترموا سرية الزبائن و الرؤساء سواء كان هناك ميثاق أخلاقي يفرض ذلك أم لم يكن

• الكفاءة Competence : مهندس البرمجيات يجب أن يقر و يعترف بإمكانياته و معارفه و ألا يدعي علما لا يعلمه أو معرفة تقع خارج مجال اختصاصه

• حقوق الملكية الفكرية Intellectual property rights : مهندسو البرمجيات يجب أن يكونوا واعين لكل القوانين المتعلقة بحقوق الملكية الفكرية مثل براءة الاختراع و حقوق النسخ

• سوء استخدام الحواسيب Computer misuse : مهندسو البرمجيات يجب أن لا يستعملوا مهاراتهم التقنية في إساءة استخدام حواسيب الغير . ابتداء من أبسط الأمور (أن تلعب بعض الألعاب علي جهاز رئيسك ) إلي أجسمها ( نشر الفيروسات )

الميثاق الأخلاقي ACM/IEEE ACM/IEEE Code of Ethics

- المنظمات ( الجمعيات ) المحترفة في الولايات المتحدة تعاونت لصياغة ميثاق أخلاقي لهندسة البرمجيات

- يتوجب علي جميع أعضاء هذه الجمعيات الالتزام بهذا الميثاق و بشكل صارم

- يحتوي هذا الميثاق علي ثمانية مبادئ تعلقت بسلوك وقرارات مهندسي البرمجيات بكل مراكزهم من ممارسين ومدربين و مشرفين وصانعي سياسات و متدربين و طلاب

الميثاق الأخلاقي Code of ethics – preamble

مقدمة introduction

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

- تشكل المبادئ وشروحاتها ميثاقا متكاملا لأخلاقيات هذه المهنة

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

- لذا فإن علي مهندس البرمجيات أن يلتزم بالمبادئ الثمانية التالية :

1- المجتمع PUBLIC : يلتزم مهندس البرمجيات بالعمل و فق أسلوب يتسق مع المصلحة العامة

2- الزبائن و الرؤساء CLIENT AND EMPLOYER : علي مهندس البرمجيات أن يحترم الزبون و الرئيس بشكل يتفق مع المصلحة العامة

3- المنتج PRODUCT : يتوجب علي مهندس البرمجيات أن يضمن بأن منتجه يحترم المعايير المهنية قدر الإمكان

4- اتخاذ القرارات JUDGMENT : يجب أن يحافظ مهندس البرمجيات علي قدر واسع من الاستقلالية في اتخاذه لقراراته

5- الإدارة MANAGEMENT : يتوجب علي مهندس البرمجيات عند توليه منصبا قيادياً أو إدارياً بأن يرفع من شأن القيم الأخلاقية ضمن المؤسسة في تطوير وصيانة البرمجيات

6- المهنة PROFESSION : يجب ألا يسئ مهندس البرمجيات لسمعة هذه المهنة إطلاقاً

7- الزملاء COLLEAGUES : اتخاذ موقف عادل اتجاه الزملاء دون إفراط أو تفريط

8- الذات SELF : تنمية الحس الأخلاقي و متابعة آخر التطورات في مجال هندسة البرمجيات

المشكلات الأخلاقية Ethical dilemmas

- أكبر المعضلات التي يواجهها مهندسي البرمجيات هي :

• خلاف من حيث المبدأ بسياسات الإدارة العليا

• رب العمل يتصرف بطريقة لا أخلاقية و يصدر نظام الأمان الحرج بدون إنهاء اختبار النظام

• الاشتراك في تطوير أنظمة الأسلحة العسكرية أو الأنظمة النووية

رؤوس أقلام

- هندسة البرمجيات هو الحقل الهندسي الذي يجمع بين جوانب إنتاج البرمجيات

- يتألف المنتج البرمجي من مجموعة برامج و التوثيق الخاص بها . و أهم صفات المنتج البرمجي هي : سهولة الصيانة ، الوثوقية ، الفاعلية ، سهولة الاستخدام

- إجرائية البرمجيات هي جملة النشاطات المسؤولة عن تطوير البرمجيات . إن أي إجرائية برمجيات يجب أن تشمل علي النشاطات التالية : التوصيف ، التطوير ، إثبات الصحة ، التطور

- المنهجيات هي أساليب منظمة في إنتاج البرمجيات . فهي تقدم لنا العديد من الاقتراحات حول الأسلوب الذي يجب أن نتبعه في تطوير برمجية ما ، و تقدم لنا العديد من الرموز الاصطلاحية التي يمكن أن نستفيد منها ، إضافة إلي نماذج النظام التي يجب أن نطورها و القواعد التي تحكم هذه النماذج

- أدوات CASE هي مجموعة من الأنظمة البرمجية التي تساعدنا علي إجراء النشاطات المتعلقة بتطوير البرمجيات مثل رسم المخططات و توليد التقارير و متابعة تقدم المشروع ... الخ

- لا يجب علي مهندس البرمجيات أن يهتم بالجوانب العلمية المهنية ، بل عليه أن يضطلع بالمسؤولية الأخلاقية التي تمليها عليه هذه المهنة

- تقوم العديد من الجمعيات المهنية بإصدار مواثيق أخلاقية تكون بمثابة المعايير الأخلاقية التي يجب أن يلتزم بها أعضاؤها .

تم تعديل هذه المشاركة بواسطة time1 في 2 سبتمبر 2008 في 12:06

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#2

إجرائية البرمجيات Software Processes

- هي جملة النشاطات المنطقية لتوصيف التصميم و التطبيق و الاختبار لأنظمة البرمجيات

إجرائية البرمجيات The Software Process

- هي مجموعة النشاطات التي تؤدي إلي إنتاج المنتج البرمجي المطلوب

- تشمل جميع إجرائيات التطوير علي النشاطات التالية

• توصيف البرمجية Specification

• تصميم البرمجية Design

• إثبات صحة البرمجية Validation

• تطور البرمجية Evolution

- نموذج إجرائية البرمجيات هو تمثيل معين للإجرائية و يهدف إلي وصف (تنظيم) المنتج البرمجي وفق أسلوب معين

نماذج إجرائية البرمجيات الأساسية Generic Software Process Models

1- النموذج ألشلالي The waterfall model

• يمثل النشاطات الأساسية في الإجرائية ( التوصيف ، التطوير )

2- النموذج التطويري Evolutionary development

• مراحل التوصيف و التطوير تتميز بالتداخل

3- نموذج التطوير الرسمي Formal systems development

• نموذج يستند علي تحويل المواصفات الرياضية حتي الوصول للتطبيق

4- النموذج التطويري المعتمد علي إعادة الاستخدام Reuse-based development

• يطور النظام من خلال المكونات القابلة لإعادة الاستخدام

********************************************************************************

********

النموذج ألشلالي The waterfall model

759447235.jpg

نشاطات التطوير الأساسية

• تعريف و تحليل المتطلبات Requirements analysis and definition

• تصميم النظام و البرمجة System and software design

• التحقيق و اختبار الوحدات Implementation and unit testing

• المكاملة و اختبار النظام Integration and system testing

• التشغيل و الصيانة Operation and maintenance

- مشكلة نموذج الشلال تتمثل في إجراء التغييرات بعد الانتهاء من المرحلة

مشاكل نموذج الشلال Waterfall Model Problems

- الصلابة التي يبديها في الانتقال الصارم من مرحلة إلي مرحلة ، وبذلك يتسم بعدم قدرته علي الاستجابة لمتطلبات الزبون المتغيرة لذا ، هذا النموذج ملائم فقط عندما تكون المتطلبات مفهومة بشكل واضح

النموذج التطوري Evolutionary Development

- ينقسم هذا النموذج إلي نوعين

1- التطوير الاستكشافي Exploratory development

• الهدف من هذا الأسلوب العمل مع الزبون بقصد استكشاف متطلباته وتسليم المنتج النهائي . يجب أن نبدأ بالمتطلبات المفهومة بشكل جيد

2- النمذجة الأولية المؤقتة Throw-away prototyping

• الهدف منها فهم متطلبات النظام . يجب أن نبدأ بالمتطلبات الغامضة

المشاكل Problems

- هذا النموذج غير واضح ( يحتاج المدراء لأشياء ملموسة لقياس تقدم المشروع )

- الأنظمة الناتجة تكون ذات هيكلة ضعيفة بسبب التغيرات المستمرة

- يحتاج لمهارات خاصة ( مثال لذلك : خبرة في لغات النمذجة السريعة )

هذا النموذج ملائم عند تطوير Applicability

- الأنظمة التفاعلية المتوسطة الحجم

- أجزاء من النظم الكبيرة ( مثال : واجهات المستخدم )

- الأنظمة قصيرة الأمد

نموذج التطوير الرسمي للنظام Formal Systems Development

- يستند علي تحويل المواصفات الرياضية خلال التمثيلات المختلفة حتي الوصول للبرنامج القابل للتنفيذ

- التحويلات تحافظ علي الصحة لذلك هو بسيط لرؤية البرنامج الذي يتوافق مع المواصفات

- يجسد الصحة بالنظر لتطوير البرامج

184392392.jpg

براهين صحة التحويل proof of formal transformation

567567297.jpg

المشاكل Problems

- يحتاج لمهارات خاصة و تدريب لتطبيق التقنية

- صعوبة تحديد السمات الرسمية مثل وجهات المستخدم

يطبق علي :

- يطبق علي الأنظمة الحرجة خصوصا التي تحتاج للأمن و السرية قبل أن يشغل النظام

نموذج التطوير المرتكز علي إعادة الاستخدام Reuse-Oriented Development

- يستند علي الأنظمة التي يعاد استخدامها ، حيث أن النظام يتكامل من مكونات جاهزة أو برمجيات تجارية جاهزة (COST)

Commercial-off-the-shelf

مراحل الإجرائية Process stages

- تحليل المكونات Component analysis

- تعديل المتطلبات Requirements modification

- تصميم النظام مع إعادة الاستخدام System design with reuse

- التطوير و المكاملة Development and integration

هذا النموذج أصبح نظريا الأكثر أهمية ولكن ما زالت خبرته محدودة

977464447.jpg

الدورات ضمن عملية البرمجيات Process Iteration

- دائما ما تتغير متطلبات النظام أثناء عمل المشروع لذلك إعادة ( تكرار) العمليات في المراحل الأولي ضروري للأنظمة الكبيرة

- تكرار العمليات يمكن أن يطبق علي كل نماذج الإجرائية العامة

التطوير ألتزايدي ( التسليم التدريجي) Incremental Development

- بدلا من تسليم وحيد ، التطوير و التسليم يقسم إلي تزايدات ( تسليم تدريجي ) ، كل تزايد جزء من الوظيفة المطلوبة .

- متطلبات المستخدم ذات أولوية و تضمن في الأولويات العالية التي تضمن في التزايدات الأولي

- عندما نبدأ في تطوير التزايدات سيتم البدء بتحليل متطلبات الجزاء الاخري

302774419.jpg

مميزات التطوير التزايدي Incremental Development Advantages

- متطلبات الزبون يمكن أن تتم بكل تزايد لذلك وظائف النظام تكون متوفرة مبكراً

- عمل التزايدات المبكرة يساعد في توضيح المتطلبات للتزايدات التالية

- تخفيض نسبة خطورة فشل المشروع

- الأجزاء (الخدمات) ذات الأولوية العالية في النظام ستخضع إلي عمليات اختبار واسعة

********************************************************************************

*********

نموذج التطوير الحلزوني

- النشاطات تمثل علي شكل حلزوني بدلاً من تصورها علي إنها تسلسل من النشاطات مع إمكانية العودة من نشاط لاحق إلي نشاط سابق

- كل حلقة من الحلزون تمثل مرحلة في الإجرائية

- ليست هناك مراحل ثابتة مثل المواصفات و التصميم ، الحلقات في الحلزون يتم اختيارها اعتماداً علي تقييم المخاطر بشكل واضح وتطبق علي كامل أنحاء الإجرائية

- المخاطر تقييم بشكل واضح و تطبق في كافة أنحاء الإجرائية

466791094.jpg

- تقسم كل دورة (مرحلة) إلي أربعة قطاعات دائرية :

1- وضع الغاية Objective setting

• تضع هدفا محددا لهذه المرحلة (الدورة) ثم نعرف القيود المفروضة علي الإجرائية وعلي المنتج

2- تقييم و تخفيض المخاطر Risk assessment and reduction

• تحليل كل خطر بشكل مفصل ثم نحدد الخطوات الضرورية لتخفيض الخطر

3- التطوير و إثبات الصحة Development and validation

• اختيار نموذج التطوير المناسب و الذي يمكن أن يكون أي من نماذج التخطيط الأساسية

3- التخطيط Planning

• مراجعة المشروع و وضع الخطط من اجل المرحلة القادمة

تم تعديل هذه المشاركة بواسطة time1 في 2 سبتمبر 2008 في 12:11

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

إدارة المشروعات Project management

هي تنظيم و تخطيط و جدولة مشاريع البرمجيات

الأهداف Objectives

- عرض إدارة المشاريع و وصف الخصائص المميزة

- مناقشة تخطيط المشروع و إجرائية التخطيط

- عرض كيفية استخدام مخططات الجدولة لتمثيل إدارة المشروع

- مناقشة فكرة المخاطر و إجرائية إدارة المخاطر

إدارة المشاريع البرمجية Software project management

- مهمة بالنشاطات التي تحقق ضمان تسليم البرامج في الوقت وحسب الجدولة المحددة وضمان سيره بما يتوافق مع المعايير ( متطلبات المؤسسة )

- إدارة المشروع مطلوبة لان تطوير البرامج دائما ما تخضع لقيود مالية وزمنية من قبل المؤسسة التي تقوم بتطوير البرمجيات

امتيازات إدارة البرامج Software management distinctions

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

• المنتج البرمجي غير ملموس The product is intangible

• المنتج البرمجي مرن

• هندسة البرمجيات غير منضبطة كالهندسة الكهربائية و الميكانيكية

• عملية تطوير البرامج غير موحدة لان مشاريع البرامج تعتبر مشاريع وحيدة

نشاطات الإدارة Management activities

- كتابة الاقتراح Proposal writing

- تخطيط المشروع و جدولته Project planning and scheduling

- كلفة المشروع Project costing

- مراقبة المشروع و مراجعته Project monitoring and reviews

- انتقاء الكادر و تقييمه Personnel selection and evaluation

- كتابة التقارير و العروض التقديمية Report writing and presentations

عموميات الإدارة Management commonalities

- هذه النشاطات ليست خاصة بإدارة البرمجيات فالعديد من المشاريع التقنية الهندسية تتساوي مع إدارة البرمجيات في هذه النشاطات

- الأنظمة الهندسية المعقدة تميل إلي المعاناة من نفس المشاكل كأنظمة البرامج

أفراد ( فريق عمل ) المشروع Project staffing

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

- قد لا تغطي ميزانية المشروع رواتب الفريق الماهر

- قد لا يتواجد الفريق الماهر أصلا

- قد يكون من أهداف الشركة تطوير مهارات و خبرات أفرادها

المدراء يجب أن يعملوا ضمن هذه القيود خصوصا ( في الوضع الحالي ) عندما يكون هناك نقص دولي في خبراء تقنية المعلومات

تخطيط المشروع Project planning

- من المحتمل أن أكثر نشاطات إدارة المشاريع التي تضيع الوقت من المفاهيم الأولية إلي تسليم النظام هي تخطيط المشروع

- الخطط يجب أن تراجع مع توافر معلومات جديدة

- الأنواع المختلفة للخطط قد تطور لدعم الخطة الرئيسية للمشروع البرمجي و التي تكون مهتمة بالجدول الزمني و الميزانية

إجرائية تخطيط المشروع Project planning process

- حدد قيود المشروع

- قدر معاملات ( بارمترات ) المشروع بشكل أولي

- حدد المحطات الأساسية و المخرجات التي يجب أن تكون جاهزة للتسليم

- ما دام ( المشروع لم ينتهي أو لم يلغي ) نفذ الحلقة التالية

• ضع الجدول الزمني للمشروع

• أبدا النشاطات وفقاً لهذا الجدول

• انتظر ( فترة من الزمن )

• راجع سير العمل في المشروع

• نقح التقديرات الخاصة ببرامترات المشروع

• قم بتحديث الجدول الزمني

• اعد المفاوضات بشان القيود و المخرجات الجاهزة

• إذا ( حدثت مشكلة ) عندئذ

أبدا مراجعة تقنية للمشروع ، و أي احتمال للتعديل

• نهاية إذا

- نهاية الحلقة

هيكل خطة المشروع Project plan structure

تحتوي أي خطة علي الأقسام التالية :

1- المقدمة Introduction

2- تنظيم المشروع Project organisation

3- تحليل المخاطر Risk analysis

4- متطلبات المشروع من مكونات صلبة و برمجيات Hardware and software resource requirements

5- تقسيم العمل Work breakdown

6- الجدول الزمني للمشروع Project schedule

7- آليات المراقبة و إصدار التقارير Monitoring and reporting mechanisms

تنظيم النشاطات Activity organization

- نشاطات المشروع يجب أن تنظم لإنتاج نواتج ملموسة تقدم للإدارة لتقييم تقدم العمل

- المحطة الأساسية (Milestone) هي عبارة عن نهاية نشاط معينة في إجرائية البرمجيات

- المنتج الجاهز (Deliverable) هو عبارة عن منتج جاهز للتسليم إلي الزبون

الجدولة الزمنية للمشروع Project scheduling

- تقسيم المشروع إلي مهام ( نشاطات ) ثم نقدر المصادر و الوقت اللازم لإكمال كل مهمة

- نسق المهام المتوازية مع بعضها البعض بما يضمن استخدام القوة العاملة بشكل أمثل

- قلل من تبعيات المهام لتجنب التأخير الذي قد يكون سببه أن مهمة تنتظر مهمة أخري للكمال ( الانتهاء )

- تعتمد الجدولة علي حدس وخبرة مدراء المشروع

مشاكل الجدولة Scheduling problems

- تقدير صعوبة المشكلة و لذلك تقدير تكلفة الحل صعبة

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

- إضافة الأشخاص إلي مشروع متأخر يجعله متأخرا بسبب نفقات الاتصال الزايدة

- الأشياء الغير متوقعة دائما ما تحدث

- دائما يسمح للطوارئ في التخطيط

المخططات البيانية و شبكات النشاطات Bar charts and activity networks

- هي عبارة عن مخططات اصطلاحية تستخدم لتمثيل الجدول الزمني للمشروع

- تعرض تقسيم المشروع إلي عدة مهام

- النشاطات ( المهام ) يجب أن لا تكون صغيرة . يجب أن تأخذ أسبوع أو أسبوعين

- مخطط النشاطات ( شبكة النشاطات Activity charts) تظهر العلاقات بين مختلف نشاطات العمل في المشروع و المسار الحرج (the critical path)

- المخططات البيانية (Bar charts) تعرض الجدولة خلال تقويم الوقت

إجرائية إدارة المخاطر The risk management process

تشتمل علي المراحل :

1- تحديد المخاطر Risk identification

تحديد مخاطر المشروع و المنتج و العمل

2- تحليل المخاطر Risk analysis

تحديد احتمالية وقوع كل خطر و آثاره أن وقع

3- تخطيط المخاطر Risk planning

وضع خطط للتعامل مع المخاطر و ذلك لتجنبه أو بالتخفيف من حدته

4- مراقبة المخاطر Risk monitoring

مراقبة المخاطر أثناء المشروع

********************************************************************************

*********

اعد هذا السيمنار الاستاذ : جعفر عبدالله هارون , جامعة تبوك .

تم تعديل هذه المشاركة بواسطة time1 في 2 سبتمبر 2008 في 12:14

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

مواضيع مشابهة