Companies fail all the time because they accumulate more debt than they can ever repay. Likewise, software projects fail all them time when their technical debt gets out of control.
What is technical debt and how do you measure it?
Back in 1980, Meir Manny Lehman wrote that,
"As an evolving program is continually changed, its complexity, reflecting deteriorating structure, increases unless work is done to maintain or reduce it."
Ward Cunnigham is a renowned developer who invented the wiki and a pioneer in Extreme Programming and design patterns. He expanded on Lehman's observation in a 1992 experience report:
"Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. 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."
(See this Wikipedia Technical Debt article for much more on the subject.)
So how do we measure technical debt?
There are plenty of tools and APIs that help with this, but each tends to focus on a narrow part of the problem. For instance, unit and other automated tests inform us our code is working in the areas covered by the tests. But what if we missed tests for some code? Code coverage tools like Cobertura tell us how much test coverage we have. Our IDEs usually offer some insights using code inspections to help spot bad coding practices; e.g. Flagging an empty catch block. We can also use code inspection tools like FindBugs to inform us of possible bugs.
Wouldn't it be nice if there was a tool that would would bring all of these technical debt measurements together in a consilidated view? There is. It's called Sonar.
Sonar is an LGPL licensed, open source platform hosted at Codehaus. It's what we can use to manage code quality to help us manage and reduce our technical debt. It covers the 7 axes of code quality:
This presentation shows how you can Sonar today to first measure, and then improve, code quality. In the presentation, I will cover
- Downloading and configuring Sonar
- The Sonar dashboard
- Code quality metrics covered
- Using The SQALE Ratings
- Alerts
- Hotspots
- Time Machine
- Cloud Views
- Design issues
- Timeline
All of these will be demonstrated with live demonstrations of this remarkable tool.
We need to know you're coming, so please be sure to RSVP using the link on the right sidebar.
Speaker: Jack Frosch
Sponsor: Modis