Saturday, March 3, 2007

SDLC

The software development life cycle (SDLC) is the entire process of formal, logical steps taken to develop a software product. Software development is the process of developing software through successive phases in an orderly way. This process includes not only the actual writing of code but also the preparation of requirements and objectives, the design of what is to be coded, and confirmation that what is developed has met objectives.

The software development life cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system development project, from an initial feasibility study through maintenance of the completed application.

Typical phases of software development:

1) Requirement Analysis
2) Software design
3) Development or Coding
4) Testing
5) Maintenance

Requirement Analysis:

The new system requirements are defined. The requirements of a desired software product are extracted. Based the business scenario the SRS (Software Requirement Specification) document is prepared in this phase. The purpose of this document is to specify the functional requirements of the software that will be produced by the SOS project group. The specifications are intended to guide the group through the development process.

Design:

Plans are laid out concerning the physical construction, hardware, operating systems, programming, communications, and security issues for the software. Design phase is concerned with making sure the software system will meet the requirements of the product. It should also ensure that the future requirements will also be addressed.

Development (or) Coding:

Programs are developed by the developers with the help of the design. The design is reduced to code by the software engineers.

Testing:

Testing is evaluating the software to check for the user requirements. Here the software is evaluated with intent of finding defects.

Maintenance:
Once the new system is up and running for awhile, it should be exhaustively evaluated. Maintenance must be kept up rigorously at all times. Users of the system should be kept up-to-date concerning the latest modifications and procedures.

Software development life cycle models:

The waterfall model:
This is the best known and oldest model, with a linear and sequential method that has goals for each development phase. In waterfall model there are no iterative or overlapping steps. They state requirements, analyze them, design a solution approach, develop code, test, deploy, and maintain. After each step is finished, the process proceeds to the next step. One drawback of the waterfall is that it is static about user requirements. It does not allow for much revision.

Rapid application development (RAD):
The problem with previous methodology was that applications took so long to build that requirements had changed before the system was complete, often resulting in unusable systems. This model is based on the concept that better products can be developed more quickly by: using groups to gather system requirements, prototyping and reiterative testing of designs and less formality of team communications such as reviews.
Advantages:
Increased speed of development and increased quality.
Disadvantages:
Reduced Scalability and reduced features.

The prototyping model: In this model, a prototype is built, tested, and then reworked as necessary until an acceptable prototype is finally achieved from which the complete system or product can now be developed.

The spiral model: This model of development combines the features of the prototyping model and the waterfall model. Each phase starts with a design goal and ends with the client (who may be internal) reviewing the progress thus far. Analysis and engineering efforts are applied at each phase of the project, with an eye toward the end goal of the project. The spiral model is favored for large, expensive, and complicated projects.

No comments: