Component Programming — a fresh look at software components

  • Mehdi Jazayeri
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 989)


All engineering disciplines rely on standard components to design and build artifacts. The key technical challenge in software engineering is to enable the adoption of such a model to the development of software. The transformation from line-by-line development to component-based development will address many of the industry's persistent productivity and quality problems. Indeed, component-based software development has been a long-standing dream of the software industry, prompting a search for both technical and nontechnical solutions. A successful approach to component-based development requires a comprehensive solution that draws on advances in programming languages, programming paradigms, algorithm analysis, and software design. This paper presents an approach based on the C++ Standard Template Library. More than a traditional library, STL embodies a concrete approach to software design based on a well-defined taxonomy and theory of software components. I present the fundamental contributions of STL to a paradigm of component programming — a component-based software development paradigm in which there is a clear separation between component development and application development. I motivate component programming, give the requirements for components and catalogs, and give an example of component programming applied to the standard Keyword in Context (KWIC) problem. I then summarize the implications of component programming for the software industry and for software engineering education.

Keywords and phrases

Software components genericity component programming programming paradigms 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    J. Backus. Can programming be liberated from the von Neumann style? a functional style and its algebra of programs. Communications of the ACM, 21(8):613–41, Aug. 1978.CrossRefGoogle Scholar
  2. [2]
    C. Ghezzi, M. Jazayeri, and D. Mandrioli. Fundamentals of Software Engineering. Prentice-Hall, Englewood Cliffs, NJ, 1991.Google Scholar
  3. [3]
    A. Koenig. File iterators. Journal of object-oriented programming, pages 59–62, November December 1994.Google Scholar
  4. [4]
    A. Koenig. Generic iterators. Journal of object-oriented programming, pages 69–72, Sept. 1994.Google Scholar
  5. [5]
    A. Koenig. Templates and generic algorithms. Journal of object-oriented Programming, pages 45–7, June 1994.Google Scholar
  6. [6]
    D. McIlroy. Mass-produced software components, pages 88–98. Petrocelli/Charter, 1976.Google Scholar
  7. [7]
    B. Meyer. Object-oriented software construction. Prentice-Hall, Englewood Cliffs, NJ, 1993.Google Scholar
  8. [8]
    D. R. Musser and A. A. Stepanov. The Ada Generic Library: Linear List Processing Packages. Springer Verlag, 1989.Google Scholar
  9. [9]
    D. R. Musser and A. A. Stepanov. Algorithm-oriented generic libraries. Software— Practice and Experience, 24(7):623–42, July 1994.Google Scholar
  10. [10]
    D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–8, Dec. 1972.CrossRefGoogle Scholar
  11. [11]
    D. L. Parnas. On the design and development of program families. IEEE Transactions on Software Engineering, 2:1–9, Mar. 1976.Google Scholar
  12. [12]
    A. A. Stepanov and M. Lee. The standard template library. Technical report, Hewlett-Packard Laboratories, May 1994.Google Scholar
  13. [13]
    B. Stroustrup. Making a vector fit for a standard. C++ Report, Oct. 1994.Google Scholar
  14. [14]
    W. Tracz. Software reuse myths. ACM SIGSOFT Software Engineering Notes, 13(1), Jan. 1988.Google Scholar
  15. [15]
    J. D. Ullman. Elements of ML programming. Prentice-Hall, Englewood Cliffs, NJ, 1994.Google Scholar
  16. [16]
    M. J. Vilot. An introduction to the standard template library. C++ Report, 6(8):22–9, Oct. 1994.Google Scholar
  17. [17]
    N. Wirth. Algorithms + Data Structures = Programs. Prentice-Hall Series in Automatic Computation. Prentice-Hall, Englewood Cliffs, NJ, 1976.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Mehdi Jazayeri
    • 1
  1. 1.Distributed Systems DepartmentTechnical University of ViennaViennaAustria

Personalised recommendations