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
Link To Document