The software product is first conceived, developed and then delivered. After delivery, the software may undergo changes—the client may find some defects, which need to be rectified; or the client may ask some enhancements. So, after development phase, there will be a maintenance phase till the software retires. This entire cycle is known as the life cycle of software development.
As we discussed earlier, we divide the development process into a number of phases such as requirements specifications, design, implementation, testing and maintenance and each phase has a defined input and a defined output. This is a very simplistic model. It is not practical to use this model for development of software for all types of projects. For instance, if the requirements are not clear, it will be a futile exercise to write the SRS document. For re search-oriented projects, it is difficult to even have a precise problem definition. To facilitate software development for different types of projects, different life cycle models have been proposed. We will discuss the most widely used life cycle models.
Waterfall Model
The waterfall model is widely used for most of the commercial software development projects. This model is shown in Fig. 1.
In this model, the software development process is divided into five stages:
• Requirements specifications
• System design and software design
• Implementation and unit testing
• Integration and system testing
• Operation and maintenance
Requirements specifications
During this phase, the project team will work out in detail, the functionality and the likely limitations of the software product to be developed. A document will be prepared clearly indicating the requirements. It is called the Software Requirements Specifications (SRS) document.
System design and software design
During this phase, from the requirements specifications, the system design is carried out. System design implies hardware design and software design. The functionality of hardware and software are separated out and design of the software modules is worked out in detail. A test plan is also prepared describing the details of tests to be carried out on the system once development is completed.
Implementation and unit testing
In this phase, the design is converted into code. The software is divided into modules and each module is further divided into units. A unit can be defined as a logically separable part of the program. Each unit is tested separately and ensured that it works without any defects.
Integration and system testing
In this phase, all the units are combined together and the system is built. The complete software is tested for its functionality and performance requirements. A test report containing the test results is prepared.
Operation and maintenance
In this phase, the system is delivered to the client and if any enhancements are required, they are carried out. This phase goes on till the software is retired.
Outputs of stages in waterfall model
The attractive feature of waterfall model is that at the end of each stage, a visible output is available. The outputs at the end of each stage are given in Table I.
|
Stage |
Outputs |
|
Requirements specifications |
SRS document Draft user manual Maintenance plan |
|
System design and software design |
System design document Hardware design document Software design document Interface design document Unit test plan System test plan |
|
Implementation and unit testing |
Program code Unit test report |
|
Integration and system testing |
System test report Final user manual Working system |
|
Operation and maintenance |
$ (if the software is without any defects) |
Table I. Outputs at different stages in waterfall model Advantages of waterfall model:
• Because of availability of output at each stage, it has high visibility.
• Project monitoring, both by the internal management team and the
client, is easy because of the visible outputs at each stage.
As it is a conceptually simple model, it is followed in a large number of organizations, particularly for commercial projects.
Limitations/disadvantages of waterfall model:
• For most of the projects, freezing the specifications is extremely
difficult. In such cases, ‘baseline approach’ is followed. Baseline is
defined as the certified output of one stage passed on to the next stage.
The SRS document is written and even though there are some issues
still to be resolved, the design is taken up. While doing the design, if
any changes are to be made in the SRS, a formal procedure is followed
for making the changes on the baseline SRS document.
• For long-term projects (projects of duration one year and above),
waterfall model requires freezing of the hardware. With fast
developments in hardware technology, freezing the hardware may not be appropriate.
• If the client wants the developer to evolve specifications in a gradual manner, this model is not suitable.
Prototyping Model
For some projects, it is very difficult to obtain the exact user requirements (for example, when the user is not IT-literate). In such cases, a prototype is built and demonstrated to the user; and based on the feedback, the SRS document is prepared. As shown in Fig. 2, the prototyping model is used for finalizing the SRS.
Disadvantages of prototyping model:
• The prototype may not be of any use subsequently (that is the reason it
is also known as throw-away prototype).
• The development cost has to be borne by the developer.
Evolutionary Development Model
In this approach, the system is built in stages. As shown in Fig. 3, the initial user requirements are obtained and the product is developed. The user validates the system and gives the feedback for enhancements. The product is refined based on the new requirements. This process is repeated till a user-acceptable product is built.
Advantages of evolutionary development model:
• This model is useful in exploratory programming (such as Artificial
Intelligence applications) where it is difficult to frame the
specifications.
• In case major problems are foreseen, the developer can stop the
development after some iterations.
This model is very appropriate for research projects. For example, to develop software for automatic speech recognition, a small vocabulary can be taken and the system is developed. After achieving success, the vocabulary can be increased in stages. This approach is better than starting development of an unlimited vocabulary speech recognition system directly (and after two years, realizing that it is very difficult!).
Disadvantages of evolutionary development model:
• Because the project is open-ended, no time frame can be set.
• Project monitoring is difficult.
• Less visibility as compared to waterfall model.
Spiral Model
In 1988, Boehm proposed this model. It is a very useful model for projects involving high risk. As shown in Fig. 4, each loop in the spiral represents a development phase (any number of phases can be defined in a project).
Each loop is split into four sections, each section to carry out a specific task:
1. To determine the objectives, alternatives and constraints.
2. Risk analysis and evaluation of alternatives.
3. Execution of that phase of development.
4. Planning the next phase.
For each round of the spiral, one form has to be filled containing the following information.
Objectives: what are the objectives of this phase in terms of technical activities.
Alternatives: what are the alternatives available to achieve the objectives
Constraints: what are the difficulties foreseen in the implementation.
Risk factors: what are the risk items and the impact of the risk items.
Risk resolution: how the risks can be resolved.
Results: what results have been achieved vis-a-vis the objectives
Plans: what are the plans for the next phase.
Commitment: what are the commitments to the client and whether they can be
fulfilled based on the results of this phase of development.
So, at the end of each spiral (phase), the management can review the status based on this form, and decide the future course of action.
Advantages of the spiral model:
• This is a flexible model, the phases can be determined by an
organization depending on the type and complexity of the project.
• This model is suitable for high-risk projects.
• Project monitoring is very effective as risk management is built into
the model. Periodically, the project can be assessed for its risks vis-a
vis the progress and a decision can be taken at the end of each spiral
regarding its continuation or otherwise.
Disadvantages of the spiral model:
• This model is not suitable for low risk projects or projects without any
risk.
• It is a ‘complicated’ model for projects with clear SRS.
Synchronize and Stabilize Model
For developing software products which are highly innovative and with a very short development time (“Internet time”), the above models cannot be applied. In such cases, the ’synchronize and stabilize’ model, applied very effectively by Microsoft and Netscape [M.A. Cusumano and D.B. Yoffie, Software Development on Internet Time, IEEE Computer, Vol. 32, No. 10, October 1999, pp. 60-69] would be very useful. This model is shown in Fig. 5.
To start with, a vision statement for the product is prepared which gives the broad goals of the product. Based on this vision statement, and the inputs from market research, a document is prepared which lists out the important features to be incorporated, if necessary with prioritization (a draft specifications document). The development teams work in parallel on various modules and periodically ’synchronize’ the code by integration and testing. Initially, the synchronization is done less frequently and at later stages very frequently, sometimes daily. These “periodic system builds” are tested for usability, functionality and reliability, and feedback is given to the development teams. During the total planned development time, three or four milestones are defined—these milestones are used to ’stabilize’ the product. Three typical milestones are alpha release, beta release and final release as shown in Fig. 5. This flexibility in the development approach coupled with early integration and testing gives a good ‘feel’ of the product in initial stages itself. Also, the feature prioritization helps in releasing a product with the most important functionality and also helps in meeting the time target.
The special feature of this model is that the specifications (and other work products) are complete only when the product is ready. However, after the alpha testing, the product can be demonstrated to the prospective customers and their feedback can be incorporated into the product. Also, from a management point of view, the model is attractive because the management can start getting a feel of the product from the beginning itself. Also, small teams work on different modules and integrate the modules periodically.
This model has been used extensively by many innovative product development organizations. It is the best model for development of products using cutting edge technologies and with tight schedules.
Advantages of synchronize and stabilize model:
• Because of the intermediate ‘releases’ of the product, the product can
be made feature-rich by incorporating the necessary feedback of the
prospective customers.
• The periodic system building approach paves way for testing the
software for both functionality and performance.
• The integration problems encountered in large projects using other
models are eliminated in this model, again because of the periodic
system building.
• Project monitoring will be easy as there are intermediate milestones,
such as alpha release and beta release.
Disadvantages of the synchronize and stabilize model:
• The detailed specifications document will be made available only at
the time of product release.
• Periodic system builds require a rigorous process to be defined for
integration of various modules.
• A parallel independent test team needs to be in place.
However, for innovative product development, the disadvantages mentioned above do not apply. To experiment with various alternatives and arrive at the right solution and get a good feel of the product from the beginning itself would be important for making a product that would make an impact.
Summary of Development Life Cycle Models
Table II gives a summary of the different models based on which a particular model can be selected for a specific project.
Development life cycle model
Waterfall model
Prototyping model
Evolutionary development model
Spiral model
Synchronize and stabilize model
Features
To be used when the SRS is clear.
Simple and effective model for commercial
projects with clear requirements.
Project monitoring is effective as defined
outputs are available at the end of each
stage._______________________
Useful when the requirements are not clear.
Prototyping generally at developer’s cost.
Good model to develop software for IT
user organizations.____________
Useful for research projects.
Incremental building helps reduce risk for
commercial projects.__________
Useful for high-risk projects.
Complicated model for projects with clear
specifications._______________
Useful model for highly innovative product
development and projects with strict
deadlines.
Specifications will be available only at the
time of releasing the product.
Periodic system builds give a feel of the
product from the beginning to the
management.__________________
Table II. Summary of software development life cycle models
IEEE Standard for Developing Software Life Cycle Processes
The IEEE Standard 1074-1991 for Developing Software Life Cycle Processes (ANSI) [IEEE Press, 1991] gives a detailed set of activities, which need to be carried out for development and maintenance of the software. This is a comprehensive standard covering all the technical and managerial activities. This standard also describes how these activities can be mapped to specific examples of software life cycles. Depending on the need and type of project, software development process can be divided into 8 phases or 5 phases etc. For instance, the 8-phase cycle can consist of
> Concept exploration
> Requirements
> Design
> Implementation
> Test
> Installation and checkout
> Operation and Maintenance
> Retirement
The software life cycle based on 5 phases can consist of the following phases:
> Project initiation
> Concept development
> Definition and Design
> System development
> Installation and Operation
For developing organization-wide process standards, the IEEE standard can be used as the basis.
To summarize, based on the type of the project, a development life cycle model needs to be chosen. Choosing the right type of the model is extremely important as the success of the project depends on this choice.



