Friday, August 5, 2011

Software Development Life Cycle (SDLC)

SDLC (System Development Life Cycle), just as the name implies, is defined as the process of developing system or software to meet certain requirements or in other words it is defined as the standard procedure / structured methodology to develop a system or software. It covers many activities: gathering the requirements, understanding and analyzing the requirements, studying the project feasibility, choosing the system design and architecture, implementing/coding and testing it, up to the delivery of the product to the customer.

The Phases involved in SDLC are:

Requirement Collection: In this phase the Business Analyst or the Product Analyst gathers the requirements from the software company (customer). In Service based organizations the person who gathers the requirements are called Business Analysts and in Product Based Organizations they are called as Product Analyst.

Feasibility Study: This phase involves analyzing the requirements and checking whether the project is feasible to develop or not i.e., checking whether the project is feasible from technical, financial and resource point of views.

Designing: The initial structure of the entire project is created in this phase.

  • High level designing: Building the entire architecture of the project. This involves Architect and Senior Developers.
  • Low level designing: Deciding how each and every feature should work. This involves Senior Developers.

Coding: This phase includes coding of the project and involves all the developers assigned to the project (senior, junior, fresher).

Testing: Initially the developer used to develop the project and test it himself. This was the biggest drawback because, he may not have time to test it or may not test the product correctly. For this reason we have software test engineers today. Their main objective is to break the developed project i.e. to find as many bugs as possible.

Installation: Once the product is developed the Senior Developer / Installation Engineers goes to the customer’s place and installs the software whenever it is required.

Maintenance: Maintenance is necessary after the development of a successful project. It is obvious that changes occur once the project is handed over to the end user. The developers must develop the project in such a way that it is adaptable to those changes.  It is also necessary for handling any issues (bugs) once the product is being used by the customer.