Adaptive Plug-and-Play Components
Note: It turns out that APPC is a trademark of IBM and stands for: "Advanced Peer to Peer Communication". Therefore we use the abbreviation AP&PC instead of APPC.

This paper advances programming by introducing reusable components, called APPCs (Adaptive Plug-and-Play Components) which are parameterized by interface class graphs and which can be composed in a plug-and-play manner.

There is an important follow-on paper . It shows how AP&PC are a useful general-purpose tool for AOP.

The paper proposes to implement each behavior as a little framework and it proposes useful white-box composition techniques. APPCs can be used in two ways: by using traversal strategies in the algorithms or by writing the algorithms in a conventional way and using traversal strategies only in the maps that connect the frameworks with the application structure.

There is an interesting connection to Modeling Behavior with Personalities .

This is an OOPSLA '98 paper.

We apologize for the following errata:

In Fig. 3: qty and quantity should be everywhere: quantity.
quantity is a data member of LineItemParty.

The arguments of "additionalCharges" should be:
quantity, unitPrice, itemInst

Page 103: first paragraph:
a.(any, satisfying C)*.B should be A.(any, satisfying C)*.B

          second paragraph:
"trategies" should be "strategies"

Page 107: Figure 9:

quantity is a data member of LineItemParty.

replace "item" by "itemInst".

Page 110: Figure 12:
price is the main-entry.

Page 114: comparison with subject-oriented programming:

Class graphs in SOP only have inheritance edges.

POSTSCRIPT: ftp://ftp.ccs.neu.edu/pub/people/lieber/appcs.ps

PDF: ftp://ftp.ccs.neu.edu/pub/people/lieber/appcs.pdf

Further Information about APPCs

Viewgraphs about APPCs are in
OOPSLA '98 talk in HTML format for direct viewing on the web.
OOPSLA '98 talk (PowerPoint format) presented by Mira Mezini in Vancouver, Oct. 20, 1998.
Long version presented at IBM Yorktown Heights in September 1998, prepared by Mira Mezini.
Lecture notes about APPCs.

Bibtex entry:

@INPROCEEDINGS{mezini:oopsla98,
AUTHOR = "Mira Mezini and Karl Lieberherr",
TITLE = "Adaptive Plug-and-Play Components for
Evolutionary Software Development",
BOOKTITLE = "Object-Oriented Programming Systems, Languages and Applications
Conference, {\em in} Special Issue of SIGPLAN Notices",
YEAR = "1998",
MONTH = "October",
VOL = 33,
NUMBER = 10,
ADDRESS = "Vancouver",
PAGES = "97-116",
EDITOR = "C. Chambers",
PUBLISHER = "ACM"
}                 

@TECHREPORT{mezini:98,
AUTHOR = "Mira Mezini and Karl Lieberherr",
TITLE = "Adaptive Plug-and-Play Components for
Evolutionary Software Development",
INSTITUTION = "Northeastern University",
YEAR = 1998,
MONTH = April,
NUMBER = "NU-CCS-98-3"
}

Project ideas related to this paper:

Implement APPCs using Java Beans

A paper is under preparation. Contact Professor David Lorenz (lorenz@ccs.neu.edu).

Integrate APPCs and Personalities and Class Graph Views

This is a conceptual project suitable for an advanced student.

Modeling Behavior with Personalities

Class Graph Views

Some further motivation which was not included in the paper:

One key insight behind the STL template library is that iterators 
serve as interface to combine algorithms and data structures.
Adaptive programming takes this idea one step higher: traversal
strategies are the interface to combine algorithms and data structures.
Algorithms are parameterized by interface class graphs and when 
the detailed data structure is given, we write traversal strategies
(satisfying the constraints expressed by the algorithms) to
link algorithms and data structures. The traversal strategies are used
to generate all the iterators needed for the concrete data structure.

Adaptive programs have interface class graphs
in their interface (formal parameters)
and class graphs serve as actual parameters.
We write strategies to adapt actual parameters to formal parameters.

Some history to the paper: APPCs are a significant improvement to adaptive methods that are documented in http://www.ccs.neu.edu/research/demeter/DemeterJava/use/latest-demjava/CHANGES