A relational approach to support software architecture analysis
Software—Practice & Experience
3D visualization of software architectures
Communications of the ACM
SHriMP Views: An Interactive Environment for Exploring Java Programs
IWPC '01 Proceedings of the 9th International Workshop on Program Comprehension
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
Joe Celko's SQL for Smarties: Trees and Hierarchies
Joe Celko's SQL for Smarties: Trees and Hierarchies
Fact Extraction and Code Auditing with Columbus and SourceAudit
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
SAB - The Software Architecture Browser
VISSOFT '05 Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis
Continuous software quality supervision using SourceInventory and Columbus
Companion of the 30th international conference on Software engineering
Incremental Reflexion Analysis
CSMR '10 Proceedings of the 2010 14th European Conference on Software Maintenance and Reengineering
CSMR '10 Proceedings of the 2010 14th European Conference on Software Maintenance and Reengineering
Hi-index | 0.00 |
The availability of up-to-date documentation of the architecture is crucial for software maintenance tasks, but it is often missing or differs from the implemented architecture. An increasingly popular and feasible way to get a clear picture of the architecture is to reconstruct it from the source code. The result of the reconstruction procedure is a graph with special, architecture-specific properties. Nowadays software systems are typically very large, so the reconstructed architecture contains a lot of details and is really difficult to interpret. It is important therefore to have efficient methods that help in understanding and managing the architecture graph. The purpose of these methods is to try to present the information so that it is comprehensible to the users. Two important methods are selective subtree collapsion and lifting low level dependencies of the system into higher, visible levels. These enable an architect to investigate the dependencies of system components at higher levels, without the need to deal with an enormous quantity of low-level details. In this paper, first we overview the concepts related to lifting and present a conceptual framework that combines subtree collapsion with lifting to enable users to interactively explore and manipulate a software architecture graph. Then we define a set of algorithms that can be used to efficiently propagate dependency edges of a graph to higher levels. We also describe how the results can be integrated into SourceInventory, a software quality monitoring and visualization framework.