The VectorCAST testing environment is an ideal complement to the static analysis capabilities available in GNAT Pro, together providing a...Read More »
Reduce Technical Debt through Better Software Testing
"Although immature code may work fine and be completely acceptable to the customer, excess quantities will make a program unmasterable, leading to extreme specialization of programmers and finally an inflexible product…Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object- oriented or otherwise.”
-- Ward Cunningham, The WyCash Portfolio Management System, March 26, 1992
What is Technical Debt
First coined by computer scientist Wade Cunningham in 1992, Technical Debt refers to the accumulated liability created when organizations take design and test short-cuts in order to meet short-term goals. Like financial debt, technical debt is essentially a loan incurring interest. If the loan is not paid back, it will eventually make the software impossible to maintain. The higher the technical debt, the lower your ability to innovate and be competitive in the market.
The Y2K Crisis is an example of the consequences of incurring technical debt. In the early decades of software development, defining years using two digits (i.e.; 63 versus 1963) made programs smaller and faster. However, at the turn of the twenty-first century when programs needed to distinguish between 1901 and 2001, over $300 billion was spent worldwide to fix the problem. The cost would have been a fraction of this if this issue had been fixed slowly over time, and zero if 4 digits had been used for the date from the beginning.
Technical debt can realistically never be 0, however organizations should monitor and control technical debt to ensure that it remains in a manageable range.
Using Metrics to Understand Technical Debt
The first step to solving your Techical Debt problem is to collect Metrics and find the trouble spots. There are a variety of simple and complex metrics that you can measure with VectorCAST. Many of our customers start the process by measuring code complexity and test coverage. Software Components with high complexity and low test coverage are often the components that consume the most developer time during maintenance.
Using Continous Testing to Reduce Technical Debt
The key to reducing Technical Debt, is to refactor (improve) components over time, however refactoring will only be successful if there are complete and easy to run tests that prove the correct behavior of the component. The VectorCAST test automation platform enables development teams to expose poor design, improve software quality, facilitate collaboration, and reduce untested code. Functional and Unit Testing help your team prove that the software performs correctly, Code Coverage analysis ensures that testing is complete, and Change-Based Testing allows development teams to dramatically reduce test times from days to minutes.
Implementing a continuous test process helps your development team deliver higher quality releases to market faster.
Baseline Testing: The Key to Reducing Technical Debt in Legacy Code Bases
This whitepaper discusses an approach called Baseline Testing, also known as characterization testing, and how it can be used to capture current legacy code behavior, enabling developers to successfully develop new applications or improve existing technology.Download Whitepaper