Engineering components for ease of customisation and evolution

Building software systems from prefabricated components is a very attractive vision. Distributed component platforms (DCP) and their visual development environments bring this vision closer. However, some experiences with component libraries warn us about potential problems that arise when software-system families or systems 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. This unwanted effect is analysed in detail. It is argued that components affected by frequent unexpected changes require higher levels of flexibility than the 'plug-and-play' paradigm is able to provide. A program construction environment is proposed, based on generative programming techniques, to help in customisation and evolution of components that require much flexibility. This solution allows the benefits of DCPs to be reaped during runtime and, at the same time, keeps components under control during system construction and evolution. Salient features of a construction environment for component based systems are discussed. Its implementation with commercial reuse technology Fusion/sup TM/ is described. The main lesson learnt from the project is that generative-programming techniques can extend the strengths of the component based approach in two important ways: 1) generative-programming techniques automate routine component customisation and composition tasks and allow developers work more productively, at a higher abstraction level; 2) as custom components with required properties are generated on demand, it is not necessary to store and manage multiple versions of components.

[1]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[2]  Stan Jarzabek,et al.  Synergy between component-based and generative approaches , 1999, ESEC/FSE-7.

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

[4]  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.

[5]  Ralph E. Johnson,et al.  Frameworks = (components + patterns) , 1997, CACM.

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

[7]  Dan Harkey,et al.  Client/Server programming with Java and CORBA (2. ed.) , 1998 .

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

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

[10]  Ruben Prieto-Diaz,et al.  Domain analysis for reusability , 1988 .

[11]  Ted J. Biggerstaff,et al.  A perspective of generative reuse , 1998, Ann. Softw. Eng..

[12]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

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

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

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

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

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

[18]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

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

[20]  Joseph A. Goguen,et al.  Parameterized Programming , 1984, IEEE Transactions on Software Engineering.

[21]  Anders Nilsson,et al.  Business process components for distributed object applications , 1998, CACM.

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

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

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

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

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

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

[28]  J. C. Wortmann,et al.  Development and Evolution of Software Architectures for Product Families , 1998, Lecture Notes in Computer Science.

[29]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

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