Software forms large and complex systems difficult to undertstand, analyze, or manage without tool support. For instance, visualization could help software developers and architects to design good software, might support testers in finding bugs, or may enable managers to monitor project progress. Our work mainly concentrates on visually enriching the source code a developer sees in an text editor with helpful information and revealing the structure of software projects through visualizing code couplings.
The code of the software system is what finally determine its behaviour and properties. While developers use many tools for navigating, understanding, changing and running the code, these tools are often not well-integrated with the source code itself. We investigate how visualization can be used to enrich the code in the editor and provide the developer with additional information in situ, exactly where required. The below images, for instance, augments the source code with information on the performance of the displayed method and calls of other methods therein.
The parts of a software systems, the classes, modules and subsystems, are not independent of each other, but connected through multitude of different types of relationships. These form a complex network of dependencies and couplings that is difficult to understand and debug. Studying multiple versions of a system or its execution behaviour, these couplings even change over time. We developed a number of network visualizations that particularly focus on the scalable representation of networks in the context of software engineering.
See also our project on dynamic graph visualization