CFGConf: Supporting high level requirements for visualizing Control Flow Graphs
Control Flow Graphs (CFGs) are directed graphs that represent all possible walks a program can take during its execution. CFGs are used to analyze computer programs for purposes such as compilation, performance, and security. They are commonly drawn using hierarchical layouts. However, the general nature of such layouts may not capture CFG-specific structures, making it more difficult to match the drawing to the domain. Domain-specific drawings often require the help of a graph drawing expert, despite the computing expertise of the target audience. To alleviate these issues, we conduct a survey of drawing conventions and needs for CFGs. We then, through an iterative design process, design a flexible set of representations based on these findings and develop CFGConf, a JSON specification for specifying and drawing these higher-level drawing requirements, thereby allowing users to generate and integrate their own CFG-aware graph drawings. The CFGConf language enables the creation of domain-aware graph drawings of CFGs by increasing the notational efficiency of specifying the requirements while also retaining the expressiveness found in commonly used systems such as dot/graphviz. We evaluate CFGConf in terms of notational efficiency, expressiveness, and accessibility through user study and illustrative examples.
READ FULL TEXT