Index

A

A2DAM (Agile Alliance Debt Analysis Model), 130

abstract concept (Principle 1), technical debt reifies, 14, 16

accidental database debt, 90

accruing

additional technical debt versus repaying debt, 2526

interest on technical debt, 25, 2729

ACM Turing Award Lecture (1972), software crisis, 10

action, taking (technical debt toolbox/process), 196, 200201

actual technical debt

potential technical debt versus, 32, 33, 138, 140

servicing technical debt, 138, 140

adapters and architectural debt, 97

additional technical debt, accruing versus repaying debt, 2526

age of system (context of software development), 38

agile practices, managing technical debt at scale, 190193

all code matters (Principle 7), 107, 206

all systems have technical debt (Principle 3), 45, 152, 158, 180, 206

amnesty of debt (write offs), 141

analytic models, architectural debt analysis, 89

analyzing architectural debt, 89, 90

analytic models, 89

checklists, 89

Phoebe case study, 9798

prototypes/simulations, 89

scenario-based analysis, 89

thought experiments/reflective questions, 89

analyzing source code

analysis tools, 7476

Automated Technical Debt Measure specification, 7475

business goals, 68

examples of, 6869

identifying questions about source code, 7072

mapping, 69

code inspections, 74

code smells, 66

documenting technical debt items, 7678

driving analysis questions, 7072

observable measurement criteria, 7274

pain points

business goals and pain points, 6869, 7072

identifying questions about source code, 7072

peer reviews, 74

Phoebe case study, 6569

analysis tools, 7576

documenting technical debt items, 7678

identifying questions about source code, 7072

iterations of analysis, 7879

observable measurement criteria, 7274

questions about source code, identifying, 7072

refactoring source code, 7980

SonarQube static analyzer, 7576

static analyzers, 6566, 7475

symptom measures, 7273

Technical Debt Credit Checks, 66, 6870

Tricorder static analyzer, 75

Angular, opportunities and risk, 47

AngularJS, opportunities and risk, 47

architectural debt. See also database debt

adapters and, 97

analysis tools/techniques, 84, 89, 90

analytic models, 89

checklists, 89

Phoebe case study, 9798

prototypes/simulations, 89

scenario-based analysis, 89

thought experiments/reflective questions, 89

architectural technical debt has the highest cost of ownership (Principle 6), 86, 180

business goals and, 9596

code analysis, 9394

concerns/questions, 9596

conventions (design), 84

designers and, 84, 8688

documenting, 9899

gateways and, 97

intentional versus unintentional debt, 84

measurement criteria, defining, 9697

modifiability and, 96

modularity and, 83

Phoebe case study, 85, 9495

analysis tools/techniques, 9798

business goals and, 9596

concerns/questions, 9596

defining measurement criteria, 9697

documenting debt, 9899

servicing debt, 9899

quality attributes/requirements, 8485

remediating technical debt, 121122

security and, 9697

servicing, 9899

symptoms of technical debt, 8485

technological gaps, 84, 96

architectural technical debt has the highest cost of ownership (Principle 6), 86, 180

architectures

architectural runways, 186

assessing technical debt, 61

context of software development, 38

lack of, example, 7

landscape of technical debt, 21

software engineering practices, managing technical debt, 185

production infrastructure/architecture alignment, 187

quality attributes/requirements, 185186

release planning, 186187

software/system architecture documents, 188

Technical Debt Credit Check, 171

artifacts

system artifacts, causes of technical debt versus, 152

technical debt items, 22

assessing

information (technical debt toolbox/process), 195, 197198

technical debt

architectures, 61

business context and, 5860

production, 6162

source code, 6061

assignees/reporters (writing technical debt descriptions), source code analysis, 57, 58, 77

Atlas case study, 4042

build and integration debt, 111

causes of technical debt, identifying, 156, 163

chain of causes/effects, 5253

comparing case studies, 44

contrasting case studies, 4041

costing technical debt, 117119

feature delivery versus servicing technical debt, 139140

investment, technical debt as, 143145

production debt, 105

refactoring code, 184

servicing technical debt, 139140

mitigating risk, 140141

technical debt as investment, 143145

technical debt toolbox/process, 202

testing debt, 112

Automated Technical Debt Measure specification, 7475

automation

build and integration debt, 107

test automation, development process-related causes of technical debt, 160162

awareness (technical debt toolbox/process), 195, 196197

awareness (timeline of technical debt), 33, 5354

