An Overview of Agile vs. waterfall vs. V-shaped and Other SDLC Cycle Types
Software development (SDLC) can be performed according to a variety of models, varying based on project type, requirements given, time constraints, resources, and broader company product development objectives. We introduce six of the most popular models, including waterfall, iterative, V-Shaped, Spiral, Agile, and Big Bang. Each model description highlights recommended use with a list of notable pros and cons.
SDLC Model: Waterfall
Description: The waterfall model is seen as one phase “flowing” into the next as any phase in the process cannot commence until the previous is completed. The most commonly accepted of models is documentation-intensive as the earlier documentation tells what will be performed in future phases. Possibly the most straightforward of models, it is easy to manage, although flaws cannot be corrected until the “maintenance” stage.
Uses: Waterfall is typically made up of seven consecutive phases: requirement gathering, feasibility analysis, design, coding, testing, installation, and maintenance. Often used for simple, small or mid-sized projects, waterfall has traditionally been seen as offering a stricter control mechanism. It can be appropriate for smaller projects where the technology is understood and the requirements are well defined, fixed.
- Simple to use and understand
- Easy to classify and prioritize tasks
- Well understood milestones and checkpoints
- Each phase has specific deliverables
- High risks and uncertainty
- Assumes the requirements of a system can be frozen
- Difficult to go back to any stage once it is finished
- Difficult to measure progress within stages
SDLC Model: Iterative
Description: The iterative model is a realization of the sequential approximation method, meaning it is a series of waterfall models where the requirements are divided into groups at the beginning of the project. The main difference from the previous is that the SDLC can start without all of the requirements gathered. Developers implement a set of software requirements, test, evaluate and pinpoint further requirements. This model provides a working version earlier in the cycle.
Uses: Applied to large-scale projects where the final product and main task are predefined, but the details evolve over time. This model is well-suited for projects that have a time constraint as well as large, mission-critical projects that consist of loosely coupled parts like microservices or web services.
- Risk analysis is more thorough
- Initial operating time is faster
- More focused on customer value than linear approaches
- Encourages flexibility and readiness to change to evolving requirements
- More resources may be needed
- Complicated to manage
- End of project may not be known, which is a risk
- Partitioning the functions and features may be problematic
SDLC Model: V-Shaped
Description: The V-shaped model addresses validation and verification through parallel processes where coding is connected to both concurrently. This model grew out of the waterfall model where each stage begins only after the previous one has ended.
Uses: Most appropriate when failures and downtimes are unacceptable (e.g., medical software, aviation fleet management software) or where there are no unknown requirements because this model is restrictive to making changes mid-cycle.
- Testing and verification takes place in early stages
- Easy to control
- Highly disciplined
- Good when requirements are static and clear
- Lack of flexibility
- Meant only for bigger projects
- Not suitable for projects where requirements are likely to change
- Once in the testing phase, it is difficult to go back and change aspects like functionality
SDLC Model: Spiral
Description: Iterative in nature, the spiral is a combination of prototype and waterfall models. This is a risk-driven model that is more flexible and allows for building a highly customized product where user feedback can be incorporated early in the project.
Uses: In the spiral model, the project passes through four phases over and over in a “spiral” until complete, allowing for multiple rounds of refinement. It is best used in large projects and systems that contain small phases or identifiable segments.
- Development process is well-documented and scalable
- Progress is easily measured
- High-risk tasks are completed first
- Early involvement of developers
- Can be expensive, creating a high cost and longer time to reach a final product
- Can be ineffective for smaller projects
- Highly customized, which limits reusability
- Needs special skills to evaluate the risks and assumptions
SDLC Model: Agile
Description: Agile has gained a great deal of popularity. The model breaks down big projects into smaller, more manageable chunks, which can lead to a software product that represents a culmination of multiple, smaller projects. The model produces ongoing releases where each iteration includes small, incremental changes and improvements from the previous release.
Uses: Agile is particularly well-suited for large and complex projects; those that can be easily divided into smaller parts. It’s also useful for mid-size custom software development projects where business requirements cannot be easily translated into detailed requirements.
- Face-to-face communication and continuous inputs from customer representative leave no space for guesswork
- End result is the highest quality software in the least possible time
- Very realistic approach to development
- Suitable for fixed and evolving requirements
- Documentation is created in later stages
- Reduce the usability of components
- Requires special skills and ongoing oversight
- Transfer of technology to new team members may be difficult due to lack of documentation
SDLC Model: Big Bang
Description: Done with little-to-no planning, the Big Bang model focuses on all types of coding and development types, implementing requirements as they are discovered. Because it does not follow a set process and is a high-risk model, the Big Bang is best for small projects with only one or two engineers.
Uses: It is mainly used for academic software development projects or smaller projects where the development team is small and working in tight collaboration. It is helpful when requirements are unknown and a release date is very flexible.
- Allows for more resources to be used in development
- More straightforward to manage
- Allows developer flexibility
- Good learning aid for students or newcomers
- Harder to attain a firm grasp on requirements
- High-risk with high level of uncertainty
- Poor model type for long or ongoing projects
- Can be expensive if requirements are misunderstood and timelines are vague
But, where is DevOps?
While these are long-standing software development life cycle models, there is one approach that is missing – DevOps. The next insight will provide a primer on DevOps and link to other resources that highlight how it compares to these traditional models, and provide reasons why we recommend DevOps as the SDLC of choice.