Patterns for ADT optimisation

Operations on abstract data types can be classified as either queries or updates --- those that either query the current state, or update it. Modern object-oriented programming languages require classes/interfaces to support a predefined set of such operations. This presents a challenge for software designers, since a fixed interface can severely restrict the opportunities for optimisation. In this paper, we present two common patterns --- Specific Query Optimisation and Generalised Query Optimisation --- for optimising such operations. The first requires specific knowledge of which operation to optimise beforehand, whilst the latter provides more leeway in this regard. These patterns are commonly occurring in software, and we find numerous instances of them within the Java standard libraries.

[1]  K. Deck,et al.  Java Collection Framework , 2010 .

[2]  James Noble,et al.  Caching and incrementalisation in the java query language , 2008, OOPSLA.

[3]  J. Paul Gibson,et al.  RoboCode & problem-based learning: a non-prescriptive approach to teaching programming , 2006, ITICSE '06.

[4]  James Noble,et al.  Relationship aspects , 2006, AOSD.

[5]  James Noble,et al.  Relationship Aspect Patterns , 2006, EuroPLoP.

[6]  Yanhong A. Liu,et al.  Incrementalization across object abstraction , 2005, OOPSLA '05.

[7]  Sung-Bae Cho,et al.  Evolution of emergent behaviors for shooting game characters in Robocode , 2004, Proceedings of the 2004 Congress on Evolutionary Computation (IEEE Cat. No.04TH8753).

[8]  Ken Hartness Robocode: using games to teach artificial intelligence , 2004 .

[9]  Jeremy G. Siek,et al.  The Boost Graph Library - User Guide and Reference Manual , 2001, C++ in-depth series.

[10]  Joshua J. Bloch Effective Java : programming language guide , 2001 .

[11]  Michael J. Vilot,et al.  Standard template library , 1996 .

[12]  William R. Cook,et al.  Object-Oriented Programming Versus Abstract Data Types , 1990, REX Workshop.

[13]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[14]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1976, Software Pioneers.

[15]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974, SIGPLAN Symposium on Very High Level Languages.

[16]  Edsger W. Dijkstra,et al.  The humble programmer , 1972, CACM.

[17]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.