Generic Implementation of Product Line Components

An argument pro component-based software development is the idea of constructing software systems by assembling preexisting components instead of redeveloping similar or identical functionality always from scratch. Unfortunately, integrating existing components practically means adaptation and use rather than use only, which makes an ideal component-based development hard to realize in practice. Product line engineering, however, tackles this problem by making components as generic as needed for a particular product family and thus allows component reuse. Such a component covers variabilities and thus its implementation must consider variabilities as well. In this paper, we describe a process for implementing generic product line components and give an overview of variability mechanisms at the implementation level, illustrated by a running example, a generic test component.

[1]  Erich Gamma Extension object , 1997 .

[2]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[3]  Barbara Paech,et al.  Component-based product line engineering with UML , 2001, Addison Wesley object technology series.

[4]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[5]  Jan Bosch,et al.  On the notion of variability in software product lines , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.

[6]  Yannis Smaragdakis,et al.  Object-oriented frameworks and product lines , 2000, SPLC.

[7]  Don S. Batory,et al.  Composition Validation and Subjectivity in GenVoca Generators , 1997, IEEE Trans. Software Eng..

[8]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[9]  Bernhard Rumpe,et al.  The UML profile for framework architectures , 2002, Addison Wesley object technology series.

[10]  David R. Musser,et al.  STL tutorial and reference guide , 2001 .

[11]  Karl J. Lieberherr,et al.  Aspect-oriented programming with adaptive methods , 2001, CACM.

[12]  Colin Atkinson,et al.  Enhancing Component Reusability through Product Line Technology , 2002, ICSR.

[13]  Cristina Gacek,et al.  Implementing product line variabilities , 2001, SSR '01.

[14]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[15]  Don Batory,et al.  Implementing large-scale object-oriented components , 1999 .

[16]  Klaus Schmid,et al.  PuLSE: a methodology to develop software product lines , 1999, SSR '99.

[17]  Trygve Reenskaug,et al.  Working with objects - the OOram software engineering method , 1995 .

[18]  Robert Glück,et al.  Generative Programming and Active Libraries , 1998, Generic Programming.

[19]  James O. Coplien,et al.  Multi-paradigm design for C++ , 1998 .

[20]  Bobby Woolf,et al.  Null object , 1997 .

[21]  Dirk Muthig,et al.  A light-weight approach facilitating an evolutionary transition towards software product lines , 2002 .

[22]  Jan Bosch,et al.  Managing Variability in Software Product Lines , 2000 .

[23]  Dirk Riehle,et al.  Framework Design: A Role Modeling Approach , 2000, Softwaretechnik-Trends.

[24]  David Notkin,et al.  Role-oriented programming for software evolution , 1997 .

[25]  Paul G. Bassett,et al.  Framing software reuse: lessons from the real world , 1996 .

[26]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.