Nowadays, the technical-debt metaphor has been widely adopted by the software industry. It was coined by Ward Cunningham in 1992.
This reference article by Martin Fowler describes the technical-debt metaphor in great detail. To quote M.Fowler:
In this metaphor, doing things the quick and dirty way sets us up with a technical debt, which is similar to a financial debt. Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice. We can choose to continue paying the interest, or we can pay down the principal by refactoring the quick and dirty design into the better design. Although it costs to pay down the principal, we gain by reduced interest payments in the future.
As from CppDepend v2017.1.0, CppDepend estimates the technical-debt of a code base. The tool proposes many unique features to handle the technical-debt the right way:
warnif count > 0
from m in Methods
where m.CyclomaticComplexity > 10
select new {
m,
m.CyclomaticComplexity,
Debt = (3*(m.CyclomaticComplexity -10)).ToMinutes().ToDebt(),
AnnualInterest = (m.PercentageCoverage == 100 ? 10 : 120).ToMinutes().ToAnnualInterest()
}
from i in Issues
where i.WasAdded() && i.Severity.EqualsAny(Severity.Blocker, Severity.Critical)
orderby i.Debt.Value descending
select new { i, i.Debt }>
The user doesn't have to write these debt-exploration-queries since they are generated by clicking values and menus in the Dashboard:
100% customizable: Not only every facets of the debt estimation are customizable, but also the debt presentation is customizable too. Debt values can be estimated through money-amount instead of person-time and all thresholds can be adjusted in a few clicks through the CppDepend Project Properties panel.
Benefits:
Related Links::