Synergy between component-based and generative approaches

Building software systems out of pre-fabricated components is a very attractive vision. Distributed Component Platforms (DCP) and their visual development environments bring this vision closer to reality than ever. At the same time, some experiences with component libraries warn us about potential problems that arise in case of software system families or systems that evolve over many years of changes. Indeed, implementation level components, when affected by many independent changes, tend to grow in both size and number, impeding reuse. In this paper, we analyze in detail this effect and propose a program construction environment, based on generative techniques, to help in customization and evolution of component-based systems. This solution allows us to reap benefits of DCPs during runtime and, at the same time, keep components under control during system construction and evolution. In the paper, we describe such a construction environment for component-based systems that we built with a commercial generator and illustrate its features with examples from our domain engineering project. The main lesson learnt from our project is that generative techniques can extend the strengths of the component-based approach in two important ways: Firstly, generative techniques automate routine component customization and composition tasks and allow developers work more productively, at a higher abstraction level. Secondly, as custom components with required properties are generated on demand, we do not need to store and manage multiple versions of components, components do not overly grow in size, helping developers keep the complexity of an evolving system under control.

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

[2]  J. M. Neighbors,et al.  The Benefits of Generators for Reuse , 1996 .

[3]  Ted J. Biggerstaff,et al.  The library scaling problem and the limits of concrete component reuse , 1994, Proceedings of 1994 3rd International Conference on Software Reuse.

[4]  James M. Neighbors,et al.  The Draco Approach to Constructing Software from Reusable Components , 1984, IEEE Transactions on Software Engineering.

[5]  David C. Gross,et al.  Managing Domain-Specific, Product-Line Development , 1996, IEEE Softw..

[6]  Stan Jarzabek,et al.  Modelling Variant User Requirements in Domain Engineering for Reuse , 1998, EJC.

[7]  Julio Cesar Sampaio do Prado Leite,et al.  A Generative Approach To Componentware , 1998 .

[8]  Alan W. Brown,et al.  The Current State , 2016 .

[9]  Richard M. Adler,et al.  The Emergence of Distributed Component Platforms , 1998, Computer.

[10]  Stan Jarzabek,et al.  Frame-based method for customizing generic software architectures , 1999, SSR '99.

[11]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[12]  L. Burd Review: Software Reuse: Architecture, Process and Organization for Business Success , 1997 .

[13]  Tom Digre Business Object Component Architecture , 1998, IEEE Softw..

[14]  Dan Harkey,et al.  Client/Server programming with Java and Corba , 1997 .

[15]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

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

[17]  Ian Sommerville,et al.  PCL: a language for modelling evolving system architectures , 1996, Softw. Eng. J..

[18]  Yair Wand,et al.  Using objects for systems analysis , 1997, CACM.

[19]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[20]  M.L. Griss,et al.  Software reuse architecture, process, and organization for business success , 1997, Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering.

[21]  Oscar Nierstrasz,et al.  Research directions in software composition , 1995, CSUR.

[22]  P. Bassctt Framing software reuse - lessons from real world , 1997 .

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

[24]  B. F. Castro Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-oriented software architecture: a system of patterns, John Wiley & Sons Ltd, 1996 , 1997 .

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

[26]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.