Friday, August 19, 2011

SDLC (Software Development Life Cycle)

SOFTWARE DEVELOPMENT LIFE CYCLE [SDLC] Information:

Software Development Life Cycle, or Software Development Process, defines the steps/stages/phases in the building of software.

There are various kinds of software development models like:

Waterfall model
Spiral model
Iterative and incremental development (like ‘Unified Process’ and ‘Rational Unified Process’)
Agile development (like ‘Extreme Programming’ and ‘Scrum’)

Models are evolving with time and the development life cycle can vary significantly from one model to the other. It is beyond the scope of this particular article to discuss each model. However, each model comprises of all or some of the following phases/activities/tasks.


SDLC IN SUMMARY

Project Planning
Requirements Development
Estimation
Scheduling
Design
Coding
Test Build/Deployment
Unit Testing
Integration Testing
User Documentation
System Testing
Acceptance Testing
Production Build/Deployment
Release
Maintenance


SDLC IN DETAIL

Project Planning

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline

Requirements Development [Business Requirements and Software/Product Requirements]

Develop
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline

Estimation [Size / Effort / Cost]

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline


Scheduling

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline
Designing[ High Level Design and Detail Design]


Coding

Code
Review
Rework
Commit
Recode [if necessary] >> Review >> Rework >> Commit


Test Builds Preparation/Deployment

Build/Deployment Plan
Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline
Build/Deploy


Unit Testing

Test Plan

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline

Test Cases/Scripts

Prepare
Review
Rework
Baseline
Execute
Revise [if necessary] >> Review >> Rework >> Baseline >> Execute


Integration Testing

Test Plan

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline

Test Cases/Scripts

Prepare
Review
Rework
Baseline
Execute
Revise [if necessary] >> Review >> Rework >> Baseline >> Execute


User Documentation

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline


System Testing

Test Plan

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline

Test Cases/Scripts

Prepare
Review
Rework
Baseline
Execute
Revise [if necessary] >> Review >> Rework >> Baseline >> Execute


Acceptance Testing [ Internal Acceptance Test and External Acceptance Test]

Test Plan

Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline

Test Cases/Scripts

Prepare
Review
Rework
Baseline
Execute
Revise [if necessary] >> Review >> Rework >> Baseline >> Execute


Production Build/Deployment

Build/Deployment Plan
Prepare
Review
Rework
Baseline
Revise [if necessary] >> Review >> Rework >> Baseline
Build/Deploy


Release

Prepare
Review
Rework
Release


Maintenance

Recode [Enhance software / Fix bugs]
Retest
Redeploy
Rerelease


Notes:

The life cycle mentioned here is NOT set in stone and each phase does not necessarily have to be implemented in the order mentioned.
Though SDLC uses the term ‘Development’, it does not focus just on the coding tasks done by developers but incorporates the tasks of all stakeholders, including testers.
There may still be many other activities/ tasks which have not been specifically mentioned above, like Configuration Management. No matter what, it is essential that you clearly understand the software development life cycle your project is following. One issue that is widespread in many projects is that software testers are involved much later in the life cycle, due to which they lack visibility and authority (which ultimately compromises software quality).

No comments: