Visualization techniques are commonly used in reverse engineering to better understand the underlaying design of software components. Our approach is to provide tools to help discover the architecture of a software by making use of innovative visualization and user interaction techniques. While a software is always evolving, there are ways to recover information about its structure. For instance, data mining can be applied to version control and bug tracking systems. To be able to see the software helps the architect predict and limit change impacts and costs. Our goal is to visualize the evolution of the software through time, while taking under account human factors and software engineering principles.
Visualization of dynamically changing networks (graphs) is a significant challenge for researchers. Previous work has experimentally compared animation, small multiples, and other techniques, and found trade-offs between these. One potential way to avoid such trade-offs is to combine previous techniques in a hybrid visualization. We present two taxonomies of visualizations of dynamic graphs: one of non-hybrid techniques, and one of hybrid techniques. We also describe a prototype, called DiffAni, that allows a graph to be visualized as a sequence of three kinds of tiles: diff tiles that show difference maps over some time interval, animation tiles that show the evolution of the graph over some time interval, and small multiple tiles that show the graph state at an individual time slice. This sequence of tiles is ordered by time and covers all time slices in the data. An experimental evaluation of DiffAni shows that our hybrid approach has advantages over non-hybrid techniques in certain cases.
A common problem in software engineering is to find the right balance between quality and cost, while delivering on time. Needs and technology are evolving faster than our skill to manage such projects. To manage and implement efficiently these change requests can affect the software quality and maintenance costs.
In this study, we used several data mining techniques (classification and regression) to find a relationship between change impact (e.g. lines of code, number of modified files) and software design measures. We found out which attributes seems to have more impact on the maintenance effort. The data was collected from open-source projects, but a larger scale study is currently being done.
We present a hybrid visualization technique for compound graphs (i.e. networks with a hierarchical clustering defined on the nodes) that combines the use of adjacency matrices, node-link and arc diagrams to show the graph, and also combines the use of nested inclusion and icicle diagrams to show the hierarchical clustering. The graph visualized with our technique may have edges that are weighted and/or directed. We first explore the design space of visualizations of compound graphs and present a taxonomy of hybrid visualization techniques. We then present our prototype, which allows clusters (i.e. subtrees) of nodes to be grouped into matrices or split apart using a radial menu. We also demonstrate how our prototype can be used in the software engineering domain, and compare it to the commercial matrix-based visualization tool Lattix using a qualitative user study.