Interaction Graphs
This paper presents the key concept of interaction graphs behind the Structure Builder (SB) tool from Tendril Software, Inc.

An interaction graph specifies a behavioral unit in the style of a UML interaction diagram. The slogan is: Interaction graphs are executable UML interaction diagrams.

An interaction graph can be applied to many different UML class diagrams and for many interesting data structure changes the generated code will be updated automatically by SB.

An interaction graph uses simple paths to define the participants of an interaction and it uses actions and properties (code fragments) to define the obligations of the participants. SB automates the communication between participants.

The paper is available in the format:

The OOPSLA '98 viewgraphs for the StructureBuilder demo are available in the formats:


Bibtex entry:

@TECHREPORT{tendril1:98,
AUTHOR = "Neeraj Sangal and Edward Farrell and Karl Lieberherr",
TITLE = "Interaction Graphs:
Object Interaction Specifications
and their Compilation to Java",
INSTITUTION = "Northeastern University",
YEAR = 1998,
MONTH = "Oct",
NUMBER = "NU-CCS-98-11"
}

Further information about the paper: Interaction graph page at Tendril Software, Inc.

We are now considering integrating interaction graphs into DJ. The idea is to provide all kinds of syntactic sugar for the traverse operation. For example, a find operation can be invoked using:

Book b = cg.fetch(lib, new Strategy("From Library to Book"),
  new Predicate() {
    boolean match(Object obj) {
      return ((Book) obj).get_isbn() == 6789907889;
    }
  }
);

interface Predicate {boolean match(Object obj);}

This notation makes the actions into ordinary Java statements. Conditionals are now just expressed as ordinary Java conditionals; no special construct is needed making the technique more accessible to Java programmers.

What is crucial is the independence of the Java code from structural details. This is also the goal of generic programming (e.g. with STL). But with DJ we have higher independence from structural detail.