Prototyping is commonly a means for validating the
software engineer’s interpretation of the software
requirements, as well as for eliciting new requirements.
As with elicitation, there is a range of prototyping
techniques and a number of points in the process where
prototype validation may be appropriate. The advantage
of prototypes is that they can make it easier to interpret
the software engineer’s assumptions and, where needed,
give useful feedback on why they are wrong. For
example, the dynamic behavior of a user interface can be
better understood through an animated prototype than
through textual description or graphical models. There are
also disadvantages, however. These include the danger of
users’ attention being distracted from the core underlying
functionality by cosmetic issues or quality problems with
the prototype. For this reason, several people recommend
prototypes which avoid software, such as flip-chart-based
mockups. Prototypes may be costly to develop. However,
if they avoid the wastage of resources caused by trying to
satisfy erroneous requirements, their cost can be more
easily justified.