• DocumentCode
    970519
  • Title

    Parameterized Programming

  • Author

    Goguen, Joseph A.

  • Author_Institution
    SRI International, Menlo Park, CA 94025; the Center for the Study of Language and Information, Stanford University Stanford, CA 94305.
  • Issue
    5
  • fYear
    1984
  • Firstpage
    528
  • Lastpage
    543
  • Abstract
    Parameterized programming is a powerful technique for the reliable reuse of software. In this technique, modules are parameterized over very general interfaces that describe what properties of an environment are required for the module to work correctly. Reusability is enhanced by the flexibility of the parameterization mechanism proposed here. Reliability is further enhanced by permitting interface requirements to include more than purely syntactic information. This paper introduces three new ideas that seem especially useful in supporting parameterized programming: 1) theories, which declare global properties of program modules and interfaces; 2) views, which connect theories with program modules in an elegant way; and 3) module expressions, a kind of general structured program transformation which produces new modules by modifying and combining existing modules. Although these ideas are illustrated with some simple examples in the OBJ programming language, they should also be taken as proposals for an Ada1 library system, for adding modules to Prolog, and as considerations for future language design efforts. OBJ is an ultra-high level programming language, based upon rewrite rules, that incorporates these ideas, and many others from modern programming methodology.
  • Keywords
    Computer languages; Costs; Debugging; Functional programming; Logic programming; Packaging; Proposals; Software libraries; Software packages; Writing; Adaptability; OBJ; interfaces; logic programming; methodology; modularization; parameterized programming; program library; program transformation; programming; reliability; reusability;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.1984.5010277
  • Filename
    5010277