Rapid Software Prototyping
Table of Contents
- Definition
- Questions
- Types of Prototypes
- Rapid Software Prototyping - Critical Questions
- Throwaway Prototypes
- Quick and Dirty Prototypes
- Detail Design-Driven Prototypes
- Nonfunctioning Mock-ups
- Evolutionary Rapid Prototyping
- Rapid Prototyping Risks
A software rapid prototype is a dynamic visual model providing a
communication tool for customer and developer that is far more
effective than either narrative prose or static visual models for
portraying functionality.
It has been described as:
- Functional after a minimum amount of effort
- A means for providing users of a proposed application with a
physical representation of key parts of the system before system
implementation
- Flexible: modifications require minimal effort
- Not necessarily representative of a complete system
Software prototyping is an information system development methodology
based on building and using a model of a system for designing,
implementing, testing, and installing the system.
A software mock-up is a system development approach based on building
and using a model of a system for discovering the requirements of the
system.
Bottom Line: THE PROTOTYPE BECOMES THE SYSTEM
- Is the prototype simply the first version of the final product?
- Will a prototype module be as easy to modify as a dataflow diagram?
- Is the prototype to be used only to experiment with various design
alternatives?
- Are we prototyping to test the requirements specifications?
- Will the prototype use actual data and allow the user to test
what-if scenarios during demonstrations?
- Will there be any possibility of evolving the prototype into the
final product?
- Test Model (Detail Design-Driven)
- Quick and Dirty
- Throw Away
- Mock up
- Evolutionary
Q. What critical objectives of software development are most effectively
achieved through rapid prototyping?
A. Rapid prototyping is basically an analysis technique.
- discovery of the true and complete set of functional
requirements for a proposed system
In classical software development, the client usually cannot view a
physical representation of the final system until the testing phase.
- this is critical in projects with very long development
times results in a very low probability of delivering an
acceptable software system
Q. Are special software or hardware tools (or both) required to
do rapid prototyping?
A. This depends on the type of prototype. There are six
different tool-dependent approaches in current use:
- AI - LISP or PROLOG on a dedicated machine
- Mainframe - based on DBMS technology
- NIH (Not Invented Here) - proprietary rapid prototyping
systems
- ADA - based on reusable code packages and program libraries,
i.e. features of the language
- Bare Hands - based on perceived absence of a requirement
- RDMS - based on relational DBMS technology and interface tools
Q. To what extent should end users be involved in rapid prototyping?
A. About 50 percent of the development effort is user contributions. The users
will always be present.
- a product designed to be used only to help the customer identify requirements
for a new system
- the product cannot be implemented or even evolved into a deliverable
system - only the derived requirements will be maintained often a result of
tools that are unsuitable for use in production systems
- the approach of quickly bringing up a version of a system, then modifying it
until the customer can grant minimal approval
- care must be taken so that something intended to be temporary does not
actually become permanent
- derived from engineering disciplines where ``prototype'' means a preproduction
model of a system
- the model is ``test-driven'' to uncover any defects
- provides the customer with visual examples of inputs to and outputs from
system processes
- no data are actually input, nor are results computed and output
- distinction between throwaways and mock-ups based on the presence or absence
of real data
- not definitive in identifying functional requirements because of the lack of
interactive experimentation
- an easily modifiable and extensible working model of a proposed system, not
necessarily representative of a complete system, which provides users with
a physical representation of key parts of the system before implementation
- an easily built, readily modifiable, ultimately extensible, partially
specified, working model of the primary aspects of a proposed system
- the goal is to evolve the prototype into the final system
- the primary objective is to provide a cost-effective means of
discovering the true and complete set of system functional requirements
that will optimally satisfy the legitimate business needs of the user,
given a level of funding acceptable to the customer and software developer.
- evolutionary prototyping techniques can be applied effectively to all
phases of the software development cycle.
- detailed analysis and design do still take place.
- the techniques of evolutionary prototyping are applied concurrently
with structured analysis at the beginning of the project and with structured
design during the tuning phase.
- characteristics:
- real-world data is used during prototyping
- must be modifiable
- should, in most cases, develop into the final system
- mistaken concepts of rapid prototyping concerning definitions, objectives
and correct application of the technique
- disagreements with users and customers regarding methodology, standards,
tools and so on
- out-of-control users who want to iterate and evolve a prototype into a
system that does everything for everyone all of the time
- budget slashes and effort shortcuts - temptations brought about by use of
the word ``rapid''
- premature delivery of a prototype instead of a final (thoroughly documented
and tuned) product
- overevolved prototypes - substituting elegance and efficiency for flexibility
Author: D.A. Stacey
Date of Last Update: .