Session summary: Session on Extraction and Presentation
Vesna Hassler, Technical University of Vienna
The topics of this session were how to extract architectural information from an existing system and how to present it in a way that either enables further automatic processing or visualizing the structure for architectural reasoning. The main objectives of architecture recovery are:
- Design and code reuse: this is especially important for product families, where software systems exhibit similar structure as well as similar functionality. Recovering architecture of a system, or a system family, that originally did not have an architectural description helps us learn from the past and to both better control the future system evolution and design a new system.
- Making maintenance tasks easier, because it enables a better understanding of the underlying concepts. For example, it is easier to follow the propagation of changes or cope with variance.
- Easier tracing of system evolution from the architectural point of view: it provides a better insight into the types of changes and modifications the system has undergone.
Current approaches in architecture recovery are directed towards both raising the level of abstraction in the source code and trying to map architectural elements to the implementation. Such approaches are called hybrid, or mixed bottom-up and top-down. In the paper “A Framework for Software Architecture Recovery” a methodology based on a hybrid approach is described. The authors use some conventional reverse engineering tools to generate different views of the source code, as well as try to develop some views manually, due to limitations of automatic tools. At the same time, they create architectural hypotheses and map them to the intermediate representations and the source code parts. One of the open problems is how to integrate different, manually and automatically, generated software views in order to obtain a qualitatively new view on the system under consideration, and thus support a domain engineer in architectural reasoning. In the paper “Architectural Visualization and Analysis” a visualization tool is described that can be used as support in checking the consistency between high level and low level system views. The tool can be extended to enable manipulation and integration of different views. The paper “Information Needs in Performance Analysis of Telecommunication Software” addresses the problem of recovering information about system performance, and analyzing it at the architectural level. They also emphasize the need of having multiple views and a tool to manipulate them. Specifically for execution architectures there is a lack of specification methods that are powerful enough to enable the analysis of the run-time behavior. Later in the discussion one participant suggested that design review documents could also provide a valuable input for the process of reverse architecting.
(Bandinelli paper was not considered because it belongs to either variance or product lines session)
Further research issues can be summarized as follows:
- methods and tools for integrating different system representations and different types of system information in order to achieve a higher level of abstraction
- methods for specifying architectural hypotheses (e.g. ADL, OMT, SDL)
- methods and tools for mapping architectural hypotheses to the lower level views
- visualization and analysis tools to support domain experts in architectural reasoning
- separation of concerns: different architectures for different system properties
- integration of design review documents
- methods for representing execution architectures (run-time behavior at a high abstraction level; what is the information that should be represented, without going too deep into the implementation details)