مقرر هندسة البرمجيات 20204 PDF
Document Details
Uploaded by Deleted User
20204
أ. هاجر رافع
Tags
Summary
هذا المقرر يقدم مقدمة إلى هندسة البرمجيات، ويغطي المفاهيم الرئيسية في هذا المجال مع التركيز على أهمية هندسة البرمجيات. يتضمن الفصل مقدمة عن مفهوم هندسة البرمجيات و أهميتها في العصر الرقمي.
Full Transcript
الفصل األول : مقدمة إلى هندسة البرمجيات . مفهومهندسة البرمجيات. تعريف هندسة البرمجيات. أهم...
الفصل األول : مقدمة إلى هندسة البرمجيات . مفهومهندسة البرمجيات. تعريف هندسة البرمجيات. أهمية هندسة البرمجيات : نبذة تاريخية عن هندسة البرمجيات العوامل التي ساعدت على تبني مفهوم هندسة البرمجيات: هندسة البرمجيات وعلوم الحاسوب: هندسة البرمجيات والبرمجة . الفرق بين البرمجة و هندسة البرمجيات . من يشارك في هذه عملية صناعة البرمجيات ؟ مفهومهندسةالبرمجيات الفصلاألول مقدمة إلى هندسة البرمجيات : في عصر الثورة الرقمية الذي نعيشه اليوم ،أصبح للبرمجيات دور محوري في جميع جوانب الحياة. من األنظمة التي تدير العمليات اليومية في المؤسسات الكبرى ،إلى التطبيقات البسيطةالتينستخدمها على هواتفنا الذكية ،تعد البرمجيات المحرك األساسي الذي يربط بين التكنولوجيا واحتياجات اإلنسان المتزايدة.ومع هذا التوسع الهائل في استخدام البرمجيات ،ظهرت تحديات جديدة تتعلق بطرق تطويرها وضمان جودتها ،مما أدى إلى ظهور مجالهندسةالبرمجياتكحقلعلميمتخصصيهدف إلى التعامل مع هذه التحديات بطرق علمية ومنهجية. هندسة البرمجيات ليست مجرد كتابة أكواد أو تصميم واجهات ،بل هي عملية متكاملة تجمع بين الفن والعلم لتحقيق برمجيات ذات جودة عالية يمكن االعتماد عليها. نشأت هندسة البرمجيات كاستجابة للحاجة إلى تحسين طرق تطوير البرمجيات في ستينيات القرن الماضي ،عندما أصبح من الواضح أن الطرق التقليدية في البرمجة لم تعد كافية للتعامل مع األنظمة البرمجية الكبيرة والمعقدة.منذ ذلك الوقت ،تطور هذا المجال بشكل كبير ليشمل مجموعة واسعة من المبادئ والنظريات والتقنيات التي تتيح للمطورين تصميم أنظمة برمجية معقدة بشكل منظم ودقيق. فهندسة البرمجيات ليست فقط وسيلة إلنشاء برمجيات تعمل،بلهيوسيلةإلنشاءبرمجياتتقدمقيمة حقيقية للمستخدمين ،وتلبي احتياجاتهم الحالية والمستقبلية بكفاءة وفعالية. مع تطور التكنولوجيا ،ازدادت أهمية هندسة البرمجيات بشكل كبير ،حيث أصبح من الضروري أن تكون البرمجيات أكثر كفاءة وأماًن اواستدامةوأنيكوندقيًقا،خالًيامناألخطاء،وسهلالصيانة.لذا، ال يقتصر دور مهندسي البرمجياتعلىبناءاألنظمةفقط،بليمتدإلىالتأكدمنأنهذهاألنظمةتظل فعالة مع مرور الوقت. إعداد:أ.هاجررافع 1 مفهومهندسةالبرمجيات الفصلاألول مفهومهندسة البرمجيات: هندسة البرمجيات هي العلم الذي يهتم بتصميم وبناء وصيانة أنظمة البرمجيات.تخيل أنك مهندس معماري تقوم بتصميم مبنى ،فمهندس البرمجيات يقوم بنفس الشيء تقريًبا ،لكنه يبني "مباني" رقمية. هذه المباني الرقمية هي التطبيقات والبرامج التي نستخدمها يومًيا ،من تطبيقات الهواتف الذكية إلى مواقع الويب المعقدة. تعريف هندسة البرمجيات: ووفقًالمعهدالهندسةالكهربائيةواإللكترونيةIEEE،فإنهندسةالبرمجياتهي: ” هي الفرع الهندسي املختص باستخدام الطرق املنهجية والقابلة للقياس ،من أجل تطوير وتشغيل وصيانة البرامج.أي أنها علم تطبيق الهندسة في مجال البرامج “. -أما بالنسبة لتعريف هندسة البرمجيات الصادر عن اجتماع لجنة حلف شمال األطلسي (الناتو NATO) ،فقد وضعه عالم الحاسوب األلماني فريديرخ باور F،وهوينصعلىأن: riederichBauer ” هندسة البرمجيات هي عملية بناء واستخدام املبادئ الهندسية املعروفة من أجل الحصول على برنامٍج اقتصادّي ،والذي يتميز بكونه موثوق ويعمل بكفاءة على اآلالت الحقيقية”. إعداد:أ.هاجررافع 2 مفهومهندسةالبرمجيات الفصلاألول أهمية هندسة البرمجيات : تعتبر هندسة البرمجيات من المجاالت الحيوية في عالم التكنولوجيا الحديثة ،حيث تلعب دوًر ا أساسًيا في تطوير البرمجيات بشكل منظم وفعال.فيما يلي بعض النقاط التي توضح أهمية هندسة البرمجيات: 1.تحسين جودة البرمجيات :تساهم هندسة البرمجيات في ضمان أن تكون البرامج خالية من األخطاء ،مما يعزز من موثوقيتها وكفاءتها. 2.توفير الوقت والتكاليف :تسهم العمليات المنهجية في تقليل الوقت المستغرق في تطوير البرمجيات ،مما يؤدي إلى تقليل التكاليف المرتبطة بالتصميم والتطوير. 3.تلبية احتياجات المستخدمين :من خالل تحليل المتطلباتوفهماحتياجاتالمستخدمين،تضمن هندسة البرمجيات أن تلبي الحلول المطورة توقعات العمالء وتحقق أهدافهم. 4.تعزيز التعاون بين الفرق :تشجع هندسة البرمجيات على استخدام أدوات وتقنيات تسهل التعاون بين المطورين والمصممين ومديري المشاريع.هذا التعاون يعزز من فعالية العمل الجماعي ويؤدي إلى نتائج أفضل . 5.التكيف مع التغيرات :تساعد هندسة البرمجيات في بناء أنظمة مرنة يمكن تعديلها بسهولة لتلبية االحتياجات المتغيرة. إعداد:أ.هاجررافع 3 مفهومهندسةالبرمجيات الفصلاألول نبذة تاريخية عن هندسة البرمجيات: استخدمت هندسة البرمجيات كمفهوٍم نظرّي من حين آلخر في أواخر الخمسينات وبداية الستينات من القرن الماضي.أما االستخدام الّر سمي األول لهذا الُم صطلح فكان في مؤتمٍر ُع قد من قبل اللجنة العلمية فيمنظمةحلفشمالاألطلسي1968حولالبرمجياتوقدأخذهذاالمصطلحباالنتشارمنذ ذلك الحين والقى اهتمامًا متزايدًا في نواحي ُم ختلفة.عقد المؤتمر لمعالجة ما ُيعرف بـ أزمة S) حيث ان مع تطور الحواسیب بدأت تظھر لغات البرمجة البرمجيات ( oftware Crisis المختلفة و انظمة التشغیل البسیطة واستمر ھذا التطور في وتیرة متسارعة حتى وصلنا إلى أن ظھرت مشكلة جدیدة وھي ما نسمیھا ازمة البرمجیات و كان من اسباب ظهور هذه االزمةالعوامل التالية: العوامل التي ساعدت على تبني مفهوم هندسة البرمجيات: 1.عدم استخدام منهجية في التفكير عند بناء البرمجيات مما أدى إلى ظهور أخطاء كثيرة خالل عملية بناء وصيانة البرمجيات. 2.وبالتالي أصبحت البرمجيات تحتاج إلى وقٍت كبير لتطويرها ولصيانتها 3.البرمجيات كانت ذات كفاءة ضعيفة في إنجاز الوظائف المطلوبة و فعالية منخفضة فضًال عن عدم تلبية كافة الُمتطلبات بالشكل الكامل. 4.التقدم السريع في التقنيات المادية للحواسيب. 5.الطلب المتزايد على البرمجيات الكبيرة والمعقدة. 6.ارتفاع تكاليف صناعة البرمجيات مقارنة مع المكونات المادية للحاسوب. إعداد:أ.هاجررافع 4 مفهومهندسةالبرمجيات الفصلاألول هندسة البرمجيات وعلوم الحاسوب: تعتبر هندسة البرمجيات وعلوم الحاسوب من المجاالت المتشابهة والتي غالًبا ما يتم الخلط بينهما، ولكن هناك فروق جوهرية بينهما. علومالحاسوب(ComputerScience) التركيز على النظرية :يهتم علوم الحاسوب بدراسة األسس النظرية للحوسبة ،مثل الخوارزميات ،بنية الحاسوب ،نظريات الحوسبة ،والذكاء االصطناعي. األبحاث والتطوير :يركز علماء الحاسوب على إجراء األبحاث وتطوير تقنيات جديدة ،مثل تطوير لغات برمجة جديدة أو خوارزميات أكثر كفاءة. المسائل النظرية :يهتمون بفهم كيفية عمل الحاسوب على المستوى النظري ،ودراسة حدود الحوسبة. هندسةالبرمجيات(SoftwareEngineering) التركيز على التطبيق :تهتم هندسة البرمجيات بتطبيق المبادئ النظرية لعلوم الحاسوب لبناء أنظمة برمجية عملية. التصميم والتطوير :يركز مهندسو البرمجيات على تصميم وبناء وتشغيل وصيانة أنظمة البرمجيات. الجانب العملي :يهتمون بجعل البرامج تعمل بشكل جيد وموثوق به ،وتلبية احتياجات المستخدمين. للتوضيح بشكل أبسط: علماء الحاسوب هم مثل الفيزيائيين الذين يدرسون قوانين الطبيعة ،بينما مهندسو البرمجيات هم مثل المهندسين المدنيين الذين يستخدمون هذه القوانين لبناء المباني. علوم الحاسوب تهتم بكيفية عمل األشياء ،بينما هندسة البرمجيات تهتم بكيفية بناء األشياء. مثال: عالم الحاسوب :قد يعمل على تطوير خوارزمية جديدة لتصنيف البيانات. مهندس برمجيات :قد يستخدم هذه الخوارزمية لبناء نظام توصية لعمالء متجر إلكتروني. إعداد:أ.هاجررافع 5 مفهومهندسةالبرمجيات الفصلاألول هندسة البرمجيات والبرمجة : لدراسة هندسة البرمجيات يجب التعرف علي مصطلحات مهمه و هي : البرمجيات Software :هي مجموعةمنالتعليماتواألوامرالتيُتستخدملتوجيهأجهزةالكمبيوتر ألداء مهام محددة.ُتعتبر البرمجيات جزًءا أساسًيا من مكونات الكمبيوتر ،حيثاليمكنللجهازالعمل بكفاءة دون وجود برامج تديره وتساعده في تنفيذ العمليات المختلفة. البرمجة :هي عملية كتابة تعليمات وأوامر لجهاز الكمبيوتر أو أي جهاز قابل للبرمجة ،بهدف توجيهه وإعالمه بكيفية التعامل مع البيانات أو تنفيذ سلسلة من األعمال المطلوبة. ُتعتبر البرمجة وسيلة للتواصل بين البشر (المبرمج) واآللة (الجهاز)،حيثيتماستخداملغاتبرمجة معينة لكتابة هذه التعليمات. الفرق بين البرمجة و هندسة البرمجيات : تعتبر البرمجة وهندسة البرمجيات من المفاهيم األساسية في تطوير البرمجيات ،ولكنهناكاختالفات جوهرية بينهما.فيما يلي توضيح لهذه الفروق: هندسة البرمجيات البرمجة المعيار فرع من فروع الهندسة يركز على تطوير عملية كتابة الكود المصدر للبرامج. التعريف البرمجيات بشكل شامل. تشملجميعجوانبتطويرالبرمجيات،بمافي تركز على كتابة التعليمات البرمجية النطاق ذلك التخطيط والتصميم. فقط. تتضمن تحليل المتطلبات ،التصميم ،التطوير، جزء من عملية تطوير البرمجيات. العملية االختبار ،والصيانة. المهارات تتطلب مهارات تقنية في لغات البرمجة.تتطلب مزيًج ا من المهارات التقنية واإلدارية. المطلوبة إنشاء نظام برمجي متكامل يلبي احتياجات إنتاج كود يعمل بشكل صحيح. األهداف المستخدمين. يمكن القول إن البرمجة هي جزء أساسي من هندسة البرمجيات ،ولكنها تركز فقط على كتابة الكود بينما تشمل هندسة البرمجيات جميع جوانب تطوير البرامج بشكل شامل ومنظم. إعداد:أ.هاجررافع 6 مفهومهندسةالبرمجيات الفصلاألول من يشارك في هذه عملية صناعة البرمجيات ؟ Thehumaninsoftwareengineering…….Stackholders المشاركون في عملية صناعة البرنامج ،عادة ما يندرجون تحت ثالث مجموعات: 1.الزبونCustomer:وهوالشركة(أوالشخص)الممولةلمشروعتطويرالبرنامجالمطلوب (الذين يدفعون لشراء البرمجية) 2.المستخدم User :الشخص (أو مجموعة االشخاص ) الذي سوف يقوم فعال باستعمال البرنامج ،والتعامل معه مباشرة. 3.المطور Developer :وهو الشركة (أو الشخص) الذي سوف يقوم بتطوير او تصميم البرمجية للزبون. الشكل التالي يظهر العالقة بين الفئات الثالثة السابقة: إعداد:أ.هاجررافع 7 الفصلالثاني دورةحياةتطويرالبرمجيات(SDLC): مقدمة إلى دورة حياة تطوير البرمجيات تعريف دورة حياة تطوير البرمجيات . أهمية دورة حياة تطوير البرمجيات. مراحل دورة حياة تطوير البرمجيات. أنماط دورةالحياة(نماذجدورةالحياة) LifecycleModel: تعريف نمط دورة الحياة . العالقة بين نمط دورة الحياة ودورة حياة البرمجيات. دورنمطدورةالحياةفيتنفيذSDLC. أهم أنماط دورة الحياة في تطوير البرمجيات. عوامل اختيار النموذج المناسب لتطوير البرمجيات. نموذجالشالل(االنحداري)WaterfallModel مراحل نموذج الشالل. مميزات نموذج الشالل. عيوب نموذج الشالل. متى يستخدم نموذج الشالل؟ نموذجالتطویرالتزایدي………IncrementalDevelopmentModel.…. تعريف نموذج التطوير التزايدي . الخطوات األساسية في نموذج التطویر المتزاید. مزايا النموذج التزايدي. عيوب النموذج التزايدي. متى نستخدم النموذج التزايدي؟ أمثلة على المشاريع التي تناسب النموذج التزايدي. مثال عملي على تطبيق النموذج التزايدي. نموذجالتطوراالرتقائي…DevelopmentEvolutionary.. تعريف نموذج التطوير االرتقائي . الخطوات األساسية في نموذج التطوير االرتقائي. مزايا نموذج التطوير اإلرتقائي. عيوب نموذج التطوير اإلرتقائي. متى نستخدم النموذج اإلرتقائي؟ أمثلة على المشاريع التي تناسب النموذج االرتقائي . مثال عملي على تطبيق النموذج االرتقائي . دورةحياةتطويرالبرمجيات الفصلالثاني دورة حياة تطوير البرمجيات (SoftwareDevelopmentLifeCycle……SDLC) مقدمةإلىدورةحياةتطويرالبرمجيات(SDLC) في عالم التقنية الحديث ،أصبحت البرمجيات عنصًر ا أساسًيا في مختلف القطاعات ،بدًءا من إدارة األعمال وصوًال إلى التطبيقات الشخصية.لضمان إنتاج برمجيات فعالةوعاليةالجودةتلبياحتياجات المستخدمين ،ظهرت الحاجة إلى اتباع عملية منهجية ومنظمة ُتعرف باسم دورة حياة تطوير ). البرمجيات( SDLC تعتبر دورة حياة تطوير البرمجيات نهج ُمحدد يوجه عملية تطوير البرمجيات من البداية وحتى النهاية.تساعد في تخطيط وتصميم وتنفيذ واختبار وصيانة البرمجيات بشكل يضمن تحقيق األهداف بأقل تكلفة وبأعلى جودة وفي الوقت المحدد. تعتمددورةحياةتطويرالبرمجياتعلىتقسيمعمليةالتطويرإلىمراحلرئيسية،كلمنهاتلعبدوًر ا مهًما في ضمان نجاح المشروع.يشمل ذلك تحليل احتياجات المستخدمين ،تخطيط الحلول التقنية، تصميم النظام ،تطوير الشيفرة البرمجية ،اختبار المنتج ،ومن ثم نشره وصيانته. تعتبر SDLCحجر الزاويةأليمشروعبرمجيناجح،حيثتقدماألدواتوالعملياتالالزمةللتغلب على التحديات التقنية وضمان تحقيق نتائج مرضية لجميع األطراف المعنية. تعريف دورة حياة تطوير البرمجيات : إعداد:أ.هاجررافع 9 دورةحياةتطويرالبرمجيات الفصلالثاني أهمية دورة حياة تطوير البرمجيات: 1.تعد أساس لتخطيط مشروع التطوير ،وجدولته ،وتقدير تكاليفه. 2.توفر إطار عمل لألنشطة ومخرجات المشروع. 3.تساعد على تتبع المشروع ومراقبته. 4.تقدم تخطيط واضح حول آلية تطوير المشروع ،ألصحاب المصلحة والمعنين به. 5.تحسين العالقات مع العمالء. 6.التقليل من المخاطر التي قد يتعرض لها المشروع. مراحل دورة حياة تطوير البرمجيات: تمر دورة حياة تطوير البرمجيات (SDLC) بعدة مراحل أساسية ،حيث تهدفكلمرحلةإلىتحقيق أهداف معينة باستخدام أدوات وتقنيات محددة.و هذه المراحل هي (:سيتم دراسة معظم المراحلة الحقُا). (Planning) 1.مرحلةالتخطيط 2.تحليلالمتطلبات(RequirementsAnalysis) (Design) 3.التصميم (Implementation) 4.مرحلةالتنفيذ (Testing) 5.االختبار (Deployment) 6.التنفيذ إعداد:أ.هاجررافع 9 أنماطدورةالحياة الفصلالثاني أنماط دورةالحياة(نماذجدورةالحياة)………LifecycleModel.……. تعريفنمطدورةالحياة(LifecycleModel): هو إطار عمل يحدد المراحل المختلفة التي يمر بها منتج أومشروعأونظامخاللحياته.ُيستخدمفي العديد من المجاالت ،مثل تطوير البرمجيات ،وإدارة المشاريع ،والهندسة ،وإدارة المنتجات. دورةحياةالبرمجيات(SoftwareDevelopmentLifecycle-SDLC): هي العملية الفعلية لتطوير البرمجيات ،حيثتمربعدةمراحلمتتابعةمنتخطيطوتحليلوتصميمو تنفيذ. العالقة بين نمط دورة الحياة ودورة حياة البرمجيات: هي عالقةتكامل،حيثيعتبرنمطدورةالحياة إطارالعملأوالمنهجيةالتييتممنخاللهاتنفيذدورة حياة البرمجيات.بمعنى أن دورة حياة البرمجيات ُتدار وُتنفذ باستخدام نموذج معين من نماذج دورة الحياة (مثل الشاللي ،الرشيق ،أو الحلزوني و التزايدي و غيره). " دورة حياة البرمجيات تطبيقًا عمليًا لنمط دورة الحياة في مجال تطوير البرمجيات". العالقة في نقاط مختصرة: نمط دورة الحياة = اإلطار النظري (المنهجية). دورة حياة البرمجيات =التطبيق العملي(التطبيق). نمط دورة الحياة يحددكيفية تنظيم وتنفيذ دورة حياةالبرمجيات. إعداد:أ.هاجررافع 10 أنماطدورةالحياة الفصلالثاني دورنمطدورةالحياةفيتنفيذSDLC: يوفرنمطدورةالحياةاإلرشاداتالالزمةلتنظيموتنفيذالمراحلSDLCوذلكبتحديدالتالي: ترتيب المراحل. كيفية االنتقال بينها. إمكانية تكرار المراحل أو تنفيذها مرة واحدة. درجة المرونة للتكيف مع التغيرات. العالقة بشكل عملي:عند البدء بمشروع تطوير برمجيات،يكون لديك قائمة بالمراحل (دورة حياة البرمجيات). السؤال هو :كيف ستنظم هذه المراحل؟هنا يأتي دور نمطدورة الحياة ليحدد: هل ستقوم بتنفيذ المراحل مرة واحدة (كما في الشاللي) أم تكرارها؟ هل ستعمل على تسليم المنتج بشكل تدريجي؟ هل ستضع تركيًز ا كبيًر ا على تقليل المخاطر (كما في الحلزوني)؟ أهم أنماط دورة الحياة في تطوير البرمجيات: هناك عدة أنماط أو نماذج شائعة لدورة الحياة في مجال تطوير البرمجيات تختلف بناًء على طبيعة املشروع ومتطلباته،كل منها يناسب أنواًع ا معينة من املشاريع ومتطلبات العمل.فيما يلي (في هذا الفصل سيتم دراسة بعضمن هذه النماذج ). أبرز هذه النماذج: 1.النموذجالشاللي(WaterfallModel). 2.النموذجالحلزوني(SpiralModel). 3.النموذجالرشيق(AgileModel). 4.النموذجالتزايدي (IncrementalModel). 5.النموذجاإلرتقائي(EvolutionaryModel). 6.نموذجV-Model. 7.نموذجDevOps. عوامل اختيار النموذج المناسب لتطوير البرمجيات: اختيار نموذج تطوير البرمجيات يعتمد على عدد من العوامل الرئيسية التي تتعلق بطبيعة المشروع، وبيئة العمل ،واحتياجات العميل.فيما يلي أهم العوامل المؤثرة: 6.املخاطراملحتملة. 1.وضوحاملتطلبات 7.امليزانية. 2.حجماملشروع 8.التكنولوجيااملستخدمة. 3.الجدولالزمني 9.صيانةالبرمجيات. 4.تفاعلالعمالء 10.تحليلاملوارداملتاحة. 5.خبرةالفريق إعداد:أ.هاجررافع 11 أنماطدورةالحياة الفصلالثاني نموذجالشالل(االنحداري)WaterfallModel هو أحد النماذج التقليدية المستخدمة في دورة حياة تطوير البرمجيات .يتميز هذا النموذج بترتيب مراحل تطوير البرمجيات بشكل خطي ومتسلسل ،حيث يجب إكمال كل مرحلة قبل االنتقال إلى المرحلة التالية.ويعتبر من أوائل نماذج تطوير البرمجيات. مراحل نموذج الشالل: إعداد:أ.هاجررافع 12 أنماطدورةالحياة الفصلالثاني مميزات نموذج الشالل: 1.نموذج سهل الفهم و التطبيق. 2.المراحل تكتمل وتعالج مرحلة تلو االخرى. 3.مالءمة المشاريع ذات المتطلبات الثابتة. 4.وضوح املراحل يسهل التخطيط وإدارة املشروع. 5.ينتج عن هذا النموذج وثائق تفصيلية لكل مرحلة ،مما يسهل عملية المتابعة والتسليم. عيوب نموذج الشالل: 1.عدم مرونة حيث ال يسمح بالعودة إلى المراحل السابقة بسهولة. 2.صعوبة التغييرعلى المتطلبات بعد البدء في المراحل الالحقة. 3.تؤدي عملية االختبار التي تتم في نهاية التطوير إلى اكتشاف األخطاء متأخًر ا. 4.أي تأخير في مرحلة يؤثر على جميع المراحل التالية. 5.عدم رؤية المنتج النهائي حتى المرحلة األخيرة. متى يستخدم نموذج الشالل؟ 1.المتطلبات الواضحة والثابتة:ُيفضل استخدامه عندما تكونالمتطلبات محددة وثابتة منذ البداية. 2.المشاريع الصغيرة والمتوسطة :مناسب للمشاريع التي يمكنإدارتها بسهولة . 3.البيئات المستقرة:ُيستخدم في البيئات التي ال تتطلبتغييرات متكررة في المتطلبات. 4.التعليم والتدريب:يستخدم لتعليم المفاهيم األساسيةلتطوير البرمجيات بسبب طبيعته التسلسلية. 5.صيانة األنظمة القديمة:فعال في تحديث األنظمة المستقرةدون الحاجة إلى تغييرات كبيرة. إعداد:أ.هاجررافع 13 أنماطدورةالحياة الفصلالثاني نموذجالتطویرالتزایدي………IncrementalDevelopmentModel.…. تعريف نموذج التطوير التزايدي :المعروف أيًضا باسمالنموذج التزايدي هوهو نهج لتطوير البرمجيات ,يعتمد هذا النموذج على تقسيم المشروع إلى أجزاء صغيرة ُتسمى إصدارات أو زيادات(Increments)يكونكلإصدارعبارةعنجزءمنالنظاميعملبشكلمستقل حيث يتم تطوير كل جزء بشكل مستقل وإصداره كمنتج وظيفي جزئي ثم يتم إضافة كل إصدار جديد فوق اإلصدارات السابقة حتى يكتمل النظام بالكامل. إعداد:أ.هاجررافع 14 أنماطدورةالحياة الفصلالثاني الخطوات األساسية في نموذج التطویر المتزاید: 1.جمع املتطلبات: في المرحلة األولى ،يتم جمع وتحليل المتطلبات الرئيسية للبرنامج.تعمل هذه المتطلبات كأساس ُيعتمد عليه في المراحل التالية من التطوير. 2.تخطيط التصميم: بعد جمع المتطلبات ،يتم وضع خطة تصميم للزيادة األولى.يشمل ذلك إعداد المخططات والنماذج المعمارية للنظام ،وتحديد أولويات الميزات. 3.تطوير الزيادة األولى: يتم بناء الزيادة األولى التي تشمل الوظائف األساسية المحددةُ.تعتبر هذه الزيادة المنتج األساسي الذي يمكن تقديمه للمستخدمين. 4.اختبار الزيادة: ُتجرى اختبارات شاملة للتأكد من أن الزيادة تعمل كما هو متوقع وتلبي المتطلبات المحددة.يتم اكتشاف األخطاء وتصحيحها في هذه المرحلة. 5.تسليم الزيادة: بعد اجتياز االختبارات بنجاح ،يتم تسليم الزيادة األولى للمستخدمين ،مما يسمح لهم بتجربتها وتقديم التغذية الراجعة. 6.تطوير الزيادات التالية: بناًء على التغذية الراجعة ،يتم تطوير الزيادات التالية مع إضافة ميزات جديدة وتحسينات بناًء على احتياجات المستخدمين. تتكرر هذه العملية لكل زيادة جديدة حتى يتم استيفاء جميع المتطلبات المحددة للنظام. 7.الصيانة والتكيف: يجب أن تكون الفرق مستعدة للتكيف مع أي تغييرات في المتطلبات خالل كل دورة تطوير. تحسين بعد كل زيادة ،تتم مراجعة النظام وتحليل األداء لتحسين الكفاءة والجودة. إعداد:أ.هاجررافع 15 أنماطدورةالحياة الفصلالثاني مزايا النموذج التزايدي: 1.مرونة عالية:يمكن إدخال تغييرات على المتطلبات أثناءالتطوير دون تأثير كبير. 2.تقليل المخاطر:يسمح بالتعرف على األخطاء والمشكالتفي اإلصدارات األولى وتصحيحها. 3.تقليل وقت التطوير:عبر تقسيم المشروع إلى إصدارات أصغر،يمكن تقليل وقت التطوير. 4.تحسين بالتغذية الراجعة:يمكن للعميل تقديم مالحظاتمستمرة بعد كل إصدار ،مما يحسن من جودة المنتج. 5.تحسين الكفاءة:يسمح لفريق التطوير بالتركيز على جزءصغير من المشروع في كل مرة، مما يقلل من التعقيد. 6.اإلصدار المبكر للوظائف الجزئية:يسمح بإصدار مبكر لنسخةأساسية عاملة من البرنامج، حتى وإن لم تكن جميع الميزات مكتملةُ.يعتبر ذلك مفيًد ا للحصول على مالحظات المستخدمين وتلبية االحتياجات الفورية. عيوب النموذج التزايدي: 1.زيادة التكلفة:قد يكون مكلًفا بسبب االختبارات والتوثيقالمتكرر لكل إصدار. 2.صعوبة التخطيط:يتطلب تقسيًما دقيًقا للوظائف وتخطيًط اجيًد ا لإلصدارات. 3.صعوبة التكامل :قد تنشأ مشكالت أثناء دمج اإلصداراتالمختلفة مع بعضها. 4.االعتماد على المتطلبات األولية:إذا كانت المتطلباتاألولية غير واضحة أو غير مكتملة ،قد يؤدي ذلك إلى تغييرات كبيرة. 5.عبء الصيانة المستمر:مع إضافة اإلصدارات التزايدية تصبح عملية الصيانة والتحديث معقدة. إعداد:أ.هاجررافع 16 أنماطدورةالحياة الفصلالثاني 6.رؤية محدودة للمنتج النهائي:ألن البرنامج ُيطور تدريجًيا ،قد ال تتوفر رؤية شاملة للمنتج النهائي حتى تدمج جميع اإلصدارات التزايدية ،و قد يؤدي هذا إلى تناقضات في التصميم والوظائف العامة. متى نستخدم النموذج التزايدي؟ ُيستخدمالنموذج التزايديفي تطوير البرمجيات فيالحاالت التالية: 1.متطلبات واضحة إلى حد كبير:إذا كانت المتطلبات األساسيةللنظام محددة ،لكن يمكن إضافة ميزات جديدة بشكل تدريجي الحًقا. 2.الحاجة إلى تسليم سريع:عندما يكون هناك ضغط لتسليمجزء من النظام للعمالء بسرعة، بحيث يمكنهم االستفادة من الوظائف األساسية فوًر ا. 3.األنظمة الكبيرة والقابلة للتقسيم:إذا كان النظام كبيًر اوُيمكن تقسيمه إلى وحدات مستقلة ،يتم تطوير كل وحدة على حدة وتسليمها بشكل تدريجي. 4.المرونة مع التغييرات المحدودة:إذا كانت هناك تغييراتمتوقعة ولكنها ليست جذرية أو مستمرة. 5.إدارة المخاطر على مستوى الوحدات:إذا كان المشروع يتطلبإدارة المخاطر من خالل تطوير واختبار أجزاء صغيرة بدًال من التعامل مع النظام ككل. أمثلة على المشاريع التي تناسب النموذج التزايدي: تطبيقات الويب المعقدة:مثل تطبيقات التجارة اإللكترونية،حيث يمكن تطوير ميزات جديدة مثل عربة التسوق ،ودفع الفواتير ،وتتبع الطلبات بشكل تدريجي. تطبيقات الهاتف المحمول:حيث يمكن إضافة ميزات جديدةمثل الرسائل المباشرة، والمجموعات ،واأللعاب بشكل تدريجي. نظمة التعليم اإللكتروني :يبدأ بإتاحة الوصول إلى الدروساألساسية ،ثم إضافة ميزات مثل تتبع تقدم الطالب ،اختبارات تفاعلية ،وتكامل مع األدوات األخرى تدريجًيا. إعداد:أ.هاجررافع 17 أنماطدورةالحياة الفصلالثاني مثال عملي على تطبيق النموذج التزايدي: (تطوير نظام حجز تذاكر الطيران عبر اإلنترنت) المرحلة األولى :التخطيط وتحديد المتطلبات تحديد المتطلبات األساسية للنظام ،مثل حجز التذاكر ،البحث عن الرحالت ،وعرض األسعار. تقسيم النظام إلى أجزاء (إصدارات تزايدية) ،مثل: 1.البحث عن الرحالت. 2.حجز التذاكر. 3.الدفع اإللكتروني. 4.إدارة الحسابات. المرحلة األولى من التطوير (اإلصدار األول) :البحث عن الرحالت يتم تطوير وظيفة أساسية تسمح للمستخدمين بالبحث عن الرحالت بناًء على الوجهة والتاريخ. يتم تسليم هذه النسخة مبكًر ا الختبارها والحصول على مالحظات من المستخدمين. المرحلة الثانية من التطوير (اإلصدار الثاني) :حجز التذاكر بناًء على مالحظات المستخدمين من اإلصدار األول ،يتم تحسين وظيفة البحث وإضافة إمكانية حجز التذاكر مباشرًة. يتم دمج هذه الميزة مع النسخة السابقة. المرحلة الثالثة من التطوير (اإلصدار الثالث) :الدفع اإللكتروني إضافة ميزة الدفع اإللكتروني لتوفير طريقة آمنة للمستخدمين لدفع ثمن التذاكر. يتم تحسين واجهة المستخدم لتوفير تجربة سلسة. المرحلة الرابعة من التطوير (اإلصدار الرابع) :إدارة الحسابات تطوير ميزة إدارة الحسابات ،مثل تسجيل الدخول ،وإدارة الحجز ،وحفظ تفاصيل الدفع. يتم دمج جميع المزايا السابقة في النظام الكامل. النتيجة النهائية: يتم تطوير النظام بشكل تدريجي حتى يكتمل ويشمل جميع الميزات المطلوبة ،مع تقليل إعداد:أ.هاجررافع 18 أنماطدورةالحياة الفصلالثاني المخاطر وزيادة رضا المستخدمين بفضل التغذية الراجعة المستمرة. نموذجالتطوراالرتقائي…DevelopmentEvolutionary..: تعريف نموذج التطوير االرتقائي :هو نهج في تطوير البرمجياتيركز على تحسين النظام من خالل تكرار مستمر وتدريجي.حيث يتم تطوير النظام من خالل سلسلة من اإلصدارات المتتالية، مع إضافة ميزات جديدة وتحسين الميزات الموجودة . و يتيح هذا النموذج للفرق تطوير النظم بشكل تدريجي ،مما يسمح بإجراء تعديالت وتحسينات بناًء على التغذية الراجعة من المستخدمين في كل مرحلة. كيف يعمل النموذج؟ 1.البدءبالوصفاألولي Outlinedescription:يتمتحديدفكرةعامةعنالنظامالمراد تطويره. S:يتمتحويلالفكرةالعامةإلىمواصفاتتفصيليةتحدد 2.تحديدالمواصفات pecification كل ما يتعلق بالنظام. إعداد:أ.هاجررافع 19 أنماطدورةالحياة الفصلالثاني 3.التطويراألوليDevelopment:يتمبناءاإلصداراألوليللنظامبناًء علىالمواصفات. 4.التقييموالتحسينValidation:يتمتقييماإلصداراألولي،وإجراءالتعديالتالالزمة،ثم يتم تطوير إصدار جديد محسن. 5.التكرار:يتم تكرار الخطوتين السابقتين حتى يتم الحصولعلى اإلصدار النهائي للنظام الذي يلبيجميعالمتطلباتInitialversion,Intermediateversions,Finalversion. الخطوات األساسية في نموذج التطوير االرتقائي: 1.جمعالمتطلبات:تبدأ العملية بجمع متطلبات و تحديداالحتياجات األساسية التي يجب أن يلبيها النظام. 2.تطوير نموذج أولي:بناء نموذج أولي للنظام بناًء علىالمتطلبات المجمعة.هذا النموذج يمكن أن يكون بسيًط ا ويعكس الوظائف األساسية للنظام. 3.التغذية الراجعة:يتم تقديم النموذج األولي للمستخدمينللحصول على مالحظاتهم.تساعد هذه التغذية الراجعة في تحديد أي تغييرات أو تحسينات مطلوبة. 4.التكرار:بناًء على التغذية الراجعة ،يتم تعديل النموذجاألولي وتطويره بشكل تدريجي.يتكرر هذا العملية عدة مرات حتى يتم الوصول إلى المنتج النهائي. 5.االختبار:ُتجرى اختبارات شاملة للنظام في كل دورة مندورات التطوير لضمان أن التغييرات ال تؤثر سلًبا على الوظائف الموجودة. 6.النشر والصيانة:بعد االنتهاء من تطوير النظام واختباره،يتم نشره للمستخدمين النهائيين.تستمر الصيانة والتحديثات بناًء على مالحظات المستخدمين وأي مشاكل تظهر بعد النشر. إعداد:أ.هاجررافع 20 أنماطدورةالحياة الفصلالثاني مزايا نموذج التطوير اإلرتقائي: 1.التطوير المستمر:ُيبنى النظام بشكل تدريجي حيث يتمتحسينه وتطويره مع كل دورة بناء جديدة.يتم توسيع النظام ليشمل وظائف إضافية بناًء على مالحظات المستخدمين. 2.التفاعل المستمر مع العميل:يتم تسليم نماذج أولية منالنظام بشكل مستمر للعميل لتقييمه وتقديم مالحظات وهذا يساعد في التأكد من أن النظام يتوافق مع احتياجات العميل بشكل تدريجي. 3.توفيرنموذجأوليسريع:يتمتسليمنموذجأولييعملجزئًيا(Prototype)فيوقتمبكر من دورة التطوير ،مما يسمح للمستخدمين بمراجعة المنتج بشكل مبكر. 4.التكيف مع التغييرات:يمكن هذا النموذج من التكيف بسرعةمع التغيرات في المتطلبات. يمكن إدخال التعديالت بسهولة بناًء على متطلبات جديدة أو التغذية الراجعة من العميل. 5.إدارة المخاطر:يوفرآلية فعالة إلدارة المخاطر ،حيثيمكن معالجة المشكالت أو األخطاء أثناء التطوير الفعلي بدًال من اكتشافها في مراحل متأخرة. عيوب نموذج التطوير اإلرتقائي: 1.إدارة التغييرات المعقدة:قد يؤدي إضافة متطلبات جديدةبشكل متكرر إلى توسع غير مرغوب فيه في نطاق المشروع وصعوبة التحكم فيه. 2.عدم وضوح المتطلبات:المتطلبات غير محددة بشكل جيد فيالبداية تؤثر على فعالية التطوير. 3.تكرار العمل:إعادة العمل على بعض األجزاء بسبب التغييراتالمتكررة يمكن أن يؤدي إلى استهالك الوقت والموارد. 4.تأثير التكرار على المستخدمين:التحديثات المتكررة قدُتزعج المستخدمين وتسبب لهم ارتباًك ا. 5.تحديات التدريب والدعم:قد يحتاج الموظفون إلى تدريبإضافي مع كل ميزة جديدة ،مما قد إعداد:أ.هاجررافع 21 أنماطدورةالحياة الفصلالثاني يسبب صعوبة في االستخدام. 6.تكاليف الصيانة المرتفعة:التغييرات المتكررة قد تزيدمن تكاليف الصيانة. 7.تأثير على الجدول الزمني:التغييرات المستمرة قد تؤديإلى تأخير في تنفيذ المشروع. متى نستخدم النموذج اإلرتقائي؟ 1.المتطلبات غير الواضحة أو غير المكتملة:إذا لم تكنالمتطلبات واضحة أو من المحتمل أن تتغير بشكل كبير خالل فترة التطوير.أو يستطيع العميل تحديد المواصفات النهائية للنظام منذ البداية. 2.التطوير التدريجي:إذا كان المشروع يتطلب مرونة عاليةمع تحسينات مستمرة بناًء على تغذية راجعة دائمة. 3.األنظمة التجريبية أو المبتكرة:عند تطوير أنظمة جديدةتماًما أو معقدة ،حيث يمكن االستفادة من النماذج األولية لتحليل وفهم االحتياجات الحقيقية. 4.التفاعل المستمر مع العميل:عندما يكون التعاون المستمرمع العميل مطلوًبا لضمان توافق المنتج مع توقعاته. 5.إدارة المخاطر:إذا كانت هناك حاجة لتقليل المخاطر عبرمراجعة كل نسخة محسنة قبل االنتقال إلى المرحلة التالية. أمثلة على المشاريع التي تناسب هذا النموذج: مشاريع الذكاء االصطناعي:حيث يتطلب التطوير المستمرلتحسين األداء والتعلم من البيانات الجديدة. مشاريع البرمجيات مفتوحة المصدر:حيث يساهم العديد منالمطورين في تطوير النظام بشكل مستمر. تطبيقات الواقع االفتراضي والمعزز:حيث تتطلب التطويرالمستمر لتحسين تجربة المستخدم. إعداد:أ.هاجررافع 22 أنماطدورةالحياة الفصلالثاني مثال عملي على تطبيق النموذج االرتقائي : ( تطوير تطبيق ذكاء اصطناعي للترجمة الفورية) لنفترض أننا نريد تطوير تطبيق للترجمة الفورية.في البداية،قد نبدأ بإنشاء نموذج بسيط قادر على ترجمة جمل قصيرة من لغة إلى أخرى.بعد ذلك ،يمكننا تحسين هذا النموذج تدريجًيا عن طريق: 1.إطالق النسخة األساسية:تحتوي على الميزات األساسيةمثل القواميس والتمارين البسيطة. يتم جمع مالحظات المستخدمين في هذه المرحلة لتحديد نقاط القوة والضعف. 2.جمع المزيد من البيانات:كلما زادت كمية البيانات التييتم تدريب النموذج عليها ،كلما أصبح أدائه أفضل.يمكن جمع هذه البيانات من مصادر مختلفة مثل الكتب والمقاالت ومواقع الويب. 3.تحسين الخوارزميات:يمكن تجربة خوارزميات مختلفة لتحسيندقة الترجمة. 4.إضافة ميزات جديدة:يمكن إضافة ميزات جديدة مثل الترجمةالصوتية ،أو الترجمة بين لغات متعددة ،أو الترجمة المتخصصة في مجال معين. 5.تكيف النموذج مع المستخدمين:يمكن تحسين النموذج بناًء على مالحظات المستخدمين واقتراحاتهم. كيف يمكن تطبيق النموذج االرتقائي في هذا المشروع؟ اإلصدار األول:إصدار بسيط للترجمة بين لغتين شائعتين. اإلصدار الثاني:إضافة ميزة الترجمة الصوتية وتحسيندقة الترجمة. اإلصدار الثالث:إضافة دعم للغات جديدة وتحسين واجهةالمستخدم. اإلصدار الرابع:إضافة ميزة الترجمة المتخصصة في المجالالطبي. إعداد:أ.هاجررافع 23 أنماطدورةالحياة الفصلالثاني مقارنة بين النموذج التزايدي والنموذج االرتقائي في تطوير البرمجيات النموذج االرتقائي النموذج التزايدي (EvolutionaryDevelopment) (IncrementalModel) المعيار تقسيم المشروع إلى أجزاء صغيرة بناء نماذج أولية وتحسينها بشكل متكرر. التركيز (إصدارات). تسليم نماذج مبدئية سريعة وتطويرها تسليم كل إصدار مكتمل بشكل طريقة التسليم مستقل (مرحلة تلو األخرى) حتى تدريجًي ا حتى الوصول إلى المنتج النهائي. اكتمال النظام بالكامل. مرونة عالية. مرونة معتدلة. المرونة يدعم التغييرات المستمرة أثناء يسمح بتغييرات محدودة التطوير. في اإلصدارات المستقبلية فقط. يتطلب تخطيًط ا مبدئًي ا فقط مع تحسين يتطلب تخطيًط ا دقيًقا للمتطلبات التخطيط الخطة تدريجًي ا بناًء على المالحظات األساسية في البداية لتحديد والنتائج. اإلصدارات. مناسب جًدا عند تغير المتطلبات بشكل يدعم التغييرات الجزئية في تعامل مع تغيرات متكرر خالل التطوير. المراحل المستقبلية . المتطلبات إعداد:أ.هاجررافع 24 أنماطدورةالحياة الفصلالثاني إعداد:أ.هاجررافع 25 الفصل الثالث: مرحلةالتخطيطPlanning(.): أهداف مرحلة التخطيط. أهمية مرحلة التخطيط. الخطوات األساسية في مرحلة التخطيط. األدوات المستخدمة في مرحلة التخطيط. كيفية تحديد األهداف . مواصفات الهدف الجيد. تحليلالمتطلبات(RequirementsAnalysis): خطوات تحليل المتطلبات. أهمية تحليل المتطلبات. أنـــواع المتـــطلبات. جمع المتطلبات. الطرق المستخدمة في جمع المتطلبات عوامل يجب مراعاتها عند جمع المتطلبات. وثيقة متطلبات النظام . محتويات متطلبات النظام. أهمية وثيقة متطلبات النظام . معايير وثيقة متطلبات النظام. مرحلةالتخطيط الفصلالثالث مرحلةالتخطيط الفصلالثالث 1.مرحلةالتخطيط………………………………………Planning(..) مرحلةالتخطيطهيأولىمراحلدورةحياةتطويرالبرمجيات(SDLC)وهيتعتبراألساسالذي يبنى عليه المشروع البرمجي بأكمله.تهدف هذه المرحلة إلى تحديد أهداف المشروع بوضوح ،وفهم احتياجات العميل ،وتحديد جميع التفاصيل الرئيسية التي ستؤثر على التطوير والتسليم. أهداف مرحلة التخطيط: 1.تحديد نطاق المشروع بوضوح :فهم ما يحتاجه العميل بدقةوتحديد الحدود الخاصة بالمشروع. 2.وضع خطة تنفيذية :رسم خطة مفصلة للمشروع ،بما في ذلكالخطوات الرئيسية ،الجداول الزمنية ،وتقديرات الميزانية. 3.تحديد المخاطر والتحديات :توقع أي عقبات قد تواجه المشروعوالتخطيط للتغلب عليها. 4.تخصيص الموارد الالزمة :تحديد الموارد البشرية والماديةالمطلوبة وتوزيع األدوار والمسؤوليات. 5.التواصل مع جميع األطراف المعنية :إشراك جميع األطرافالمهمة من عمالء ومدراء وفرق العمل لضمان وضوح الرؤية وتوحيد األهداف. أهمية مرحلة التخطيط: تعد مرحلة التخطيط أساًسا قوًيا لنجاح المشروع ألنها: توفر وضوًح ا كاماًل حول المتطلبات ،الميزانية ،والجداول الزمنية. 1. تضمن توافق رؤية المشروع بين جميع األطراف. 2. تقلل من المخاطر المحتملة. 3. تجعل عملية التطوير سلسة وتقلل من احتمالية حدوث تغييرات كبيرة أو مشاكل غير متوقعة