awareness levels of technical debt, 1112

B

backlogs, 6263, 127129

balance and database performance, 91

bankruptcy, declaring, 141

becoming aware (technical debt toolbox/process), 195, 196197

benefit/cost comparisons

costing technical debt, 123

servicing technical debt, 131132, 139140

Booch, Grady, 3

build and integration debt, 106

automation, 107

build times, improving, 111

continuous integration, 107

building technical debt registries, 195, 198199

business context

assessing technical debt, 5860

changes to (causes of technical debt), 157

business goals

architectural debt analysis, 9596

source code analysis, 68

examples of business goals, 6869

identifying questions about source code, 7072

business models (context of software development), 38

business vision (Technical Debt Credit Check), 170

business-related causes of technical debt, 155

misaligned business goals, 156

requirements shortfall, 156157

time/cost pressure, 155156

C

calculating recurring debt, 122123

case studies, 3940

Atlas case study, 4042

causes of technical debt, identifying, 156, 163

chain of causes/effects, 5253

comparing case studies, 44

contrasting case studies, 4041

costing technical debt, 117119

feature delivery versus servicing technical debt, 139140

mitigating risk, 140141

production debt, 105

refactoring code, 184

servicing technical debt, 139141, 143145

technical debt as investment, 143145

technical debt toolbox/process, 202

contrasting, 4041

Phoebe case study, 40, 4243

architectural debt, 85, 9499

building technical debt registries, 135136

causes of technical debt, diagnosing with Technical Debt Credit Check, 172173

causes of technical debt, identifying, 156, 157158

code quality/standards, 181183

comparing case studies, 44

contrasting case studies, 4041

costing technical debt, 119120, 124125

duplicate code, handling, 78

mitigating risk, 143

production debt, 105, 110113

release pipeline, 143

servicing technical debt, 143

source code analysis, 6569, 77, 7879

technical debt toolbox/process, 202203

Tethys case study, 40, 4344

causes of technical debt, diagnosing with Technical Debt Credit Check, 174177

causes of technical debt, identifying, 156157, 160, 164

comparing case studies, 44

contrasting case studies, 4041

costing technical debt, 127

production debt, 105

technical debt toolbox/process, 203204

causes of technical debt, 2223, 151153

business-related causes, 155

misaligned business goals, 156

requirements shortfall, 156157

time/cost pressure, 155156

changes in context, 157

business context, 157

evolution, 158159

technology changes, 157158

development process-related causes, 159

ineffective documentation, 159160

misaligned processes, 162

test automation, 160162

diagnosing with Technical Debt Credit Check

Phoebe case study, 172173

Tethys case study, 174177

intentional debt, 153154

main causes of technical debt, 154155

software development, 152

system artifacts versus causes, 152

team/personnel-related causes, 162163

distributed teams/personnel, 164

inexperienced teams/personnel, 163164

undedicated teams/personnel, 164165

unintentional debt, 153

chain of causes/effects, recognizing technical debt, 5154

change (context of software development), rate of, 38

changes in context, causes of technical debt, 157

business context, 157

evolution, 158159

technology changes, 157158

checklists, architectural debt analysis, 89

code. See also source code

code inspections (source code analysis), 74

code smells, 20

Phoebe case study, 66

servicing technical debt, 137

dirty code and technical debt, 125126

maintainable code, 183184

quality/standards, avoiding unintentional debt, 180183

refactoring code, 184

secure coding, 180183

spaghetti code, 6566, 69, 71, 76, 7879, 91

collective management of technical debt items, 127129

conformance/lightweight analysis (software engineering practices), managing technical debt, 189190

consequences (writing technical debt descriptions), 57, 58

build and integration debt, 111

source code analysis, 77

testing debt, 112

consequences of technical debt, 23, 51, 52, 53, 5455

Consortium for IT Quality, Automated Technical Debt Measure specification, 7475

context (business) and assessing technical debt, 5860, 157

context, changes in (causes of technical debt), 157

business context, 157

evolution, 158159

technology changes, 157158

context of software development, 37

age of system, 38

architectures, 38

business models, 38

case studies

comparing, 44

contrasting, 4041

criticality, 39

factors of, 3739

governance, 39

rate of change, 38

size, 38

KSLOC, 40, 41

MSLOC, 41

team distribution, 38

technical debt and, 4445, 48

continuous deployment, 104105

continuous integration, 104105, 107

