Synergy Between Component-Based and Generative Approaches

  • Stan Jarzabek
  • Peter Knauber
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1687)


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.


Generic Architecture Business Logic Runtime System Software Reuse Construction Unit 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bass, L., Clements, P. and Kazman, R. Software Architecture in Practice, Addison-Wesley, 1998Google Scholar
  2. 2.
    Bassett, P. Framing Software Reuse — Lessons from Real World, Yourdon Press, Prentice Hall, 1997Google Scholar
  3. 3.
    Batory, D., Lofaso, B. and Smaragdakis, Y. “JST: Tools for Implementing Domain-Specific Languages,” Proc. 5 thInt. Conf. on Software Reuse, Victoria, BC, Canada, June 1988, pp. 143–153Google Scholar
  4. 4.
    Bayer J., DeBaud, J.M., Flege, O., Knauber, P., Laqua, R., Muthig, D., Schmid, K. and Widen, T. “PuLSE: A Methodology to Develop Software Product Lines,” Proc. Symposium on Software Reusability, SSR’99, Los Angeles, May 1999, pp. 122–132Google Scholar
  5. 5.
    Biggerstaff, T. “The Library Problem and the Limits of Concrete Component Reuse,” Proc. 3rd Int. Conf. on Software Reuse, Rio de Janeiro, Brazil, November 1994, pp. 102–109Google Scholar
  6. 6.
    Brown, A. and Wallnau, K. “The Current State of CBSE,” IEEE Software, September/October, 1998, pp. 37–46Google Scholar
  7. 7.
    Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P. and Stal, M. Pattern-Oriented Software Architecture — A System of Patterns, John Wiley & Sons, 1996Google Scholar
  8. 8.
    Cheong, Y.C. and Jarzabek, S. “Modeling Variant User Requirements in Domain Engineering for Reuse,” in Information Modelling and Knowledge Bases, Eds. Hannu Jaakkola, Hannu Kangassalo and Eiji Kawaguchi, printed in IOS Press, Netherlands, pp. 220–234Google Scholar
  9. 9.
    Cheong, Y.C. and Jarzabek, S. “Frame-based Method for Customizing Generic Software Architectures,” Proc. Symposium on Software Reusability, SSR’99, Los Angeles, May 1999, pp. 103–112Google Scholar
  10. 10.
    Digre, T. “Business Component Architecture,” IEEE Software, September/October 1998, pp. 60–69Google Scholar
  11. 11.
    Fowler, M. Analysis Patterns: Reusable Component Models, Addison-Wesley, 1997Google Scholar
  12. 12.
    Gamma, E., Helm, R., Johnson, R. and Vlissides, J. Design Patterns, Addison-Wesley, 1994Google Scholar
  13. 13.
    Jacobson, I., Griess, M. and Jonsson, P. Software Reuse — Architecture, Process and Organization for Business Success, Addison Wesley Longman, 1997, pp.39–42.Google Scholar
  14. 14.
    Johnson, R. and Foote, B. “Designing Reusable Classes,” Journal of Component-Oriented Programming, June 1988, Vol.1, No.2, pp. 22–35.Google Scholar
  15. 15.
    Kara, D. “A Flawed Analogy: Hardware is not Software,” Component Strategies, November 1998, pp. 78–80Google Scholar
  16. 16.
    Kiczales, G, Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J-M., Irwin, J. “Aspect-Oriented Programming,” Proc. European Conference on Object-Oriented Programming (ECOOP), Finland, Springer-Verlag LNCS 1241. June 1997.Google Scholar
  17. 17.
    Krieger, D. and Adler, R. “The Emergence of Distributed Component Platforms,” IEEE Computer, March 1998, pp. 43–53Google Scholar
  18. 18.
    Macala R., Stuckey, L. Jr. and Gross, D. “Managing Domain-Specific, Product-Line Development,” IEEE Software, May 1996, pp. 57–67Lewis Ted et al Component-Oriented Application Frameworks Google Scholar
  19. 19.
    Neighbours, J. “The Benefits of Generators for Reuse,” Proc. 4th Int. Conference on Software Reuse, April 1996, Orlando, Florida, p. 217Google Scholar
  20. 20.
    Neighbours, J. “The Draco Approach to Constructing Software from Reusable Components,” IEEE Trans. on Software Eng., SE-10(5), September 1984, pp. 564–574CrossRefGoogle Scholar
  21. 21.
    Nierstrasz, O. and Meijler, T.D. “Research Directions in Software Composition,” ACM Computing Surveys, vol. 27, no. 2, June 1995, pp. 262–264.CrossRefGoogle Scholar
  22. 22.
    Orfali, R and Harkey, D. Client/Server Programming with Java and CORBA, John Wiley and Sons, 1998, second editionGoogle Scholar
  23. 23.
    Parnas, D. “On the Design and Development of Program Families,” IEEE Trans. on Software Eng., March 1976, p. 1–9Google Scholar
  24. 24.
    Parsons, J. and Wand, Y. “Using Objects for System Analysis,” Comm. of ACM, Vol. 40, No. 12, Dec. 1997, pp. 104–110CrossRefGoogle Scholar
  25. 25.
    San Francisco Framework,
  26. 26.
    Sant’ Anna, M., Leite, J. and Prado, A. “A Generative Approach to Componentware,” Proc. Workshop on Component-based Software Engineering, ICSE’20, April 1998, Kyoto, JapanGoogle Scholar
  27. 27.
    Sommerville, we. and Dean, G. “PCL: a language for modelling evolving system architectures,” Software Engineering Journal, March 1996, pp.111–121Google Scholar
  28. 28.
    Tracz, W. Collected overview reports from the DSSA project, Technical Report, Loral Federal Systems — Owego. (1994).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Stan Jarzabek
    • 1
  • Peter Knauber
    • 2
  1. 1.Department of Computer Science, School of ComputingNational University of SingaporeSingapore
  2. 2.Fraunhofer Institute for Experimental Software EngineeringKaiserslauternGermany

Personalised recommendations