Bog'liq Software Engineering Architecture-driven Software Development ( PDFDrive )
223 12.2 Structural design considerations
simulations, or engineering problem-solving techniques. Software prototyping has
evolved into a scandalous practice that subverts formal software engineering prac-
tices in favor of incremental product development strategies. Current software pro-
totyping strategies involve four primary forms of prototyping
6
:
1. Rapid prototyping —creating a working model of various parts of the software
product at a very early stage, after a relatively short investigation. The approach
used in constructing the prototype is usually quite informal, the most important
factor being the speed with which the prototype is completed. The model then
becomes the starting point from which users can reexamine their expectations
and clarify their requirements. When this has been achieved, the prototype
model is thrown away, and the system is formally developed based on the
refined requirements.
2. Evolutionary prototyping —creating a very robust prototype in a structured man-
ner and constantly refine it. The evolutionary prototype forms the foundation of
the software product. This permits the software team to modify and extend the
prototype in a manner that could not be conceived during the requirements and
design activities. Evolutionary prototypes may be deployed and evolved through
use in its intended operational environment. The software product is never “fin-
ished” and is “matured” as the operational environment changes.
3. Incremental prototyping —the final product is built as separate prototypes that
are integrated into an overall product configuration.
4. Extreme prototyping —Extreme prototyping is used for developing web appli-
cations. It establishes a series of three incremental software builds. The first
phase is a static prototype that consists of HTML pages to portray the page
layout design. In the second phase, the HTML pages are dynamic to permit
website navigation. In the third phase, the transaction processing functionality is
implemented.
The misconception surrounding these software prototyping strategies is the sug-
gestion that this resembles engineering. While software prototypes serve a useful
purpose in conventional software development approaches, the software industry has
embraced an amateurish, evolutionary prototyping approach to software product design
and development. This prolongs customer engagements as the product is evolved over
time, results in failed or cancelled projects due to cost overruns and extensive schedule
delays, and provides job security for many unqualified, undisciplined software special-
ists. Using, or perhaps misusing, prototyping has its disadvantages:
●
Faulty assumptions. The focus on a limited prototype can distract software ana-
lysts from addressing the complete scope of the problem space. This can lead
to overlooking alternative design solutions, preparation of incomplete specifica-
tions, and a general lack of appreciation by the analysts for the complexity of
the software problem space.
6
See
http://en.wikipedia.org/wiki/Software_prototyping#Types_of_prototyping