Under CopyrightForster, T.T.ForsterGanesan, D.D.GanesanGirard, J.-F.J.-F.GirardGrund, M.M.GrundJohn, I.I.JohnKnodel, J.J.Knodel2022-03-0720.09.20052005https://publica.fraunhofer.de/handle/publica/29271010.24406/publica-fhg-292710Reuse 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.Table of Contents S.vii-viii 1 Introduction S.1-10 - 1.1 Motivation and Goals S.3-4 - 1.2 Product Line Software Engineering (PuLSE) S.5-6 - 1.3 Product Line Architectures (PuLSE-DSSA) S.6-8 - 1.4 Role of the Migration Plan S.8-10 - 1.5 Overview of the Remainder of the Document S.10 2 Migration to Product Line Engineering S.11-23 - 2.1 Application Engineering S.11-12 - 2.2 Product Line Engineering S.12-13 - 2.3 Scoping Envisioned and Existing Products S.13-14 - 2.4 Request-driven Reverse Engineering S.14-16 - 2.5 Integrated Architecture Reconstruction for Product Lines S.16-23 - 2.5.1 Techniques Interaction Pattern S.17-19 - 2.5.2 Techniques Combination S.19-23 3 Reverse Engineering Technique Selection S.24-29 - 3.1 Static Analyses S.24-27 - 3.1.1 Architecture Evaluation with SAVE S.24-25 - 3.1.2 Semi-Automatic Reconstruction Approach (SARA) S.25-26 - 3.1.3 Interface Analysis S.26-27 - 3.2 Dynamic Analyses S.27-28 - 3.2.1 Dynamic Analysis with JRAT S.27-28 - 3.3 Document Analyses S.28-29 - 3.3.1 Commonality and Variability Extraction (CaVE) S.28-29 4 Integrated Architecture Reconstruction S.30-43 - 4.1 Architecture Evaluation and CaVE S.30-32 - 4.2 Interface Analysis and CaVE S.32-34 - 4.3 Architecture Evaluation and Dynamic Analysis S.34-36 - 4.4 Dynamic Analysis and CaVE S.36-38 - 4.5 SARA and CaVE S.38-41 - 4.6 Architecture Evaluation, Dynamic Analysis and CaVE S.41-43 5 Case Study S.44-62 - 5.1 Eclipse Platform S.44-47 - 5.1.1 The Plug-in Mechanism S.45-46 - 5.1.2 Java Development Tools (JDT) S.47 - 5.1.3 C/C++ Development Tools (CDT) S.47 - 5.2 Interface Analysis and CaVE for JDT S.47-49 - 5.3 Architecture Evaluation and Dynamic Analysis S.49-54 - 5.4 Architecture Evaluation, Dynamic Analysis and CaVE S.55-62 6 Conclusion S.63-64 References S.65-67enarchitecture recoverydynamic analysisproduct line architecturereverse engineeringITEAfamilyarchitecture reconstructionstatic analysis004005006Combination of requirements recovery and architecture recovery for existing systemsreport