Structuring data via behavioural synthesis

This thesis furthers work in the dynamic analysis of programs by examining how to derive data structure definitions from the behavioural aspects of programs. We refer to this technique as behavioural synthesis. In particular we first present a general data typing mechanism, called a dynamic abstract data type (DADT), whose instances act as proxies for other data types in a computation. Each instance of a DADT has the ability to reconfigure its internal representation and detect the context in which it is used. This is followed by an example of a DADT that represents the union of other abstract data types whose interfaces are not necessarily disjoint; techniques for specializing their use in a program are also demonstrated. The specializations are realized as code in the same language as the program, promoting program evolution. Furthermore, the code generation is based on source code locations, does not require explicit annotations and is performed interactively. Finally, we show a method of deriving the composition and relationship of classes through augmentation of a language runtime. The approach permits the use of objects without class definitions. Behavioural synthesis is presented as a design exploration aid to support the notion of using a typical programming language as a specification language and may be viewed as extending the duality between program and data to a duality between program structure and data structure.

[1]  James R. Low Automatic data structure selection: an example and overview , 1978, CACM.

[2]  Philip Wadler,et al.  Views: a way for pattern matching to cohabit with data abstraction , 1987, POPL '87.

[3]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[4]  John Stanik A Conversation with Jeff Bonwick and Bill Moore , 2007, QUEUE.

[5]  Teng-Wen Chang,et al.  Typed feature structures and design space exploration , 1999, Artif. Intell. Eng. Des. Anal. Manuf..

[6]  Cordelia V. Hall Using Hindley-Milner type inference to optimise list representation , 1994, LFP '94.

[7]  Sushil Jajodia,et al.  An adaptive data replication algorithm , 1997, TODS.

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

[9]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[10]  Robert Glück,et al.  Generative Programming and Active Libraries , 1998, Generic Programming.

[11]  Carl Keane,et al.  Don't Ask, Don't Tell , 2008 .

[12]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[13]  Luciano Lavagno,et al.  EDA for IC System Design, Verification, and Testing , 2006 .

[14]  Robert Hirschfeld,et al.  Language constructs for context-oriented programming: an overview of ContextL , 2005, DLS '05.

[15]  Micha Sharir,et al.  Automatic data structure selection in SETL , 1979, POPL.

[16]  Shahram Ghandeharizadeh,et al.  An On-Line Algorithm to Optimize File Layout in a Dynamic Environment , 1996, Inf. Process. Lett..

[17]  Lila Kari,et al.  Sticky-free and overhang-free DNA languages , 2003, Acta Informatica.

[18]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[19]  Enn Tyugu,et al.  The structural synthesis of programs , 1979, Algorithms in Modern Mathematics and Computer Science.

[20]  W. Armstrong,et al.  Dynamic Algorithm Selection Using Reinforcement Learning , 2006, 2006 International Workshop on Integrating AI and Data Mining.

[21]  S. Watt,et al.  Adaptive libraries and interactive code generation for Common Lisp , 2008 .

[22]  Gail E. Kaiser,et al.  Dynamic reconfiguration in an object-based programming language with distributed shared data , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[23]  Karl J. Lieberherr,et al.  From objects to classes: algorithms for optimal object-oriented design , 1991, Softw. Eng. J..

[24]  Nicolás Marín,et al.  Lazy types: automating dynamic strategy selection , 2005, IEEE Software.

[25]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[26]  Urs Hölzle,et al.  Optimizing dynamically-dispatched calls with run-time type feedback , 1994, PLDI '94.

[27]  Axel van Lamsweerde,et al.  Formal specification: a roadmap , 2000, ICSE '00.

[28]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[29]  Paul Rovner,et al.  Techniques for the automatic selection of data structures , 1976, POPL.

[30]  Stephen McCamant,et al.  Dynamic inference of abstract types , 2006, ISSTA '06.

[31]  Enn Tyugu,et al.  Applications of Structural Synthesis of Programs , 1999, World Congress on Formal Methods.

[32]  Richard C. Waters The Programmer's Apprentice: A Session with KBEmacs , 1985, IEEE Transactions on Software Engineering.

[33]  Gregor Kiczales,et al.  Expressive programs through presentation extension , 2007, AOSD.

[34]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[35]  Guy E. Blelloch,et al.  An experimental analysis of self-adjusting computation , 2006, PLDI '06.

[36]  WimmerChristian,et al.  Design of the Java HotSpot client compiler for Java 6 , 2008 .

[37]  Norbert E. Fuchs Specifications are (preferably) executable , 1992, Softw. Eng. J..

[38]  Larry Masinter,et al.  The Interlisp Programming Environment , 1981, Computer.

[39]  Gregor Kiczales,et al.  Beyond the Black Box: Open Implementation , 1996, IEEE Softw..

[40]  Julian Richardson Automating changes of data type in functional programs , 1995, Proceedings 1995 10th Knowledge-Based Software Engineering Conference.

[41]  Patrick Henry Winston,et al.  Learning structural descriptions from examples , 1970 .

[42]  D. B. Johnston An expert system for selecting and tailoring abstract data type implementations , 1990 .

[43]  Alistair Cockburn,et al.  Agile Software Development: The Cooperative Game (2nd Edition) (Agile Software Development Series) , 2006 .

[44]  Taylor L. Booth,et al.  Performance Abstract Data Types as a Tool in Software Performance Analysis and Design , 1980, IEEE Transactions on Software Engineering.

