Technical Debt
Measured & Implied
Omar Bashir
Preventing technical debt is what allows
development to be agile in the long run.
Dan Radigan, Atlassian
Design
Testing Code
Documentation
Defects
https://www.linkedin.com/in/obprofile/
@OmarBashir_40
obashir@yahoo.com
Code Quality Assessment
● Complexity
– Cycolmatic complexity
– Cognitive complexity
● Rule Violations
– Bugs
– Code smells
– Security issues
Code Quality Assessment
● Code size
– Classes/methods
● Inheritance and Coupling
– Efferent coupling (Ce)
– Afferent coupling (Ca)
– Instability index
● Dependencies
Ce
Ce
+ Ca
Testability
● Testability is a reflection on design.
– SOLID code is unit testable.
– Decoupled code exhibits testing agility.
– Maintainable and supportable systems are end-to-end
testable.
● The testing pentagon.
● Code coverage,
– Best viewed in reference to quality and relevance of
tests.
– Can be promoted as a yardstick of design.
Unit Test Coverage
● Failures
● Line coverage
● Branch coverage
● Complexity Coverage
● Historical Trends
Technical Debt: Measured and Implied
Code Coverage
● Running coverage agent with executables.
● Monitor code execution post build and
deployment.
– Usually with subsystem and end-to-end tests.
● Determine coverage gaps between unit and
higher level tests.
– Useful only if overlap between the two intended.
Code Coverage
JVM
Application
Jacoco
JVM
Test Suite
Defect Trends
● Doing the right thing and doing it right.
– Functional defects,
● Misunderstood requirements.
● Incorrect requirements.
● Can be a consequence of existing technical debt and can
add to it as well.
– Technical defects,
● Ignored code quality metrics.
● Ignored or delayed NFRs (Non Functional Requirements).
● Use of antipatterns.
Tools
Accepting Technical Debt
● Tech debt economics
– Interest rate: increases with development activity.
– Paid back in hard ca$h.
– Circular debt, poor requirements adding to tech debt.
● Can result in side-effects,
– Observable via implied metrics
● Accept technical debt only if interest rate is
sustainable.
● Prioritise technical debt resolution on interest
rate.
Implied Metrics – Dev Lead Time
● Directly related to code quality.
● Increases with
– Complexity,
– Class/method sizes,
– Coupling,
– Dependencies
Implied Metrics - Estimates
● Widening gap between estimation and actuals.
● Related to increased dev lead time.
● Adds to project uncertainty.
Implied Metrics - Reliability
● Lowering MTBF (Mean Time Between Failure)
– Higher failure frequency.
● Increasing MTTR (Mean Time To Repair)
– Repair in IT support = Recover.
– Higher tech debt can lead to lowering recoverability.
Controlling Tech Debt
● Making tech debt visible.
– Raise corresponding tasks against known issues.
– Include tech debt in project RAID logs.
● Risks, Assumptions, Issues, Dependencies.
● Appropriately prioritise tech debt.
– Cost of delaying remediation.
● Schedule with functional delivery.
– Remediation cheaper when functional change in
proximity of the debt.
Controlling Tech Debt
● Institute coding practices that progressively
improve on quality metrics.
– Compensate estimates for debt reducing practices.
● Perform meaningful architecture, design and
code reviews.
– Smaller code reviews reduce cognitive overload.
Controlling Tech Debt
● Enhance Definition of Done and enforce it using
quality gates.
– Builds break if tech debts metrics below acceptable
levels.
● Preferably integrated in the IDE.
– CI/CD tools block build promotion if critical functional
and non-functional tests fail at any stage.
– Quality gates are adjusted as the project progresses,
● Preferably towards higher quality.
Controlling Tech Debt
● Combining NFRs (Non-Functional Requirements)
with functional requirements.
– NFRs and functional requirements define system
architecture.
● Does not require a big up front design.
● NFRs point to relevant architectural styles that can be
adopted and adapted.
– Relegating NFRs leads to suboptimal architecture.
● Leads to architectural debt.
Controlling Tech Debt
● Resolving defects,
– Prioritisation is a key challenge.
● Suffers from bias and opinion.
– Resolution scheduling conflicts with on going
development.
– Focus on DevOps and test automation.
Technical debt is a very useful concept, but it
raises the question of how do you measure it?
Sadly technical debt isn't like financial debt, so it's
not easy to tell how far you are in hock (although
we seem to have had some trouble with
measuring the financial kind recently).
Martin Fowler, December 2008

More Related Content

DOC
Resume_Amruta_ Testing
PPTX
Requirements Engineering: Contextual and Dynamic
PDF
Monty Jackson Resume 21-Nov-2016
PPT
Software product quality
PDF
An introduction to software
PPTX
Software Engineering
DOC
ResumeSagli_Nov14
PPTX
Software Quality
Resume_Amruta_ Testing
Requirements Engineering: Contextual and Dynamic
Monty Jackson Resume 21-Nov-2016
Software product quality
An introduction to software
Software Engineering
ResumeSagli_Nov14
Software Quality