contractors, collective management of technical debt items, 127

conventions (design) and architectural debt, 84

cost/time pressure, causes of technical debt, 155156

costing technical debt, 27

A2DAM, 130

Atlas case study, 117119

backlogs, grooming, 127129

benefit/cost comparisons, 123

collective management of technical debt items, 127129

current principal, 118

function points, 130

hidden dependencies, 127128

object points, 130

Phoebe case study, 119120, 124125

post facto measurements, 130

recurring interest, calculating, 122123

refining technical debt descriptions, 119120

remediating technical debt, 121122

ROI, 118, 123125

story points, 130

technical debt has no absolute measure—neither for principal nor interest (Principle 8), 124

Tethys case study, 127

tipping points, 118

tool-supported analysis, 123, 130

total effort, 118

use-case points, 130

costs of opportunity, 133, 134135

Credit Checks, 167, 177, 197, 204

architectures, 171

business vision, 170

causes of technical debt, diagnosing, 172177

conducting

process of, 169

when to conduct, 168169

development processes, 171172

goal of, 167168

inputs, 169

organizational culture/processes, 172

output from (scorecards), 170

Phoebe case study, 66, 172173

purpose of, 168

scorecards, 170

team/personnel, 168

Tethys case study, 174177

criticality (context of software development), 39

current principal, costing technical debt, 118

CVE (Common Vulnerabilities and Exposures) database, secure coding, 183

CWE (Common Weakness Enumeration) database, secure coding, 183

D

database debt. See also architectural debt, 90

accidental database debt, 90

avoiding debt, 9293

database models and, 92

database performance and balance, 91

intentional database debt, 90

NoSQL databases, 92

query performance, 91

relational databases and, 9192

schema structure duplication, 9091

spaghetti code, 91

strings, 91

debt amnesty (write offs), 141

deciding what to fix (technical debt toolbox/process), 196, 199200

decision-making process, treating technical debt, 2526

defects and technical debt, 2122

delivering features versus servicing technical debt, 139140

dependencies (hidden), costing technical debt, 127128

deployment (continuous), 104105

descriptions of technical debt, writing, 5558, 6364

consequences, 57, 58, 77

name field, 57

remediation approaches, 57, 58, 77

reporters/assignees, 57, 58, 77

summaries, 57, 58, 77

designers and architectural debt, 84

analysis tools/techniques, 89, 90

analytic models, 89

checklists, 89

prototypes/simulations, 89

scenario-based analysis, 89

thought experiments/reflective questions, 89

interviewing designers to determine debt, 8688

development processes

causes of technical debt, 159

ineffective documentation, 159160

misaligned processes, 162

test automation, 160162

Technical Debt Credit Check, 171172

development teams, collective management of technical debt items, 127

DevOps, 104, 108109

diagnosing causes of technical debt with Technical Debt Credit Check

Phoebe case study, 172173

Tethys case study, 174177

Dijkstra, Edsger, 10

dirty code and technical debt, 125126

distributed teams/personnel

causes of technical debt, 164

context of software development, 38

documenting

architectural debt, 9899

build and integration debt, 111

ineffective documentation, development process-related causes of technical debt, 159160

software engineering practices, managing technical debt, 188

software/system architecture documents, 188

technical debt items (source code analysis), 7678

testing debt, 111112

version control, 188

write-only documents, 188

driving analysis questions, 7072

duplicate code, handling, 78

E

effects/causes (recognizing technical debt), chain of, 5154

effort (total), costing technical debt, 118

Eisenberg, Robert, 190193

evolution, causes of technical debt, 158159

exposure to risk, 133134, 135

external quality (low), technical debt and, 2122

F

FBCB2 (Force XXI Battle Command Brigade and Below), opportunities and risk, 4647

feature delivery versus servicing technical debt, 139140

fixes, deciding on (technical debt toolbox/process), 196, 199200

forecasting, value of technical debt, 29

Fortify security scanning tool, 182183

function points, costing technical debt, 130

G

gateways and architectural debt, 97

Gibbs, Wayt, 10

governance (context of software development), 39

grooming product backlogs (costing technical debt), 127129

H

hidden dependencies, costing technical debt, 127128

I

IEEE 830–1998: Recommended Practice for Software Requirements Specifications,185

incurring technical debt (Principle 2), 32, 206

inexperienced teams/personnel, causes of technical debt, 163164

infrastructure as code, 6162, 105