[45]  Jr. Nicholas John Carriero Implementation of tuple space machines , 1987 .

[46]  David P. Dobkin,et al.  Active data structures , 1981, ICSE '81.

[47]  Ryszard S. Michalski,et al.  INDUCE.3: A Program for Learning Structural Descriptions from Examples , 1983 .

[48]  Richard R. Muntz,et al.  Dynamic query re-optimization , 1999, Proceedings. Eleventh International Conference on Scientific and Statistical Database Management.

[49]  Donald E. Knuth The art of computer programming: fundamental algorithms , 1969 .

[50]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[51]  T.M. Madhyastha,et al.  Intelligent, adaptive file system policy selection , 1996, Proceedings of 6th Symposium on the Frontiers of Massively Parallel Computation (Frontiers '96).

[52]  Donald E. Knuth,et al.  The art of computer programming: V.1.: Fundamental algorithms , 1997 .

[53]  Hanspeter Mössenböck,et al.  Design of the Java HotSpot#8482; client compiler for Java 6 , 2008, TACO.

[54]  Christine Hofmeister,et al.  Flexible incremental development by integrating specification and code , 2004, IASTED Conf. on Software Engineering.

[55]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[56]  Daniel Gajski,et al.  Introduction to high-level synthesis , 1994, IEEE Design & Test of Computers.

[57]  Ian Horswill,et al.  Meta-compilation of language abstractions , 2006 .

[58]  Kent M. Pitman EQUAL rights—and wrongs—in Lisp , 1993, LIPO.

[59]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[60]  Robert O'Callahan,et al.  Lackwit: A Program Understanding Tool Based on Type Inference , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[61]  Daniel M. Yellin,et al.  Competitive algorithms for the dynamic selection of component implementations , 2003, IBM Syst. J..

[62]  John Aycock,et al.  A brief history of just-in-time , 2003, CSUR.

[63]  Howard E. Shrobe,et al.  Initial Report on a Lisp Programmer's Apprentice , 1978, IEEE Transactions on Software Engineering.

[64]  Daniel Gajski,et al.  An Introduction to High-Level Synthesis , 2009, IEEE Design & Test of Computers.

[65]  Todd L. Veldhuizen,et al.  Active libraries and universal languages , 2004 .

[66]  Richard P. Gabriel,et al.  Conscientious software , 2006, OOPSLA '06.

[67]  Abhinandan Das,et al.  Automating layout of relational databases , 2003, Proceedings 19th International Conference on Data Engineering (Cat. No.03CH37405).

[68]  Aart J. C. Bik,et al.  On Automatic Data Structure Selection and Code Generation for Sparse Computations , 1993, LCPC.

[69]  Micha Sharir,et al.  An Automatic Technique for Selection of Data Representations in SETL Programs , 1981, TOPL.

[70]  Edmond Schonberg,et al.  Programming by Refinement, as Exemplified by the SETL Representation Sublanguage , 1979, TOPL.

[71]  Jacob T. Schwartz,et al.  Automatic data structure choice in a language of very high level , 1975, CACM.

[72]  Stanley J. Rosenschein,et al.  Selection of representations for data structures , 1977, Artificial Intelligence and Programming Languages.

[73]  L. Kari,et al.  Computing the Hamming Distance of a Regular Language in Quadratic Time , 2004 .

[74]  Urs Hölzle,et al.  Type feedback vs. concrete type inference: a comparison of optimization techniques for object-oriented languages , 1995, OOPSLA.

[75]  Joep L. W. Kessels On-the-fly optimization of data structures , 1983, CACM.

[76]  John R. White,et al.  On the Multiple Implementation of Abstract Data Types Within a Computation , 1983, IEEE Transactions on Software Engineering.

[77]  Prateek Mishra,et al.  Declaration-free type checking , 1985, POPL.

[78]  Niklaus Wirth,et al.  Algorithms + Data Structures = Programs , 1976 .

[79]  David R. Barstow,et al.  The Refinement Paradigm: The Interaction of Coding and Efficiency Knowledge in Program Synthesis , 1981, IEEE Transactions on Software Engineering.

[80]  I. N. Skopin,et al.  Multiple data structuring , 2006, Programming and Computer Software.

[81]  J. D. C. Richardson The use of proof plans for transformation of functional programs by changes of data type , 1995 .

[82]  Leon J. Osterweil,et al.  Software processes are software too , 1987, ISPW.

[83]  Michael Franz,et al.  Continuous program optimization: A case study , 2003, TOPL.

[84]  Masami Shishibori,et al.  An automatic selection method of key search algorithms based on expert knowledge bases , 1994, SIGF.

[85]  Andry Rakotonirainy,et al.  Context-oriented programming , 2003, MobiDe '03.

[86]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[87]  Edmund M. Clarke,et al.  Formal Methods: State of the Art and Future Directions Working Group Members , 1996 .

[88]  William G. Griswold,et al.  Dynamically Discovering Program Invariants Involving Collections , 2000 .

[89]  John Peterson Untagged data in tagged environments: choosing optimal representations at compile time , 1989, FPCA.

[90]  Helen Petrie,et al.  No Going Back: An Interactive Visualization Application for Trailblazing on the Web , 2008, 2008 12th International Conference Information Visualisation.

[91]  Allen Goldberg,et al.  DTRE - A Semi-Automatic Transformation System , 1991 .

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