Software Development Life Cycle methods, their advantages and disadvantages

Sunanda Karunajeewa
Bootcamp
Published in
8 min readNov 20, 2020

--

What is Software Development Life Cycle?

The Software Development Life Cycle (SDLC) refers to a methodology with clearly defined processes for creating high-quality software. in detail, the SDLC methodology focuses on the following phases of software development:

Main 6 stages of SDLC

1. Identify the Current Problems

“What are the current problems?” This stage of the SDLC means getting input from all stakeholders, including customers, salespeople, industry experts, and programmers. Learn the strengths and weaknesses of the current system with improvement as the goal.

2. Plan

“What do we want?” In this stage of the SDLC, the team determines the cost and resources required for implementing the analyzed requirements. It also details the risks involved and provides sub-plans for softening those risks.

3. Design

“How will we get what we want?” This phase of the SDLC starts by turning the software specifications into a design plan called the Design Specification.

4. Build

“Let’s create what we want.” At this stage, the actual development starts. It’s important that every developer sticks to the agreed blueprint.

5. Code Test

“Did we get what we want?” In this stage, we test for defects and deficiencies. We fix those issues until the product meets the original specifications.

6.Deployment & Maintenance

“Let’s start using what we got.”At this stage, the goal is to deploy the software to the production environment so users can start using the product. The plan rarely turns out perfect when it meets reality. Further, as conditions in the real world change, we need to update and advance the software to match.

SDLC is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace, and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.

1.AGILE methodology

AGILE methodology is a practice that promotes continuous iteration of development and testing throughout the software development lifecycle of the project. In the Agile model, both development and testing activities are concurrent, unlike the Waterfall model.

Advantages of Agile Software Development Methodology

  • Manage Change More Effectively-By by creating smaller iterations, the team is able to focus on providing value without needing to get all the requirements upfront. At the end of each iteration the team will review the backlog of features and re-prioritize where they should invest time in the next sprint.
  • Improved Customer Engagement-Agile requires that the clients are significantly involved in the development process. The development team is going to look to the clients to prioritize what is going into the next sprint and to review work products during review sessions. This continual interaction reduces the confusion between what the client wants and what the developers are going to provide.
  • Increased Productivity-Agile makes better use of your resources, allowing them to get started faster and remain productive throughout. With work broken into iterations, there is always a milestone and deadline. Developers are always focused on refactoring and moving forward. They won’t be sitting idle, waiting for work during the discovery and design phase.
  • Visibility-Agile lets you see and become intimately familiar with the product from inception to completion. While watching the application grow, you can provide feedback as it progresses.
  • Agree on Clear Definitions-Do the words “ready” and “done” create confusion for your IT team? In the Agile world, you set the parameters for these definitions. “Done” can mean fully tested, or it can mean that it is ready for the client to test. Clear definitions give developers more accountability, and everyone agrees on goals.

Disadvantages of Agile Software Development Methodology

  • In the case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
  • There is a lack of emphasis on necessary designing and documentation.
  • The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
  • Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers unless combined with experienced resources.

2. Waterfall methodology

The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. The Waterfall model is the earliest SDLC approach that was used for software development. The waterfall Model illustrates the software development process in a linear sequential flow. This means that any phase in the development process begins only if the previous phase is complete. In this waterfall model, the phases do not overlap.

Advantages of the Waterfall Model

  • It allows for departmentalization and managerial control.
  • Simple and easy to understand and use.
  • Easy to manage due to the rigidity of the model — each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.
  • A schedule can be set with deadlines for each stage of development and a product can proceed through the development process like a car in a car-wash, and theoretically, be delivered on time.

Disadvantages of Waterfall Model

  • A strict waterfall model doesn’t allow going back once the stage is completed. If any problem is determined at any of the stages which discover the mistake of the earlier stage, it’s too late to rectify.
  • It is difficult to state all the requirements explicitly at the starting which causes natural uncertainty at the beginning of the project.
  • The client must have patience as he will be able to see the working model only during the deployment stage and if any problem is detected at that time it is too late to modify due to the rigidity of the waterfall model.
  • The waterfall model is difficult to implement in a complex project.
  • As the testing stage comes very late it becomes difficult and challenging to determine the problems uncovered at early stages.

3.V -Shaped methodology

The V-model is a type of SDLC model where the process executes in a sequential manner in a V-shape. It is also known as the Verification and Validation model. It is based on the association of a testing phase for each corresponding development stage. Development of each step directly associated with the testing phase. The next phase starts only after completion of the previous phase i.e. for each development activity, there is a testing activity corresponding to it

Advantages of V-Shaped methodology

  • Simple and easy to use. Testing activities like planning, test designing happens well before coding. This saves a lot of time. Hence a higher chance of success over the waterfall model.
  • Proactive defect tracking — that is defects are found at an early stage.
  • Avoids the downward flow of the defects.
  • Works well for small projects where requirements are easily understood.

Disadvantages of V-model:

  • Very rigid and least flexible.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • In the V-model, when there will any changes during the development than need to update all the testing documents besides SRS docs.

4.Iterative methodology

Iterative development is a way of breaking down the software development of a large application into smaller chunks. In iterative development, feature code is designed, developed, and tested in repeated cycles. With each iteration, additional features can be designed, developed, and tested until there is a fully functional software application ready to be deployed to customers.

Advantages of Iterative Model

  • Generates working software quickly and early during the software life cycle.
  • More flexible — less costly to change scope and requirements.
  • Easier to test and debug during a smaller iteration.
  • Easier to manage risk because risky pieces are identified and handled during its iteration.
  • Each iteration is an easily managed milestone.

Disadvantages of Iterative Model

  • Each phase of an iteration is rigid and do not overlap each other.
  • Problems may arise pertaining to system architecture because not all requirements are gathered upfront for the entire software life cycle.

5. Spiral methodology

The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of an iterative development process model and sequential linear development model i.e. the 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.

Advantages of the Spiral Model

  • Additional functionality or changes can be done at a later stage
  • Cost estimation becomes easy as the prototype building is done in small fragments
  • Continuous or repeated development helps in risk management
  • Development is fast and features are added in a systematic way
  • There is always a space for customer feedback

Disadvantages of Spiral Model

  • Risk of not meeting the schedule or budget
  • It works best for large projects only also demands risk assessment expertise
  • For its smooth operation, the spiral model protocol needs to be followed strictly
  • Documentation is more as it has intermediate phases
  • It is not advisable for a smaller project, it might cost them a lot

--

--