Which approaches to software development should be used in which situations? This fundamental question is explored based on experiences from nine comparable small-scale software projects using prototyping and specifying.

An empirical interpretation suggests that mixed approaches to software development will benefit from the strengths of both specifying and prototyping. On functionality, robustness, ease of use, and ease of learning mixed approaches led to products of a quality that was at least comparable to the products of specialized approaches based on either specifying or prototyping. Moreover, the Spiral Model was experienced as a useful framework for combining specifying and prototyping approaches to software development.

A theoretical interpretation relates these practical lessons to The Principle of Limited Reduction. This principle suggests that effective software development must cope with both complexity and uncertainty. This requires a systematic effort combining analytical and experimental approaches, independently of whether specifications or prototypes are used.