A Contingency Approach to Software Development
For several years now there is a growing quest for speed and flexibility in software development. It is associated with recommendations for the design of software development like extreme programming, rapid development, agile, adaptive development, synch-and-stabilize, light methodologies etc. Like older recommendations these more recent ones are not explicitly restricted to certain conditions of application. Therefore we can assume that they are considered universally valid by their proponents. As there are several good reasons for expecting the various partly contradictory recommendations not to be equally suitable for any condition, we propose to set up a contingency approach, associating different situations to appropriate recommendations. Several questions arise: Which attributes are used to describe the alternative designs of software development? Which relevant alternative designs can be distinguished? Which attributes are used to describe the alternative situations? Which relevant alternative situations can be distinguished? Which design of software development is recommended for which situation? The empirical investigation of the factual design of software development in different firms demonstrate, that also in a given situation, there is a considerable range of acceptable designs. Therefore a contingency approach also needs to describe and explain the range of design acceptable for a given situation?