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.

[1]  Katherine E. Isaacs,et al.  CFGExplorer: Designing a Visual Control Flow Analytics System around Basic Program Analysis Operations , 2018, Comput. Graph. Forum.

[2]  Todd Gamblin,et al.  Preserving Command Line Workflow for a Package Management System Using ASCII DAG Visualization , 2019, IEEE Transactions on Visualization and Computer Graphics.

[3]  Alan Borning,et al.  SetCoLa: High-Level Constraints for Graph Layout , 2018, Comput. Graph. Forum.

[4]  Bongshin Lee,et al.  Reflecting on the Evaluation of Visualization Authoring Systems : Position Paper , 2018, 2018 IEEE Evaluation and Beyond - Methodological Approaches for Visualization (BELIV).

[5]  Francoise Balmas Displaying dependence graphs: a hierarchical approach , 2004, J. Softw. Maintenance Res. Pract..

[6]  Philippe Castagliola,et al.  A Comparison of the Readability of Graphs Using Node-Link and Matrix-Based Representations , 2004, IEEE Symposium on Information Visualization.

[7]  Mitsuhiko Toda,et al.  Methods for Visual Understanding of Hierarchical System Structures , 1981, IEEE Transactions on Systems, Man, and Cybernetics.

[8]  Jeffrey Heer,et al.  Protovis: A Graphical Toolkit for Visualization , 2009, IEEE Transactions on Visualization and Computer Graphics.

[9]  Thomas R. G. Green,et al.  Cognitive dimensions of notations , 1990 .

[10]  Martin Wattenberg,et al.  Visualizing Dataflow Graphs of Deep Learning Models in TensorFlow , 2018, IEEE Transactions on Visualization and Computer Graphics.

[11]  Sibylle Schupp,et al.  Lightweight Structured Visualization of Assembler Control Flow Based on Regular Expressions , 2014, 2014 Second IEEE Working Conference on Software Visualization.

[12]  Georg Sander,et al.  Graph Layout through the VCG Tool , 1994, GD.

[13]  Emden R. Gansner,et al.  Graphviz - Open Source Graph Drawing Tools , 2001, GD.

[14]  HeerJeffrey,et al.  D3 Data-Driven Documents , 2011 .

[15]  Frances E. Allen,et al.  Control-flow analysis , 2022 .

[16]  P. John Clarkson,et al.  Matrices or Node-Link Diagrams: Which Visual Representation is Better for Visualising Connectivity Models? , 2006, Inf. Vis..

[17]  Katherine E. Isaacs,et al.  CcNav: Understanding Compiler Optimizations in Binary Code , 2020, IEEE transactions on visualization and computer graphics.

[18]  Mathias Payer,et al.  Control-Flow Integrity , 2017, ACM Comput. Surv..

[19]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[20]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[21]  Ulrik Brandes,et al.  Graph Markup Language (GraphML) , 2013, Handbook of Graph Drawing and Visualization.

[22]  Hanspeter Mössenböck,et al.  Visualization of Program Dependence Graphs , 2008, CC.