Lightweight and Generative Components I: Source-Level Components

  • Authors:
  • Samuel N. Kamin;Miranda Callahan;Lars Clausen

  • Affiliations:
  • -;-;-

  • Venue:
  • GCSE '99 Proceedings of the First International Symposium on Generative and Component-Based Software Engineering
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

Current definitions of "software component" are based on abstract data types -- collections of functions together with local data. This paper addresses two ways in which this definition is inadequate: it fails to allow for lightweight components -- those for which a function call is too ineffcient or semantically inappropriate -- and it fails to allow for generative components -- those in which the component embodies a method of constructing code rather than actual code. We argue that both can be solved by proper use of existing language technologies, by using a higher-order meta-language to compositionally manipulate values of type Code, syntactic fragments of some object language. By defining' a client as a function from a component to Code, components can be defined at a very general level without much notational overhead. In this paper, we illustrate this idea entirely at the source-code level, taking Code to be string. Operating at this level is particularly simple, and is useful when the source code is not proprietary. In a companion paper, we define Code as a set of values containing machine-language code (as well as some additional structure), allowing components to be delivered in binary form.