Semantics-Based Composition of Class Hierarchies

Class hierarchy composition aims at constructing software systems by composing a set of class hierarchies into an executable system. Current composition algorithms cannot provide semantic guarantees. We present a composition algorithm, together with an interference criterion and its correctness proof, which guarantees that behavior of the original hierarchies is preserved for interference-free compositions. In case of interference, an impact analysis can determine the consequences of integration. The method is based on existing program analysis technology and is illustrated by various examples.

[1]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[2]  Tobias Nipkow,et al.  Javalight is type-safe—definitely , 1998, POPL '98.

[3]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[4]  David W. Binkley,et al.  Program integration for languages with procedure calls , 1995, TSEM.

[5]  Donglin Liang,et al.  Extending and evaluating flow-insenstitive and context-insensitive points-to analyses for Java , 2001, PASTE '01.

[6]  Martin P. Robillard,et al.  Does aspect-oriented programming work? , 2001, CACM.

[7]  Frank Tip,et al.  Change impact analysis for object-oriented programs , 2001, PASTE '01.

[8]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[9]  Mitchell Wand A Semantics for Advice and Dynamic Join Points in Aspect-Oriented Programming , 2001, SAIG.

[10]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[11]  Frank Tip,et al.  Understanding class hierarchies using concept analysis , 2000, TOPL.

[12]  Jeff Offutt,et al.  Change impact analysis of object-oriented software , 1998 .

[13]  HeintzeNevin,et al.  Ultra-fast aliasing analysis using CLA , 2001 .

[14]  Brian A. Davey,et al.  An Introduction to Lattices and Order , 1989 .

[15]  Li Li,et al.  Algorithmic analysis of the impact of changes to object-oriented software , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[16]  Oscar Nierstrasz,et al.  Object-oriented software composition , 1995 .

[17]  Barbara G. Ryder,et al.  Data-flow analysis of program fragments , 1999, ESEC/FSE-7.

[18]  Erik Ernst,et al.  Propagating Class and Method Combination , 1999, ECOOP.

[19]  Doo-Hwan Bae,et al.  Change impact analysis for a class hierarchy , 1998, Proceedings 1998 Asia Pacific Software Engineering Conference (Cat. No.98EX240).

[20]  Barbara G. Ryder,et al.  Points-to analysis for Java using annotated constraints , 2001, OOPSLA '01.

[21]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[22]  Olivier Tardieu,et al.  Ultra-fast aliasing analysis using CLA: a million lines of C code in a second , 2001, PLDI '01.

[23]  Frank Tip,et al.  Reengineering class hierarchies using concept analysis , 1998, SIGSOFT '98/FSE-6.

[24]  Jens Palsberg,et al.  Scalable propagation-based call graph construction algorithms , 2000, OOPSLA '00.

[25]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[26]  Krishnaprasad Thirunarayan,et al.  Simulating multiple inheritance and generics in Java , 1999, Comput. Lang..