Conceptualization and understanding are prerequisites for changing software. But they become harder to achieve as software becomes more complex and expands in scope. We have many tools for writing software, but few at all for reading and understanding it. What if there were tools that helped us conceptualize systems so that we could change them with greater confidence? What would they look like and how would we use them?
I will describe a new approach that helps developers rapidly build understanding of new software systems by generating an Idealized Commit Log: a simplified step-by-step deconstruction of a working software system. I will explain how the tool works by touching upon a diverse set of topics including type analysis, code coverage tools, AST transformations and a much-ignored topic of academic computer science pioneered nearly forty years ago called program slicing. Learning Outcomes:
- A better understanding of the problem of software comprehensibility
- History and foundations of program slicing
- A new approach for understanding software