A Container-Based Approach to Object-Oriented Product Lines

Software product lines improve the productivity of developers by structuring application development around a set of features common to a family of applications. While a number of product line development approaches have been proposed, we argue that these approaches primarily target product lines that vary with respect to their functional properties. We propose a complementary approach to developing objectoriented product lines that vary with respect to their non-functional characteristics. Our approach is based on the use of software containers, similar to those used to host Enterprise Java Beans. We illustrate the approach in the context of a distributed middleware product line for Microsoft’s .NET Framework. The individual products in this family vary with respect to their dependability properties.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  I. C. Wand,et al.  A.P.I.C. Studies in Data Processing , 1989 .

[3]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[4]  Kim B. Clark,et al.  Design Rules: The Power of Modularity Volume 1 , 1999 .

[5]  David R. Musser,et al.  STL tutorial and reference guide - C++ programming with the standard template library , 1996, Addison-Wesley professional computing series.

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

[7]  Don S. Batory,et al.  Achieving Extensibility Through Product-Lines and Domain-Specific Languages: A Case Study , 2000, ICSR.

[8]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[9]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[10]  Klaus Schmid,et al.  An Initial Model of Product Line Economics , 2001, PFE.

[11]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[12]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[13]  J. Hallstrom,et al.  Generating Configurable Containers for Component-Based Software , 2003 .

[14]  N. Falconer Structured Programming , 1973, Nature.

[15]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[16]  Kim B. Clark,et al.  Design Rules: The Power of Modularity , 2000 .

[17]  Martin L. Griss,et al.  Implementing Product-Line Features with Component Reuse , 2000, ICSR.

[18]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[19]  William G. Griswold,et al.  The structure and value of modularity in software design , 2001, ESEC/FSE-9.

[20]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[21]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[22]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[23]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[24]  D. Batory,et al.  Product-Line Architectures , 1998 .

[25]  Roberto Erick Lopez-Herrejon,et al.  Generating product-lines of product-families , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[26]  Don S. Batory,et al.  Achieving extensibility through product-lines and domain-specific languages: a case study , 2000, TSEM.

[27]  Jason O. Hallstrom Scalable evolution of highly available systems , 2003 .

[28]  Don S. Batory,et al.  The GenVoca model of software-system generators , 1994, IEEE Software.

[29]  Bruce Weide,et al.  Component-based software using RESOLVE , 1994, SOEN.

[30]  Jan Bosch,et al.  Issues Concerning Variability in Software Product Lines , 2000, IW-SAPF.

[31]  Daniel Hoffman,et al.  Commonality and Variability in Software , 1998 .

[32]  Jon Louis Bentley,et al.  Programming pearls: little languages , 1986, CACM.

[33]  Doug Lea The GNU C++ library , 1996 .

[34]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.

[35]  Jan Bosch,et al.  Variability Issues in Software Product Lines , 2001, PFE.

[36]  Bertrand Meyer,et al.  Reusable Software: The Base Object-Oriented Component Libraries , 1994 .

[37]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[38]  Andreas Rausch,et al.  Journal of Object Technology , 2002 .

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

[40]  D. Schmidt,et al.  Applying Design Patterns and Frameworks to Develop Object-Oriented Communication Software , 1997 .

[41]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[42]  Daniel Hoffman,et al.  Commonality and Variability in Software Engineering , 1998, IEEE Softw..

[43]  Durga P. Gandi,et al.  The Humane Bugfinder : Modular Static Analysis Using a SAT Solver , 2003 .

[44]  Martin Neath,et al.  Cool - c++ object-oriented library , 1990 .