There are various Software Development Life Cycle (SDLC) models to guide the software development process.
Each model follows a series of steps to ensure a successful outcome.
9 Models of SDLC:
Waterfall Model
V-Model
Iterative Model
Spiral Model
Agile Model
Fish Model
Big-Bang Model
RAD Model (Rapid Application Development)
Prototype Model
All processes of software development divided into various phases:
Planning and Requirements
Analysis
Designing
Development/Coding
Testing
Deployment
Maintenance
Phases executed sequentially—output of one phase is the input for the next.
No ability to go back to previous phases once completed.
Requirement Analysis
System Design
Implementation
Testing
Deployment
Maintenance
Simple and easy to understand.
Easy to manage due to its rigid structure.
Each phase completed one at a time, ensuring clarity.
Well-documented processes and outcomes.
Changes require restarting the entire process, complicating revisions.
Not suitable for large or complex projects.
'V' stands for Verification and Validation, structure resembles a V shape.
Verification on the left side (with phases including Requirement Analysis, System Design, Architecture Design, Module Design) and Validation on the right side (includes Unit Testing, Integration Testing, System Testing, Acceptance Testing).
Testing associated with every single phase, done parallelly to ensure quality.
Simple and easy to understand and implement.
Ideal for smaller projects with well-defined requirements.
Each component tested alongside development phases, reducing error chances.
Not suitable for large or complex projects.
Difficult to make changes once testing begins, potentially affecting satisfaction.
Similar to the Waterfall Model but allows returning to previous phases for revisions.
Streamlines time, cost, and effort, providing flexibility when changes are required.
Considered an advanced version of the Waterfall Model.
Easy to understand and execute.
Early development of working functionality.
Less costly to adjust scope or requirements.
Easier testing and debugging during smaller iterations.
Requirement changes can lead to budget overrun.
Uncertain project completion dates due to evolving requirements.
Divided into four quadrants:
Objective determination and alternative solution identification.
Risk identification and resolution.
Development and verification.
Review and planning for next phase.
Each spiral iteration revisits these phases, enhancing risk management and project refinement.
Agile implies a fast pace, ideal for projects with short deadlines.
Tasks divided into smaller iterations for rapid delivery.
Customer interaction is key; working software is delivered after each iteration.
Minimal resource requirements; quick project delivery.
Frequent communication with the client; adaptive methods.
Allows changes to be implemented regularly.
Lack of documentation can lead to confusion.
Transfer of knowledge to new team members may be challenging.
Heavy dependency on customer clarity.
Verification and validation are conducted in parallel by different teams across phases.
Engages in comprehensive reviews and tests through distinct teams, yielding a fish-like structure diagram.
Easy to implement, produces secure and high-quality software.
Documentation generated as phases are completed.
More expensive in terms of cost and time.
Not suitable for small projects.
No specific process, starts with required resources input only.
Outputs may or may not meet customer requirements; suitable for small projects or academic work.
Simple to understand; little-to-no planning required.
Minimal resource requirements.
High risk and uncertainty; unsuited for large projects.
Poor for ongoing projects.
Prototypes are limited-functionality software models, providing a framework for user evaluation.
Aids in understanding user-specific requirements and serves as a risk reduction tool.
Requirements Analysis
Design
Prototyping
Review and Refine
Customer Evaluation
Test and Develop
Users shape future development, discovering errors early.
Reduced risk of failure; encourages communication among team members.
High customer satisfaction from early prototypes.
Labor-intensive and time-consuming.
Risk of excessive change requests; possible poor documentation due to variable needs.
Focuses on minimal planning; splits projects into small modules.
Modules can be assigned to various teams and then integrated.
Designed to expedite the development process using effective tools.