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. |
|