Concepts and experiments in computational reflection
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Computational reflection in class based object-oriented languages
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Language and Compiler Support for Adaptive Distributed Applications
OM '01 Proceedings of the 2001 ACM SIGPLAN workshop on Optimization of middleware and distributed systems
An aspect-oriented approach to dynamic adaptation
WOSS '02 Proceedings of the first workshop on Self-healing systems
An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Designing an Extensible Distributed Language with a Meta-Level Architecture
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Reflection for Statically Typed Languages
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Supporting Unanticipated Dynamic Adaptation of Application Behaviour
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Separating Introspection and Intercession to Support Metamorphic Distributed Systems
ICDCSW '02 Proceedings of the 22nd International Conference on Distributed Computing Systems
Applying the Decorator Pattern for Profiling Object-Oriented Software
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Partial behavioral reflection: spatial and temporal selection of reification
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Computer
Generation of Self-Optimizing Wireless Network Applications
ICAC '04 Proceedings of the First International Conference on Autonomic Computing
Dynamic C++ classes: a lightweight mechanism to update code in a running program
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Transparent shaping of existing software to support pervasive and autonomic computing
DEAS '05 Proceedings of the 2005 workshop on Design and evolution of autonomic application software
Applying Digital Evolution to the Development of Self-Adaptive ULS Systems
ULS '07 Proceedings of the International Workshop on Software Technologies for Ultra-Large-Scale Systems
Context-oriented programming: A software engineering perspective
Journal of Systems and Software
Hi-index | 0.00 |
This paper describes TRAP/C++, a software tool that enables new adaptable behavior to be added to existing C++ programs in a transparent fashion. In previous investigations, we used an aspect-oriented approach to manually define aspects for adaptation infrastructure, which were woven into the original application code at compile time. In follow-on work, we developed TRAP, a transparent shaping technique for automatically generating adaptation aspects, where TRAP/J is a specific instantiation of TRAP. This paper presents our work into building TRAP/C++, which was intended to be a port of TRAP/J into C++. Designing TRAP/C++ required us to overcome two major hurdles: lack of reflection in C++ and the incompatibility between the management of objects in C++ and the aspect weaving technique used in TRAP/J. We used generative programming methods to produce two tools, TrapGen and TrapCC, that work together to produce the desired TRAP/C++ functionality. Details of the TRAP/C++ architecture and operation are presented, which we illustrate with a description of a case study that adds dynamic auditing capabilities to an existing distributed C++ application.