## Multi-Edge Graph Visualizations for Fostering Software Comprehension

• Typically software engineers implement their software according to the design of the software structure. Relations between classes and interfaces such as method-call relations and inheritance relations are essential parts of a software structure. Accordingly, analyzing several types of relations will benefit the static analysis process of the software structure. The tasks of this analysis include but not limited to: understanding of (legacy) software, checking guidelines, improving product lines, finding structure, or re-engineering of existing software. Graphs with multi-type edges are possible representation for these relations considering them as edges, while nodes represent classes and interfaces of software. Then, this multiple type edges graph can be mapped to visualizations. However, the visualizations should deal with the multiplicity of relations types and scalability, and they should enable the software engineers to recognize visual patterns at the same time. To advance the usage of visualizations for analyzing the static structure of software systems, I tracked difierent development phases of the interactive multi-matrix visualization (IMMV) showing an extended user study at the end. Visual structures were determined and classified systematically using IMMV compared to PNLV in the extended user study as four categories: High degree, Within-package edges, Cross-package edges, No edges. In addition to these structures that were found in these handy tools, other structures that look interesting for software engineers such as cycles and hierarchical structures need additional visualizations to display them and to investigate them. Therefore, an extended approach for graph layout was presented that improves the quality of the decomposition and the drawing of directed graphs according to their topology based on rigorous definitions. The extension involves describing and analyzing the algorithms for decomposition and drawing in detail giving polynomial time complexity and space complexity. Finally, I handled visualizing graphs with multi-type edges using small-multiples, where each tile is dedicated to one edge-type utilizing the topological graph layout to highlight non-trivial cycles, trees, and DAGs for showing and analyzing the static structure of software. Finally, I applied this approach to four software systems to show its usefulness.

$Rev: 13581$