A basic intro to Software Development Life Cycle (SDLC) methods

Ravindu Senal Fernando
6 min readNov 20, 2020

What is Software Development Life Cycle?

A software development lifecycle is essentially a series of steps, or phases, that provide a framework for developing software and managing it through its entire lifecycle. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines methodology for improving the quality of software and overall development process.

There are few types of Software development life cycles:

  1. Waterfall model
  2. V-Shaped model
  3. Iterative model
  4. Spiral model
  5. Agile model

Waterfall model

Waterfall model also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In waterfall model the progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete.The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach used for software development.

The use of waterfall model is most appropriate when:-

  • Requirements are clear, fixed and well documented
  • Product definition is stable
  • Technology is understood and is not dynamic
  • The project is short

Advantages of waterfall model

  • Simple and easy to understand and use
  • Phases are processed and completed one at a time
  • Works well for smaller projects where requirements are very well understood
  • Clearly defined stages
  • Each phase has specific deliverables
  • Verification at each stage ensures early detection of errors/misunderstanding.

Disadvantages of waterfall model

  • Cannot accommodate changing requirements.
  • It is difficult to measure progress within stages.
  • Not a good model for complex and object-oriented projects.
  • High amounts of risk and uncertainty.
  • No working software is produced until late during the life cycle.
  • A little flexibility and adjusting scope is difficult and expensive.

V-Shaped Model

The V-model is an SDLC model where execution of processes happens in a sequential manner in a V-shape. V-shaped model also known as the verification and validation model, the V-shaped model grew out of Waterfall and is characterized by a corresponding testing phase for each development stage. Similar to waterfall, a stage begins only when the previous one has ended.

The V-shaped model is used when :

  • Requirements of the software is clearly defined and known.
  • Software development technology tools are well known
  • The project is short
  • Product definition is stable

Advantages of V-shaped model

  • Highly disciplined model and phases are completed one at a time
  • Works well for smaller projects where requirements are well defined
  • Simple and easy to understand and use
  • Each phase has specific deliverables.
  • Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.

Disadvantages of V-shaped model

  • High risk and uncertainty.
  • Not a good model for complex and object-oriented projects
  • Poor model for long and ongoing projects
  • Once an application is in the testing stage, it is difficult to go back and change a functionality.
  • Very inflexible, like the waterfall model.
  • No working software is produced until late during the life cycle.

Iterative model

In iterative model, the process starts with a simple implementation of a subset of the software requirements and iteratively enhances the evolving versions(prototypes) until the full system is implemented. After each phase a new version of the software is produced. After the final version is developed, the requirement is considered to be frozen.

The key to a successful use of an iterative software development lifecycle is rigorous validation of requirements, and verification & testing of each version of the software against those requirements within each cycle of the model. As the software evolves through successive cycles, tests must be repeated and extended to verify each version of the software

The iterative model is used when:

  • Requirements of the complete system are clearly defined and understood.
  • Major requirements should be defined; however, some functionalities or requested enhancements may evolve with time.
  • There is a time to the market constraint.
  • There are some high-risk features and goals which may change in the future
  • Resources with needed skill sets are not available and are planned to be used on contract basis for specific iterations.

Advantages of iterative model

  • Iterative model reduces the cost and time of development as the defects are found much earlier.
  • Missing feature or functionality or a change in requirement can be identified in the evaluation phase and can be implemented in the refined prototype
  • Parallel development can be planned.
  • Progress can be measured
  • Results are obtained early and periodically.
  • With every increment, operational product is delivered.

Disadvantages of iterative model

  • More resources may be required.
  • More management attention is required.
  • Defining increments may require definition of the complete system.
  • Although cost of change is lesser, but it is not very suitable for changing requirements.
  • End of project may not be known which is a risk.
  • Highly skilled resources are required for risk analysis.
  • Management complexity is more.
  • Not suitable for smaller projects.

Spiral Model

The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. The spiral model is a combination of iterative model and waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental refinement through each iteration around the spiral.

The spiral model is best used when:

  • New product line which should be released in phases to get enough customer feedback.
  • There is a budget constraint and risk evaluation is important.
  • For medium to high risk projects
  • Requirements are complex and need evaluation to get clarity.
  • Long-term project commitment because of potential changes to economic priorities as the requirements change with time.

Advantages of spiral model

  • Changing requirements can be accommodated.
  • Allows extensive use of prototypes.
  • Requirements can be captured more accurately.
  • Manages risks and develops the system into phases.
  • Early involvement of developers.

Disadvantages of spiral model

  • End of the project may not be known early.
  • Not suitable for small or low risk projects and could be expensive for small projects.
  • process is complex.
  • Spiral may go on indefinitely.
  • Large number of intermediate stages requires excessive documentation.

Agile model

Agile model is a combination of iterative and incremental process models with the focus on process adaptability and customer satisfaction by rapid delivery of working software product.

In Agile, a product is broken into small incremental builds. It is not developed as a complete product in one go. Each build increments in terms of features. The next build is built on previous functionality.

In agile iterations are termed as sprints. Each sprint lasts for2–4 weeks. At the end of each sprint, the product owner verifies the product and after his approval, it is delivered to the customer.

Customer feedback is taken for improvement and his suggestions and enhancement are worked on in the next sprint. Testing is done in each sprint to minimize the risk of any failures.

Advantages of Agile model:

  • Is a very realistic approach to software development.
  • It allows more flexibility to adapt to the changes.
  • The new feature can be added easily.
  • Minimal rules, documentation easily employed.
  • Delivers early partial working solutions.
  • Resource requirements are minimum.
  • Easy to manage.
  • Gives flexibility to developers.

Disadvantages of Agile model:

  • More risk of sustainability, maintainability and extensibility.
  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
  • There is a very high individual dependency, since there is minimum documentation generated.
  • Transfer of technology to new team members may be quite challenging due to lack of documentation.
  • Needs special skills for the team.