5.4 Architecture Reconstruction


Architecture reconstruction provides analysis at the highest level of abstraction. In this process, the as-built architecture of an implemented system is obtained from the existing legacy system by analyzing it, using tools to extract information and to build system models at various levels of abstraction.

This process produces a representation of the system architecture and generates views of this architecture. These views aid in analyzing the system and serve as a means of communication among stakeholders. In some cases, such as legacy systems without an original architectural design, the lack of system structure may make it impossible to generate a useful representation.

Architectural reconstruction is a complex task requiring a variety of activities and skills. Software engineers familiar with compiler construction techniques and data-mining tools and techniques are typically required to successfully complete the task. Although tool support is usually a requirement for architectural reconstruction, no single tool or set of tools supports all reconstruction activities.

Architecture reconstruction is not a straightforward process. Architectural constructs are not explicitly represented in the source code; they are realized by diverse mechanisms in an implementation. Usually, these mechanisms are a collection of functions, classes, files, objects, and so forth. When a system is initially developed, its high-level design/architectural elements are mapped to implementation elements. Therefore, when we reconstruct architectural elements, we need to inverse these mappings.

Architecture reconstruction is an interpretive, interactive, and iterative process, requiring the skills and attention of both the reverse engineer and the architect or someone who has substantial knowledge of the architecture. The reverse engineer can build queries based on the architectural patterns that the architecture expert expects to find in the system. These queries result in new aggregations that show abstractions or clustering of the lower-level elements, which may be source artifacts or may themselves be abstractions. By interpreting these views and actively analyzing them, it is possible to refine the queries and aggregations to produce several hypothesized architectural views of the system under analysis. These views can be interpreted, further refined, or rejected. The process is complete when the architectural representation is sufficient to support user needs.

The software architecture reconstruction process can be divided into three distinct phases: view extraction, visualization and interaction, and pattern definition and recognition.

  1. View extraction: View extraction constructs models of a system from the knowledge base. These views can be simple ”displaying some of the data that has been collected ”or they can be fused views that reconcile and establish connections between collected data. Fused views are often necessary to depict a system completely. For example, in the case of late binding of function calls, it may be impossible to identify through static analysis what functions are actually called. On the other hand, dynamic analysis can identify the functions that are called during execution of the system for a given set of inputs. Fusing the static- and dynamic-view information provides a more complete and accurate view than either view can provide alone.

  2. Visualization and interaction: Visualization and interaction allows users to explore and manipulate views. Views are usually presented as a hierarchically decomposed graph. Most reconstruction tools provide a set of options for exploring and manipulating views. These options include the ability to produce different layouts or to filter views based on different types of nodes or edges.

  3. Pattern definition and recognition: Pattern definition and recognition provides facilities for architectural reconstruction. These facilities allow users to construct abstract views from detailed ones by identifying aggregations of elements and applying patterns to the underlying information. Patterns are queries on the information in the database. Most tools allow users to select a set of nodes in the view and to group them into an architectural entity.



Modernizing Legacy Systems
Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices
ISBN: 0321118847
EAN: 2147483647
Year: 2003
Pages: 142

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net