Complexity and uncertainty in software design
Lars Mathiassen, Jens Georg Stage · 2002
The authors focus on two modes of operation, namely, rational and experimental, and on two means of expression, namely, specifications and prototypes, as key features of approaches to software design. The discussion is based on an examination of relevant trends in software development and on reappreciation of well-known principles of human problem-solving. They conclude that the effectiveness of a design effort is restricted by the principle of limited reduction: relying on rational behavior to reduce complexity introduces new sources of uncertainty and this requires experimental countermeasures. Correspondingly, relying on experimental behavior to reduce uncertainty introduces new sources of complexity requiring rational countermeasures. One important implication of this principle is that effective software design requires a systematic effort combining rational and experimental modes of operation, independently of whether specifications or prototypes are used.>