infrastructure debt, 110, 121122

initial technical debt, incurring, 2425

inspecting code (source code analysis), 74

installment plans, repaying technical debt, 3031

integration (continuous), 104105, 107

intentional debt, 90, 153154

interest on technical debt, 24

accruing interest, 2526

credit card example, 2829

defined, 27

recurring interest, 2829

costing technical debt, 122123

defined, 27

repaying, 2627

technical debt has no absolute measure—neither for principal nor interest (Principle 8), 124

interns, collective management of technical debt items, 127

interviewing designers to determine architectural debt, 8688

investment

ROI, costing technical debt, 118, 123125

technical debt as, 143145

invisibility, landscape of technical debt, 21

ISO/IEC 25000 standard, maintainable coding, 183184

iterations of source code analysis, 7879

J-K

Keeling, Michael, 125126

KSLOC, 40, 41

L

landscape of technical debt, 20

architectures, 21

invisibility, 21

production infrastructures, 21

source code, 20

levels of technical debt awareness, 1112

lightweight analysis/conformance (software engineering practices), managing technical debt, 189190

low external quality and technical debt, 2122

M

maintainable code, 183184

maintenance, single points of, 188

managing technical debt

causes of technical debt, identifying, 151153

business-related causes, 155157

changes in context, 157159

development process-related causes, 159162

intentional debt, 153154

main causes of technical debt, 154155

software development, 152

system artifacts versus causes, 152

team/personnel-related causes, 162165

unintentional debt, 153

collectively, 127129

software development, 204205

software engineering practices, 179180, 193

agile practices, managing technical debt at scale, 190193

architectural development/design, 185190

code quality/standards, 180183

documentation, 188

lightweight analysis/conformance, 189190

maintainable code, 183184

refactoring code, 184

secure code, 180183

Technical Debt Credit Check, 167, 177

architectures, 171

business vision, 170

causes of technical debt, diagnosing, 172177

conducting, process of, 169

conducting, when to conduct, 168169

development processes, 171172

goal of, 167168

inputs, 169

organizational culture/processes, 172

output from (scorecards), 170

purpose of, 168

scorecards, 170

team/personnel, 168

technical debt toolbox/process, 195, 196

assessing information, 195, 197198

Atlas case study, 202

becoming aware, 195, 196197

building technical debt registries, 195, 198199

deciding what to fix, 196, 199200

Phoebe case study, 202203

taking action, 196, 200201

Tethys case study, 203204

mandatory updates, 188

mapping, technical debt items, 22

misaligned business goals, causes of technical debt, 156

misaligned processes, development process-related causes of technical debt, 162

mitigating risk, servicing technical debt, 140141, 143

MITRE Corporation, secure coding, 183

modifiability and architectural debt, 96

modularity and architectural debt, 83

monitoring (self), production infrastructure/architecture alignment, 187

MSLOC, 41

N

name field (writing technical debt descriptions), 57

naming, technical debt, 16

NATO Software Engineering Conference (1969), software crisis, 10

negative values (risk mitigation), 140141

Northrop, Ben, 3031

Northrop, Linda, 4648

NoSQL databases and technical debt, 92

NPV (Net Present Values), technical debt as investment, 143145

O

object points, costing technical debt, 130

observable measurement criteria (source code analysis), 7274

occurrence (timeline of technical debt), 33

OMG (Object Management Group), Automated Technical Debt Measure specification, 7475

Open Web Application Security, 183

opportunities and risk, 4648

opportunity costs, 133, 134135

optimizing value of technical debt, 29

organizational culture/processes (Technical Debt Credit Check), 89, 172

P

pain points, source code analysis, 6872

parameterization, production infrastructure/architecture alignment, 187

peer reviews (source code analysis), 74

performance

database performance and balance, 91

query performance and database debt, 91

personnel/teams

causes of technical debt, 162163

distributed teams/personnel, 164

inexperienced teams/personnel, 163165

contractors, collective management of technical debt items, 127

interns, collective management of technical debt items, 127

Technical Debt Credit Check, 168169

Phoebe case study, 40, 4243

architectural debt, 85, 9495

analysis tools/techniques, 9798

business goals and, 9596

concerns/questions, 9596

defining measurement criteria, 9697

documenting debt, 9899

servicing debt, 9899

causes of technical debt

diagnosing with Technical Debt Credit Check, 172173

identifying, 156, 157158

code quality/standards, 181183

