Software Development Life Cycle (SDLC)

Ovindu Archana
7 min readNov 20, 2020

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.

The following figure is a graphical representation of the various stages of a typical 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. All stakeholders then review this plan and offer feedback and suggestions. It’s crucial to have a plan for collecting and incorporating stakeholder input into this document. Failure at this stage will almost certainly result in cost overruns at best and the total collapse of the project at worst.

4. Build

“Let’s create what we want.”

At this stage, the actual development starts. Every developer must stick to the agreed blueprint. Also, make sure you have proper guidelines in place about the code style and practices.

For example, define a nomenclature for files or define a variable naming style such as camelCase. This will help your team to produce organized and consistent code that is easier to understand but also to test during the next phase.

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. In short, we want to verify if the code meets the defined requirements.

6. Software Deployment

“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. However, many organizations choose to move the product through different deployment environments such as a testing or staging environment.

This allows any stakeholders to safely play with the product before releasing it to the market. Besides, this allows any final mistakes to be caught before releasing the product.

SDLC Models

There are a lot of SDLC models. Each process model follows a Series of steps unique to its type to ensure success in the process of software development.

Waterfall Model

The Waterfall Model was the first Process Model to be introduced. 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.

Advantages

  • The advantage of waterfall development is that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one.
  • The waterfall model progresses through easily understandable and explainable phases and thus it is easy to use.
  • It is easy to manage due to the rigidity of the model — each phase has specific deliverables and a review process.
  • In this model, phases are processed and completed one at a time and they do not overlap. The waterfall model works well for smaller projects where requirements are very well understood.

Disadvantages

  • It is difficult to estimate time and cost for each phase of the development process in the waterfall model.
  • Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought-out in the concept stage.
  • Not a good model for complex and object-oriented projects.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing.

Iterative Model

In this Model, you can start with some of the software specifications and develop the first version of the software. After the first version if there is a need to change the software, then a new version of the software is created with a new iteration. Every release of the Iterative Model finishes in an exact and fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made respectively. The final output of the project renewed at the end of the Software Development Life Cycle (SDLC) process.

Advantages

  1. Testing and debugging during smaller iteration is easy.
  2. Parallel development can plan.
  3. It is easily acceptable to ever-changing needs of the project.
  4. Risks are identified and resolved during iteration.
  5. Limited time spent on documentation and extra time on designing.

Disadvantage

  1. It is not suitable for smaller projects.
  2. More Resources may be required.
  3. Design can be changed again and again because of imperfect requirements.
  4. Requirement changes can cause over budget.
  5. Project completion date not confirmed because of changing requirements.

Spiral Model

Spiral Model is a combination of Iterative Development Model and Waterfall Model with a very high emphasis on risk analysis. It allows for incremental releases of the product or incremental refinement through each iteration around the spiral.

This model is best used for large projects which involves continuous enhancements. There are specific activities which are done in one iteration (spiral) where the output is a small prototype of the large software. The same activities are then repeated for all the spirals till the entire software is build.

Advantages

  • Cost estimation becomes easy as prototype building is done in small segments.
  • Development can be divided into smaller parts and more risky parts can be developed earlier which helps better risk management.
  • Development is fast and features are added in a systematic way.
  • There is always a room for customer feedback and the changes are implemented faster.

Disadvantages

  • It works best for large projects only and could be expensive for small projects.
  • Risk analysis is an important phase so it requires expert people for risk assessment.
  • Documentation is more as it has a large number of intermediate phases for its smooth operation spiral model protocol that needs to be followed strictly.

Agile model

The agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In Agile, the tasks are divided into time boxes to deliver specific features for a release.
An iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.

Advantages

  • Is a very realistic approach to software development.
  • Promotes teamwork and cross-training.
  • Functionality can be developed rapidly and demonstrated.
  • Resource requirements are minimum.
  • Suitable for fixed or changing requirements
  • Delivers early partial working solutions.
  • A good model for environments that change steadily.
  • Minimal rules, documentation easily employed.
  • Enables concurrent development and delivery within an overall planned context.
  • Little or no planning required.
  • Easy to manage.
  • Gives flexibility to developers.

Disadvantages

  • Not suitable for handling complex dependencies.
  • More risk of sustainability, maintainability and extensibility.
  • An overall plan, an agile leader and agile PM practice is a must without which it will not work.
  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
  • Depends heavily on customer interaction, so if the customer is not clear, the team can be driven in the wrong direction.
  • 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.

V-Model

The V-Model is SDLC model where the execution of processes happens in a sequential manner in V-shape. It is also known as Verification and Validation Model. V-Model is an extension of the Waterfall Model and is based on the association of a testing phase for each corresponding development stage. This means that for every single phase in the development cycle there is a directly associated testing phase. This is a highly disciplined model and the next phase starts only after completion of the previous phase.

Advantages

  • This is a highly disciplined model and Phases are completed one at a time.
  • Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
  • Simple and easy to understand and 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.
  • The implementation of testing starts right from the requirement phase, defects are found at an early stage.
  • Works well for small projects where requirements are easily understood.

Disadvantages

  • Very rigid and least flexible so adjusting scope is difficult and expensive.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing.

--

--