An approach to implementing dynamic adaptation in C++

  • Authors:
  • Scott D. Fleming;Betty H. C. Cheng;R. E. Kurt Stirewalt;Philip K. McKinley

  • Affiliations:
  • Michigan State University, East Lansing, Michigan;Michigan State University, East Lansing, Michigan;Michigan State University, East Lansing, Michigan;Michigan State University, East Lansing, Michigan

  • Venue:
  • DEAS '05 Proceedings of the 2005 workshop on Design and evolution of autonomic application software
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.