comparing case studies, 44

contrasting case studies, 4041

costing technical debt, 119120, 124125

production debt, 105, 110111

servicing technical debt

mitigating risk, 143

release pipeline, 143

source code analysis, 6568

analysis tools, 7576

business goals, 6869

documenting technical debt items, 7678

duplicate code, handling, 78

identifying questions about source code, 7072

iterations of analysis, 7879

observable measurement criteria, 7274

technical debt registries, building, 135136

technical debt toolbox/process, 202203

planning releases, servicing technical debt, 142143

Poort, Eltjo R., 133

post facto costing of technical debt, 130

potential technical debt

actual technical debt versus, 32, 33, 138, 140

misaligned business goals, 156

requirements shortfall, 156

servicing technical debt, 138, 140

time/cost pressure, 155

principal on technical debt

current principal, costing technical debt, 118

defined, 24, 27

repaying, 2526

principles of technical debt, 13

Principle 1: Technical debt reifies an abstract concept, 14, 16, 206

Principle 2: If you do not incur any form of interest, then you probably do not have actual technical debt, 32, 206

Principle 3: All systems have technical debt, 45, 152, 158, 180, 206

Principle 4: Technical debt must trace to the system, 55, 152, 206

Principle 5: Technical debt is not synonymous with bad quality, 67, 180, 206

Principle 6: Architecture technical debt has the highest cost of ownership, 86, 180

Principle 7: All code matters, 107, 206

Principle 8: Technical debt has no absolute measure—neither for principal nor interest, 124, 206

Principle 9: Technical debt depends on the future evolution of the system, 139, 206

process misalignment, development process-related causes of technical debt, 162

product backlogs, grooming (costing technical debt), 127129

production

assessing technical debt, 6162

production infrastructures

architecture alignment, 187

landscape of technical debt, 21

production debt

Atlas case study, 105

automation, 107

build and integration debt, 106107, 111

continuous deployment, 104105

continuous integration, 104105, 107

DevOps, 104

infrastructure as code, 105

infrastructure debt, 110

Phoebe case study, 105, 110113

release pipeline, 104105

SaaS, 103104

scripts, 105

servicing debt, 113

software, 105106

testing debt, 109110, 111112

Tethys case study, 105

prototypes/simulations, architectural debt analysis, 89

Q

quality of code, 67

Consortium for IT Quality, 7475

unintentional debt, avoiding, 180183

queries, database debt and query performance, 91

questions about source code (source code analysis), identifying, 7072

R

rate of change (context of software development), 38

recognizing technical debt, 51

business context and, 5860

chain of causes/effects, 5154

visible consequences of technical debt, 5455

writing technical debt descriptions, 5558, 6364

consequences, 57, 58

name field, 57

remediation approaches, 57, 58

reporters/assignees, 57, 58

summaries, 57, 58

recurring interest

calculating, costing technical debt, 122123

credit card example, 2829

defined, 27

refactoring code, 7980, 184

refining technical debt descriptions, costing technical debt, 119120

reflective questions/thought experiments, architectural debt analysis, 89

registries (technical debt), building, 195, 198199

relational databases and technical debt, 9192

release pipeline, 104105, 142143

release planning, architectural development/design, 186187

remediation

costing technical debt, 121122

timeline of technical debt, 34

remediation approaches

ROI, building technical debt registries, 135136

writing technical debt descriptions, 57, 58

build and integration debt, 111

ROI, calculating (costing technical debt), 123125

source code analysis, 77

testing debt, 112

remediation points, servicing technical debt, 132

repaying

interest on technical debt, 2627

principal on technical debt, 2526

technical debt

accruing additional debt versus repaying debt, 2526

installment plans, 3031

reporters/assignees (writing technical debt descriptions), 57, 58

build and integration debt, 111

source code analysis, 77

testing debt, 112

requirements

requirements shortfall, causes of technical debt, 156157

unimplemented requirements and technical debt, 2122

reviews (peer), source code analysis, 74

risk

exposure to, 133134, 135

opportunities and, 4648

mitigation, servicing technical debt, 140141, 143

ROI (Return Of Investment)

costing technical debt, 118, 123

servicing technical debt, building technical debt registries, 135136

runways (architectural), 186

S

SaaS (Software as a Service), 103104

SAFe (Scaled Agile Framework), architectural runways, 186

scenario-based analysis, architectural debt analysis, 89

schema structure duplication, 9091

