SDLC: Software Development Life Cycle

SDLC is a guide that describes the process for planning, creating, testing, deploying and maintaining a software project. The purpose of SDLC is to provide a high quality bug free software that meets or even exceeds customer satisfaction as well as the software is completed in estimated cost and time.
SDLC provides well defined plan for overall development of the project.

There are five phases in SDLC:

  1. Requirement & Analysis
    It is one of the most important stage of SDLC. In this stage, senior members of the team most probably Business Analysts & System Analysts understand all the customer requirements, point out challenges in development, perform feasibility and market research.
  2. Design
    In the step, the project is properly documented and is approved by the customer. This is done through SRS (Software Requirement Specification) document which consists of all the product requirements and timelines to develop. Next the architecture of the product is designed and documented in a DDS (Document Design Specification).
  3. Coding
    In this stage, the actual product is developed by choosing one of the SDLC models.
  4. Testing
    This stage is also part of coding stage as well. During and after development, testers tests the products with a testing plan. The testers logs bugs using Excel sheets or tools like Bugzilla and report them back to developers. Developers then fix the bugs and the final product is then delivered to customer.
  5. Maintenance
    In this phase, more bugs are fixed if they occur as well as minor UI changes are also done.

SDLC Model

An SDLC model specifies the approach one should choose for the proper development of a project. It defines the processes and phases to be carried out during the project development.

Some of the most popular SDLC models are:

  1. Waterfall Model
  2. Iterative Model
  3. Spiral Model
  4. Agile Model

Waterfall Model

It is a sequential non-iterative model which describes development phases downwards one after another. The next phase will only start when previous phase is complete.
Advantages
a. Minimal planning needed
b. Low cost as planning overhead is minimum
c. Ideal for small projects with clear requirements
d. Quick delivery

Disadvantages
a. Inflexible approach
b. Changes during development is hard to implement
c. Customer can see only complete project
d. Not good for big projects or where requirements are not clear

Iterative Model

In this model, a simple implementation of the actual system is developed first and then enhanced further. In each iteration, new design and functionality is added to the software.
Advantages
a. Initial system can be developed quickly
b. Parallel development can be planned
c. Software with limited functionality can be released quickly. The functionality can be added in next version.
d. Better suited for large projects

Disadvantages
a. Difficult to design system architecture as all requirements are not clear
b. End of project may not be known
c. Higly skilled resources are required for risk analysis

Prototype Model

In this model, first aim is to develop the prototype of the system. The customer then checks the prototype and provies input. The prototype is then further developed and refined as a complete software.
Advantages
a. Customer can see what’s going on and can provide input.
b. Ideal for online systems where large number of user input is expected.
c. Helps developers and customers to better understand the strength and weakness of the system.

Disadvantages
a. Focusing on prototype can mislead the developers from understanding the actual system.
b. Customer may get confused believing prototype to be the actual system.
c. Expensive in terms of cost as prototype needs to be reviewed by the customer again and again.

Agile Model

In agile model, the tasks are divided into time frames to deliver specific features for a release. Each time frame to deliver a feature is called a sprint. This model is similar to iterative model in some sense as new features are added in every sprint like new features are added in every iteration.
Advantages
a. Project timelines and requirements are clear
b. Promotes teamwork
c. Functionality can be developed quickly and can be demonstrated to customer
d. Easy to manage

Disadvantages
a. Without a proper agile leader, the model will not work
b. High work pressure to meet deadlines
c. Developer may develop wrong product if customer requirements are not clear