Efficient implementation of adaptive software
- 1 March 1995
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 17 (2) , 264-292
- https://doi.org/10.1145/201059.201066
Abstract
Adaptive programs compute with objects, just like object-oriented programs. Each task to be accomplished is specified by a so-called propagation pattern which traverses the receiver object. The object traversal is a recursive descent via the instance variables where information is collected or propagated along the way. A propagation pattern consists of (1) a name for the task, (2) a succinct specification of the parts of the receiver object that should be traversed, and (3) code fragments to be executed when specific object types are encountered. The propagation patterns need to be complemented by a class graph which defines the detailed object structure. The separation of structure and behavior yields a degree of flexibility and understandability not present in traditional object-oriented languages. For example, the class graph can be changed without changing the adaptive program at all. We present an efficient implementation of adaptive programs. Given an adaptive program and a class graph, we generate an efficient object-oriented program, for example, in C++. Moreover, we prove the correctness of the core of this translation. A key assumption in the theorem is that the traversal specifications are consistent with the class graph. We prove the soundness of a proof system for conservatively checking consistency, and we show how to implement it efficiently.Keywords
This publication has 11 references indexed in Scilit:
- Adaptive object-oriented programming using graph-based customizationCommunications of the ACM, 1994
- Object-oriented software evolutionIEEE Transactions on Software Engineering, 1993
- Minimizing dependency on class structures with adaptive programsPublished by Springer Nature ,1993
- Maintaining object-oriented softwareIEEE Software, 1993
- Maintenance support for object-oriented programsIEEE Transactions on Software Engineering, 1992
- Issues in the design and specification of class librariesPublished by Association for Computing Machinery (ACM) ,1992
- Class management for software communitiesCommunications of the ACM, 1990
- Assuring good style for object-oriented programsIEEE Software, 1989
- Compiler ConstructionPublished by Springer Nature ,1984
- Program developmentsCommunications of the ACM, 1983