Scientific American, software crisis, 10

scorecards (Technical Debt Credit Check), 170

scripts, 105

secure coding, 180183

security and architectural debt, 9697

SEI CERT Secure Coding Standards, 183

self-initiated version updating, production infrastructure/architecture alignment, 187

self-monitoring, production infrastructure/architecture alignment, 187

servicing technical debt

actual technical debt versus potential technical debt, 138, 140

bankruptcy, declaring, 141

costs/benefits of, 131132, 139140

debt amnesty (write offs), 141

decision points, 138

feature delivery versus, 139140

investment, technical debt as, 143145

mitigating risk, 140141, 143

opportunity costs, 133, 134135

paths of servicing, 136138

release pipeline, 142143

technical debt as investment, 143145

potential technical debt versus actual technical debt, 138, 140

release pipeline, 142143

remediation points, 132

risk exposure, 133134, 135

technical debt registries, building, 135136

technical debt depends on the future evolution of the system (Principle 9), 139

tipping points, 132

simulations/prototypes, architectural debt analysis, 89

single points of maintenance, 188

size (context of software development), 38

KSLOC, 40, 41

MSLOC, 41

software

automation, 107

build and integration debt, 106107

continuous deployment, 104105

continuous integration, 104105, 107

crisis, 1011

DevOps, 104

infrastructure debt, 110

production debt, 105106

release pipeline, 104105

SaaS, 103104

scripts, 105

testing debt, 109110

software development

backlogs, 6263

causes of technical debt, identifying, 152

context of software development, 37

age of system, 38

architectures, 38

business models, 38

comparing case studies, 44

contrasting case studies, 4041

criticality, 39

factors of, 3739

governance, 39

rate of change, 38

size, 38

size, KSLOC, 40, 41

size, MSLOC, 41

team distribution, 38

technical debt and, 4445, 48

technical debt and, 204205

software engineering practices, managing technical debt, 179180, 193

agile practices, managing technical debt at scale, 190193

architectural development/design, 185

production infrastructure/architecture alignment, 187

quality attributes/requirements, 185186

release planning, 186187

code quality/standards, 180183

documentation, 188

lightweight analysis/conformance, 189190

maintainable code, 183184

refactoring code, 184

secure code, 180183

software-intensive systems, technical debt, 5

software/system architecture documents, 188

SonarQube static analyzer, 7576

source code. See also code

all code matters (Principle 7), 107

analysis

analysis tools, 7476

Automated Technical Debt Measure specification, 7475

business goals, 6869

code inspections, 74

code smells, 66

documenting technical debt items, 7678

driving analysis questions, 7072

identifying questions about source code, 7072

iterations of analysis, 7879

observable measurement criteria, 7274

pain points, 6869, 7072

pain points, identifying questions about source code, 7072

peer reviews, 74

Phoebe case study, 6569, 7578

refactoring source code, 7980

SonarQube static analyzer, 7576

static analyzers, 6566, 7476

symptom measures, 7273

Technical Debt Credit Checks, 66, 6870

Tricorder static analyzer, 75

assessing technical debt, 6061

code smells, 20, 66

duplicate code, handling, 78

landscape of technical debt, 20

pain points

business goals and pain points, 6869, 7072

identifying questions about source code, 7072

quality of code, 67

refactoring, 7980

remediating technical debt, 121122

spaghetti code, 6566, 69, 71, 76, 7879

technical debt is not synonymous with bad quality (Principle 5), 67

spaghetti code, 6566, 69, 71, 76, 7879, 91

static analyzers (source code analysis), 7475

Phoebe case study, 6566

SonarQube static analyzer, 7576

Tricorder static analyzer, 75

story points, costing technical debt, 130

strings and database debt, 91

structures, schema structure duplication, 9091

summaries (writing technical debt descriptions), 57, 58

build and integration debt, production debt, 111

source code analysis, 77

testing debt, 112

symptom measures (source code analysis), 7273

symptoms of technical debt, 51, 52, 53, 8485

system (context of software development), age of, 38

system artifacts, causes of technical debt versus, 152

T

tactical investment, 9

taking action (technical debt toolbox/process), 196, 200201

team distribution (context of software development), 38

teams/personnel

causes of technical debt, 162163

distributed teams/personnel, 164

inexperienced teams/personnel, 163164

undedicated teams/personnel, 164165

contractors, collective management of technical debt items, 127

interns, collective management of technical debt items, 127

