Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
J. Bayer, O. Flege, P. Knauber, R. Laqua, D. Muthig, K. Schmid, T. Widen, J.-M. DeBaud: PuLSE: A Methodology to Develop Software Product Lines. In Proceedings of the Symposium on Software Reuse, 1999
C. Atkinson, D. Muthig: Enhancing Component Reusability through Product Line Technology. Proceedings of the 7th International Conference in Software Reuse (ICSR 02), Springer Press, 2002
J. O. Coplien: Multi-Paradigm Design for C++. Addison-Wesley, 1999
C. Atkinson, J. Bayer, C. Bunse, E. Kamsties, O. Laitenberger, R. Laqua, D. Muthig, B. Paech, J. Wüst, J. Zettel: Component-Based Product-Line Engineering with UML. Addison-Wesley, 2001
I. Jacobson, M. Griss, P. Jonsson: Software Reuse: Architecture, Process and Organization for Business Success. Addison-Wesley, 1997
G. van Gurp, J. Bosch, M. Svahnberg: On the Notion of Variability in Software Product Lines. In Proceedings of Working IEEE/IFIP Conference on Software Architecture (WICSA), 2001
D. Muthig: A Light-Weight Approach Facilitating an Evolutionary Transition Towards Software Product Lines. PhD Thesis, University of Kaiserslautern, 2002
P. G. Basset: Framing Software Reuse: Lessons from the Real World. Prentice-Hall, 1996
M. Anastasopoulos, C. Gacek: Implementing Product Line Variabilities. Proceedings of the 2001 Symposium on Software Reusability (SSR’01), Toronto, Canada, 2001
E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995
M. Fontoura, W. Pree, B. Rumpe: The UML-F Profile for Framework Architectures. Addison-Wesley, 2001
Aspect-Oriented Programming. Communications of the ACM Vol.44 No.10, October 2001
K. Czarnecki, U. W. Eisenecker: Generative Programming: Methods, Tools and Applications. Addison-Wesley, 2000
A. Alexandrescu: Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley, 2001
D. R. Musser, A Saini: STL Tutorial and Reference Guide. Addison-Wesley, 1996
B. Woolf. The Null Object. In R. C. Martin, D. Riehle, F. Buschmann (eds.): Pattern Language of Program Design 3. Addison-Wesley, 1998
Y. Smaragdakis, D. Batory: Mixin Layers: An Object-Oriented Implementation Technique for Refinements and Collaboration-Based Designs. To appear in ACM Transactions on Software Engineering and Methodology
W. Cunningham, K. Beck: Construction Abstractions for Object-Oriented Applications. Journal of Object-Oriented Programming, July 1989
T. Reenskaug: Working with Objects: The OOram Software Engineering Method. Manning Publications, 1996
M. VanHilst: Role-Oriented Programming for Software Evolution. PhD Thesis, University of Washington, Seattle, 1997
D. Batory, R. Cardone, Y. Smaragdakis: Object-Oriented Frameworks and Product-Lines. 1st Software Product Line Conference, 1999
Y. Smaragdakis: Implementing Large-Scale Object-Oriented Components. PhD Thesis, University of Texas, Austin, 1999
D. Riehle: Framework Design: A Role Modeling Approach. PhD Thesis, ETH Zürich, 2000
D. Batory, B. J. Gerraci: Composition Validation and Subjectivity in GenVoca Generators. IEEE Transactions on Software Engineering, February 1997
K. Czarnecki, L. Dominick, U. W. Eisenecker: Aspektorientierte Programmierung in C++. iX Magazin, 8–10/2001
E. Gamma. Extension Object. In R. C. Martin, D. Riehle, F. Buschmann (eds.): Pattern Language of Program Design 3. Addison-Wesley, 1998
K. Czarnecki, U. W. Eisenecker, R. Glück, D. Vandervoorde, T. Veldhuizen: Generative Programming and Active Libraries. Proceedings of the Dagstuhl Seminar 98171 on Generic Programming, LNCS 1766, Springer-Verlag, 2000
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Muthig, D., Patzke, T. (2003). Generic Implementation of Product Line Components. In: Aksit, M., Mezini, M., Unland, R. (eds) Objects, Components, Architectures, Services, and Applications for a Networked World. NODe 2002. Lecture Notes in Computer Science, vol 2591. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36557-5_23
Download citation
DOI: https://doi.org/10.1007/3-540-36557-5_23
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00737-1
Online ISBN: 978-3-540-36557-0
eBook Packages: Springer Book Archive