Foreword |
|
ix | |
|
Acknowledgments |
|
xi | |
|
|
1 | (12) |
|
|
1 | (1) |
|
Optimize for Understanding |
|
|
2 | (2) |
|
|
4 | (2) |
|
|
6 | (1) |
|
Get Your Investigative Tools |
|
|
7 | (6) |
|
|
|
|
13 | (10) |
|
Meet the Problems of Scale |
|
|
13 | (2) |
|
Get a Crash Course in Offender Profiling |
|
|
15 | (1) |
|
|
16 | (1) |
|
Apply Geographical Offender Profiling to Code |
|
|
17 | (1) |
|
Learn from the Spatial Movement of Programmers |
|
|
18 | (4) |
|
|
22 | (1) |
|
3 Creating an Offender Profile |
|
|
23 | (12) |
|
|
23 | (3) |
|
Automated Mining with Code Maat |
|
|
26 | (2) |
|
Add the Complexity Dimension |
|
|
28 | (2) |
|
Merge Complexity and Effort |
|
|
30 | (1) |
|
Limitations of the Hotspot Criteria |
|
|
30 | (1) |
|
|
31 | (2) |
|
|
33 | (2) |
|
4 Analyze Hotspots in Large-Scale Systems |
|
|
35 | (12) |
|
|
35 | (3) |
|
|
38 | (2) |
|
Explore the Visualization |
|
|
40 | (1) |
|
Study the Distribution of Hotspots |
|
|
41 | (4) |
|
Differentiate Between True Problems and False Positives |
|
|
45 | (2) |
|
5 Judge Hotspots with the Power of Names |
|
|
47 | (8) |
|
Know the Cognitive Advantages of Good Names |
|
|
47 | (3) |
|
Investigate a Hotspot by Its Name |
|
|
50 | (2) |
|
Understand the Limitations of Heuristics |
|
|
52 | (3) |
|
6 Calculate Complexity Trends from Your Code's Shape |
|
|
55 | (12) |
|
Complexity by the Visual Shape of Programs |
|
|
55 | (2) |
|
Learn About the Negative Space in Code |
|
|
57 | (2) |
|
Analyze Complexity Trends in Hotspots |
|
|
59 | (4) |
|
Evaluate the Growth Patterns |
|
|
63 | (1) |
|
From Individual Hotspots to Architectures |
|
|
64 | (3) |
|
Part II Dissect Your Architecture |
|
|
|
7 Treat Your Code As a Cooperative Witness |
|
|
67 | (10) |
|
Know How Your Brain Deceives You |
|
|
68 | (3) |
|
Learn the Modus Operandi of a Code Change |
|
|
71 | (1) |
|
Use Temporal Coupling to Reduce Bias |
|
|
72 | (4) |
|
Prepare to Analyze Temporal Coupling |
|
|
76 | (1) |
|
8 Detect Architectural Decay |
|
|
77 | (14) |
|
Support Your Redesigns with Data |
|
|
77 | (1) |
|
Analyze Temporal Coupling |
|
|
78 | (5) |
|
Catch Architectural Decay |
|
|
83 | (4) |
|
React to Structural Trends |
|
|
87 | (2) |
|
Scale to System Architectures |
|
|
89 | (2) |
|
9 Build a Safety Net for Your Architecture |
|
|
91 | (14) |
|
Know What's in an Architecture |
|
|
91 | (2) |
|
Analyze the Evolution on a System Level |
|
|
93 | (1) |
|
Differentiate Between the Level of Tests |
|
|
94 | (5) |
|
Create a Safety Net for Your Automated Tests |
|
|
99 | (4) |
|
Know the Costs of Automation Gone Wrong |
|
|
103 | (2) |
|
10 Use Beauty as a Guiding Principle |
|
|
105 | (16) |
|
Learn Why Attractiveness Matters |
|
|
105 | (2) |
|
|
107 | (1) |
|
Avoid Surprises in Your Architecture |
|
|
108 | (3) |
|
Analyze Layered Architectures |
|
|
111 | (2) |
|
Find Surprising Change Patterns |
|
|
113 | (3) |
|
|
116 | (5) |
|
Part III Master the Social Aspects of Code |
|
|
|
11 Norms, Groups, and False Serial Killers |
|
|
121 | (12) |
|
Learn Why the Right People Don't Speak Up |
|
|
122 | (2) |
|
Understand Pluralistic Ignorance |
|
|
124 | (3) |
|
Witness Groupthink in Action |
|
|
127 | (1) |
|
Discover Your Team's Modus Operandi |
|
|
128 | (4) |
|
Mine Organizational Metrics from Code |
|
|
132 | (1) |
|
12 Discover Organizational Metricsin Your Codebase |
|
|
133 | (14) |
|
Let's Work in the Communication Business |
|
|
133 | (2) |
|
Find the Social Problems of Scale |
|
|
135 | (3) |
|
Measure Temporal Coupling over Organizational Boundaries |
|
|
138 | (3) |
|
Evaluate Communication Costs |
|
|
141 | (4) |
|
|
145 | (2) |
|
13 Build a Knowledge Map of Your System |
|
|
147 | (16) |
|
Know Your Knowledge Distribution |
|
|
147 | (5) |
|
|
152 | (3) |
|
Investigate Knowledge in the Scala Repository |
|
|
155 | (3) |
|
|
158 | (3) |
|
Get More Details with Code Churn |
|
|
161 | (2) |
|
14 Dive Deeper with Code Churn |
|
|
163 | (12) |
|
Cure the Disease, Not the Symptoms |
|
|
163 | (1) |
|
Discover Your Process Loss from Code |
|
|
164 | (4) |
|
Investigate the Disposal Sites of Killers and Code |
|
|
168 | (3) |
|
|
171 | (3) |
|
|
174 | (1) |
|
|
175 | (8) |
|
Let Your Questions Guide Your Analysis |
|
|
175 | (2) |
|
|
177 | (4) |
|
Let's Look into the Future |
|
|
181 | (1) |
|
|
182 | (1) |
|
|
183 | (4) |
|
|
183 | (4) |
Bibliography |
|
187 | (4) |
Index |
|
191 | |