SDLC methods and their advantages and disadvantages

Software Development Life Cycle(SDLC) is a series of phases which is the process for building and delivering software systems. SDLC has distinct 6 stages: planning, analysis, design, implementation, testing, and maintenance.


As a brief description let’s see what is happening in each step. SDLC starts with requirement gathering a.k.a planning. Then step 2 is to analyze collected requirements for feasibility and validity. The next step includes the designing of requirements and helps in defining the overall software architecture. Then the coding starts and that is the most important stage for the developers. And various types of testings should be done. All the bugs and enhancements are reported to the developers. At last, maintenance starts. And this should be done from time to time. And if there is any issue the SDLC again starts from phase 1.

For a successful software project, a software engineer needs to choose the best SDLC model based on the project context and business requirements. So software engineers should have a piece of proper knowledge about SDLC models and their pros and cons.

Types of Software Development Life Cycles

  • Waterfall model

Waterfall model

This is one of the oldest surviving SDLC methodologies. If follows a straightforward approach which any phase in the development process begins only if the previous phase is complete. If the customer has very clear documented requirements this method can be used in development.

Waterfall method


  • Easy to explain to the users since each stage has well-defined starting and ending points.


  • Doesn’t take into account changes due to the business plans or market influences during the planning process.

V Model

This is an extension of the waterfall method where V model introduces testing at the end of the each step in development. So, the process steps are bent upwards after the implementation and coding phase, to form the typical V shape. This method is mostly used when Software requirements and Software development technologies and tools are clearly known.

V model


  • Higher success chances because development of test plans early on during the life cycle.


  • Adjusting scope is difficult and expensive.

Spiral Model

The Spiral model enables the project development teams to build a highly customized product and it is considered to be one of the most flexible SDLC methods. Spiral methodology passes through four phases repeatedly until the project is completed. And they are planning, risk analysis, engineering, and evaluation. Each iteration of the Spiral methodology begins with foreseeing potential risks as well as the best way to avoid or mitigate the same. This model is used in the large applications and systems which built-in small phases or segments.

Spiral model


  • Early involvement of developers.


  • High risk of not meeting budget or schedule deadlines

Agile Model

Agile methodology is based on an incremental and iterative approach where requirements and solutions evolve through collaboration between cross-functional teams. A Scrum is a form of implementation of the Agile methodology that helps development teams to structure complex project requirements. This can be used with any type of the project, but it needs more engagement from the customer and to be interactive. Also, we can use it when the customer needs to have some functional requirement ready in less than three weeks and the requirements are not clear enough. This will enable more valuable and workable piece for software early which also increase the customer satisfaction.

Agile model


  • Capable of accommodating new changes or enhancements occurring during the development phase without the budget constraint


  • Almost impossible to determine the effort estimation at the very beginning of the software development for full-size and complex projects.

Iterative Model

This model starts with an initial planning and ends with deployment with the cyclic interactions in between. The basic idea behind this method is to develop a system through repeated cycles and in smaller portions at a time, allowing software developers to take advantage of what was learned during the development of earlier parts or versions of the system.

iterative model


  • Capacity to plan parallel development.


  • As not all requirements are gathered at the very beginning of the project, it is highly likely for system architecture or design issues to spring up.

Software Engineering Undergraduate University of Kelaniya