Traversal Strategy Semantics: The Core of AP

This paper provides a very accessible semantics of traversal strategies. It requires basically only relations. The paper simplifies the semantics in earlier papers (without changing the meaning), e.g., the Strategies Paper.

Abstract. Traversal through object graphs is needed for many programming tasks. In most programs, the programmer needs to deal with many traversal concerns whose implementation is often scattered across several classes and tangled with other concerns. We present the semantics of a graph-based language, called traversal strategies, for encapsulating and localizing traversal concerns and expressing them at a high level of abstraction. This eliminates scattering of traversal concerns and controls the tangling with other concerns. The contribution of the paper lies in the simple and intuitive semantics of how to search through an object graph given its meta-information (class graph) and declarative traversal instructions (traversal strategies) expressed in terms of the class graph. We also derive an algorithm and show that it implements the semantics correctly.

This paper will stay a technical report. Bibtex entry:

AUTHOR = "Karl Lieberherr and Mitchell Wand",
TITLE = "Navigating through Object Graphs Using Local Meta-Information",
INSTITUTION = "Northeastern University",
YEAR = 2001,
MONTH = "May",
NUMBER       = "{NU-CCS-2001-05}",


If you are an instructor who would like to explain the basics of Adaptive Programming, you may reuse the following Powerpoint slides provided you acknowledge the copyright: (C) 2001 Wand and Lieberherr, Northeastern University. AP semantics viewgraphs (prerequisite: mathematical relations).

Future versions of the viewgraphs will be available from the Adaptive Object-Oriented Software Development home directory.

The semantics of AP have been pretty stable for a while since the paper with Boaz Patt-Shamir on traversal strategies in 1997. This paper does not change those semantics but it offers an equivalent semantics that is much simpler.

Aspect-Oriented Programming (AOP)

For local users see: /proj/lieber/papers2/with-mitch and