2. Relations to Application Life Cycle Management?
1. ALM is a business process.
2. Being Great at ALM requires incorporating technical debt
management strategies.
3. Even incremental improvements in ALM can deliver large benefits
in the form of agility, predictability, auditing, quality and
productivity.
4. Paying down Technical Debt delivers incremental improvements
2
3. What is Technical Debt?
• Technical Debt is a metaphor (Ward Cunningham)
• Result of “Quick and Dirty” Software Design.
• A “Quick and Dirty” approach has short term benefits.
• Intent: We will fix it later.
3
4. How is Technical Debt Incurred?
Expectations Actual
Remaining Work
Remaining Work
Planned work Actual work
and velocity and velocity
Projected
Planned Release Date
work and
velocity
Time Time
Planned Planned
Release Date Release Date
[Kane Mar and Michael James, Technical Debt and Design Death]
4
5. Priority: On-Time, On-Budget, Technical Debt Visualized.
Actual work and
velocity
Pressure applied here
Result = On Time, On Budget
Remaining Work
Claim = Productivity improved
Area here is
Technical Debt
Planned work
and velocity
Time
Planned Avoided / Full Quality
Release Date Release Date
[Kane Mar and Michael James, Technical Debt and Design Death]
6. So What?
Too Much Technical Debt Bankruptcy!
– Failed Customer Interactions (FCI)
– Sev1, Sev2, etc
– High TCOA (Ex: # BAU Resources)
– Overly Complex & Brittle
– Lost Productivity
– Low Confidence
6
7. How to Pay Down Technical Debt?
Define
Measurements
Continually
Identify Sources
Monitor
Apply Strategies
and Tactics to
Reduce
7
8. How to Measure Technical Debt?
• Maintainability Index:
– Calculated value between 0 – 100 indicating code quality.
– Recommendation: Group into three levels
• Green = highly maintainable code.
• Yellow = warning, code in danger of becoming red.
• Red = difficult to maintain code.
Cyclomatic Complexity:
– Method level calculation of the number of independent execution
paths.
– Recommendation: Cyclomatic Complexity < 15.
Depth of Inheritance:
– Calculates the level of inheritance between classes
– Recommendation: Depth of Inheritance < 4.
8
9. What tools do we use?
• Using the Toolset:
– We Own (Nothing to buy)
– We Know (Less Training)
• Specifically Visual Studio 2008 provides:
– Code Analysis – Rules based Code Inspection
– Code Metrics – Calculate Indicators
9
11. Reference: Can Technical Debt be used Strategically?
• Reasons to Incur Technical Debt:
– Quicker Time to Market
– Delaying Development Expense (Application Sun Setting)
– Preservation of Startup Capital
11
Editor's Notes
Foreclosure, App sunset, funding of new app with same problems, sliding window
Code Analysis pull assemblies from SIT? Blockers => no PDB?