Technical Debt Credit Check, 168169

technical debt registries, building, 135136

technical debt, 205206

accruing additional debt versus repaying debt, 2526

actual technical debt versus

potential technical debt versus, 32, 33, 138, 140

servicing technical debt, 138, 140

amnesty of debt (write offs), 140141

assessing

architectures, 61

business context and, 5860

production, 6162

source code, 6061

awareness, 33, 5354

awareness levels, 1112

business-related causes, 155

misaligned business goals, 156

requirements shortfall, 156157

time/cost pressure, 155156

causes of technical debt, diagnosing with Technical Debt Credit Check

Phoebe case study, 172173

Tethys case study, 174177

causes of technical debt, identifying, 151153

business-related causes, 155157

changes in context, 157159

development process-related causes, 159162

intentional debt, 153154

main causes of technical debt, 154155

software development, 152

system artifacts versus causes, 152

team/personnel-related causes, 162165

unintentional debt, 153

changes in context, causes of technical debt, 157

business context, 157

evolution, 158159

technology changes, 157158

consequences of, 51, 52, 53

visible consequences, 5455

context of software development, 4445, 48

cost of, 27

costing

A2DAM, 130

Atlas case study, 117119

benefit/cost comparisons, 123

calculating recurring debt, 122123

collective management of technical debt items, 127129

current principal, 118

function points, 130

grooming product backlogs, 127129

hidden dependencies, 127128

object points, 130

Phoebe case study, 119120, 124125

post facto measurements, 130

refining technical debt descriptions, 119120

remediating technical debt, 121122

ROI, 118, 123125

story points, 130

technical debt has no absolute measure—neither for principal nor interest (Principle 8), 124

Tethys case study, 127

tipping points, 118

tool-supported analysis, 123, 130

total effort, 118

use-case points, 130

debt amnesty (write offs), 140141

defects and, 2122

defined, 34, 56, 19

development process-related causes, 159

ineffective documentation, 159160

misaligned processes, 162

test automation, 160162

DevOps and, 108109

diagnosing with Technical Debt Credit Check

Phoebe case study, 172173

Tethys case study, 174177

dirty code and, 125126

examples of, 610

friction analogy, 4

initial debt, incurring, 2425

interest

accruing, 25

accruing interest, 27, 2829

recurring interest, 27, 2829

repaying, 2627

investment, technical debt as, 143145

landscape of, 20

architectures, 21

invisibility, 21

production infrastructures, 21

source code, 20

low external quality and, 2122

major concepts of, 15

naming, 16

occurrence, 33

pervasiveness of, 4

potential technical debt

actual technical debt versus, 32, 33, 138, 140

misaligned business goals, 156

requirements shortfall, 156

servicing technical debt, 138, 140

time/cost pressure, 155

principal

defined, 27

repaying, 2526

principles of, 13

all code matters (Principle 7), 107, 206

all systems have technical debt (Principle 3), 45, 152, 158, 180, 206

architectural technical debt has the highest cost of ownership (Principle 6), 86, 180

incurring technical debt (Principle 2), 32, 206

technical debt depends on the future evolution of the system (Principle 9), 139, 206

technical debt has no absolute measure—neither for principal nor interest (Principle 8), 124, 206

technical debt is not synonymous with bad quality (Principle 5), 67, 180, 206

technical debt must trace to the system (Principle 4), 55, 152, 206

technical debt reifies an abstract concept (Principle 1), 14, 16, 206

recognizing, 51

business context and, 5860

chain of causes/effects, 5154

visible consequences of technical debt, 5455

writing technical debt descriptions, 5558, 6364

remediation, 34

repaying

accruing additional debt versus repaying debt, 2526

installment plans, 3031

interest on technical debt, 2627

scope of, 4

servicing

actual technical debt versus potential technical debt, 138, 140

building technical debt registries, 135136

costs/benefits of, 131132, 139140

debt amnesty (write offs), 141

decision points, 138

declaring bankruptcy, 141

feature delivery versus, 139140

mitigating risk, 140141, 143

opportunity costs, 133, 134135

paths of, 136138, 142145

potential technical debt versus actual technical debt, 138, 140

release pipeline, 142143

remediation points, 132

risk exposure, 133134, 135

technical debt as investment, 143145

technical debt depends on the future evolution of the system (Principle 9), 139

tipping points, 132

software development and, 204205

software-intensive systems, 5

