Page 319 -
P. 319
290 PART THREE CONVENTIONAL METHODS FOR SOFTWARE ENGINEERING
FIGURE 11.6
Additional
Selecting the
Throwaway Evolutionary preliminary
appropriate
Question prototype prototype work required
prototyping
approach
Is the application domain understood? Yes Yes No
Can the problem be modeled? Yes Yes No
Is the customer certain of basic system Yes/No Yes/No No
requirements?
Are requirements established and stable? No Yes Yes
Are any requirements ambiguous? Yes No Yes
Are there contradictions in the requirements? Yes No Yes
9
to be too complex for prototyping. If, however, the complexity can be partitioned, it
may still be possible to prototype portions of the software.
Because the customer must interact with the prototype in later steps, it is essen-
tial that (1) customer resources be committed to the evaluation and refinement of the
prototype and (2) the customer is capable of making requirements decisions in a
timely fashion. Finally, the nature of the development project will have a strong bear-
ing on the efficacy of prototyping. Is project management willing and able to work
with the prototyping method? Are prototyping tools available? Do developers have
experience with prototyping methods? Andriole [AND92] suggests six questions (Fig-
ure 11.6) and indicates typical sets of answers and the corresponding suggested pro-
totyping approach.
11.4.2 Prototyping Methods and Tools
For software prototyping to be effective, a prototype must be developed rapidly so
that the customer may assess results and recommend changes. To conduct rapid pro-
totyping, three generic classes of methods and tools (e.g., [AND92], [TAN89]) are
available:
Fourth generation techniques. Fourth generation techniques (4GT)
encompass a broad array of database query and reporting languages, pro-
gram and application generators, and other very high-level nonprocedural
languages. Because 4GT enable the software engineer to generate exe-
cutable code quickly, they are ideal for rapid prototyping.
Reusable software components. Another approach to rapid prototyping
is to assemble, rather than build, the prototype by using a set of existing soft-
ware components. Melding prototyping and program component reuse will
9 In some cases, extremely complex prototypes can be constructed rapidly by using fourth genera-
tion techniques or reusable software components.

