Product Line Engineering-Foundations, Principles, and Techniques
Klaus pohl Institut fur Informatik und Wirtschaftsinformatik Universitat Duisburg-Essen Schutzenbahn 70 45127 Essen, germany pohl@sse. uni-essen de Gunter Bickle Siemens ag Zentralabteilung Technik Otto-Hahn-Ring 6 81730 Munchen,Germany firstname.lastname@example.org Frank van der linden Philips medical Systems Veenpluis 4-6 5684 PC Best, The Netherlands email@example.com http://www.software-productline.com/sple-book Library of Congress Control Number: 2005929629 ACM Computing Classification(1998) D.2.1,D.2.9,D.2.10,D.2.11,D.2.13,K63 ISBN-10 3-540-24372-0 Springer Berlin Heidelberg New York ISBN-13978-3-540-24372-4 Springer Berlin Heidelberg New York This work is subject to copyright. All rights are reserved, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,broadcasting, reproduction on microfilm or in any other way, and storage in data banks. Duplication of this publication or parts thereof is permitted only under the provisions of the German copyright law of September 9, 1965, in its current version, and permission for use must always be obtained from Springer-Verlag. Violations are liable for prosecution under the German Copyright law Springer is a part of Springer Science+ Business Media springeronline.com O Springer-Verlag Berlin Heidelberg 2005 Printed in Germany The use of general descriptive names, trademarks, etc in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use The author and publisher have taken care in the preparation of this book, but make no expres- sed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein Cover design: KinkelLopka, Heidelberg Typesetting: Camera-ready by the authors Printed on acid-free paper 45/3142YL 543210 Preface I. Software Product Line Engineering Are you interested in producing software products or software-intensive systems at lower costs, in shorter time, and with higher quality? If So, you are holding the right book in your hands Software product line engineering has proven to be the methodology for Higher quality, lower developing a diversity of software products and software-intensive systems cost, and shorter at lower costs, in shorter time, and with higher quality. Numerous reports development times document the significant achievements and experience gained by introducing software product lines in the software industry. Chapter 21 of this book summarises several cases Concerning the terminology, there is an almost synonymous use of the terms Software product line software product family"and"software product line,". Whereas in Europe vs software product the term software product family is used more often, in North America the family term software product line is used more frequently. This is, among other things, reflected in the names of the two former conference series(the soft ware product line conference series, started in 2000 in the USA, and the product family engineering(PFE) workshop series, started in 1996 in Europe)which were merged in 2004 to form the leading software product line conference(SPLC) series In this book, we use the term software product line I. Readers of the book The book is for those people who are interested in the principles of software Intended product line engineering. It elaborates on the foundations of software prod- readership uct line engineering and provides experience-based know ledge about the two key processes and the definition and management of variability We have written the book for practitioners, product line researchers, and students alike VI Preface llL Book Overview Framework for The book is organised according to our framework for software product line product line engineering, which has been developed based on our experience in product engineering line engineering gained over the last eight years. The framework stresses the key differences of software product line engineering in comparison with single software-system development Two a) The need for two distinct development processes: domain engineering processes and application engineering. The aim of the domain engineering process is to define and realise the commonality and the variability of the soft ware product line. The aim of the application engineering process is to derive specific applications by exploiting the variability of the software product line Variability b) The need to explicitly define and manage variability: During domain engineering, variability is introduced in all domain engineering artefacts (requirements, architecture, components, test cases, etc. It is exploited during application engineering to derive applications tailored to the spe cific needs of different customers mong others, the book provides answers to the following questions How can we save development costs and development time and at the same time increase the quality of software? How can we establish proactive reuse in software development? What is the variability of a software product line? What are the key activities and aims of the domain and application engineering processes? How can we document and manage the variability of a product line? How can we ensure consistency of the variability defined in different development artefacts like requirements architecture and test cases? How can we exploit variability during application engineering and thereby derive specific products from a common core? Part The book is divided into six parts structure Part Introduction Part Ii Product Line variab ility Part Ill: Domain Engineering Part IV: Application Engineering PartⅤ Organisation Aspects Part VI: Experience and Future Research Preface Part I, Introduction, motivates the software product line engineering para- Introduction digm, introduces our software product line engineering framework, and pro vides an introduction into the example domain used throughout the book Chapter 1 outlines the basic principles of product line engineering and its roots in traditional engineering Chapter 2 introduces our software product line engineering frame work. It defines the key sub-processes of the domain engineering and application engineering process as well as the artefacts pro- duced and used in these processes Chapter 3 provides a brief introduction to the smart homes domain from which examples are drawn throughout the book for explaining the introduced principles and concepts Part Il, Product Line Variability, defines the principles of the variability of a variability software product line and introduces notations to document variability in all software development artefacts Chapter 4 defines the principles of variability of software product line engineering and introduces our orthogonal variability model which we use throughout this book to document variability in the various software development artefacts clearly and unambiguously Chapter 5 defines how to document variability in requirements arte- facts, namely textual requirements, features, scenarios, use cases, statecharts, and class diagrams Chapter 6 defines how to document variability in architectural arte facts, namely in the development view, the process view, and the code view of a software architecture Chapter 7 defines how to document the variability of component interfaces and the variability within the internal structure of compo- nents Chapter& defines how to document the variability in test artefacts such as test cases test case scenarios, and test case scenario steps Part Ill, Domain Engineering, defines the key sub-processes of the domain Domain engineering process. For each of the sub-processes we define the construc- engineering tion of the common (invariant)product line artefacts as well as the variabl ity of the software product line Chapter 9 introduces the principles of the product management sub- process within the domain engineering process. This sub-process mainly deals with topics related to economics and, in particular, to product portfolio management VII Preface Chapter 10 defines the principles of the requirements engineering sub-process. It defines and illustrates the identification and docu- mentation of common and variable features and requirements for the software product line Chapter ll deals with the definition of a reference architecture for the software product line. It shows how product line commonality and variability are incorporated in the reference architecture Chapter 12 deals with the detailed design of reusable software components It defines how the commonality and variability de fined in the reference architecture is mapped onto components Chapter 13 discusses the influence of variability on the different test levels and presents and analyses test strategies with regard to their applicability in software product line engineering. The main focus is on establishing a systematic reuse of test artefacts in prod uct line test activities Chapter 14 presents a technique for selecting commercial off-the- shelf (cots) components, which takes into account the variability of the software product line. We consider components that provide a significant fraction of the overall functionality, the So-called high- level components Application Part IV, Application Engineering, defines the key sub-processes of the appli- engineering cation engineering process. It shows how the orthogonal definition of vari ability established during domain engineering supports the exploitation and consistent binding of variability during application engineering- and thereby facilitates proactive reuse Chapter 15 defines the application requirements engineering sub process. It tackles the problem of exploiting the common and vari able artefacts of the software product line when defining an appli cation. The chapter demonstrates how the orthogonal variability model supports the reuse of product line artefacts during application requirements engineering Chapter 16 deals with the application design sub-process which de- rives an application architecture from the reference architecture. B binding the variability according to the application requirements the required variants are selected and integrated into the application architecture. The sub-process also adapts the design according to application-specific requirements Chapter 17 deals with the realisation of a specific software product line application. Ideally, the realisation is achieved through a con- Preface IX figuration of reusable domain components and application-specific ones by exploiting the commonality and variability of the compo nents and their interfaces Chapter 18 deals with application testing. It shows how the vari ability- integrated into the domain test artefacts- supports the reuse of test case designs in application engineering. Consequently the effort of developing test cases for the different product line applications is significantly reduced Part V, Organisation Aspects, elaborates on two key aspects to be considered Organisation when introducing a software product line into an organisation: the organisa aspects tion structure and the transition strategies Chapter 19 discusses the benefits and drawbacks of different organisation structures for software product line engineering Chapter 20 outlines transition strategies for moving from a single software production to a software product line. It discusses when to apply which strategy depending on the current situation within the organisation. Part VI, Experience and Future Research, reports on the experience with Experience and product lines and briefly describes several essential topics for future re- future research search Chapter 2 1 summarises experience reports about the application of the software product line engineering paradigm in several organisa- tions. It also provides an annotated literature reference list as a guide for further reading Chapter 22 outlines key challenges for future research in the area of software product line engineering In addition we provide at the end of the book. End of Information about the authors the book The literature references used throughout the book a glossary for software product line engineering The index IV. Share Your experience! We are interested in your feedback. If you have any suggestions for im- Feedback provements, or if you have detected an error or an important issue that the book does not cover, please do not hesitate to contact us at Preface SPLE-Book@software-productline com or visit the book web page www.software-productline.com/sple-book V. Acknowledgements Eureka/ITEA, We would like to thank Eureka/ITEA, BMBF (Germany), NOVEM/ public authorities SENTER (Netherlands), and all the other national public authorities for funding the projects ESAPS (1999-2001), CAFE(2001-2003),and FAMILIES(2003-2005). Most of the results presented in this book have been researched and validated in these projects Layout and Our special thanks go to Ernst Sikora who helped us significantly in improv consistency ing the consistency and the layout of the book, and to Silja recknagel for her support in polishing the English Publisher We thank Ralf Gerstner, Ronan Nugent, and Ulrike Stricker from Springer- Verlag, Heidelberg for their support in getting this book to market Collaborators Last but not least, our thanks go to our collaborators within industry and and colleagues universities, at both the national and the international level. without the insight gained in numerous discussions, this book would never have been pe ossible aus po University of Duisburg-Essen, Germany Gunter bickle Siemens Corporate Technology, Germany F1 ank van der linden Philips medical Systems, The netherlands May,2005 Guidelines for Teaching Many companies implement the software product line engineering(SPLE) Education oj principles for developing embedded software-intensive systems as well as software engineers information systems. Solid knowledge about SPle will be crucial for em- ployees in the future. The book has been designed to provide basic reading material that can serve for a 14-week course on sple as well as to accom pany lectures embedded in an advanced course on software engineering Lectures on SPLE can be organised by taking our framework for SPLE as a Framework basis. The framework stresses the key differences between SPLE and single- system development: the need to distinguish between two types of develop ment processes(domain and application engineering) and the need to expli- citly define and manage variability Under the assumption that a single lecture takes two hours the material cov ered in this book can, amongst others, be used for the following teaching courses and modules a)A 14-lecture course on SPle which covers almost all the topics pre- 14-lecture sented in this book (Section D) course b)a two-lecture module on SPLE in an advanced software engineering 2-lecture course which introduces the key concepts of SPLE (Section ID) module c)A four-lecture module on SPle in an advanced software engineering 4-lecture course which introduces the key concepts of sple and illustrates these module concepts on a particular process phase of domain and application engin eering, for instance using the domain and application requirements engineering sub-processes, or the domain and application design sub- processes (Section IIm) d)a one-lecture module on the selection of cots systems which could be Lecture part of an advanced software engineering course. This lecture intro- on COTS duces the challenges and a technique for selecting a cots(commercial of the shelf) component or system for a software product line (Section IV) e)A three-lecture module on testing in SPle which could be part of a 3-lecture software quality assurance course or an advanced software engineering module on testing course. The module introduces the key concepts of SPlE and teaches
软件复用与产品线专题讲义，包含软件复用 (Software Reuse)，软件产品线(Product Line)及案例分析：借阅管理系统
IBM软件产品线简介 IBM软件产品线简介 IBM软件产品线简介 IBM软件产品线简介
作为目前最为主流的软件开发技术，面向对象的编程OOP（Object-Oriented Programming）对于软件产品线可变性的实现提 供了一定的支持。但OOP 对于具有横切特性的产品线特征以及可选的特征交互关系仍然难以提供灵活、...
论文研究 - 模型驱动软件产品线（SPL）的工具，技术和语言的研究：系统文献综述2020-05-18
本文研究了将模型驱动的软件开发与软件产品线（SPL）集成在一起的方法。 自2014年以来，该SLR进行了71项研究工作的鉴定。我们收集了18种工具，14种技术和17种语言用于MDSD SPL。 我们分析哪种技术适合SPL。 我们...
论文研究 - 学习支持软件产品线中适应性产品的派生2020-05-13
软件产品线工程是基于大规模生产的大规模开发范例。 它包括构建一个公共平台，从中可以衍生出一组产品。 在持续发展和成本优化的约束下，推导过程必须能够满足客户的需求，并在短时间内提供充足的产品而没有缺陷。 ...
在一个软件产品线中，更改的频率更高，因为许多软件单元从一个发行版本转移到另一个发行版本。 另外，其他新文件也添加到重用文件中。 在这项工作中，我们探索建立模型的可能性，该模型可以预测文件，很有可能会...