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

Summary

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

Full Transcript

‫‬‪‭‬‬ ‫‬‮الفصل األول ‪:‬‬ ‫‬‮ ‬‮مقدمة إلى هندسة البرمجيات ‪.‬‬ ‫‬‮ ‬‮مفهوم‬‮هندسة البرمجيات‪.‬‬ ‫‬‮تعريف هندسة البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮ ‬‮أهم...

‫‬‪‭‬‬ ‫‬‮الفصل األول ‪:‬‬ ‫‬‮ ‬‮مقدمة إلى هندسة البرمجيات ‪.‬‬ ‫‬‮ ‬‮مفهوم‬‮هندسة البرمجيات‪.‬‬ ‫‬‮تعريف هندسة البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮ ‬‮أهمية هندسة البرمجيات ‪:‬‬ ‫‬‮نبذة تاريخية عن هندسة البرمجيات‬ ‫‬‮‬ ‫‬‮العوامل التي ساعدت على تبني مفهوم هندسة البرمجيات‪:‬‬ ‫‬‮‬ ‫‬‮ ‬‮هندسة البرمجيات وعلوم الحاسوب‪:‬‬ ‫‬‮ ‬‮هندسة البرمجيات والبرمجة ‪.‬‬ ‫‬‮ ‬‮الفرق بين البرمجة و هندسة البرمجيات ‪.‬‬ ‫‬‮من يشارك في هذه عملية صناعة البرمجيات ؟‬ ‫‬‮‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮مقدمة إلى هندسة البرمجيات ‪:‬‬ ‫‬‮في ‬‮عصر ‬‮الثورة ‬‮الرقمية ‬‮الذي ‬‮نعيشه ‬‮اليوم‪‬ ،‬‮أصبح ‬‮للبرمجيات ‬‮دور ‬‮محوري ‬‮في ‬‮جميع ‬‮جوانب ‬‮الحياة‪.‬‬ ‫‬‮من ‬‮األنظمة ‬‮التي ‬‮تدير ‬‮العمليات ‬‮اليومية ‬‮في ‬‮المؤسسات ‬‮الكبرى‪‬ ،‬‮إلى ‬‮التطبيقات ‬‮البسيطة‬‮التي‬‮نستخدمها‬ ‫‬‮على ‬‮هواتفنا ‬‮الذكية‪‬ ،‬‮تعد ‬‮البرمجيات ‬‮المحرك ‬‮األساسي ‬‮الذي ‬‮يربط ‬‮بين ‬‮التكنولوجيا ‬‮واحتياجات ‬‮اإلنسان‬ ‫‬‮المتزايدة‪‬.‬‮ومع ‬‮هذا ‬‮التوسع ‬‮الهائل ‬‮في ‬‮استخدام ‬‮البرمجيات‪‬ ،‬‮ظهرت ‬‮تحديات ‬‮جديدة ‬‮تتعلق ‬‮بطرق‬ ‫‬‮تطويرها ‬‮وضمان ‬‮جودتها‪‬ ،‬‮مما ‬‮أدى ‬‮إلى ‬‮ظهور ‬‮مجال‬‮هندسة‬‮البرمجيات‬‮كحقل‬‮علمي‬‮متخصص‬‮يهدف‬ ‫‬‮إلى التعامل مع هذه التحديات بطرق علمية ومنهجية‪.‬‬ ‫‬‮هندسة ‬‮البرمجيات ‬‮ليست ‬‮مجرد ‬‮كتابة ‬‮أكواد ‬‮أو ‬‮تصميم ‬‮واجهات‪‬ ،‬‮بل ‬‮هي ‬‮عملية ‬‮متكاملة ‬‮تجمع ‬‮بين ‬‮الفن‬ ‫‬‮والعلم لتحقيق برمجيات ذات جودة عالية يمكن االعتماد عليها‪.‬‬ ‫‬‮نشأت ‬‮هندسة ‬‮البرمجيات ‬‮كاستجابة ‬‮للحاجة ‬‮إلى ‬‮تحسين ‬‮طرق ‬‮تطوير ‬‮البرمجيات ‬‮في ‬‮ستينيات ‬‮القرن‬ ‫‬‮الماضي‪‬ ،‬‮عندما ‬‮أصبح ‬‮من ‬‮الواضح ‬‮أن ‬‮الطرق ‬‮التقليدية ‬‮في ‬‮البرمجة ‬‮لم ‬‮تعد ‬‮كافية ‬‮للتعامل ‬‮مع ‬‮األنظمة‬ ‫‬‮البرمجية ‬‮الكبيرة ‬‮والمعقدة‪‬.‬‮منذ ‬‮ذلك ‬‮الوقت‪‬ ،‬‮تطور ‬‮هذا ‬‮المجال ‬‮بشكل ‬‮كبير ‬‮ليشمل ‬‮مجموعة ‬‮واسعة ‬‮من‬ ‫‬‮المبادئ والنظريات والتقنيات التي تتيح للمطورين تصميم أنظمة برمجية معقدة بشكل منظم ودقيق‪.‬‬ ‫‬‮فهندسة ‬‮البرمجيات ‬‮ليست ‬‮فقط ‬‮وسيلة ‬‮إلنشاء ‬‮برمجيات ‬‮تعمل‪‬،‬‮بل‬‮هي‬‮وسيلة‬‮إلنشاء‬‮برمجيات‬‮تقدم‬‮قيمة‬ ‫‬‮حقيقية للمستخدمين‪ ،‬وتلبي احتياجاتهم الحالية والمستقبلية بكفاءة وفعالية‪.‬‬ ‫‬‮مع ‬‮تطور ‬‮التكنولوجيا‪‬ ،‬‮ازدادت ‬‮أهمية ‬‮هندسة ‬‮البرمجيات ‬‮بشكل ‬‮كبير‪‬ ،‬‮حيث ‬‮أصبح ‬‮من ‬‮الضروري ‬‮أن‬ ‫‬‮تكون ‬‮البرمجيات ‬‮أكثر ‬‮كفاءة ‬‮وأماًن ا‬‮واستدامة‬‮و‬‮أن‬‮يكون‬‮دقيًقا‪‬،‬‮خالًيا‬‮من‬‮األخطاء‪‬،‬‮وسهل‬‮الصيانة‪‬.‬‮لذا‪،‬‬ ‫‬‮ال ‬‮يقتصر ‬‮دور ‬‮مهندسي ‬‮البرمجيات‬‮على‬‮بناء‬‮األنظمة‬‮فقط‪‬،‬‮بل‬‮يمتد‬‮إلى‬‮التأكد‬‮من‬‮أن‬‮هذه‬‮األنظمة‬‮تظل‬ ‫‬‮فعالة مع مرور الوقت‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭1‬‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮ ‬‮مفهوم‬‮هندسة البرمجيات‪:‬‬ ‫‬‮هندسة ‬‮البرمجيات ‬‮هي ‬‮العلم ‬‮الذي ‬‮يهتم ‬‮بتصميم ‬‮وبناء ‬‮وصيانة ‬‮أنظمة ‬‮البرمجيات‪‬.‬‮تخيل ‬‮أنك ‬‮مهندس‬ ‫‬‮معماري ‬‮تقوم ‬‮بتصميم ‬‮مبنى‪‬ ،‬‮فمهندس ‬‮البرمجيات ‬‮يقوم ‬‮بنفس ‬‮الشيء ‬‮تقريًبا‪‬ ،‬‮لكنه ‬‮يبني ‬‮"مباني" ‬‮رقمية‪.‬‬ ‫‬‮هذه ‬‮المباني ‬‮الرقمية ‬‮هي ‬‮التطبيقات ‬‮والبرامج ‬‮التي ‬‮نستخدمها ‬‮يومًيا‪‬ ،‬‮من ‬‮تطبيقات ‬‮الهواتف ‬‮الذكية ‬‮إلى‬ ‫‬‮مواقع الويب المعقدة‪.‬‬ ‫‬‮ ‬‮تعريف هندسة البرمجيات‪:‬‬ ‫‬‮و‬‮وفقًا‬‮لمعهد‬‮الهندسة‬‮الكهربائية‬‮واإللكترونية‬‪‬‭IEEE‬‮‪‬،‬‮فإن‬‮هندسة‬‮البرمجيات‬‮هي‪:‬‬ ‫‬‮” هي الفرع الهندسي املختص باستخدام الطرق املنهجية والقابلة‬ ‫‬‮للقياس‪ ،‬من أجل تطوير وتشغيل وصيانة البرامج‪.‬أي أنها علم تطبيق‬ ‫‬‮الهندسة في مجال البرامج “‪.‬‬ ‫‬‮‪‬ -‬‮أما ‬‮بالنسبة ‬‮لتعريف ‬‮هندسة ‬‮البرمجيات ‬‮الصادر ‬‮عن ‬‮اجتماع ‬‮لجنة ‬‮حلف ‬‮شمال‬ ‫‬‮األطلسي ‬‮(الناتو ‬‪‬‭NATO‬‮)‪‬ ،‬‮فقد ‬‮وضعه ‬‮عالم ‬‮الحاسوب ‬‮األلماني ‬‮فريديرخ ‬‮باور‬ ‫‪‭F‬‮‪‬،‬‮وهو‬‮ينص‬‮على‬‮أن‬‮‪:‬‬ ‫‬‪‬ riederich‬‭Bauer‬‬ ‫‬‮” هندسة البرمجيات هي عملية بناء واستخدام املبادئ الهندسية‬ ‫‬‮املعروفة من أجل الحصول على برنامٍج اقتصادّي ‪ ،‬والذي يتميز بكونه‬ ‫‮‬موثوق ويعمل بكفاءة على اآلالت الحقيقية”‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭2‬‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮ ‬‮أهمية هندسة البرمجيات ‪:‬‬ ‫‬‮تعتبر ‬‮هندسة ‬‮البرمجيات ‬‮من ‬‮المجاالت ‬‮الحيوية ‬‮في ‬‮عالم ‬‮التكنولوجيا ‬‮الحديثة‪‬ ،‬‮حيث ‬‮تلعب ‬‮دوًر ا ‬‮أساسًيا‬ ‫‬‮في تطوير البرمجيات بشكل منظم وفعال‪.‬فيما يلي بعض النقاط التي توضح أهمية هندسة البرمجيات‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮تحسين ‬‮جودة ‬‮البرمجيات‬‮‪‬ :‬‮تساهم ‬‮هندسة ‬‮البرمجيات ‬‮في ‬‮ضمان ‬‮أن ‬‮تكون ‬‮البرامج ‬‮خالية ‬‮من‬ ‫‬‮األخطاء‪ ،‬مما يعزز من موثوقيتها وكفاءتها‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮توفير ‬‮الوقت ‬‮والتكاليف‬‮‪‬ :‬‮تسهم ‬‮العمليات ‬‮المنهجية ‬‮في ‬‮تقليل ‬‮الوقت ‬‮المستغرق ‬‮في ‬‮تطوير‬ ‫‬‮البرمجيات‪ ،‬مما يؤدي إلى تقليل التكاليف المرتبطة بالتصميم والتطوير‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮تلبية ‬‮احتياجات ‬‮المستخدمين‬‮‪‬ :‬‮من ‬‮خالل ‬‮تحليل ‬‮المتطلبات‬‮وفهم‬‮احتياجات‬‮المستخدمين‪‬،‬‮تضمن‬ ‫‬‮هندسة البرمجيات أن تلبي الحلول المطورة توقعات العمالء وتحقق أهدافهم‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮تعزيز ‬‮التعاون ‬‮بين ‬‮الفرق‬‮‪‬ :‬‮تشجع ‬‮هندسة ‬‮البرمجيات ‬‮على ‬‮استخدام ‬‮أدوات ‬‮وتقنيات ‬‮تسهل‬ ‫‬‮التعاون ‬‮بين ‬‮المطورين ‬‮والمصممين ‬‮ومديري ‬‮المشاريع‪‬.‬‮هذا ‬‮التعاون ‬‮يعزز ‬‮من ‬‮فعالية ‬‮العمل‬ ‫‬‮الجماعي ويؤدي إلى نتائج أفضل ‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮التكيف ‬‮مع ‬‮التغيرات‪‬ :‬‮تساعد ‬‮هندسة ‬‮البرمجيات ‬‮في ‬‮بناء ‬‮أنظمة ‬‮مرنة ‬‮يمكن ‬‮تعديلها ‬‮بسهولة‬ ‫‬‮لتلبية االحتياجات المتغيرة‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭3‬‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮ ‬‮نبذة تاريخية عن هندسة البرمجيات‪:‬‬ ‫‬‮استخدمت ‬‮هندسة ‬‮البرمجيات ‬‮كمفهوٍم ‬‮نظرّي ‬‮من ‬‮حين ‬‮آلخر ‬‮في ‬‮أواخر ‬‮الخمسينات ‬‮وبداية ‬‮الستينات‬ ‫‬‮من ‬‮القرن ‬‮الماضي‪.‬أما ‬‮االستخدام ‬‮الّر سمي ‬‮األول ‬‮لهذا ‬‮الُم صطلح ‬‮فكان ‬‮في ‬‮مؤتمٍر ‮‬ُع قد ‬‮من ‬‮قبل ‬‮اللجنة‬ ‫‬‮العلمية ‬‮في‬‮منظمة‬‮حلف‬‮شمال‬‮األطلسي‬‪‬‭1968‬‮حول‬‮البرمجيات‬‮وقد‬‮أخذ‬‮هذا‬‮المصطلح‬‮باالنتشار‬‮منذ‬ ‫‬‮ذلك ‬‮الحين ‬‮والقى ‬‮اهتمامًا ‬‮متزايدًا ‬‮في ‬‮نواحي ‬‮ُم ختلفة‪.‬عقد ‬‮المؤتمر ‬‮لمعالجة ‬‮ما ‮‬ُيعرف ‬‮بـ ‬‮أزمة‬ ‫‪‭S‬‮) ‬‮حيث ‬‮ان ‬‮مع ‬‮تطور ‬‮الحواسیب ‬‮بدأت ‬‮تظھر ‬‮لغات ‬‮البرمجة‬ ‫‬‮البرمجيات ‬‮(‬‪‬ oftware‬ ‭Crisis‬‬ ‫‬‮المختلفة ‬‮و ‬‮انظمة ‬‮التشغیل ‬‮البسیطة ‬‮واستمر ‬‮ھذا ‬‮التطور ‬‮في ‬‮وتیرة ‬‮متسارعة ‬‮حتى ‬‮وصلنا ‬‮إلى ‬‮أن‬ ‫‬‮ظھرت ‬‮مشكلة ‬‮جدیدة ‬‮وھي ‬‮ما ‬‮نسمیھا ‬‮ازمة ‬‮البرمجیات ‬‮و ‬‮كان ‬‮من ‬‮اسباب ‬‮ظهور ‬‮هذه ‬‮االزمة‬‮العوامل‬ ‫‬‮التالية‪:‬‬ ‫‬‮ ‬‮العوامل التي ساعدت على تبني مفهوم هندسة البرمجيات‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮عدم ‬‮استخدام ‬‮منهجية ‬‮في ‬‮التفكير ‬‮عند ‬‮بناء ‬‮البرمجيات ‬‮مما ‬‮أدى ‬‮إلى ‬‮ظهور ‬‮أخطاء ‬‮كثيرة ‬‮خالل‬ ‫‬‮عملية بناء وصيانة البرمجيات‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮وبالتالي أصبحت البرمجيات تحتاج إلى وقٍت كبير لتطويرها ولصيانتها‬ ‫‬‪‬‭3‬‮‪‬.‬‮البرمجيات ‬‮كانت ‬‮ذات ‬‮كفاءة ‬‮ضعيفة ‬‮في ‬‮إنجاز ‬‮الوظائف ‬‮المطلوبة ‬‮و ‬‮فعالية ‬‮منخفضة ‬‮فضًال ‬‮عن‬ ‫‬‮عدم تلبية كافة الُمتطلبات بالشكل الكامل‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮التقدم السريع في التقنيات المادية للحواسيب‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮الطلب المتزايد على البرمجيات الكبيرة والمعقدة‪.‬‬ ‫‬‪‬‭6‬‮‪‬.‬‮ارتفاع تكاليف صناعة البرمجيات مقارنة مع المكونات المادية للحاسوب‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭4‬‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮ ‬‮هندسة البرمجيات وعلوم الحاسوب‪:‬‬ ‫‬‮تعتبر ‬‮هندسة ‬‮البرمجيات ‬‮وعلوم ‬‮الحاسوب ‬‮من ‬‮المجاالت ‬‮المتشابهة ‬‮والتي ‬‮غالًبا ‬‮ما ‬‮يتم ‬‮الخلط ‬‮بينهما‪،‬‬ ‫‬‮ولكن هناك فروق جوهرية بينهما‪.‬‬ ‫‬‮علوم‬‮الحاسوب‬‮(‬‪‬‭Computer‬‭Science‬‮)‬ ‫‬‮ ‬‮التركيز ‬‮على ‬‮النظرية‪‬ :‬‮يهتم ‬‮علوم ‬‮الحاسوب ‬‮بدراسة ‬‮األسس ‬‮النظرية ‬‮للحوسبة‪‬ ،‬‮مثل‬ ‫‬‮الخوارزميات‪ ،‬بنية الحاسوب‪ ،‬نظريات الحوسبة‪ ،‬والذكاء االصطناعي‪.‬‬ ‫‬‮ ‬‮األبحاث ‬‮والتطوير‪‬ :‬‮يركز ‬‮علماء ‬‮الحاسوب ‬‮على ‬‮إجراء ‬‮األبحاث ‬‮وتطوير ‬‮تقنيات ‬‮جديدة‪‬ ،‬‮مثل‬ ‫‬‮تطوير لغات برمجة جديدة أو خوارزميات أكثر كفاءة‪.‬‬ ‫‬‮ ‬‮المسائل ‬‮النظرية‪‬ :‬‮يهتمون ‬‮بفهم ‬‮كيفية ‬‮عمل ‬‮الحاسوب ‬‮على ‬‮المستوى ‬‮النظري‪‬ ،‬‮ودراسة ‬‮حدود‬ ‫‬‮الحوسبة‪.‬‬ ‫‬‮هندسة‬‮البرمجيات‬‮(‬‪‬‭Software‬‭Engineering‬‮)‬ ‫‬‮ ‬‮التركيز ‬‮على ‬‮التطبيق‪‬ :‬‮تهتم ‬‮هندسة ‬‮البرمجيات ‬‮بتطبيق ‬‮المبادئ ‬‮النظرية ‬‮لعلوم ‬‮الحاسوب ‬‮لبناء‬ ‫‬‮أنظمة برمجية عملية‪.‬‬ ‫‬‮ ‬‮التصميم ‬‮والتطوير‪‬ :‬‮يركز ‬‮مهندسو ‬‮البرمجيات ‬‮على ‬‮تصميم ‬‮وبناء ‬‮وتشغيل ‬‮وصيانة ‬‮أنظمة‬ ‫‬‮البرمجيات‪.‬‬ ‫‬‮ ‬‮الجانب ‬‮العملي‪‬ :‬‮يهتمون ‬‮بجعل ‬‮البرامج ‬‮تعمل ‬‮بشكل ‬‮جيد ‬‮وموثوق ‬‮به‪‬ ،‬‮وتلبية ‬‮احتياجات‬ ‫‬‮المستخدمين‪.‬‬ ‫‬‮للتوضيح بشكل أبسط‪:‬‬ ‫‬‮ ‬‮علماء ‬‮الحاسوب ‬‮هم ‬‮مثل ‬‮الفيزيائيين ‬‮الذين ‬‮يدرسون ‬‮قوانين ‬‮الطبيعة‪‬ ،‬‮بينما ‬‮مهندسو ‬‮البرمجيات‬ ‫‬‮هم مثل المهندسين المدنيين الذين يستخدمون هذه القوانين لبناء المباني‪.‬‬ ‫‬‮ ‬‮علوم الحاسوب تهتم بكيفية عمل األشياء‪ ،‬بينما هندسة البرمجيات تهتم بكيفية بناء األشياء‪.‬‬ ‫‬‮مثال‪:‬‬ ‫‬‮ ‬‮عالم الحاسوب‪ :‬قد يعمل على تطوير خوارزمية جديدة لتصنيف البيانات‪.‬‬ ‫‬‮ ‬‮مهندس برمجيات‪ :‬قد يستخدم هذه الخوارزمية لبناء نظام توصية لعمالء متجر إلكتروني‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭5‬‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮هندسة البرمجيات والبرمجة ‪:‬‬ ‫‬‮‬ ‫‬‮لدراسة هندسة البرمجيات يجب التعرف علي مصطلحات مهمه و هي ‪:‬‬ ‫‬‮البرمجيات ‬‪‬‭Software‬‮‪‬ :‬‮هي ‬‮مجموعة‬‮من‬‮التعليمات‬‮واألوامر‬‮التي‮‬ُتستخدم‬‮لتوجيه‬‮أجهزة‬‮الكمبيوتر‬ ‫‬‮ألداء ‬‮مهام ‬‮محددة‪‬.‬‮ُتعتبر ‬‮البرمجيات ‬‮جزًءا ‬‮أساسًيا ‬‮من ‬‮مكونات ‬‮الكمبيوتر‪‬ ،‬‮حيث‬‮ال‬‮يمكن‬‮للجهاز‬‮العمل‬ ‫‬‮بكفاءة دون وجود برامج تديره وتساعده في تنفيذ العمليات المختلفة‪.‬‬ ‫‬‮البرمجة ‬‮‪‬ :‬‮هي ‬‮عملية ‬‮كتابة ‬‮تعليمات ‬‮وأوامر ‬‮لجهاز ‬‮الكمبيوتر ‬‮أو ‬‮أي ‬‮جهاز ‬‮قابل ‬‮للبرمجة‪‬ ،‬‮بهدف‬ ‫‬‮توجيهه وإعالمه بكيفية التعامل مع البيانات أو تنفيذ سلسلة من األعمال المطلوبة‪.‬‬ ‫‬‮ُتعتبر ‬‮البرمجة ‬‮وسيلة ‬‮للتواصل ‬‮بين ‬‮البشر ‬‮(المبرمج) ‬‮واآللة ‬‮(الجهاز)‪‬،‬‮حيث‬‮يتم‬‮استخدام‬‮لغات‬‮برمجة‬ ‫‬‮معينة لكتابة هذه التعليمات‪.‬‬ ‫‬‮الفرق بين البرمجة و هندسة البرمجيات ‪:‬‬ ‫‬‮تعتبر ‬‮البرمجة ‬‮وهندسة ‬‮البرمجيات ‬‮من ‬‮المفاهيم ‬‮األساسية ‬‮في ‬‮تطوير ‬‮البرمجيات‪‬ ،‬‮ولكن‬‮هناك‬‮اختالفات‬ ‫‬‮جوهرية بينهما‪.‬فيما يلي توضيح لهذه الفروق‪:‬‬ ‫‬‮هندسة البرمجيات‬ ‫‬‮البرمجة‬ ‫‬‮المعيار‬ ‫‬‮فرع ‬‮من ‬‮فروع ‬‮الهندسة ‬‮يركز ‬‮على ‬‮تطوير‬ ‫‬‮عملية كتابة الكود المصدر للبرامج‪.‬‬ ‫‬‮التعريف‬ ‫‬‮البرمجيات بشكل شامل‪.‬‬ ‫‬‮تشمل‬‮جميع‬‮جوانب‬‮تطوير‬‮البرمجيات‪‬،‬‮بما‬‮في‬ ‫‬‮تركز على كتابة التعليمات البرمجية‬ ‫‬‮النطاق‬ ‫‬‮ذلك التخطيط والتصميم‪.‬‬ ‫‬‮فقط‪.‬‬ ‫‬‮تتضمن ‬‮تحليل ‬‮المتطلبات‪‬ ،‬‮التصميم‪‬ ،‬‮التطوير‪،‬‬ ‫‬‮جزء من عملية تطوير البرمجيات‪.‬‬ ‫‬‮العملية‬ ‫‬‮االختبار‪ ،‬والصيانة‪.‬‬ ‫‬‮المهارات‬ ‫‬‮تتطلب مهارات تقنية في لغات البرمجة‪‬.‬‮تتطلب مزيًج ا من المهارات التقنية واإلدارية‪.‬‬ ‫‬‮المطلوبة‬ ‫‬‮إنشاء ‬‮نظام ‬‮برمجي ‬‮متكامل ‬‮يلبي ‬‮احتياجات‬ ‫‬‮إنتاج كود يعمل بشكل صحيح‪.‬‬ ‫‬‮األهداف‬ ‫‬‮المستخدمين‪.‬‬ ‫‬‮يمكن ‬‮القول ‬‮إن ‬‮البرمجة ‬‮هي ‬‮جزء ‬‮أساسي ‬‮من ‬‮هندسة ‬‮البرمجيات‪‬ ،‬‮ولكنها ‬‮تركز ‬‮فقط ‬‮على ‬‮كتابة ‬‮الكود‬ ‫‬‮بينما تشمل هندسة البرمجيات جميع جوانب تطوير البرامج بشكل شامل ومنظم‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭6‬‬ ‫‬‮مفهوم‬‮هندسة‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮األول‬ ‫‬‮ ‬‮من يشارك في هذه عملية صناعة البرمجيات ؟‬ ‫‬‪‭The‬‭human‬‭in‬‭software‬‭engineering‬‭…….Stack‬‭holders‬‬ ‫‬‮المشاركون في عملية صناعة البرنامج‪ ،‬عادة ما يندرجون تحت ثالث مجموعات‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮الزبون‬‪‬‭Customer‬‮‪‬:‬‮وهو‬‮الشركة‬‮(أو‬‮الشخص)‬‮الممولة‬‮لمشروع‬‮تطوير‬‮البرنامج‬‮المطلوب‬ ‫‬‮(الذين يدفعون لشراء البرمجية)‬ ‫‬‪‬‭2‬‮‪‬.‬‮المستخدم ‬‪‬‭User‬‮‪‬ :‬‮الشخص ‬‮(أو ‬‮مجموعة ‬‮االشخاص ‬‮) ‬‮الذي ‬‮سوف ‬‮يقوم ‬‮فعال ‬‮باستعمال‬ ‫‬‮البرنامج‪ ،‬والتعامل معه مباشرة‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮المطور ‬‪‬‭Developer‬‮‪‬ :‬‮وهو ‬‮الشركة ‬‮(أو ‬‮الشخص) ‬‮الذي ‬‮سوف ‬‮يقوم ‬‮بتطوير ‬‮او ‬‮تصميم‬ ‫‬‮البرمجية للزبون‪.‬‬ ‫‬‮الشكل التالي يظهر العالقة بين الفئات الثالثة السابقة‪:‬‬ ‫‬‪‭‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭7‬‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮دورة‬‮حياة‬‮تطوير‬‮البرمجيات‬‮(‬‪‬‭SDLC‬‮)‪:‬‬ ‫‬‮مقدمة إلى دورة حياة تطوير البرمجيات‬ ‫‬‮‬ ‫‬‮تعريف دورة حياة تطوير البرمجيات ‪.‬‬ ‫‬‮‬ ‫‬‮أهمية دورة حياة تطوير البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮مراحل دورة حياة تطوير البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮أنماط ‬‮دورة‬‮الحياة‬‮(نماذج‬‮دورة‬‮الحياة) ‬‪‬‭Lifecycle‬‭Model‬‮‪:‬‬ ‫‬‮تعريف نمط دورة الحياة ‪.‬‬ ‫‬‮‬ ‫‬‮العالقة بين نمط دورة الحياة ودورة حياة البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮دور‬‮نمط‬‮دورة‬‮الحياة‬‮في‬‮تنفيذ‬‪‬‭SDLC‬‮‪.‬‬ ‫‬‮‬ ‫‬‮أهم أنماط دورة الحياة في تطوير البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮عوامل اختيار النموذج المناسب لتطوير البرمجيات‪.‬‬ ‫‬‮‬ ‫‬‮نموذج‬‮الشالل‬‮(االنحداري)‬‪‭Waterfall‬‭Model‬‬ ‫‬‮ ‬‮مراحل نموذج الشالل‪.‬‬ ‫‬‮ ‬‮مميزات نموذج الشالل‪.‬‬ ‫‬‮ ‬‮عيوب نموذج الشالل‪.‬‬ ‫‬‮ ‬‮متى يستخدم نموذج الشالل؟‬ ‫‬‮نموذج‬‮التطویر‬‮التزایدي‬‮………‪‭Incremental‬‭DevelopmentModel‬.….‬‬ ‫‬‮ ‬‮تعريف نموذج التطوير التزايدي ‪.‬‬ ‫‬‮ ‬‮الخطوات األساسية في نموذج التطویر المتزاید‪.‬‬ ‫‬‮ ‬‮مزايا النموذج التزايدي‪.‬‬ ‫‬‮ ‬‮عيوب النموذج التزايدي‪.‬‬ ‫‬‮ ‬‮متى نستخدم النموذج التزايدي‬‮؟‬ ‫‬‮ ‬‮أمثلة على المشاريع التي تناسب النموذج التزايدي‪.‬‬ ‫‬‮ ‬‮مثال عملي على تطبيق النموذج التزايدي‪.‬‬ ‫‬‮نموذج‬‮التطور‬‮االرتقائي…‪‭Development‬‭Evolutionary‬..‬‬ ‫‬‮تعريف نموذج التطوير االرتقائي ‪.‬‬ ‫‬‮‬ ‫‬‮الخطوات األساسية في نموذج التطوير االرتقائي‪.‬‬ ‫‬‮‬ ‫‬‮مزايا نموذج التطوير اإلرتقائي‪.‬‬ ‫‬‮‬ ‫‬‮عيوب نموذج التطوير اإلرتقائي‪.‬‬ ‫‬‮‬ ‫‬‮متى نستخدم النموذج اإلرتقائي‬‮؟‬ ‫‬‮‬ ‫‬‮أمثلة على المشاريع التي تناسب النموذج االرتقائي ‪.‬‬ ‫‬‮‬ ‫‬‮مثال عملي على تطبيق النموذج االرتقائي ‪.‬‬ ‫‬‮‬ ‫‬‮دورة‬‮حياة‬‮تطوير‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮دورة حياة تطوير البرمجيات‬ ‫‬‮(‬‪‬‭Software‬‭Development‬‭Life‬‭Cycle……SDLC‬‮)‬ ‫‬‮ ‬‮مقدمة‬‮إلى‬‮دورة‬‮حياة‬‮تطوير‬‮البرمجيات‬‮(‬‪‬‭SDLC‬‮)‬ ‫‬‮في ‬‮عالم ‬‮التقنية ‬‮الحديث‪‬ ،‬‮أصبحت ‬‮البرمجيات ‬‮عنصًر ا ‬‮أساسًيا ‬‮في ‬‮مختلف ‬‮القطاعات‪‬ ،‬‮بدًءا ‬‮من ‬‮إدارة‬ ‫‬‮األعمال ‬‮وصوًال ‬‮إلى ‬‮التطبيقات ‬‮الشخصية‪‬.‬‮لضمان ‬‮إنتاج ‬‮برمجيات ‬‮فعالة‬‮وعالية‬‮الجودة‬‮تلبي‬‮احتياجات‬ ‫‬‮المستخدمين‪‬ ،‬‮ظهرت ‬‮الحاجة ‬‮إلى ‬‮اتباع ‬‮عملية ‬‮منهجية ‬‮ومنظمة ‬‮ُتعرف ‬‮باسم ‬‮دورة ‬‮حياة ‬‮تطوير‬ ‫‮)‮‪.‬‬ ‫‬‮البرمجيات‬‮(‬‪‬ ‬‭SDLC‬‬ ‫‬‮تعتبر ‬‮دورة ‬‮حياة ‬‮تطوير ‬‮البرمجيات ‬‮نهج ‬‮ُمحدد ‬‮يوجه ‬‮عملية ‬‮تطوير ‬‮البرمجيات ‬‮من ‬‮البداية ‬‮وحتى‬ ‫‬‮النهاية‪‬.‬‮تساعد ‬‮في ‬‮تخطيط ‬‮وتصميم ‬‮وتنفيذ ‬‮واختبار ‬‮وصيانة ‬‮البرمجيات ‬‮بشكل ‬‮يضمن ‬‮تحقيق ‬‮األهداف‬ ‫‬‮بأقل تكلفة وبأعلى جودة وفي الوقت المحدد‪.‬‬ ‫‬‮تعتمد‬‮دورة‬‮حياة‬‮تطوير‬‮البرمجيات‬‮على‬‮تقسيم‬‮عملية‬‮التطوير‬‮إلى‬‮مراحل‬‮رئيسية‪‬،‬‮كل‬‮منها‬‮تلعب‬‮دوًر ا‬ ‫‬‮مهًما ‬‮في ‬‮ضمان ‬‮نجاح ‬‮المشروع‪‬.‬‮يشمل ‬‮ذلك ‬‮تحليل ‬‮احتياجات ‬‮المستخدمين‪‬ ،‬‮تخطيط ‬‮الحلول ‬‮التقنية‪،‬‬ ‫‬‮تصميم النظام‪ ،‬تطوير الشيفرة البرمجية‪ ،‬اختبار المنتج‪ ،‬ومن ثم نشره وصيانته‪.‬‬ ‫‬‮تعتبر ‬‪‬ ‭SDLC‬‮حجر ‬‮الزاوية‬‮ألي‬‮مشروع‬‮برمجي‬‮ناجح‪‬،‬‮حيث‬‮تقدم‬‮األدوات‬‮والعمليات‬‮الالزمة‬‮للتغلب‬ ‫‬‮على التحديات التقنية وضمان تحقيق نتائج مرضية لجميع األطراف المعنية‪.‬‬ ‫‬‮ ‬‮تعريف دورة حياة تطوير البرمجيات ‪:‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭9‬‬ ‫‬‮دورة‬‮حياة‬‮تطوير‬‮البرمجيات‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮ ‬‮أهمية دورة حياة تطوير البرمجيات‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮تعد أساس لتخطيط مشروع التطوير‪ ،‬وجدولته‪ ،‬وتقدير تكاليفه‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮توفر إطار عمل لألنشطة ومخرجات المشروع‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮تساعد على تتبع المشروع ومراقبته‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮تقدم تخطيط واضح حول آلية تطوير المشروع‪ ،‬ألصحاب المصلحة والمعنين به‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮تحسين العالقات مع العمالء‪.‬‬ ‫‬‪‬‭6‬‮‪‬.‬‮التقليل من المخاطر التي قد يتعرض لها المشروع‪.‬‬ ‫‬‮‬‮مراحل دورة حياة تطوير البرمجيات‪:‬‬ ‫‬‮تمر ‬‮دورة ‬‮حياة ‬‮تطوير ‬‮البرمجيات ‬‮(‬‪‬‭SDLC‬‮) ‬‮بعدة ‬‮مراحل ‬‮أساسية‪‬ ،‬‮حيث ‬‮تهدف‬‮كل‬‮مرحلة‬‮إلى‬‮تحقيق‬ ‫‬‮أهداف معينة باستخدام أدوات وتقنيات محددة‪.‬و هذه المراحل هي ‪‬(:‬‮سيتم دراسة معظم المراحلة الحقُا‪).‬‬ ‫‬‮(‬‪‬‭Planning‬‮)‬ ‫‬‪‬‭1‬‮‪‬.‬‮مرحلة‬‮التخطيط‬ ‫‬‪‬‭2‬‮‪‬.‬‮تحليل‬‮المتطلبات‬‮(‬‪‬‭Requirements‬‭Analysis‬‮)‬ ‫‬‮(‬‪‬‭Design‬‮)‬ ‫‬‪‬‭3‬‮‪‬.‬‮التصميم‬ ‫‬‮(‬‪‬‭Implementation‬‮)‬ ‫‬‪‬‭4‬‮‪‬.‬‮مرحلة‬‮التنفيذ‬ ‫‬‮(‬‪‬‭Testing‬‮)‬ ‫‬‪‬‭5‬‮‪‬.‬‮االختبار‬ ‫‬‮(‬‪‬‭Deployment‬‮)‬ ‫‬‪‬‭6‬‮‪‬.‬‮التنفيذ‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭9‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮أنماط ‬‮دورة‬‮الحياة‬‮(نماذج‬‮دورة‬‮الحياة)………‪‭Lifecycle‬‭Model‬.…….‬‬ ‫‬‮ ‬‮تعريف‬‮نمط‬‮دورة‬‮الحياة‬‮(‬‪‬‭Lifecycle‬‭Model‬‮)‪:‬‬ ‫‬‮هو ‬‮إطار ‬‮عمل ‬‮يحدد ‬‮المراحل ‬‮المختلفة ‬‮التي ‬‮يمر ‬‮بها ‬‮منتج ‬‮أو‬‮مشروع‬‮أو‬‮نظام‬‮خالل‬‮حياته‪‬.‬‮ُيستخدم‬‮في‬ ‫‬‮العديد من المجاالت‪ ،‬مثل تطوير البرمجيات‪ ،‬وإدارة المشاريع‪ ،‬والهندسة‪ ،‬وإدارة المنتجات‪.‬‬ ‫‬‮دورة‬‮حياة‬‮البرمجيات‬‮(‬‪‬‭Software‬‭Development‬‭Lifecycle‬‭-‬‭SDLC‬‮)‪:‬‬ ‫‬‮هي ‬‮العملية ‬‮الفعلية ‬‮لتطوير ‬‮البرمجيات‪‬ ،‬‮حيث‬‮تمر‬‮بعدة‬‮مراحل‬‮متتابعة‬‮من‬‮تخطيط‬‮و‬‮تحليل‬‮و‬‮تصميم‬‮و‬ ‫‬‮تنفيذ‪.‬‬ ‫‬‮ ‬‮العالقة بين نمط دورة الحياة ودورة حياة البرمجيات‪:‬‬ ‫‬‮هي ‬‮عالقة‬‮تكامل‪‬،‬‮حيث‬‮يعتبر‬‮نمط‬‮دورة‬‮الحياة ‬‮إطار‬‮العمل‬‮أو‬‮المنهجية‬‮التي‬‮يتم‬‮من‬‮خاللها‬‮تنفيذ‬‮دورة‬ ‫‬‮حياة ‬‮البرمجيات‬‮‪‬.‬‮بمعنى ‬‮أن ‬‮دورة ‬‮حياة ‬‮البرمجيات ‮‬ُتدار ‬‮وُتنفذ ‬‮باستخدام ‬‮نموذج ‬‮معين ‬‮من ‬‮نماذج ‬‮دورة‬ ‫‬‮الحياة (مثل الشاللي‪ ،‬الرشيق‪ ،‬أو الحلزوني و التزايدي و غيره)‪.‬‬ ‫‬‮" دورة حياة البرمجيات تطبيقًا عمليًا لنمط دورة الحياة في مجال تطوير البرمجيات‪".‬‬ ‫‬‮العالقة في نقاط مختصرة‪:‬‬ ‫‬‮ ‬‮نمط دورة الحياة = اإلطار النظري (المنهجية)‪.‬‬ ‫‬‮ ‬‮دورة حياة البرمجيات =‬‮التطبيق العملي‬‮(التطبيق)‪.‬‬ ‫‬‮ ‬‮نمط دورة الحياة يحدد‬‮كيفية تنظيم وتنفيذ ‬‮دورة حياة‬‮البرمجيات‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭10‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮ ‬‮دور‬‮نمط‬‮دورة‬‮الحياة‬‮في‬‮تنفيذ‬‪‬‭SDLC‬‮‪:‬‬ ‫‬‮يوفر‬‮نمط‬‮دورة‬‮الحياة‬‮اإلرشادات‬‮الالزمة‬‮لتنظيم‬‮وتنفيذ‬‮المراحل‬‪‬‭SDLC‬‮و‬‮ذلك‬‮بتحديد‬‮التالي‬‮‪:‬‬ ‫‬‮ترتيب المراحل‪.‬‬ ‫‬‮‬ ‫‬‮كيفية االنتقال بينها‪.‬‬ ‫‬‮‬ ‫‬‮إمكانية تكرار المراحل أو تنفيذها مرة واحدة‪.‬‬ ‫‬‮‬ ‫‬‮درجة المرونة للتكيف مع التغيرات‪.‬‬ ‫‬‮‬ ‫‬‮العالقة بشكل عملي‪‬:‬‮عند البدء بمشروع تطوير برمجيات‪‬،‬‮يكون لديك قائمة بالمراحل (دورة حياة‬ ‫‬‮البرمجيات)‪.‬‬ ‫‬‮السؤال هو‪ :‬كيف ستنظم هذه المراحل؟‬‮هنا يأتي دور نمط‬‮دورة الحياة ليحدد‪:‬‬ ‫‬‮ ‬‮هل ستقوم بتنفيذ المراحل مرة واحدة (كما في الشاللي) أم تكرارها؟‬ ‫‬‮ ‬‮هل ستعمل على تسليم المنتج بشكل تدريجي؟‬ ‫‬‮ ‬‮هل ستضع تركيًز ا كبيًر ا على تقليل المخاطر (كما في الحلزوني)؟‬ ‫‬‮ ‬‮أهم أنماط دورة الحياة في تطوير البرمجيات‪:‬‬ ‫‬‮هناك عدة أنماط أو نماذج شائعة لدورة الحياة في مجال تطوير البرمجيات تختلف بناًء على‬ ‫‬‮طبيعة املشروع ومتطلباته‪،‬كل منها يناسب أنواًع ا معينة من املشاريع ومتطلبات العمل‪.‬فيما يلي‬ ‫(‬‮في هذا الفصل سيتم دراسة بعض‬‮من هذه النماذج ‪).‬‬ ‫‬‮أبرز هذه النماذج‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮النموذج‬‮الشاللي‬‮(‬‪‬‭Waterfall‬‭Model‬‮)‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮النموذج‬‮الحلزوني‬‮(‬‪‬‭Spiral‬‭Model‬‮)‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮النموذج‬‮الرشيق‬‮(‬‪‬‭Agile‬‭Model‬‮)‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮النموذج‬‮التزايدي ‬‮(‬‪‬‭Incremental‬‭Model‬‮)‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮النموذج‬‮اإلرتقائي‬‮(‬‪‬‭Evolutionary‬‭Model‬‮)‪.‬‬ ‫‬‪‬‭6‬‮‪‬.‬‮نموذج‬‪‬‭V-Model‬‮‪.‬‬ ‫‬‪‬‭7‬‮‪‬.‬‮نموذج‬‪‬‭DevOps‬‮‪.‬‬ ‫‬‮ ‬‮عوامل اختيار النموذج المناسب لتطوير البرمجيات‪:‬‬ ‫‬‮اختيار نموذج تطوير البرمجيات يعتمد على عدد من العوامل الرئيسية التي تتعلق بطبيعة المشروع‪،‬‬ ‫‬‮وبيئة العمل‪ ،‬واحتياجات العميل‪.‬فيما يلي أهم العوامل المؤثرة‪:‬‬ ‫‬‪‬‭6‬‮‪.‬املخاطر‬‮املحتملة‪.‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮وضوح‬‮املتطلبات‬ ‫‬‪‬‭7‬‮‪.‬امليزانية‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮حجم‬‮املشروع‬ ‫‬‪‬‭8‬‮‪.‬التكنولوجيا‬‮املستخدمة‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮الجدول‬‮الزمني‬ ‫‬‪‬‭9‬‮‪.‬صيانة‬‮البرمجيات‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮تفاعل‬‮العمالء‬ ‫‬‪‬‭10‬‮‪.‬تحليل‬‮املوارد‬‮املتاحة‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮خبرة‬‮الفريق‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭11‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮نموذج‬‮الشالل‬‮(االنحداري)‬‪‭Waterfall‬‭Model‬‬ ‫‬‮هو أحد النماذج التقليدية المستخدمة في دورة حياة تطوير البرمجيات ‪.‬يتميز هذا النموذج بترتيب‬ ‫‬‮مراحل تطوير البرمجيات بشكل خطي ومتسلسل‪ ،‬حيث يجب إكمال كل مرحلة قبل االنتقال إلى‬ ‫‬‮المرحلة التالية‪.‬ويعتبر من أوائل نماذج تطوير البرمجيات‪.‬‬ ‫‬‮ ‬‮مراحل نموذج الشالل‪:‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭12‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮ ‬‮مميزات نموذج الشالل‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮نموذج سهل الفهم و التطبيق‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮المراحل تكتمل وتعالج مرحلة تلو االخرى‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮مالءمة المشاريع ذات المتطلبات الثابتة‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮وضوح املراحل يسهل التخطيط وإدارة املشروع‬‮‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮ينتج عن هذا النموذج وثائق تفصيلية لكل مرحلة ‪ ،‬مما يسهل عملية المتابعة والتسليم‪.‬‬ ‫‬‮ ‬‮عيوب نموذج الشالل‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮عدم مرونة حيث ال يسمح بالعودة إلى المراحل السابقة بسهولة‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮صعوبة التغييرعلى المتطلبات بعد البدء في المراحل الالحقة‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮تؤدي عملية االختبار التي تتم في نهاية التطوير إلى اكتشاف األخطاء متأخًر ا‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮أي تأخير في مرحلة يؤثر على جميع المراحل التالية‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮عدم رؤية المنتج النهائي حتى المرحلة األخيرة‪.‬‬ ‫‬‮ ‬‮متى يستخدم نموذج الشالل؟‬ ‫‬‪‬‭1‬‮‪‬.‬‮المتطلبات الواضحة والثابتة‪‬:‬‮ُيفضل استخدامه عندما تكون‬‮المتطلبات محددة وثابتة منذ‬ ‫‬‮البداية‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮المشاريع الصغيرة والمتوسطة‬‮‪ :‬مناسب للمشاريع التي يمكن‬‮إدارتها بسهولة ‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮البيئات المستقرة‪‬:‬‮ُيستخدم في البيئات التي ال تتطلب‬‮تغييرات متكررة في المتطلبات‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮التعليم والتدريب‪‬:‬‮يستخدم لتعليم المفاهيم األساسية‬‮لتطوير البرمجيات بسبب طبيعته‬ ‫‬‮التسلسلية‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮صيانة األنظمة القديمة‪‬:‬‮فعال في تحديث األنظمة المستقرة‬‮دون الحاجة إلى تغييرات‬ ‫‬‮كبيرة‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭13‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮نموذج‬‮التطویر‬‮التزایدي‬‮………‪‭Incremental‬‭DevelopmentMode‬‭l‬.….‬‬ ‫‬‮ ‬‮تعريف نموذج التطوير التزايدي ‪‬:‬‮المعروف أيًضا باسم‬‮النموذج التزايدي هوهو نهج لتطوير‬ ‫‬‮البرمجيات ‪ ,‬يعتمد هذا النموذج على تقسيم المشروع إلى أجزاء صغيرة ُتسمى إصدارات أو‬ ‫‬‮زيادات‬‮(‬‪‭I‬ncrements‬‮)‬‮يكون‬‮كل‬‮إصدار‬‮عبارة‬‮عن‬‮جزء‬‮من‬‮النظام‬‮يعمل‬‮بشكل‬‮مستقل‬ ‫‬‮حيث يتم تطوير كل جزء بشكل مستقل وإصداره كمنتج وظيفي جزئي ثم يتم إضافة كل‬ ‫‬‮إصدار جديد فوق اإلصدارات السابقة حتى يكتمل النظام بالكامل‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭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‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮المخاطر وزيادة رضا المستخدمين بفضل التغذية الراجعة المستمرة‪.‬‬ ‫‬‮نموذج‬‮التطور‬‮االرتقائي…‪‬‭Development‬‭Evolutionary‬..‬‮‪:‬‬ ‫‬‮ ‬‮تعريف نموذج التطوير االرتقائي ‪‬:‬‮هو نهج في تطوير البرمجيات‬‮يركز على تحسين النظام من‬ ‫‬‮خالل تكرار مستمر وتدريجي‪.‬حيث يتم تطوير النظام من خالل سلسلة من اإلصدارات المتتالية‪،‬‬ ‫‬‮مع إضافة ميزات جديدة وتحسين الميزات الموجودة ‪.‬‬ ‫‬‮و يتيح هذا النموذج للفرق تطوير النظم بشكل تدريجي‪ ،‬مما يسمح بإجراء تعديالت وتحسينات بناًء‬ ‫‬‮على التغذية الراجعة من المستخدمين في كل مرحلة‪.‬‬ ‫‬‮ ‬‮كيف يعمل النموذج؟‬ ‫‬‪‬‭1‬‮‪‬.‬‮البدء‬‮بالوصف‬‮األولي ‬‪‬‭Outline‬‭description‬‮‪‬:‬‮يتم‬‮تحديد‬‮فكرة‬‮عامة‬‮عن‬‮النظام‬‮المراد‬ ‫‬‮تطويره‪.‬‬ ‫‪‭S‬‮‪‬:‬‮يتم‬‮تحويل‬‮الفكرة‬‮العامة‬‮إلى‬‮مواصفات‬‮تفصيلية‬‮تحدد‬ ‫‬‪‬‭2‬‮‪‬.‬‮تحديد‬‮المواصفات ‬‪‬ pecification‬‬ ‫‬‮كل ما يتعلق بالنظام‪.‬‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭19‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‪‬‭3‬‮‪‬.‬‮التطوير‬‮األولي‬‪‬‭Development‬‮‪‬:‬‮يتم‬‮بناء‬‮اإلصدار‬‮األولي‬‮للنظام‬‮بناًء ‬‮على‬‮المواصفات‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮التقييم‬‮والتحسين‬‪‬‭Validation‬‮‪‬:‬‮يتم‬‮تقييم‬‮اإلصدار‬‮األولي‪‬،‬‮وإجراء‬‮التعديالت‬‮الالزمة‪‬،‬‮ثم‬ ‫‬‮يتم تطوير إصدار جديد محسن‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮التكرار‪‬:‬‮يتم تكرار الخطوتين السابقتين حتى يتم الحصول‬‮على اإلصدار النهائي للنظام الذي‬ ‫‬‮يلبي‬‮جميع‬‮المتطلبات‪‭Initial‬‭version,‬‭Intermediate‬‭versions,‬‭Final‬‭version‬.‬‬ ‫‬‮الخطوات األساسية في نموذج التطوير االرتقائي‪:‬‬ ‫‬‪‬‭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‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮ ‬‮مقارنة بين النموذج التزايدي والنموذج االرتقائي في تطوير البرمجيات‬ ‫‬‮النموذج االرتقائي‬ ‫‬‮النموذج التزايدي‬ ‫‬‮(‬‪‬‭Evolutionary‬‭Development‬‮)‬ ‫‬‮(‬‪‬‭Incremental‬‭Model‬‮)‬ ‫‬‮المعيار‬ ‫‬‮تقسيم المشروع إلى أجزاء صغيرة ‬‮بناء نماذج أولية وتحسينها بشكل متكرر‪.‬‬ ‫‬‮التركيز‬ ‫‬‮(إصدارات)‪.‬‬ ‫‬‮تسليم نماذج مبدئية سريعة وتطويرها‬ ‫‬‮تسليم كل إصدار مكتمل بشكل‬ ‫‬‮طريقة التسليم‬ ‫‬‮مستقل (مرحلة تلو األخرى) حتى ‬‮تدريجًي ا حتى الوصول إلى المنتج النهائي‪.‬‬ ‫‬‮اكتمال النظام بالكامل‪.‬‬ ‫‬‮ ‬‮مرونة عالية‪.‬‬ ‫‬‮ ‬‮مرونة معتدلة‪.‬‬ ‫‬‮المرونة‬ ‫‬‮ ‬‮يدعم التغييرات المستمرة أثناء‬ ‫‬‮ ‬‮يسمح بتغييرات محدودة‬ ‫‬‮التطوير‪.‬‬ ‫‬‮في اإلصدارات المستقبلية‬ ‫‬‮فقط‪.‬‬ ‫‬‮يتطلب تخطيًط ا مبدئًي ا فقط مع تحسين‬ ‫‬‮يتطلب تخطيًط ا دقيًقا للمتطلبات‬ ‫‬‮التخطيط‬ ‫‬‮الخطة تدريجًي ا بناًء على المالحظات‬ ‫‬‮األساسية في البداية لتحديد‬ ‫‬‮والنتائج‪.‬‬ ‫‬‮اإلصدارات‪.‬‬ ‫‬‮مناسب جًدا عند تغير المتطلبات بشكل‬ ‫‬‮يدعم التغييرات الجزئية في‬ ‫‬‮تعامل مع تغيرات‬ ‫‬‮متكرر خالل التطوير‪.‬‬ ‫‬‮المراحل المستقبلية ‪.‬‬ ‫‬‮المتطلبات‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭24‬‬ ‫‬‮أنماط‬‮دورة‬‮الحياة‬ ‫‪‬‭‬‮الفصل‬‮الثاني‬ ‫‬‮إعداد‬‮‪‬:‬‮أ‪‬.‬‮هاجر‬‮رافع‬ ‫‬‪‭25‬‬ ‫‬‮الفصل الثالث‪:‬‬ ‫‬‮مرحلة‬‮التخطيط‬‮‪‬‭Planning‬(.‬‮)‪:‬‬ ‫‬‮ ‬‮أهداف مرحلة التخطيط‪.‬‬ ‫‬‮ ‬‮أهمية مرحلة التخطيط‪.‬‬ ‫‬‮ ‬‮الخطوات األساسية في مرحلة التخطيط‪.‬‬ ‫‬‮ ‬‮األدوات المستخدمة في مرحلة التخطيط‪.‬‬ ‫‬‮ ‬‮كيفية تحديد األهداف ‪.‬‬ ‫‬‮ ‬‮مواصفات الهدف الجيد‪.‬‬ ‫‬‮تحليل‬‮المتطلبات‬‮(‬‪‬‭Requirements‬‭Analysis‬‮)‪:‬‬ ‫‬‮ ‬‮خطوات تحليل المتطلبات‪.‬‬ ‫‬‮ ‬‮أهمية تحليل المتطلبات‪.‬‬ ‫‬‮ ‬‮أنـــواع المتـــطلبات‪.‬‬ ‫‬‮ ‬‮جمع المتطلبات‪.‬‬ ‫‬‮ ‬‮الطرق المستخدمة في جمع المتطلبات‬ ‫‬‮ ‬‮عوامل يجب مراعاتها عند جمع المتطلبات‪.‬‬ ‫‬‮ ‬‮وثيقة متطلبات النظام ‪.‬‬ ‫‬‮ ‬‮محتويات متطلبات النظام‪.‬‬ ‫‬‮ ‬‮أهمية وثيقة متطلبات النظام ‪.‬‬ ‫‬‮ ‬‮معايير وثيقة متطلبات النظام‬‮‪.‬‬ ‫‬‮مرحلة‬‮التخطيط‬ ‫‪‬‭‬‮الفصل‬‮الثالث‬ ‫‬‮مرحلة‬‮التخطيط‬ ‫‪‬‭‬‮الفصل‬‮الثالث‬ ‫‬‪‬‭1‬‮‪‬.‬‮مرحلة‬‮التخطيط‬‮………………………………………‪‬‭Planning‬(..‬‮)‬ ‫‬‮مرحلة‬‮التخطيط‬‮هي‬‮أولى‬‮مراحل‬‮دورة‬‮حياة‬‮تطوير‬‮البرمجيات‬‮(‬‪‬‭SDLC‬‮)‬‮وهي‬‮تعتبر‬‮األساس‬‮الذي‬ ‫‬‮يبنى عليه المشروع البرمجي بأكمله‪.‬تهدف هذه المرحلة إلى تحديد أهداف المشروع بوضوح‪ ،‬وفهم‬ ‫‬‮احتياجات العميل‪ ،‬وتحديد جميع التفاصيل الرئيسية التي ستؤثر على التطوير والتسليم‪.‬‬ ‫‬‮ ‬‮أهداف مرحلة التخطيط‪:‬‬ ‫‬‪‬‭1‬‮‪‬.‬‮تحديد نطاق المشروع بوضوح‬‮‪ :‬فهم ما يحتاجه العميل بدقة‬‮وتحديد الحدود الخاصة‬ ‫‬‮بالمشروع‪.‬‬ ‫‬‪‬‭2‬‮‪‬.‬‮وضع خطة تنفيذية‬‮‪ :‬رسم خطة مفصلة للمشروع‪ ،‬بما في ذلك‬‮الخطوات الرئيسية‪ ،‬الجداول‬ ‫‬‮الزمنية‪ ،‬وتقديرات الميزانية‪.‬‬ ‫‬‪‬‭3‬‮‪‬.‬‮تحديد المخاطر والتحديات‬‮‪ :‬توقع أي عقبات قد تواجه المشروع‬‮والتخطيط للتغلب عليها‪.‬‬ ‫‬‪‬‭4‬‮‪‬.‬‮تخصيص الموارد الالزمة‬‮‪ :‬تحديد الموارد البشرية والمادية‬‮المطلوبة وتوزيع األدوار‬ ‫‬‮والمسؤوليات‪.‬‬ ‫‬‪‬‭5‬‮‪‬.‬‮التواصل مع جميع األطراف المعنية‬‮‪ :‬إشراك جميع األطراف‬‮المهمة من عمالء ومدراء وفرق‬ ‫‬‮العمل لضمان وضوح الرؤية وتوحيد األهداف‪.‬‬ ‫‬‮ ‬‮أهمية مرحلة التخطيط‪:‬‬ ‫‬‮تعد مرحلة التخطيط أساًسا قوًيا لنجاح المشروع ألنها‪:‬‬ ‫‬‮توفر وضوًح ا كاماًل حول المتطلبات‪ ،‬الميزانية‪ ،‬والجداول الزمنية‪.‬‬ ‫‬‪‬‭1‬‮‪.‬‬ ‫‬‮تضمن توافق رؤية المشروع بين جميع األطراف‪.‬‬ ‫‬‪‬‭2‬‮‪.‬‬ ‫‬‮تقلل من المخاطر المحتملة‪.‬‬ ‫‬‪‬‭3‬‮‪.‬‬ ‫‬‮تجعل عملية التطوير سلسة وتقلل من احتمالية حدوث تغييرات كبيرة أو مشاكل غير متوقعة‬

Use Quizgecko on...
Browser
Browser