What's hot (19)

PPT
Using Doors® And Taug2® To Support A Simplified
PPT
Risk management lec. 06
PDF
Software Quality Management
DOCX
Kenneth probst resume 2016
DOC
Cyndee_Blenkush_Resume
PPTX
Software Quality Assurance
PPT
Unit 8
PPT
Software Engineering (Testing Overview)
PPT
Software Engineering (An Agile View of Process)
DOC
MydhiliVadlamaniCV
PPTX
Quality of software
PPTX
Project Management Process
PPTX
Role of qa in requirements engineering
ZIP
Software Quality Plan
PPTX
How To Become A Good Agile Tester?
DOC
Rajeev cv
DOCX
Donna PetersonPMVBA
PPTX
software project management Artifact set(spm)
Using Doors® And Taug2® To Support A Simplified
Risk management lec. 06
Software Quality Management
Kenneth probst resume 2016
Cyndee_Blenkush_Resume
Software Quality Assurance
Unit 8
Software Engineering (Testing Overview)
Software Engineering (An Agile View of Process)
MydhiliVadlamaniCV
Quality of software
Project Management Process
Role of qa in requirements engineering
Software Quality Plan
How To Become A Good Agile Tester?
Rajeev cv
Donna PetersonPMVBA
software project management Artifact set(spm)
Ad

Similar to Technical Debt: Measured and Implied (20)

PPT
Spm lecture-3
PPT
PDF
Ady beleanu automate-theprocessdelivery
PDF
Rtc2014 automate the_process_deliver_quality_ady_beleanu
DOC
Project Engineer CV - Sanjaykumar Singh
PDF
Distilling Agile for Effective Execution
PPTX
How To Avoid Continuously Delivering Faulty Software
PDF
Software systems engineering PRINCIPLES
PPTX
Technical stories v1.2
PDF
Technical debt management strategies
PPSX
Scope of software engineering
PDF
Balancing Technical Debt and Clean Code
PDF
Quality & Risk Management Challenges When Acquiring Enterprise Systems
PDF
ppt_se.pdf
PPTX
The when & why of evolution of performance testing to performance engineering...
PDF
Software engineering lecture notes
DOC
RamPravesh_Kumar
PPTX
Productivity gains with Visual Studio ALM.PPTX
PPTX
Software design metrics
PPTX
Unit1_Software_EngineeringGGGGGGGGGG.pptx
Spm lecture-3
Ady beleanu automate-theprocessdelivery
Rtc2014 automate the_process_deliver_quality_ady_beleanu
Project Engineer CV - Sanjaykumar Singh
Distilling Agile for Effective Execution
How To Avoid Continuously Delivering Faulty Software
Software systems engineering PRINCIPLES
Technical stories v1.2
Technical debt management strategies
Scope of software engineering
Balancing Technical Debt and Clean Code
Quality & Risk Management Challenges When Acquiring Enterprise Systems
ppt_se.pdf
The when & why of evolution of performance testing to performance engineering...
Software engineering lecture notes
RamPravesh_Kumar
Productivity gains with Visual Studio ALM.PPTX
Software design metrics
Unit1_Software_EngineeringGGGGGGGGGG.pptx
Ad

More from Omar Bashir (16)

PDF
Cloud migration challenges london ct os
PDF
5 Software Development Lessons From a Mountaineer
PDF
Why Java ?
PDF
Technology Agility
PDF
Quality Loopback
PDF
Achieving Technological Agility
PDF
Authorisation: Concepts and Implementation
PDF
SOLID Java Code
PDF
Coding for 11 Year Olds
PDF
High Speed Networks - Applications in Finance
PDF
Functional Programming in Java 8
PDF
An Introduction to Java Compiler and Runtime
PPTX
Computing at Schools: A Guide to Parents
PPT
Information technology
PPTX
Maths with Programming
PPTX
Code Club Talk 2014
Cloud migration challenges london ct os
5 Software Development Lessons From a Mountaineer
Why Java ?
Technology Agility
Quality Loopback
Achieving Technological Agility
Authorisation: Concepts and Implementation
SOLID Java Code
Coding for 11 Year Olds
High Speed Networks - Applications in Finance
Functional Programming in Java 8
An Introduction to Java Compiler and Runtime
Computing at Schools: A Guide to Parents
Information technology
Maths with Programming
Code Club Talk 2014

Recently uploaded (20)

DOC
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
PPTX
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
Topaz Photo AI Crack New Download (Latest 2025)
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
PPTX
Lecture 5 Software Requirement Engineering
PDF
AI Guide for Business Growth - Arna Softech
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PPTX
GSA Content Generator Crack (2025 Latest)
PDF
CCleaner 6.39.11548 Crack 2025 License Key
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
Tech Workshop Escape Room Tech Workshop
PDF
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
PDF
iTop VPN Crack Latest Version Full Key 2025
PDF
DNT Brochure 2025 – ISV Solutions @ D365
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PDF
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
UTEP毕业证学历认证,宾夕法尼亚克拉里恩大学毕业证未毕业
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Trending Python Topics for Data Visualization in 2025
Topaz Photo AI Crack New Download (Latest 2025)
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
Lecture 5 Software Requirement Engineering
AI Guide for Business Growth - Arna Softech
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
GSA Content Generator Crack (2025 Latest)
CCleaner 6.39.11548 Crack 2025 License Key
Wondershare Recoverit Full Crack New Version (Latest 2025)
Tech Workshop Escape Room Tech Workshop
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
iTop VPN Crack Latest Version Full Key 2025
DNT Brochure 2025 – ISV Solutions @ D365
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
Top 10 Software Development Trends to Watch in 2025 🚀.pdf

