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)