Software development in the industry is often an evolutionary process. Software products are developed for one specific customer and later on refined for other customers with different requirements. Refinements are made on the design (algorithms and data structures) of the system and also on the architecture (the overall system structure) of the system. Design information is often well documented. However, architectural information is often incomplete and inconsistent. Recovery of architectural information from legacy systems is therefore necessary to build up a complete and unambiguous description of the system architecture. Early design decisions carrying important information as e.g. the global control structure will be accessible. The architecture of legacy systems can be analysed concerning architectural failures, as e.g. incorrect assignment of functionality to design elements. Recovered architectural information allows also the improvement of communication between system shareholders (customer, developer, programmer ...).
The main topic of our posters is the presentation of an approach for recovery of architectural structure. The approach has been developed while working in the ESPRIT project ARES (Architectural Reasoning for Embedded Systems). ARES is supported by the European Commission under ESPRIT framework IV contract no. 2047 7 and is pursued by Nokia RC Finland, ABB Corporate Research Norway, Philips RC Holland, Imperial College, Technical University Madrid, and Technical University of Vienna. The test case is an industrial test case, a real-time system controlling train movements.
The input to the recovery process are various software views from the legacy system. The level of abstraction of the software views (documents, source code...) is low. In a stepwise approach the level of abstraction is raised to a high level of abstraction, the architectural level. In a first step, views on the system are required that are on a higher level of abstraction. Those additional views (e.g. call graphs, data-flow diagrams, state-transition diagrams, and higher-level representations) are generated using commercially available reverse engineering tools and recovered manually using the expertise of a human engineer. In the ARES architecture recovery process we extensively applied and evaluated several commercial reverse engineering tools (e.g. Refine/C, Imagix4D). We discovered several problems when applying such tools to the test case e.g. limited parsability due to mixtures of languages (e.g. C and assembler), platform dependencies, limitations of achievable results in terms of navigation through different views of the same application within a particular reverse engineering tool. The experiences from the tool-supported recovery of design information emphasised the importance of additional views on a system that had to be generated manually. In particular we developed with help of a domain expert data-flow and state-transition representations with higher semantic content.
The recovery process is currently applied on other members of the product family. The common architecture will be derived in a final step from the various architectural representations. The recovered architectural description will allow reasoning about the quality and the correctness of the system architecture. Furthermore, we expect reduced effort for instantiation and maintenance of product line products.