Class 3 - SDLC Models Models
SDLC (Software Development Life Cycle)
Is a structured process for planning, designing, developing, testing, deploying, and maintaining software to ensure quality and efficiency.
Capability Maturity Model (CMM)
A benchmark for measuring the Maturity of an organization’s process
CMM 5 levels of Process Maturity
framework helps organizations progress from an unpredictable software development process (level 1) to a fully optimized, continuously improving one (Level 5)
based on certain Key Process Areas (KPA)
CMM Levels & KPAs (Key Process Areas)
Level 1: Initial (~70%)
Characteristics: No formal processes, highly chaotic, success depends on individual effort rather than defined workflows.
Key Process Areas:
No defined process (ad hoc development).
is chaotic with no formal process.
Level 2: Repeatable (~15%)
Characteristics: Basic project management processes are in place to track cost, schedule, and functionality.
Key Process Areas:
Software Configuration Management (SVN) – Version control, tracking changes.
Software Quality Assurance (SQA) – Ensuring software meets standards.
Tracking & Oversight (MS Project) – Monitoring project progress.
Planning (SMP - Software Management Plan) – Basic planning practices introduced.
introduces project management and basic quality control.
Level 3: Defined (<10%)
Characteristics: Organization-wide standardization of software development processes with documentation and training.
Key Process Areas:
Peer Reviews – Code and design reviews to improve quality.
Intergroup Coordination (CCNET) – Communication between teams.
Software Engineering – Defined methodologies for software development.
Integrated Software Management (SVN) – Better version control and project integration.
focuses on standardization and better integration.
Level 4: Managed (<5%)
Characteristics: Use of quantitative metrics for measuring software quality and process performance.
Key Process Areas:
Software Quality Management (SQM) – Formal quality tracking.
Quantitative Process Management – Data-driven decision-making and process control.
uses data to manage and improve quality.
Level 5: Optimizing (<1%)
Characteristics: Continuous process improvement through innovation, defect prevention, and technology upgrades.
Key Process Areas:
Change Management (Process & Technology) – Managing evolving requirements and technology shifts.
Defect Prevention – Identifying and eliminating defects before they occur.
optimizes processes through continuous improvement and innovation.
Key Umbrella Activities:
Software Project Management (SPM):
Planning, scheduling, tracking, and oversight of the project
Risk Management:
Identifying, analyzing, and mitigating risks in the development process.
Software Quality Assurance (SQA):
Ensuring adherence to quality standards, testing, and validation.
Formal Technical Reviews (FTR):
Peer reviews to identify errors and improve quality early.
Measurement & Metrics:
Collecting and analyzing data to improve processes and performance.
Software Configuration Management (SCM):
Tracking and managing changes in code and documents.
Documentation:
Maintaining proper records of requirements, designs, test cases, and user manuals.
Reusability Management:
Identifying reusable components to improve efficiency.
Security Management:
Ensuring software is protected against vulnerabilities and threats.
These activities help ensure software reliability, maintainability, and efficiency, supporting the core phases of planning, analysis, design, implementation, testing, deployment, and maintenance and are independent of any one framework and occur throughout the process.
Prescriptive Process Models
Models advocate an orderly approach to Engineering
Code-and-Fix Model
The easiest way to develop yet the most expensive way
- No specifications/Analysis
= Maintenance nightmare
- No Design
= Maintenance nightmare
Linear Models: The Waterfall (one-dimensional)
A linear, sequential software development model where each phase must be completed before moving to the next, with no iteration or backtracking.
🔹 Steps:
1⃣ Requirements – Gather and document all needs upfront.
2⃣ Design – Plan system architecture and components.
3⃣ Implementation – Develop and code the software.
4⃣ Testing – Validate functionality and fix defects.
5⃣ Deployment – Release the product to users.
6⃣ Maintenance – Perform updates and bug fixes.
🔹 Pros:
✅ Simple & easy to manage – Clear structure and documentation.
✅ Best for stable requirements – Works well when changes are minimal.
✅ Well-documented – Good for compliance-heavy industries.
🔹 Cons:
A risk inherent in using the Waterfall Software Dev Life Cycle Model is that by the time (long) the product is delivered the Client’s needs might have changed!!!
❌ Rigid & inflexible – No room for changes once a phase is complete.
❌ Late testing – Bugs are found late in the process.
❌ High modification cost – Changes require restarting phases.
Linear Models: V-Shaped Model
A variant of the Waterfall that emphasizes the Verification and Validation at every stage. More structured than waterfall but still rigid with little flexible for changes.
Each development phase has a corresponding testing phase, forming a "V" shape.
🔹 Steps:
Development (Left Side of V):
1⃣ Requirements Analysis – Define system needs.
2⃣ System Design – Plan architecture.
3⃣ High-Level Design (HLD) – Define modules & data flow.
4⃣ Low-Level Design (LLD) – Detail components & logic.
5⃣ Implementation (Coding) – Develop the software.
Testing (Right Side of V - Verification & Validation):
6⃣ Unit Testing – Test individual components.
7⃣ Integration Testing – Validate module interactions.
8⃣ System Testing – Ensure system meets requirements.
9⃣ Acceptance Testing – Confirm software is ready for users.
🔹 Pros:
✅ Early defect detection – Testing starts at every phase.
✅ Clear & well-defined stages – Easy to manage and track.
✅ Better quality assurance – Verification before implementation reduces risks.
✅ Deliverable must be Testable
✅ Project management can track progress by milestones
✅ Easy to use
🔹 Cons:
❌ Rigid & inflexible – Changes require restarting phases.
❌ High cost of modifications – Late-stage changes are expensive.
❌ Not suitable for evolving requirements – Works best when requirements are fixed.
❌ Does not easily handle concurrent events
❌ Does not handle iterations
❌ Does not easily handle dynamic changes in Requirements
❌ Does not contain risk analysis activities
🔹 When to use V shaped model:
Excellent choice for requiring high
- hospital patient control
All requirement are known up-front
Evolutionary: Tree Model (two-dimensional)
An iterative SDLC mode where software evolves through multiple versions, branching like a tree. Each version builds on the previous, adapting to new requirements.
🔹 Steps:
1⃣ Initial version – Basic functionality.
2⃣ Evolving branches – Add new features in iterations.
3⃣ Testing & feedback – Refine based on user input.
4⃣ Final optimized version – Stable and feature-complete release.
🔹 Pros:
✅ Flexible & adaptable – Handles changing requirements well.
✅ Early working versions – Faster feedback & improvements.
🔹 Cons:
❌ Can become complex – Managing multiple evolving versions is challenging.
❌ Requires strong planning – To avoid redundant branches.
🔹 Difference from Waterfall:
✅ Iterative growth vs. linear development
✅ Allows changes anytime vs. rigid structure
Why a two-dimensional model?
Handles the inevitable changes well
- The moving target problem
- The inevitable mistakes
- It provides a framework for incrementation and iteration
Iterative Model: The incremental Model
What is the connection between the Waterfall Model and the Iterative (and Incremental) Model?
Iterative Models
Evolutionary Models
Specialized Models
Adaptive Models