Episode 148: Software Archaeology with Dave Thomas

Topics covered
Popular Clips
Episode Highlights
Dynamic Exploration
Dynamic exploration in software archaeology involves techniques like debugging and profiling to understand software behavior. emphasizes the importance of setting breakpoints correctly, as incorrect placement can lead to frustration. Instead, he often inserts code to raise exceptions, providing valuable insights through stack traces and parameter values 1. This method allows developers to understand the state of the program at specific points, aiding in problem-solving and future debugging.
I tend not to use breakpoints as much as I will insert code that will raise an exception.
---
Dynamic code exploration also includes executing the software to observe its behavior, which can reveal the macro structure of the program 2. This approach helps in understanding how different parts of the code interact and function together.
Static Analysis
Static analysis approaches in software archaeology focus on reading and analyzing code without execution. highlights the value of unit tests, which provide an orthogonal view into the codebase, revealing how APIs are intended to work 3. Tests offer reliable insights, unlike documentation, which can often be outdated or incorrect.
Tests, unlike documentation, tend not to lie.
---
Additionally, Thomas shares a technique for visualizing code structure by shrinking font sizes to spot patterns and duplicated code 4. This method helps build a subconscious map of the code, aiding in navigation and understanding.
Related Episodes


Episode 86: Interview Dave Thomas
Answers 383 questions

SE-Radio Episode 242: Dave Thomas on Innovating Legacy Systems
Answers 383 questions
Episode 115: Architecture Analysis
Answers 383 questions

Episode 47: Interview Grady Booch
Answers 383 questions

Episode 150: Software Craftsmanship with Bob Martin
Answers 383 questions

Episode 112: Roles in Software Engineering II
Answers 383 questions

Episode 130: Code Visualization with Michele Lanza
Answers 383 questions

Episode 59: Static Code Analysis
Answers 383 questions

Episode 441 Shipping Software - With Bugs
Answers 383 questions

Episode 228: Software Architecture Sketches with Simon Brown
Answers 383 questionsEpisode 87: Software Components
Answers 383 questions

Episode 100: Software in Space
Answers 383 questions

Episode 31: Agile Documentation
Answers 383 questions
Episode 166: Living Architectures with John Wiegand
Answers 383 questions

Episode 6: Model-Driven Software Development Pt. 2
Answers 383 questions














