To frame our discussion, consider:
What are strategies used in industry to model the software development process?
What are the similarities and differences between these universal models?
What processes or tasks span phases of the lifecycles?
What factors guide the choice of one process model over another?
Requirements Analysis | What is the problem?
Functions to be developed Feasibility Study
|
Design | What is the solution?
A system model which solves the problem for the user. |
Implementation | How is the solution constructed?
A transformation of the design into an executable form. |
Testing | Is the problem solved?
Determining if the solution as constructed meets the
requirements. |
Delivery | Can the customer use the solution? |
Maintenance | Are enhancements/changes needed?
Corrective - repair
errors |
Design Errors |
Coding Errors | |
TOTAL | 64% | 36% |
FOUND AFTER | ||
IMPLEMENTATION | 45% | 9% |
AVERAGE | ||
DIAGNOSTIC TIME | 3.1 HRS | 2.2 HRS |
AVERAGE | ||
CORRECTION TIME | 4.0 HRS | .8 HRS |
Verification - are we building the product right?
3. The customer must have patience. A working version of the program will not be available until late in the project timespan.
4. Developers are often delayed unnecessarily.
(Pressman, p. 32)
5. Phased model does not adequately reveal all the tasks associated with the activity.
Rapid prototyping assumes that 'real' requirements exist and by iterating through the tasks they can be determined.
Evolutionary prototyping assumes that the project requirements will be subject to continuous change. Evolutionary prototyping a series of fully functioning complete systems with each successive system the new requirements are incorporated.
Boehm (1984), as reported in Vliet (p. 37), had seven groups develop a
system. Three groups took the traditional approach (waterfall) in which the
requirements were written prior to subsequent activity. Four groups used an
evolutionary prototyping strategy. The findings were:
1. Prototyping took 40%
less time and resulted in 45% less code
2. The traditional approach resulted
in a more robust product which was expected to be easier to maintain.
Alavi (1984), as reported in Vliet (p. 38), reports that users were more
positive about the systems developed using the prototyping approach. The
positive attitude concerns both the process and the product. Users felt more
involved and had fewer conflicts with the designers. Designers had some
difficulty with changing requirements and controlling the development
process.
The RAD (Rapid Application Development) model is a high speed version of the waterfall model. The emphasis is on short development cycle. Short development cycle is achieved by using component-based construction. Typical use for RAD development is for information systems.
The spiral model attempts to encompass the best features of both the prototyping and phased lifecycle models. The spiral model adds a new element, risk analysis.
S. Pfleeger (1991) Software Engineering. New York: Macmillan.
Pressman (1997) Software Engineering: A Practitioners Approach. New York:McGraw-Hill.
van Vliet, Hans (1993) Software Engineering: Principles and Practice. Chichester: John Wiley & Sons.