Options
2005
Report
Title
Combination of requirements recovery and architecture recovery for existing systems
Abstract
Reuse of components is a promising solution for software development organizations in order to fulfill the need to reduce cost, effort and time-to-market, to manage increasing complexity and size of the software systems, and to achieve customer requests for high-quality software and individually customized products. A promising migration strategy in order to achieve this organizational change is to transform artifacts of existing systems into reusable components where appropriate. The reusable (often generic) components can then form the core of the product line infrastructure, basis of the future product line. The migration strategy to exploit the functionality embodied in existing components having a high product line potential can be fourfold: reuse as is, reuse and adapt, recover and reconstruct, or (re-)implement. This report focuses on the recovery and presents an integrated architecture reconstruction approach that aims at migrating core functionality, major variants and key features of existing system into a product line infrastructure, whereby one of the main goals is to be complaint to the product line architecture. We call the approach integrated because it combines requirements recovery techniques (reverse engineering of documents) and architecture recovery (static and dynamic reverse engineering). The integrated architecture reconstruction approach does architectural and requirements recovery in breadth by considering all kinds of available artifacts (ranging from source code, documentation to version history information, etc.). The report shows how different reverse engineering techniques from different areas (static, dynamic, and document reverse engineering) influence each other and provide better results when used in combination. The types of combinations of different recovery techniques are explained on the one hand on a abstract level by combining the three areas and analyzing their theoretical potential, and on the other hand by means of concrete techniques where we demonstrate in a case study centered around plug-in development with Eclipse how different techniques interact and what the advantages of the combinations were. The technique we selected to apply in the case study are architecture evaluations with SAVE, interface analysis, architecture recovery with SARA, dynamic analysis with JRat, and requirements recovery based on documentation with CaVE (each technique is shortly described in the report). The different reverse engineering techniques are integrated into the product line engineering framework, PuLSE and especially product line architecture development, PuLSE-DSSA.
Publishing Place
Kaiserslautern