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

Document Details

JoyfulSphene

Uploaded by JoyfulSphene

University of Tripoli

2020

Marwa Solla

Tags

software engineering project planning cost estimation software development

Summary

This document is a lecture about software project planning, including cost estimation and project scheduling, for the Introduction to Software Engineering course. This lecture gives an overview of activities included in project planning. It also discusses methods of estimating costs, project scheduling, and related challenges.

Full Transcript

‫‪5/19/2022‬‬ ‫جامعة طرابلس ـ كلية تقنية المعلومات‬ ‫مقدمة في هندسة البرمجيات‬ ‫‪Introduction to software Engineering‬‬ ‫‪ITGS-213‬‬ ‫المحاضرة الثاني...

‫‪5/19/2022‬‬ ‫جامعة طرابلس ـ كلية تقنية المعلومات‬ ‫مقدمة في هندسة البرمجيات‬ ‫‪Introduction to software Engineering‬‬ ‫‪ITGS-213‬‬ ‫المحاضرة الثانية – انشطة التخطيط (تقدير التكلفة وجدولة المشروع)‬ ‫‪Planning: Cost Estimation and Project Schedulin‬‬ ‫مواضيع المحاضرة‬ ‫انشطة التخطيط لمشروع برمجي‪:‬‬ ‫ ‬ ‫جدولة المشروع البرمجي‬ ‫ ‬ ‫أدوات الجدولة‬ ‫ ‬ ‫تقدير تكلفـــة البرمجـــة و عوامل أخرى تؤثر على تقدير التكلفة‬ ‫ ‬ ‫صعوبات تواجه عملية تقدير التكلفة‬ ‫ ‬ ‫طـــــرق تقدير التكلفة‬ ‫ ‬ ‫حقائق و مفاهيم خاطئة‬ ‫ ‬ ‫‪2‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪1‬‬ ‫‪5/19/2022‬‬ ‫هندسة البرمجيات‬ ‫لم يعد خافيا على أي منا أهمية البرمجيات في حياتنا اليومية سواء في البيت أو الشركة أو المستشفى ‪...‬الخ‪ ،‬فنحن نتعامل يوميا مع العديد من‬ ‫ ‬ ‫األجهزة والمعدات التي تعتمد في عملها على البرمجيات‪.‬‬ ‫فوجود أسلوب منظم ومنضبط والقابل للقياس لعمليات تطوير البرمجيات وصيانتها يعد تطبيقا ً للهندسة على البرمجيات ودراسة هذه األساليب‬ ‫ ‬ ‫وتطبيقها يعد هندسة برمجيات التي تهتم بتصميم وتطوير برامج ذات جودة عالية ‪.‬‬ ‫واألساليب واألدوات المستخدمة‪.‬‬ ‫ ‬ ‫مع تطور علوم الحاسوب فقد ظهرت أساليب حديثة لتطوير وبناء أنظمة البرمجيات ومن أبرز‬ ‫ ‬ ‫اتجاهات هذا التطور هو ظهور أدوات هندسة البرمجيات بمساعدة الحاسوب (‪Computer-‬‬ ‫‪ )Aided Software Engineering‬أو ما يعرف بأدوات )‪ (CASE Tools‬والمستخدمة‬ ‫في أتمته و دعم نشاطات دورة حياة أنظمة البرمجيات التي تتكون من عدة مراحل تبدأ ب‬ ‫جمع المتطلبات تم توثيقها بطريقة علمية (التحليل)‬ ‫‪‬‬ ‫وثم وضع خطة لتنفيذ هذه المتطلبات(التصميم)‬ ‫‪‬‬ ‫ومن ثم تنفيذ المتطلبات(اإلنشاء أو البرمجة)‬ ‫‪‬‬ ‫وأخيرا التحقق من إن ما تم إنجازه يوافق المتطلبات(التجربة أو االختبار) ‪،‬‬ ‫‪‬‬ ‫حيث تتفق هذه المراحل ظاهريا في إطارها العام‪ ،‬ولكنها تختلف داخليا فيما يتعلق بالمضمون‬ ‫ ‬ ‫والمنهجية والتي سنقوم بدراستها في المحاضرات القادمة‬ ‫ادارة المشاريع البرمجية‬ ‫تعتبر ادارة المشاريع البرمجية احد المواضيع الهامة التي تعالجها هندسة البرمجيات‪ ،‬فسوء اإلدارة يعني‬ ‫ ‬ ‫بالضرورة فشل المشروع بمعنى التأخر في تسليم البرمجية‪ ،‬وتجاوز الكلف المحددة في البداية‪ ،‬وفشل البرمجية في‬ ‫القيام بالمتطلبات التي وضعت من أجلها‪.‬‬ ‫ تتكون إدارة مشروع البرمجيات من عدد من األنشطة ‪ ،‬والتي تحتوي على تخطيط المشروع ‪ ،‬وتحديد نطاق منتج‬ ‫البرنامج ‪ ،‬وتقدير التكلفة بمصطلحات مختلفة ‪ ،‬وجدولة المهام واألحداث ‪ ،‬وإدارة الموارد‪.‬قد تشمل أنشطة إدارة‬ ‫المشروع‪:‬تخطيط المشروع إدارة نطاق تقدير المشروع‬ ‫‪Lect2_Fall2020‬‬ ‫‪2‬‬ ‫‪5/19/2022‬‬ ‫التخطيط لمشروع برمجي‬ ‫‪ ‬من االنشطة التي يتم ممارستها عند التخطيط لمشروع برمجي‪:‬‬ ‫تحديد اهداف المشروع‪.‬‬ ‫‪.1‬‬ ‫دراسة الجدوي‬ ‫‪.2‬‬ ‫تحديد المستلزمات الخاصة للمشروع البرمجي من عتاد وبرمجيات وعنصر بشري‪.‬‬ ‫‪.3‬‬ ‫تحديد حدود او نطاق المشروع و المخاطر المتوقعة ‪.‬‬ ‫‪.4‬‬ ‫تقدير التكلفة و زمن المشروع هو‬ ‫‪.5‬تقدير المدة الزمنية للمشروع‪.‬‬ ‫الجزء االهم واالصعب في التخطيط‬ ‫‪.6‬تقدير تكلفة المشروع‬ ‫‪5‬‬ ‫تقدير التكلفة و زمن المشروع‬ ‫‪ ‬حيث اصبحت البرمجيات في يومنا هذا أغلى تكلفة من العتاد‪ ،‬وعند حدوث أي‬ ‫خطأ في تقدير التكلفة قد ينتج عنه خسارة لمعدي المنظومات ومن ثم فشل اعداد‬ ‫المنظومة‪.‬‬ ‫‪ ‬وتحديد الجدول الزمني مهم ايضا ‪ ،‬ألنه مرتبط بتقدير التكلفة ويؤثر على نجاح‬ ‫المشروع ‪ ،‬ولهذا تم إعداد طرق لتقدير كل مهمة من مهام المشروع ليتم معرفة‬ ‫الزمن الكلي‪.‬‬ ‫‪6‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪3‬‬ ‫‪5/19/2022‬‬ ‫‪ Cost Estimation‬تقدير التكلفة‬ ‫يتم تقدير جميع مراحل المشروع البرمجي بداية من‪:‬‬ ‫‪‬‬ ‫‪‬تقديرات أولية لمعرفة الجدوى االقتصادية‪.‬‬ ‫خطة المشروع‪.‬‬ ‫‪‬تقديرات تفصيلية عند اعداد‬ ‫*عوامل تؤثر على تقدير التكلفة‪:‬‬ ‫‪.١‬درجة تعقيد البرمجيات ‪Complexity of Software :‬‬ ‫كلما زاد التعقيد زادت التكلفة‪.‬‬ ‫‪‬‬ ‫‪ ٢.‬حجم البرنامج ‪Size Of Software :‬‬ ‫‪ ‬البرمجيات الكبيرة أكثر كلفة من الصغيرة‪.‬‬ ‫‪.٣‬التقنية المستخدمة ‪ technologies‬عالقة عكسية‬ ‫‪Modern‬‬ ‫‪Old ‬‬ ‫‪.٤‬أداء المبرمجين‪Performance of programmers‬‬ ‫‪ ‬المبرمج المجد يوفر من تكلفة المشروع‪.‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪4‬‬ ‫‪5/19/2022‬‬ ‫صعوبات تواجه عملية تقدير التكلفة‬ ‫‪ ‬تعتبر عملية تقدير تكلفة اعداد المنظومات البرمجية صعبة في الحاالت التالية‪:‬‬ ‫ال توجد مشاريع سابقة مماثلة‪.‬‬ ‫‪‬‬ ‫ازدياد تعقيد المشروع البرمجي‪.‬‬ ‫‪‬‬ ‫نتائج أدوات وطرق تقدير التكلفة غير دقيقة‪.‬‬ ‫‪‬‬ ‫طرق مقترحة الجتياز صعوبات تقدير التكلفة‬ ‫اعطاء وقت كاف لعمليات تقدير التكلفة‪.‬‬ ‫‪‬‬ ‫‪ ‬التقديرات السريعة تولد تكاليف غير دقيقة‪.‬‬ ‫استخدام بيانات مشاريع ناجحة ومتكاملة سابقة كلما أمكن‪.‬‬ ‫‪‬‬ ‫‪‬نماذج تجريبية مبنية على الواقعية واالختبار‪.‬‬ ‫استخدام اسلوب التجزئة‪Decomposition.‬‬ ‫‪‬‬ ‫‪ ‬يتم تقسيم المشروع الى مهام ثم تجمع تكلفة المهام للوصول الى التكلفة الكلية‪.‬‬ ‫االستشارة الجماعية‪.‬‬ ‫‪‬‬ ‫‪ ‬تساعد في كثيرا في التقدير الجيد بدل الرأي الفردي‪.‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪5‬‬ ‫‪5/19/2022‬‬ ‫طرق تقدير التكلفـــة‪Cost Estimation Methods‬‬ ‫يمكن استخدام نموذج أو طريقة أو أكثر من طريقة للمشروع الواحد‪:‬‬ ‫‪‬‬ ‫حكم الخبير‪Expert judgement.‬‬ ‫‪‬‬ ‫‪‬الخبراء يستخدمون تجربتهم لتوقع كلفة المشروع ‪.‬‬ ‫‪‬الفوائد‪ :‬يمكن أن يكون دقيق إذا كان الخبراء لديهم تجربة مباشرة من أنظمة مماثلة‪.‬‬ ‫‪‬األضرار‪ :‬خاطئ جدا إذا ليس هناك خبراء!‬ ‫التقدير بالمقارنة‪Estimation By analogy‬‬ ‫‪‬‬ ‫‪‬يتم حساب تكلفة المشروع بمقارنة المشروع مع مشروع مماثل في نفس مجال التطبيق‪.‬‬ ‫‪‬الفوائد‪ :‬قد يكون دقيق إذا بيانات المشروع القديم متوفرة ومستخدم نفس االدوات‪.‬‬ ‫‪‬األضرار‪ :‬مستحيل إذا ال يوجد مشروع مقارن مماثل‪.‬‬ ‫طرق تقدير التكلفـــة‪Cost Estimation Methods‬‬ ‫اإلجماع ‪ Group Consensus or Delphi method‬وتتبع هذه الطريقة الخطوات التالية‪:‬‬ ‫‪‬‬ ‫تعتمد على الرأي الجماعي المقنع والمبني على اساس سليم وتتبع الخطوات التالية‪:‬‬ ‫‪‬‬ ‫اعطاء( مستند تعريف للمنظومة ‪ +‬نموذج لتدوين التقدير االبتدائي لتكلفة المشروع )لالخصائيين‪.‬‬ ‫‪.1‬‬ ‫يجب ان ال يتبادل االخصائيين االفكار مع بعضهم عند اجراء عملية التقدير مع الرجوع للمنسق عن أي‬ ‫‪.2‬‬ ‫معلومة في حاجة اليها‪.‬‬ ‫يقوم المنسق بجمع ومراجعة التقديرات الناتجة ‪.‬‬ ‫‪.3‬‬ ‫تبرير االختالف الكبير في تقديرات االخصائيين واعادة‬ ‫‪.4‬‬ ‫عملية التقدير في حالة كان تقدير االختالف مقنع‪.‬‬ ‫‪.5‬تكرار الخطوة السابقة الى ان يتحقق المطلوب على أن ال‬ ‫توجد مناقشة جماعية في أي جلسة‪.‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪6‬‬ ‫‪5/19/2022‬‬ ‫طرق تقدير التكلفـــة‪Cost Estimation Methods‬‬ ‫‪ ‬طريقة من أسفل‪-‬الى‪-‬أعلى ‪ Bottom-Up method‬تجزئة المشروع الى مهام‬ ‫‪‬التقدير الكلي= مجموع تقدير أجزاء أو مهام المشروع‪.‬‬ ‫‪Bottom up cost estimation example‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪7‬‬ ‫‪5/19/2022‬‬ ‫جدولة المشروع البرمجي‪Software project scheduling‬‬ ‫أدوات الجدولة للمشاريع البرمجية واإلنشائية والصناعية تعتبر الى حد كبير متشابهة‬ ‫‪‬‬ ‫وتستخدم نفس االدوات‪.‬‬ ‫صعوبة مهمة جدولة المشاريع يحتم على مدير المشروع أو المتخصص في االستفادة من‬ ‫‪‬‬ ‫جداول سابقة ان وجدت‪.‬‬ ‫لحساب الزمن الكلي إلنهاء المنظومة يجب تجزئة العمل وحساب كل جزء على حدى مع‬ ‫‪‬‬ ‫مراعاة االجزاء التي تتم بالتوازي والبعض االخر يتم بالتسلسل ألنه يعتمد على بعضه اآلخر‪.‬‬ ‫مشاكل تسبب في تأخير تسليم المشروع‪:‬‬ ‫‪‬‬ ‫(مرض أحد االعضاء الفاعلين‪ -‬عطل في العتاد‪ -‬تأخر وصول العتاد أو تأخير التدريب ‪-‬‬ ‫‪‬‬ ‫اختالف محتوى المنظومة عن أي منظومة سابقة)‬ ‫‪15‬‬ ‫جدولة المشروع البرمجي‪Software project scheduling‬‬ ‫‪ ‬الطريقة المتبعة لتقدير جدولة المشروع هي‬ ‫‪ ‬التقدير الزمني الكلي(‪+ 10%‬بسبب المشاكل التي قد تحدث(‬ ‫‪ ‬تستخدم االيام واحيانا الساعة كوحدة قياس للزمن الختالف أيام العمل من دولة الخرى‪.‬‬ ‫‪ o‬إرشادات بخصوص تقدير الوقت‪:‬‬ ‫‪.1‬تحديد المهام التي تتم على التوازي والتي ال تعتمد على بعضها‪.‬‬ ‫‪.2‬استعمال أقل قوة عاملة‪.‬‬ ‫‪.3‬األخذ في االعتبار أن بعض األعضاء قد يتركون العمل‪.‬‬ ‫‪.4‬تحديد مواصفات المتطلبات والتصميم يتطلب ضعف وقت كتابة شفرة البرنامج‪.‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪8‬‬ ‫‪5/19/2022‬‬ ‫أدوات الجدولة‪Tools of scheduling‬‬ ‫‪ ‬تفترض أدوات الجدولة أن المشروع يتكون من مجموعة نشاطات أو مهام بعضها‬ ‫ينجز بالتوازي واالخر يعتمد على بعض‪.‬‬ ‫‪ ‬أدوات الجدولة المستخدمة في التخطيط ومتابعة المشروع هي‪:‬‬ ‫مخطط غانت‪Gantt Chart‬‬ ‫‪.1‬‬ ‫‪.2‬طريق المسار الحرج‪Critical Path Method CPM‬‬ ‫‪.3‬اداة برت ‪Project Evaluation & Review Technique PERT‬‬ ‫مخطط غانت‪Gantt Chart‬‬ ‫‪‬عرفت هذا المخطط باسم جانت نسبه إلى ‪ ، Henery L. Gantt‬يعتبر مخطط‬ ‫جانت أداة تخطيط رسومية تستخدم المحور االفقي لزمن التنفيذ والمحور‬ ‫الراسي ألسماء النشاطات‪.‬‬ ‫‪18‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪9‬‬ ‫‪5/19/2022‬‬ ‫‪Gantt Chart for Software Launch Project‬‬ ‫طريق المسار الحرج‪Critical path method CPM‬‬ ‫‪ ‬اسلوب المسار الحرج هو احدى الطرق المستخدمة لحساب المدة الزمنية التي يستغرقها المشروع ‪.‬‬ ‫و هي أداة تخطيط على شكل شبكة تبين المهام أو النشاطات والمدة الزمنية المقدرة لكل مهمة‪.‬‬ ‫‪ ‬المسار الحرج هو الذي يضم مجموعة من االنشطة و المهام و الذي يستغرق وقت اكثر من‬ ‫كافة المسارات في الشبكة‪٠‬‬ ‫هو أطول وقت إلنهاء المشروع‪.‬اي هو اطول مسار من البداية الى النهاية ‪ ،‬وهذا المسار يبين‬ ‫‪‬‬ ‫أقصر مدة زمنية ممكنة إلنهاء المشروع ‪.‬‬ ‫‪20‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪10‬‬ ‫‪5/19/2022‬‬ ‫طريق المسار الحرج‪Critical path method CPM‬‬ ‫‪ ‬تتلخص هذه الطريقة في تحديد كل المسارات الممكنة من البداية الى النهاية وجمع المدة الزمنية لكل‬ ‫منها‪ ،‬ثم نحدد أطول هذه المسارات‪.‬‬ ‫طريقة المسار الحرج تتكون من االوقات االتية ‪:-‬‬ ‫‪.1‬الوقت المبكر‪Earliest Event Time :‬‬ ‫هو ابكر وقت او اقرب وقت يمكن ان يبدأ فيه نشاط معين‪ ،‬ويحدث ذلك عندما تنتهي من جميع األنشطة‬ ‫السابقة‪.‬‬ ‫)‪EEj=EEi + D OR EEj=Max(EEi +D‬‬ ‫‪21‬‬ ‫‪.2‬الوقت المتأخر‪Latest Event Time :‬‬ ‫يمثل أخر وقت يمكن أن يحدث حدث معين و يبدا نشاط معين دون التأثير على الجدول الزمني‬ ‫للمشروع‪.‬‬ ‫حيث نبدا دائما بوضع الوقت المتأخر للنشاط يساوي الوقت المبكر له‪.‬‬ ‫)‪LEi=LEj - D OR LEi=Min(LEj - D‬‬ ‫‪.3‬الوقت الفائض‪Slack Time :‬‬ ‫‪-‬الوقت الفائض ‪ :‬ويتمثل في الفرق بين الوقت المبكر والمتأخر ‪ ،‬اما بالنسبة لألنشطة التي ال يوجد‬ ‫لديها وقت فائض أي ان الفرق بين االوقات المبكرة والمتأخرة يساوي صفرا فأنها تعد انشطة حرجة‪.‬‬ ‫‪S =LE -EE‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪11‬‬ ‫‪5/19/2022‬‬ ‫حقائق ومفاهيم خاطئة‪Facts & misconceptions‬‬ ‫‪ ‬المفهوم الخاطئ‪: 3‬كلما اسرعت في كتابة الشفرة انهيت المشروع بسرعة‪.‬‬ ‫الحقيقة‪ :‬هذا صحيح في البرامج الصغيرة أما البرامج المعقدة كلما أسرعت أبطأت في إنهائه‪.‬‬ ‫‪ ‬المفهوم الخاطئ‪: 4‬ما دمت لم تنفذ البرنامج ال يمكن تقييم الجودة‪.‬‬ ‫الحقيقة ‪:‬‬ ‫ كل مرحلة في المشروع لها تقييم جودة‪.‬‬ ‫ عملية االختبار تتم في جميع المراحل‪.‬كلما اكتشفت الخطأ مبكرا توفر الوقت والمال‪.‬‬ ‫‪ ‬المفهوم الخاطئ‪: 5‬المطلوب تسليم مشروع برمجي (برنامج ) بدون أخطاء‪.‬‬ ‫الحقيقة‪ :‬البرنامج ليس اال جزء من البرمجيات والمتمثلة في‬ ‫ البرنامج ‪-‬البيانات ‪-‬التوثيق‬ ‫‪33‬‬ ‫‪References‬‬ ‫‪Mobile App Development Gantt Chart‬‬ ‫‪https://app.instagantt.com/shared/s/WYVfQXGQnahFsD1nAYwD/latest‬‬ ‫‪https://www.projectengineer.net/3-simple-gantt-chart-examples/‬‬ ‫‪Lect2_Fall2020‬‬ ‫‪17‬‬

Use Quizgecko on...
Browser
Browser