Definition: Cost of Change = Cost of Changing Code and Cost of Changing Process
A software project with a high cost of change typically exhibits some of the following bad smells.
- Quality delivered to customer is unacceptable
- Delivering new features to customer takes too long
- Software is too expensive to build (product development and implementation services)
- "Hardening" phase needed at end of release cycle
- Integration is infrequent (Manual Testing Cycle)
Cost of Changing Code
CS2/T = (Complexity of Code base) * (Slack of "in-flexibility" of design) 2 / (Test Coverage)
The cost of changing code (making a programming change) is a factor of Code Complexity, Slack or "in-flexibility" of design and test coverage.
Automated testing reduces this risk by:
- Providing a way for programmers to know when they're done.
- Enforcing a quality standard.
What if unit tests are only written some of the time and the QC department manually "clicks-through" the application for every acceptance test? What is the value of purchasing new tools and retraining staff? Automated testing reduces the cost of maintaining code.
Cost of Changing Process
= (Reduction in Cost of Changing Code) * (Number of changes implemented each year) / (Investment in training and tools)
The cost of any new investment in testing tools and training will be realized as a return on reduction in the cost of changing code.
The Bottom Line
- Initial investment in automated testing tools and training for developers and QC.
- Negligible change in cost for on-going training; cost of on-going training in automated testing similar to cost of current training in manual testing.
- Increased licensing expense for better tools
- Decreased cost of implementing new features
- Increased quality to market
- Increased flexibility - able to adapt to market conditions more quickly
- Reduced time to market
Let me know what you think! If there is sufficient interest in this topic I will return to it in my next blog and delve into the details of a test plan that adheres to this standard.
Jonathan Malkin is a Business Analyst at Plateau Systems. Jonathan provides configuration, integration, documentation, and deployment support services for a leader in Talent Management Systems. Jonathan's areas of support include 21 CFR Part 11 Validation and customizations to COTS software for which he has won multiple awards. His experience includes work in the federal government, telecommunications, mortgage and banking, and custom software development industries. Plateau Systems is a leading global provider of adaptable, unified web-based talent management software, content and services to onboard, develop, manage and reward talent.
Jonathan may be reached by email at Jonathan.Malkin@plateau.com or by visiting his LinkedIn page at http://www.linkedin.com/in/jmalkin