Software Development Life Cycle

SDLC (Software Development Life Cycle)

1.0    Software Development Life Cycle (SDLC)

During 1950’s and 1960’s, software was developed without any systematic approach and because of which many software failed to perform as intended once they are released. This led to follow a systematic way to deliver Quality software and is known as SDLC.

The Process of developing software from its inception to its final release and maintenance is known as Software Development Life Cycle (SDLC).

2.0    Phases in SDLC
SDLC is made up of several phases to manage the software development activities.

a.    Requirements Gathering
b.    Analysis and Planning
c.    Software Design
d.    Coding/Implementation
e.    Testing
f.    Release and Maintenance

2.1    Requirements Gathering

During this phase, the specific requirements of the software to be developed are gathered and documented. Requirements gathering are done differently for Software Application and Software Product as described below.

a.    Software Application

Business Analyst gathers requirements from the customers and documents them in BRS (Business Requirements Specification) document.

b.    Software Product

Business Team gathers requirements from model customers, explores competitor products and prepares PRD (Product Requirement Document) or BRD (Business Requirement Document)

In either case, it is important to ensure that right requirements are captured. BRS or BRD document acts as a bridge between the customer and the designers who develop the software.
BRS or BRD document is sent to Project Manager for Review and Approval. Output of this phase is finalized BRS or BRD document.

2.2    Analysis and Planning

During this phase, Technical manager creates SRS (Software Requirements Specification) document by analyzing BRS document and Project Manager creates Project Plan.

2.2.1    Analysis

Technical Manger analyzes BRS document in terms of below factors

a.    Are they complete requirements?
b.    Are they correct requirements?
c.    Are they achievable requirements?
d.    Are they Testable requirements?

After analyzing the BRS document, Technical Manager creates SRS document which consists of two sub documents.

i.    FRS (Functional Requirement Specification) that describes the functionalities to be developed

ii.    SRS (System Requirement Specification) that describes Software and Hardware to be used.

During this process Technology Manager focuses on Technology selection based on the following factors.

a.    Technical factors
i.    Nature of the application
ii.    Organization’s experience

b.    Business factors
i.    Cost/Budget (Open source software or Licensed software)
ii.    Customer interests

2.2.2    Planning

Planning is done to come up with a schedule, the scope and resource requirements for a release. Project Manager creates the plan that explains how the requirements will be met and by which time. Project plan also contains the scope of the requirements (what will be met and what will not be met) for the project, resource availability.
Project Manager also analyzes the risks involved and contingency plan for them. Finally he comes up with the milestones and release date for the project.
Output of this phase is SRS document and Project Plan

2.3    Software Design

During this phase, System architect or Senior developer creates Software Design Document (SDD) based on the SRS document from the Analysis phase.
The purpose of this phase is to figure out how to satisfy the requirements explained in System Requirements Specification (SRS) document.
Design is usually split into two levels

a.    High Level Design (HLD) or Global Design that contains the overall architecture of the system.

b.    Low Level Design (LLD) or Detailed Design that contains internal architecture of each and every unit/component/module.

Software Design Document (SDD) produced during this phase will be used by the development team to produce the programs.

2.4    Coding/Implementation
During this phase, based on the Design documents Developers develop/implement programs by following the coding standards in the chosen programming language. In addition to coding, this phase also involves the creation of documentation for the software being developed.
Output of this phase is code documents and software that meets the requirements.

2.5    Testing

Software, developed during coding phase, is subjected to testing.
Earlier Developers themselves were testers and there are no separate test teams to test the software. 

Now-a-days, in order to improve the Quality of the software, most of the organizations have separate Testing teams (Independent Test Teams  to test the software).
During this phase, Testers test the software based on the SRS document to check if the requirements are met or not.  If there is any mismatch, defects are reported.
Developers again fix the Defects and testers confirm the defect fixes and close them.
Output of this phase is Tested Software and Test documents.

2.6    Release and Maintenance

2.6.1    Release

Once the software is tested, it is released to the customers.
The released software needs to be deployed in production environment and this is generally done by the Release team (consists of few developers, testers, project management executive and system administrator).  Project Manager forms the Release Team.
If required, Release team provides necessary training to the customers.

2.6.2    Maintenance

As the users/customers start using the software in their environments, they may identify defects which need to be addressed. Thus the software now enters into maintenance phase where in the software is modified to satisfy the changes raised by the customers.
The maintenance activities are performed by the maintenance team (consists of few developers, testers, project management executive) that is formed by Project Manager.
Software Maintenance is of three types as described below

a.    Modifications

i.    Corrective changes – Defects found during production phase require emergency fixes or corrective changes as these are not identified during the Testing phase.

ii.    Enhancements – If customer wants new functionalities to be added to the current system then they are considered as Enhancements.

b.    Migration – Migrating the software from old technology to new technology.
Example: Migrating software from MS Access to SQL Server/Oracle

c.    Retirement – Retiring the old system and developing new system
Example: Changing II-Tier Application to Web application


Post a Comment