Constantine’s Equivalence: A Measure of Cost

Larry Constantine’s insight into the nature of software costs starts by noting that most of the cost of software is in the cost of change:

  cost(software) ~= cost(change)

All the little changes don’t add up to much, it is the jackpot changes that drive up the cost of software:

  cost(software) ~= cost(change) ~= cost(big changes)

Those big jackpot changes, in turn, are a result of coupling:

cost(software) ~= cost(change) ~= cost(big changes) ~= cost(coupling)

While managing the cost of software may feel overwhelming, it reduces to managing coupling:

  cost(software) ~= cost(coupling) ... removing coupling doesn’t come for free. Structure changes can remove coupling, but they require investment. The equation you’re juggling is:

  cost(software) ~= cost(coupling) + cost(decoupling)