Under CopyrightKnodel, J.J.KnodelLindvall, M.M.LindvallMuthig, D.D.MuthigNaab, M.M.Naab2022-03-0707.09.20062005https://publica.fraunhofer.de/handle/publica/29249510.24406/publica-fhg-292495The software architecture is one of the most crucial artifacts within the lifecycle of a software system. Decisions made at the architectural level directly enable, facilitate, hamper, or interfere with the achievement of business goals as well as meeting functional and quality requirements. The latter includes reusability, and thus software architectures are also essential for the success of product line engineering. This paper summarizes our practical experience by giving an overview on when and how static architecture evaluation practically contributes to architecture development. Therefore, it defines ten distinct purposes of architectural evaluations and illustrates them in a set of industrial and academic case studies. Most of the case studies are settled in a product line engineering context. In particular, we highlight how the different purposes determine and influence subsequent steps in architecture development.1 Introduction S.1 2 Approach S.2-5 - 2.1 PuLSE-DSSA S.2-4 - 2.2 Component Engineering S.4 - 2.3 Implementation S.4 - 2.4 ADORE S.5 3 Static Architecture Evaluation S.6-9 - 3.1 Purposes of Static Architecture Evaluation S.7-9 4 Case Studies S.10-19 - 4.1 CS1: Apache Tomcat S.10-13 - 4.2 CS2: Go Phone S.13-14 - 4.3 CS3: SAVE S.14 - 4.4 CS4: TSAFE S.15 - 4.5 CS5: Migration to a Reference Architecture S.15-16 - 4.6 CS6: Product Line versus Implementations S.16-17 - 4.7 CS7: Component Adequacy S.17-18 - 4.8 CS8: Product Line Potential S.18-19 - 4.9 CS9: Commonalities among Products S.19 5 Related Work S.20 6 Conclusion S.21 7 References S.22-25enADOREsoftware architectureproduct linePuLSE-DSSAreverse engineeringarchitecture evaluation004005006Static evaluation of software architecturesreport