symptoms of, 51, 52, 53, 8485

teams/personnel-related causes, 162163

distributed teams/personnel, 164

inexperienced teams/personnel, 163164

undedicated teams/personnel, 164165

timeline of, 33, 118119

tipping point, 34

treating debt, decision-making process, 2526

unimplemented requirements and, 2122

unintentional debt, timeline of technical debt, 196

value of, 27, 29

defined, 29

forecasting, 29

optimizing, 29

visible consequences of technical debt, 5455

writing technical debt descriptions, 5558, 6364

consequences, 57, 58

name field, 57

remediation approaches, 57, 58

reporters/assignees, 57, 58

source code analysis, 7678

summaries, 57, 58

Technical Debt Credit Check, 167, 177, 197, 204

architectures, 171

business vision, 170

causes of technical debt, diagnosing, 172177

conducting

process of, 169

when to conduct, 168169

development processes, 171172

goal of, 167168

inputs, 169

organizational culture/processes, 172

output from (scorecards), 170

Phoebe case study, 66, 172173

purpose of, 168

scorecards, 170

team/personnel, 168

Tethys case study, 174177

technical debt depends on the future evolution of the system (Principle 9), 139, 206

technical debt has no absolute measure—neither for principal nor interest (Principle 8), 124, 206

technical debt is not synonymous with bad quality (Principle 5), 67, 180, 206

technical debt items, 53

artifacts, 22

causes, 2223

consequences, 23

defined, 22

interest of, defined, 24

managing collectively, 127129

mapping, 22

principle of, defined, 24

technical debt must trace to the system (Principle 4), 55, 152, 206

technical debt registries, building, 195, 198199

technical debt reifies an abstract concept (Principle 1), 206

technical debt toolbox/process, 195, 196

assessing information, 195, 197198

Atlas case study, 202

becoming aware, 195, 196197

building technical debt registries, 195, 198199

deciding what to fix, 196, 199200

Phoebe case study, 202203

taking action, 196, 200201

Tethys case study, 203204

technological gaps, 84, 96

technology changes, causes of technical debt, 157158

test automation, development process-related causes of technical debt, 160162

testing debt, 109110, 111112

Tethys case study, 40, 4344

causes of technical debt

diagnosing with Technical Debt Credit Check, 174177

identifying, 156157, 160, 164

comparing case studies, 44

contrasting case studies, 4041

costing technical debt, 127

production debt, 105

technical debt toolbox/process, 203204

thought experiments/reflective questions, architectural debt analysis, 89

time/cost pressure, causes of technical debt, 155156

timeline of technical debt, 33, 205

awareness, 33, 5354

costing technical debt, 118119

occurrence, 33

remediation, 34

source code analysis, business goals and pain points, 6869

tipping point, 34

unintentional debt, 196

tipping points, 34

costing technical debt, 118

servicing technical debt, 131132

total effort, costing technical debt, 118

treating technical debt, decision-making process, 2526

Tricorder static analyzer, 75

U

undedicated teams/personnel, causes of technical debt, 164165

unimplemented requirements, technical debt and, 2122

unintentional debt, 153

avoiding with software engineering practices, 179180, 193

agile practices, managing technical debt at scale, 190193

architectural development/design, 185190

code quality/standards, 180183

documentation, 188

lightweight analysis/conformance, 189190

maintainable code, 183184

refactoring code, 184

secure code, 180183

timeline of technical debt, 196

updating

mandatory updates, 188

self-initiated version updating, production infrastructure/architecture alignment, 187

use-case points, costing technical debt, 130

V

value of technical debt, 27, 29

defined, 29

forecasting, 29

optimizing, 29

version control, documenting, 188

version updating (self-initiated), production infrastructure/architecture alignment, 187

visible consequences of technical debt, 5455

W

WIRE team, dirty code and technical debt, 125126

Woods, Eoin, 9093

write-only documents, 188

writing off technical debt (debt amnesty), 141

writing technical debt descriptions, 5558, 6364

build and integration debt, 111

consequences, 57, 58

build and integration debt, 111

source code analysis, 77

testing debt, 112

name field, 57

remediation approaches, 57, 58

build and integration debt, 111

source code analysis, 77

testing debt, 112

reporters/assignees, 57, 58, 77

summaries, 57, 58

build and integration debt, 111

source code analysis, 77

testing debt, 112

testing debt, 112

X-Y-Z

Y2K, opportunities and risk, 46

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset