Cost of Change — The Hidden Driver Behind Our Software Delivery Choices
1. What Is Cost of Change?
Cost of change refers to the dollar value a project incurs if a business requirement is modified before delivery. Naturally, we want the cost of change to be as small as possible.
Cost of Change in software engineering has the following characteristics:
2. Agenda for the Series
3. Measuring Cost of Change
An empirical approach was suggested to measure the cost of change in software engineering projects in a paper published in 2012 titled “Measuring the Impact of Changing Requirements on Software Project Cost: An Empirical Investigation”. The approach provides a conceptual framework founded on two ideas:
4. Drivers of Cost of Change
To better understand the cost of change, we need to examine the drivers behind it. Implementing a new feature requires, at the minimum, some analysis and coding. Business value is created at this stage, and the customer is happy to cover the costs.
Ideally, the cost of change can be modelled as:
As pointed out by Winston Royce in his famous paper in 1970, analysis and coding are hardly enough to deliver new functionality; software design, validation and verification, documentation, and operations effort must be invested. In lean terminology, this is referred to as waste. Our new formula for cost of change is now:
The picture is, however, not yet complete since we have not accounted for technical debt, which decreases productivity across the board. Fragile software architecture, legacy code, and poor documentation make every delivery stage harder. A more realistic equation would be:
5. How Can We Measure Waste in Software Development?
The definition we normally use for waste is “any activity that does not generate business value and, therefore, does not impact the final shape of the product“. In this sense, waste is the overhead incurred for the smallest code change.
To measure the waste or overhead incurred by a change request to the development team, use the following recipe:
6. How Lean Are We?
We can determine how lean our production processes are by calculating the following ratio of business value generated divided by the cost of change for the feature in question:
While this ratio can be easily justified in some cases, it becomes ever more challenging as its value dwindles. Typical remedies to drive the cost of change down can be:
7. Final Words
In an industry where business requirement volatility is a constant, keeping the cost of change low enough is probably the most vital characteristic of a profitable software product.
We hope this article has succeeded in explaining the cost of change in software development, how it can be measured, and what remedies can be used to keep it acceptable.