Published Sep 3, 2019

Episode 148: Software Archaeology with Dave Thomas

Dive into the realm of Software Archaeology with expert Dave Thomas as he unravels the mysteries of code exploration, dependency management, and the art of reading source code, offering invaluable techniques for navigating and understanding uncharted codebases.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

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