Where I´ is derived from the number of unexpected problems introduced during the last development iteration, C is the perceived probability that implementing changes to the system now results in a new I´ > 0, and S is the scope of the next development iteration.
The proposed definition of software entropy is as follows:
Although the casual observer might be tempted to compare software development with construction, beyond a few superficial similarities it is counterproductive to do so.ĭespite these difficulties, we can nonetheless lay out the guidelines that will enable us to understand sources of software entropy, measure the extent of the risk it poses to our objectives, and (if necessary) what steps can be taken to limit its growth. These cannot be held in the hand and examined, nor can they be ordered by the eighth of an inch. Whereas builders work with cement and nails, the software developer works with logical assertions and a set of assumptions. Software development is an art and a trade whose core building blocks are ill-defined. It is given no consideration when pulling someone from a development team, prematurely starting a development cycle, or implementing “quick fixes” - moments when, in fact, it is most likely to grow. Unfortunately, software entropy is rarely accorded the importance it deserves. Stated another way, it is a measure of the inherent instability built into a software system with respect to altering it. Software entropy gains its name from the chief characteristic of entropy in the real world: It is a measure of chaos that either stays the same or increases over time. Only by quantifying software entropy and observing its growth over successive releases can we truly understand the risk it poses to our current objectives and future plans. Furthermore, we explore a means by which software entropy can be assigned a concrete value. The primary goal is to create an awareness of software entropy because it is a factor in all forms of software development. His article is aimed at the software developer or project manager who is curious as to what software entropy is, the practical effects on their work, and the underlying factors contributing to its growth.