Often, a customer defines a set of general objectives for software but does not identify detailed input
, processing, or
output requirements. In other cases, the developer may be unsure of the efficiency of an algorithm, the adaptability of
an operating system, or the form that human/machine interaction should take. In these, and many other situations, a
prototyping paradigm may offer the best approach.