Foundations for the study of software architecture
ACM SIGSOFT Software Engineering Notes
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
Manipulating recovered software architecture views
ICSE '97 Proceedings of the 19th international conference on Software engineering
Extracting architectural features from source code
Reverse engineering
A fast algorithm for finding dominators in a flowgraph
ACM Transactions on Programming Languages and Systems (TOPLAS)
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An Approach for Recovering Distributed System Architectures
Automated Software Engineering
Structural Redocumentation: A Case Study
IEEE Software
Using Visualization for Architectural Localization and Extraction
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
Architecture-Aware Adaptive Clustering of OO Systems
CSMR '04 Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04)
DiscoTect: A System for Discovering Architectures from Running Systems
Proceedings of the 26th International Conference on Software Engineering
Using software evolution to focus architectural recovery
Automated Software Engineering
Separating architectural concerns to ease program understanding
MACS '05 Proceedings of the 2005 workshop on Modeling and analysis of concerns in software
Documenting after the fact: Recovering architectural design decisions
Journal of Systems and Software
Legacy transformations for extracting service components
Rigorous software engineering for service-oriented systems
Hi-index | 0.00 |
In situations in which developers are not familiar with a system or its documentation is inadequate, the system's source code becomes the only reliable source of information. Unfortunately, source code has much more detail than is needed to understand the system, and it disperses or obscures high-level constructs that would ease the system's understanding. Automated tools can aid system understanding by identifying recurring program features, classifying the system modules based on their purpose and usage patterns, and analyzing dependencies across the modules. This paper presents an iterative, user-guided approach to program understanding based on a framework for analyzing and visualizing software systems. The framework is built around a pluggable and extensible set of clues about a given problem domain, execution environment, and/or programming language. We evaluate our approach by providing the analysis of our tool's results obtained from several case studies.