Technical Debt: Measured and Implied

  • 1. Technical Debt Measured & Implied Omar Bashir Preventing technical debt is what allows development to be agile in the long run. Dan Radigan, Atlassian Design Testing Code Documentation Defects https://www.linkedin.com/in/obprofile/ @OmarBashir_40 obashir@yahoo.com
  • 2. Code Quality Assessment ● Complexity – Cycolmatic complexity – Cognitive complexity ● Rule Violations – Bugs – Code smells – Security issues
  • 3. Code Quality Assessment ● Code size – Classes/methods ● Inheritance and Coupling – Efferent coupling (Ce) – Afferent coupling (Ca) – Instability index ● Dependencies Ce Ce + Ca
  • 4. Testability ● Testability is a reflection on design. – SOLID code is unit testable. – Decoupled code exhibits testing agility. – Maintainable and supportable systems are end-to-end testable. ● The testing pentagon. ● Code coverage, – Best viewed in reference to quality and relevance of tests. – Can be promoted as a yardstick of design.
  • 5. Unit Test Coverage ● Failures ● Line coverage ● Branch coverage ● Complexity Coverage ● Historical Trends
  • 7. Code Coverage ● Running coverage agent with executables. ● Monitor code execution post build and deployment. – Usually with subsystem and end-to-end tests. ● Determine coverage gaps between unit and higher level tests. – Useful only if overlap between the two intended.
  • 9. Defect Trends ● Doing the right thing and doing it right. – Functional defects, ● Misunderstood requirements. ● Incorrect requirements. ● Can be a consequence of existing technical debt and can add to it as well. – Technical defects, ● Ignored code quality metrics. ● Ignored or delayed NFRs (Non Functional Requirements). ● Use of antipatterns.
  • 10. Tools
  • 11. Accepting Technical Debt ● Tech debt economics – Interest rate: increases with development activity. – Paid back in hard ca$h. – Circular debt, poor requirements adding to tech debt. ● Can result in side-effects, – Observable via implied metrics ● Accept technical debt only if interest rate is sustainable. ● Prioritise technical debt resolution on interest rate.
  • 12. Implied Metrics – Dev Lead Time ● Directly related to code quality. ● Increases with – Complexity, – Class/method sizes, – Coupling, – Dependencies
  • 13. Implied Metrics - Estimates ● Widening gap between estimation and actuals. ● Related to increased dev lead time. ● Adds to project uncertainty.
  • 14. Implied Metrics - Reliability ● Lowering MTBF (Mean Time Between Failure) – Higher failure frequency. ● Increasing MTTR (Mean Time To Repair) – Repair in IT support = Recover. – Higher tech debt can lead to lowering recoverability.
  • 15. Controlling Tech Debt ● Making tech debt visible. – Raise corresponding tasks against known issues. – Include tech debt in project RAID logs. ● Risks, Assumptions, Issues, Dependencies. ● Appropriately prioritise tech debt. – Cost of delaying remediation. ● Schedule with functional delivery. – Remediation cheaper when functional change in proximity of the debt.
  • 16. Controlling Tech Debt ● Institute coding practices that progressively improve on quality metrics. – Compensate estimates for debt reducing practices. ● Perform meaningful architecture, design and code reviews. – Smaller code reviews reduce cognitive overload.
  • 17. Controlling Tech Debt ● Enhance Definition of Done and enforce it using quality gates. – Builds break if tech debts metrics below acceptable levels. ● Preferably integrated in the IDE. – CI/CD tools block build promotion if critical functional and non-functional tests fail at any stage. – Quality gates are adjusted as the project progresses, ● Preferably towards higher quality.
  • 18. Controlling Tech Debt ● Combining NFRs (Non-Functional Requirements) with functional requirements. – NFRs and functional requirements define system architecture. ● Does not require a big up front design. ● NFRs point to relevant architectural styles that can be adopted and adapted. – Relegating NFRs leads to suboptimal architecture. ● Leads to architectural debt.
  • 19. Controlling Tech Debt ● Resolving defects, – Prioritisation is a key challenge. ● Suffers from bias and opinion. – Resolution scheduling conflicts with on going development. – Focus on DevOps and test automation.
  • 20. Technical debt is a very useful concept, but it raises the question of how do you measure it? Sadly technical debt isn't like financial debt, so it's not easy to tell how far you are in hock (although we seem to have had some trouble with measuring the financial kind recently). Martin Fowler, December 2008