Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Organizing programming knowledge into syntax-directed experts
An international workshop on Advanced programming environments
Controlling propagation of operations using attributes on relations
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
The annotated C++ reference manual
The annotated C++ reference manual
Class management for software communities
Communications of the ACM
Queries and views in an object-oriented data model
Proceedings of the second international workshop on Database programming languages
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
The design of the C++ Booch Components
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
SIGMOD '91 Proceedings of the 1991 ACM SIGMOD international conference on Management of data
Object-preserving class transformations
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Querying object-oriented databases
SIGMOD '92 Proceedings of the 1992 ACM SIGMOD international conference on Management of data
Issues in the design and specification of class libraries
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Maintenance Support for Object-Oriented Programs
IEEE Transactions on Software Engineering - Special issue on software maintenance
Object-oriented type systems
Adaptive object-oriented programming using graph-based customization
Communications of the ACM
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Program developments: formal explanations of implementations
Communications of the ACM
Object-Oriented Software Construction
Object-Oriented Software Construction
Assuring Good Style for Object-Oriented Programs
IEEE Software
Maintaining Object-Oriented Software
IEEE Software
Object-Oriented Software Evolution
IEEE Transactions on Software Engineering
Object Queries over Relational Databases: Language, Implementation, and Applications
Proceedings of the Ninth International Conference on Data Engineering
Specifying and Adapting Object Behavior During System Evolution
ICSM '93 Proceedings of the Conference on Software Maintenance
Component Enhancement: An Adaptive Reusability Mechanism for Groups of Collaborating Classes
Proceedings of the IFIP 12th World Computer Congress on Algorithms, Software, Architecture - Information Processing '92, Volume 1 - Volume I
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
Minimizing Dependency on Class Structures with Adaptive Programs
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
Workshop on adaptable and adaptive software
Addendum to the proceedings of the 10th annual conference on Object-oriented programming systems, languages, and applications (Addendum)
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Evolution of Object Behavior Using Context Relations
IEEE Transactions on Software Engineering
Adaptive plug-and-play components for evolutionary software development
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Research Frontiers in Object Technology
Information Systems Frontiers
The Role of Polymorphic Reuse Mechanisms in Schema Evolution in an Object-Oriented Database
IEEE Transactions on Knowledge and Data Engineering
Object-oriented tree traversal with J. J. Forester
Science of Computer Programming - Special issue: Language descriptions, tools and applications (LDTA'01)
Strategic programming meets adaptive programming
Proceedings of the 2nd international conference on Aspect-oriented software development
An Algebraic Foundation for Adaptive Programming
FOSSACS '00 Proceedings of the Third International Conference on Foundations of Software Science and Computation Structures: Held as Part of the Joint European Conferences on Theory and Practice of Software,ETAPS 2000
The Refinement Relation of Graph-Based Generic Programs
Selected Papers from the International Seminar on Generic Programming
Compiling Adaptive Programs by Partial Evaluation
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Traversals of object structures: Specification and Efficient Implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Controlling the Complexity of Software Designs
Proceedings of the 26th International Conference on Software Engineering
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
PADL'06 Proceedings of the 8th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
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.