Build-and-Fix Model
Product is constructed without specifications or any attempt at design
Greater cost
Difficult to maintain
Greater chances of regression faults
Used until the waterfall model was put forward by Royce in 1970.
A life-cycle model specifies the various phases of the software process and the order in which they are to be carried out.

 
 
 
 
 
 
 
 
 
 
 

Waterfall Model
Waterfall Model was first put forward by Royce in 1970.
Waterfall Model and the Rapid prototyping models are the most widely used.
Feedback loops among the various stages permit modifications to be made.
Advantages
Discipline
Documentation - 67% of a software budget is devoted to maintenance, and documentation stipulations will make this maintenance easier.
SQA
No phase is complete until the documentation is complete and the products of the phase have been approved by he SQA group.
Inherent in every phase of the waterfall model is testing. Disadvantages
Document driven - There is a great difference between the way a client understands a product as described in the specification document and the actual product.
May lead to a product that does not satisfy the customer's needs

 
 
 
 

Rapid Prototyping Model
Main strength is that it can help to ensure that the client's real needs are met.
A rapid prototype is a working model that is functionally equivalent to a subset of the product.
First step is to build a rapid prototype and to let the client and future users interact with and experiment with it.
Advantage here is validation from the user.
Another major strength - the development of the product is essentially linear. Although the rapid prototype has been hurriedly assembled, the design team can gain insights from it. The sole use of the rapid prototype is to determine what the client's real needs are; once this has been determined, the rapid prototypes is effectively discarded. Disadvantages:
Client's expectations are affected - client expects early delivery of the entire product
Poor overall design can result
Integrating the Waterfall and Rapid Prototyping Models
Rapid prototyping can be used as a requirements analysis technique, then that prototype is used as input to the waterfall model.

 
 

Incremental Model
Product is designed, implemented, integrated, and tested as a series of incremental builds.
After each new build is coded, it must be integrated into the system
The correct number of builds is crucial to success
Too few builds -- model disintegrates to build-and-fix (a questionable statement according to Dr. Sherrell)
Too many builds -- time of integration testing is too costly
Advantages:
Early delivery of portions of product
Reduces traumatic effect of introducing a completely new product to an organization
Smaller capital outlay for client
Flexibility -- supports changing requirements and maintenance
Disadvantages
Requires more careful design
Too easily degenerates into build-and-fix (?)
Contradiction of model requires a skilled developer
Two versions of the Incremental Model:
Version 1 -- overall design is done before the first build
Version 2 -- Builds occur in parallel (version 2 is more risky)
Synchronize and Stabilize Model
July, 1997 issue of "Communications of the ACM" has an article on this model, called "How Microsoft Builds Software".
Model used by Microsoft, worlds's largest manufacturer of shrink-wrapped software.
Requirements Analysis Phase:
Numerous potential customers are interviewed
A list of features is extracted, and those are prioritized according to what the customer wants.
Specifications are drawn up. Product is divided into 3 - 4 builds.
Build 1 consists of the most critical features, build 2 the next most critical, etc.
Builds are carried out by teams working in parallel.
Synchronization is done at the end of the day.
The partially completed components are put together, and the product is tested and debugged.
Stabiliztion is performed at the end of each of the builds.
Faults are fixed and the build is frozen.
A major idea involved is daily testing. Advantages:
Repeated synchronization
Early insight into the product

 
 
 

Spiral Model
Proposed by Boehm (1988)
Simplified idea -- waterfall model with each phase preceded by risk analysis
First Step - risk analysis and a rapid prototype
Spiral Model characteristics:
Radial dimension is the cumulative cost to date
Cycle - phase of the life cycle
Angular dimension - progress through the spiral
Determine objectives, alternatives, and constraints Evaluate Alternatives, Identify and resolve risks.
Plan Next Phase Develop and verify next level product.
Advantages of Spiral Model:
Supports reuse of existing software
Helps decide how much testing is needed
Maintenance is treated the same as development
Risk-driven
Restrictions of Spiral Model
Internal development for large-scale software
must be well trained to do risk-analysis
Risk-driven
it is time-consuming and costly


Object-Oriented Life-Cycle Models
Need for iteration between the phases is more common with this model.
Whole point of model is the reuse of components.
Objects are decided on in the Analysis Phase.
Henderson-Sellers devised the Fountain Model
Object-Oriented Life-Cycle Models all have that they:
are iterative in nature
incorporate some form of parallelism
support incremental development
Advantages
Support for iteration and parallelism
Disadvantages
CABTAB - "code a bit, test a bit"
Line through the middle of the Fountain Model shows the long-range goal of linearity.
Circles overlapping shows overlapping of activities
Smaller circle for maintenance denotes less need for maintenance with object-oriented model.
It appears that iteration is an intrinsic property of software production in general and the object-oriented paradigm in particular.
 
 
 

Comparison of Life-Cycle Models
Each software development organization should decide on a life-cycle model that is appropriate for that organization, its management, its employees, and its software process, and vary the model depending on the features of the specific product currently under development. Such a model will incorporate appropriate features from the various life-cycle models, utilizing their strengths and minimizing their weaknesses.