Tuesday, October 9, 2007

Software Development Model

Software has become a part of the national infrastructure. It is the differentiating factor. Earlier the software development was personalizes but as the sophistication of applications grew, programs grew in size & complexity & maintenance became difficult. Software projects were taking a lot longer than originally envisaged. So, to overcome these pitfalls & meet the increasing competitiveness in today's business & changing business needs, companies felt the need to follow the software development models. Following are the software development models followed by all the companies today

Waterfall model: This model is also known as classic life cycle Model. It follows the documentation driven paradigm.

It is a time ordered sequence of activities called as life cycle stages. This is the most popular model.

Lifecycle Stages defined in this model are:

1. System Engineering: this stage of waterfall model focus on the following:

Decide & scope of project

Requirement gathering

Estimation

2. Software requirement analysis: Requirements are analyzed with the intention of coming up with the design of the project.

3. Design: It mainly consists of two parts:

High level design (HLD): It divides the system into logical building blocks & explains interface between them.

Detailed level design (DLD): It consists of specifications of programs along with logic.

4. Coding: Implementing the design is implemented using specific language to provide the solution of the problem.

5. Testing: It is done to check that what we have developed is what was expected.

6. Maintenance: When the system is being used in live environment, any bugs that are found will be fixed. If the business requirements change then system might need enhancements.

This model has certain pros & cons.

The main advantage of this model is its simplicity & the logical way of structuring the different activities in a software project.

The main disadvantage is it assumes that the requirements are completely ready before the design which is not the case in most of the development scenarios.

The Spiral Model: This is one of the most generic of all the models. Most life cycle models can be derived as special cases of the spiral model. It uses a risk management approach to software development & emphasizes on the need to go back & reiterate earlier stages a number of times as the project processes. This approach helps to demonstrate a proof of concept early in the cycle & it more accurately reflects the disorderly, even, chaotic evolution of technology.

It is divided into four major activities:

1. Planning: Determining objectives, alternatives & constraints.

2. Risk Analysis: Evaluate alternatives, identification & resolution of risks

3. Engineering: Development & verification of next level product.

4. Validation: Or customer evaluation is customer's assessment of results & suggested modifications.

The main advantage is it defers elaboration of low risk software elements & incorporates prototyping as a risk reduction strategy.

The disadvantage f\of prototyping is it may lead to false expectations & poor system design.

Prototyping:

Requirements are very seldom fully known at the beginning of the project, this model therefore address this fact. It starts with first building a simplified version of the system, and then seeks feedback from the different stakeholders of the project, then come up with a second better system. This cycle is repeated until all the stakeholders are completely satisfied with all aspects of the system.

There are various variations of prototyping:

1. Throwaway Prototyping Model: this is useful in proof of concept where requirements & user's needs are unclear or poorly specified. The approach is to construct a quick & dirty implementation of the system during or before the requirement phase.

2. Evolutionary Prototyping Model: This approach is used in the projects that have low risk in such areas as losing budgets, schedule predictability & control, large system integration problems or coping with information sclerosis, but high risk in user interface design.

3. Rapid Application Development Model: A variation of prototyping model is to perform RAD.RAD requires strict time limits on each phase & relies on tools that enable quick application development.