Plenary lecture 2: visualizing programs
Harald Wertz · 2009
During their live cycle, programs have a tendency to grow and, by the way, to increase their complexity, thus becoming harder and harder to read, to understand and to maintain. But understanding programs is necessary for their continuous evolution, their maintenance and debugging. Various tools, such as metrics, abstract interpretation, model checking, code coverage, program slicing, data-flow analysis, pointer analysis, call graphs, data-flow graphs and dependency graphs (to name but a few), have been developed to help programmers in their understanding of the structure and functioning of programs. In this lecture we will present various ways of displaying graphs and focus on the impact of visualization of such static and dynamic data dependencies in the context of program maintenance. We will examine several prototypes we have developed in our laboratory, detailing especially the different visualizations we propose, which are aimed to minimize the conceptual overload in order to allow users to deal with hard to understand or buggy programs.