Software Life Cycle
المراحل الـ 9 اللي أي software product بيعدي بيهم — من أول فكرة في دماغك لحد ما يتصان.
- Conception — الفكرة الأولانية للمشروع، يعني أول حاجة بتيجي في دماغك.
- Feasibility Study / Domain Analysis — بتدرسوا هل المشروع ده يستاهل ولا لأ، وبتتعرفوا على المجال.
- Requirements' Gathering — بتاخدوا المتطلبات من العميل، يعني هو عايز ايه بالظبط.
- Overall Design — بترسموا الشكل العام للنظام.
- Detailed Design — بترسموا تفاصيل كل جزء في النظام.
- Development (Coding, Programming) — بتكتبوا الكود الفعلي.
- Testing (Unit, Integration, Acceptance) — بتختبروا على كل المستويات.
- Deployment / Training — بترفعوا النظام وبتدربوا الناس عليه.
- Maintenance and Evolution — صيانة وتطوير مستمر.
- Specification: المراحل 1-5 — يعني بتحددوا إيه اللي عايزينه.
- Development: المرحلة 6 — يعني البناء الفعلي للنظام.
- Validation: المرحلة 7 — بتتأكدوا إنه شغّال صح.
- Evolution: المراحل 8-9 — تطوير وصيانة مستمرة.
Software Process Models
كل process model بيوصفلك: الأنشطة اللي بتتعمل، ترتيبها، مين المسؤول عنها، وبيطلع منها ايه.
الـ software process model بيوصفلك:
- الـ Activities اللي لازم تتعمل عشان تطلع software.
- ترتيب الأنشطة دي بعضها مع بعض.
- الـ roles اللي مسؤولة عن كل نشاط.
- الـ deliverables (artifacts) اللي بتطلع من كل مرحلة.
🌊 Waterfall
خطي · مرحلة بمرحلة
🔂 Iterative / Incremental
Mini-waterfalls لكل increment
🚀 Agile
مستمر · مرن
🏗️ RUP
Framework تكراري
⚡ Scrum
Sprints · أدوار · اجتماعات
الإجابة الصح: All three — (I) بتشمل الـ linear زي Waterfall والـ agile زي XP · (II) بتحدد مين بيعمل ايه وامتى والمخرجات · (III) طرق مختلفة لتنظيم أنشطة تطوير الـ software.
Waterfall Model — النموذج الخطي الكلاسيكي
أقدم وأبسط model. سهلة وبسيطة، بس صارم جداً — مفيش رجعة للمرحلة اللي فاتت خالص.
كل مرحلة لازم تخلص وتسلّم حاجة "متجمّدة" قبل ما اللي بعدها تبدأ. مفيش رجعة خالص.
- سهلة وبسيطة في الفهم والاستخدام.
- بيوفّر هيكل واضح للناس اللي مش عندهم خبرة كبيرة.
- الـ milestones واضحة ومحددة.
- بيقفّل الـ requirements من الأول.
- تمام جداً للـ management control: تخطيط، توظيف، ومتابعة.
- بيشتغل كويس لما الـ quality أهم من الـ cost والـ schedule.
- لازم كل الـ requirements تكون معروفة من الأول — وده صعب في الواقع.
- الـ deliverables متجمّدة — مفيش مرونة خالص.
- ممكن يدي إحساس زيف إن الشغل ماشي كويس.
- مش بيشبه طبيعة حل المشاكل الحقيقية في الحياة.
- الـ integration بيحصل مرة واحدة كبيرة في الآخر — الـ big bang integration ده وجع.
- العميل مش بيشوف حاجة شغّالة إلا في الآخر.
- الـ requirements معروفة كويس جداً من الأول.
- تعريف المنتج مستقر ومش هيتغير.
- الـ technology مفهومة ومعروفة.
- لما بتعمل version جديد من منتج موجود.
- لما بتنقل (porting) منتج موجود لـ platform جديدة.
Incremental / Iterative Model — التطوير التدريجي
يعني شغلك بقى مجموعة mini-waterfalls صغيرين. كل increment بيطلع منه software شغّال فعلاً.
- بتبني جزء من النظام الأول — مش لازم كله دفعة واحدة.
- بتضيف وظائف جديدة بالتدريج مع الوقت.
- بتعمل prioritize للـ requirements وبتطبقهم في مجموعات.
- كل release بيزوّد وظائف على اللي قبله، لحد ما النظام يكمل.
- بتطوّر الحاجات الـ high-risk أو الأهم الأول.
- كل release = منتج شغّال فعلاً.
- العميل يقدر يرد على كل build.
- بيقلل تكلفة أول تسليم.
- أول تسليم بيطلع أسرع.
- العملاء بياخدوا الوظائف المهمة بدري.
- خطر تغيير الـ requirements بيقل كتير.
- محتاج تخطيط وتصميم كويس من الأول.
- لازم النظام الكامل يكون متعرّف من الأول.
- محتاج interfaces واضحة بين الـ modules.
- التكلفة الكلية للنظام مش أقل من الـ Waterfall — متوهمش كده.
Agile SDLCs — التطوير المرن
تكراري وتدريجي وتخطيطه مرن — وبيتكيف مع التغيير بسهولة.
- غالباً أقل رسمية وبـ scope أصغر — ما فيهاش تعقيدات زيادة.
- بتوفّر في الـ documentation.
- بتدمج أنشطة الجودة جوّا عملية التطوير مش في الآخر.
- بتتستخدم للتطبيقات اللي عليها ضغط وقت (time-critical).
- أعلى أولوية: إرضاء العميل من خلال تسليم بدري ومستمر.
- نرحّب بـ تغيير الـ requirements، حتى لو في مراحل متأخرة — مش بنتضايق.
- نسلّم software شغّال باستمرار — أسابيع مش شهور، وكل ما يكون أقصر أحسن.
- الـ business people + الـ developers يشتغلوا مع بعض يومياً — مش كل شوية.
- نبني حول أفراد motivated — نوفرلهم البيئة والدعم ونثق فيهم.
- Face-to-face conversation = أكفأ طريقة للتواصل — أحسن من أي إيميل.
- Working software = المقياس الأساسي للتقدم — مش الدوكيومنت.
- نشجّع وتيرة تطوير مستدامة — محدش يحترق.
- اهتمام مستمر بالـ technical excellence والتصميم الكويس.
- Simplicity — نزوّد الشغل اللي مش محتاجين نعمله.
- أحسن architectures/requirements/designs بتطلع من self-organizing teams.
- الفريق بيراجع نفسه بانتظام عشان يتحسّن كل sprint.
- ASD — Adaptive Software Development
- FDD — Feature Driven Development
- Crystal Clear
- DSDM — Dynamic Software Development Method
- RAD — Rapid Application Development
- Scrum ⭐
- XP — Extreme Programming
RUP — Rational Unified Process
Framework تكراري من IBM — بتعدّله براحتك، مش صارم زي الـ Waterfall.
- Inception — بتحددوا الـ scope والرؤية والـ business case.
- Elaboration — بتبنوا الـ architecture وبتنقّحوا الـ requirements.
- Construction — بناء النظام الفعلي.
- Transition — تسليم وتدريب ونشر.
جوّا كل phase فيه iterations متعددة. كل iteration بيشمل Business Modeling، Requirements، Analysis، Design، Implementation، Test، Deployment — بس بنسب مختلفة.
Analyst · Designer · Implementer · Integrator · Tester · Change Control Manager · Configuration Manager · Project Manager · Reviewer · Stakeholder
Scrum ⭐⭐⭐
الـ exam بيغرق فيه! ممكن تلاقي 4 أو 5 أسئلة في الامتحان عن الـ Scrum بس — خد بالك.
- Gathering Requirements — بتكتبوا User Stories وبتحطوهم في الـ Product Backlog.
- Team Roles — 3 أدوار بس، مش أكتر.
- Release Planning — بتختاروا الـ stories وبترتبوهم وبتقدّروا الوقت.
- Sprints — من 3 لـ 30 يوم، وغالباً أسبوعين.
- Daily Scrum Meeting — اجتماع كل يوم 15 دقيقة وقوفاً.
- Sprint Retrospective — مراجعة في آخر كل sprint.
- Burndown Chart — عشان تتابعوا التقدم.
Scrum Master
هو الـ team leader. بيسهّل الشغل، بيشيل الحواجز اللي قدام الفريق، وبيحميه. مش manager زي ما ناس بتفتكر.
Product Owner
بيمثّل العميل والبيزنس جوّا الفريق. بيملك الـ product backlog وبيرتّبه حسب الأولوية.
Team (Everyone Else)
أعضاء cross-functional: مطورين، مصممين، testers. بيديروا نفسهم. مفيش sub-roles جواهم.
بتقسّم الـ release لـ sprints صغيرين (غالباً أسبوعين). كل sprint بيطلع منه user stories جاهزة للرفع.
Weeks 1-2
Weeks 3-4
Weeks 5-6
Weeks 7-8
- المدة: 15 دقيقة بالكتير — مش أكتر.
- امتى: كل صبح في أول الشغل.
- وقوف عشان ما حدش يطوّل.
3 أسئلة لكل فرد في الفريق:
- عملت ايه امبارح؟
- هتعمل ايه النهاردة؟
- فيه حاجة بتعيقك؟
بتتعمل في آخر كل sprint. الفريق بيمتحن نفسه:
- ايه اللي اشتغل كويس؟
- ايه اللي كان على الوجه التاني؟
- إزاي نعمل اللي جاي أحسن؟
من Winter 2023 Q1.07:
- ✅ Short release cycles — دورات إصدار قصيرة: العميل بيشوف progress بسرعة.
- ❌ Daily stand-up — ده اجتماع جوّاني للفريق مش مع العميل.
- ✅ دور الـ Product Owner — ده هو اللي بيمثّل العميل جوّا الفريق.
الإجابة: Only I and III — دورات الإصدار القصيرة + دور الـ product owner.
Exam Bank — Lecture 14
8 أسئلة حقيقية. الـ Scrum داخل في كل امتحان final — متسيبش حاجة.
I. They include linear models like waterfall and agile models like XP.
II. They define who does what and when to produce which artifacts.
III. They are different ways for organizing the software development activities.
I. By adopting short release cycles
II. By holding a daily stand-up meeting
III. By having a product owner role
Cheat Sheet
Process models + Scrum reference.