Under CopyrightBayer, J.J.BayerGanesan, D.D.GanesanGirard, J.-F.J.-F.GirardKnodel, J.J.KnodelKolb, R.R.KolbSchmid, K.K.Schmid2022-03-0708.07.20042003https://publica.fraunhofer.de/handle/publica/29163410.24406/publica-fhg-291634The success of a product family depends greatly on the quality of its reference architecture. To achieve high-quality reference architectures, it is important to leverage the experience embodied in successful systems from the same set of domains. However, the literature provides limited guidance on how to mine prior related systems for this specific purpose. This report addresses this issue by introducing an approach, which defines the views needed to express the architectures of a specific product family, recovers and analyzes these views, and provides a systematic process to define the reference architecture integrating the experience of past systems. This first version of this document focuses on architectural views: how they can be recovered, and how architectures can be analyzed and compared among themselves. The second version will emphasize the selection of reuse candidates and the development of the reference architecture for the product family.Table of Contents S.vii-viii 1 Introduction S.1-3 - 1.1 Practical and Scientific Motivations S.1 - 1.2 Concept of the Approach S.1-3 2 Combining Design and Recovery S.4-20 - 2.1 Typical Cases S.4-6 - 2.1.1 Case 1: Single System to Product Family S.4-5 - 2.1.2 Case 2: Multiple Systems to Product Family S.5 - 2.1.3 Case 3 Product Family to a new Product Family S.5-6 - 2.2 Software Architecture as Interface S.6-7 - 2.3 Architecture Descriptions S.7-11 - 2.4 Tailoring Architecture Descriptions S.11-13 - 2.5 Typical Views S.13-17 - 2.5.1 Conceptual Architecture View S.13-14 - 2.5.2 Module Architecture View S.14-15 - 2.5.3 Execution Architecture View S.15-16 - 2.5.4 Code Architecture View S.16-17 - 2.6 Mapping the Meta-Model to Recovered Information S.17-18 - 2.7 Process Description S.18-20 3 Architecture Recovery Techniques S.21-47 - 3.1 Code Architecture View S.21-27 - 3.1.1 Introduction to the Code Architecture View S.21-22 - 3.1.2 Elements of the Code Architecture View S.22-26 - 3.1.3 Conclusion S.26-27 - 3.2 Module Views S.27-39 - 3.2.1 Layers S.35-39 - 3.3 Execution Views S.39-46 - 3.3.1 Deployment Views S.44-46 - 3.4 Integrating Views S.47 4 Analysis and Comparison of related prior Systems S.48-53 - 4.1 The Comparison Process S.50-52 - 4.2 Connecting the Business Cases to the Comparison Process S.52-53 5 Design of Reference Architectures S.54-61 - 5.1 Introduction S.54 - 5.2 Overview S.55-60 - 5.2.1 Select Scenarios and Plan Next Iteration S.57-58 - 5.2.2 Define Evaluation Criteria S.58 - 5.2.3 Choose Means and Patterns S.58-59 - 5.2.4 Instantiate Patterns S.59 - 5.2.5 Document Architecture using Views S.59 - 5.2.6 Evaluate Architecture S.59 - 5.2.7 Analyze Problem S.60 - 5.3 Outlook S.60 - 5.4 Summary S.61 6 Conclusion S.62-63 - 6.1 Future work S.63 References S.64-67enITEACaféarchitecture recoveryproduct familiesPuLSE-DSSAreengineeringreference architecturereverse engineeringsoftware architectureview-based architecture004005006Definition of reference architectures based on existing systemsreport