Technical debt refers to design decisions that are suboptimal or incorrect, accruing debt that must be paid back later. It includes code debt from violations of coding standards and design debt from design smells or violations of architecture rules. Refactoring is restructuring code without changing behavior to improve design quality and make future changes easier. A variety of tools can help explore code structure and detect technical debt to prioritize refactoring.
2. 2
Technical debt
“Technical debt is the debt that accrues
when you knowingly or unknowingly make
wrong or non-optimal design decisions”
Reference: Refatoring for Software Design Smells– Girish et al Morgan Kaufman 2014
3. 3
Why care about technical debt?
Reference: Zen and the art of software quality – Jim Highsmith Agile 2009 conference
4. 4
What constitutes technical debt?
…
Code debt
Static
analysis tool
violations
Inconsistent
coding style
Design debt
Design smells
Violations of
design rules
Test debt
Lack of tests
Inadequate
test coverage
Architecture debt
Lacking
structure (big
ball of mud)
Violation of
Architecture
Rules
5. 5
What is refactoring?
Refactoring (noun): a change
made to the internal structure of
software to make it easier to
understand and cheaper to
modify without changing its
observable behavior
Refactor (verb): to restructure
software by applying a series
of refactorings without
changing its observable
behavior