Safely creating correct subclasses without seeing superclass code

A major problem for object-oriented frameworks and class libraries is how to provide enough information about an extensible superclass so that programmers can safely create new subclasses without studying superclass code. The goal of my work is to determine what information is needed so library providers do not have to give away the code of library superclasses. A closely related goal is to provide guidelines that simplify reasoning about classes that inherit from such frameworks and class libraries. The long-term goal of my research is to develop tool support to automatically generate some of the necessary documentation and to assist programmers in reasoning about how to create correct subclasses.

[1]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[2]  Arun Raghavan,et al.  Design of a JML Documentation Generator , 2000 .

[3]  Gregor Kiczales,et al.  Issues in the Design and Documentation of Class Libraries , 1992, OOPSLA.

[4]  Pierre America,et al.  Designing an Object-Oriented Programming Language with Behavioural Subtyping , 1990, REX Workshop.

[5]  Arnd Poetzsch-Heffter,et al.  Modular specification and verification techniques for object-oriented software components , 2000 .

[6]  Gary T. Leavens,et al.  Forcing behavioral subtyping through specification inheritance , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[7]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[8]  Stephen H. Edwards Representation Inheritance: A Safe Form of "White Box'' Code Inheritance , 1997, IEEE Trans. Software Eng..

[9]  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.

[10]  John Lamping,et al.  Typing the specialization interface , 1993, OOPSLA '93.

[11]  John V. Guttag,et al.  Modularity in the Presence of Subclassing , 1996 .

[12]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[13]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[14]  Eric C. R. Hehner A Practical Theory of Programming , 1993, Texts and Monographs in Computer Science.

[15]  K. Rustan M. Leino,et al.  Data groups: specifying the modification of extended state , 1998, OOPSLA '98.

[16]  Gail E. Kaiser,et al.  Adequate testing and object-oriented programming , 1990 .

[17]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[18]  Yonghao Chen,et al.  A semantic foundation for specification matching , 2000 .

[19]  Stephen J. Garland,et al.  Larch: Languages and Tools for Formal Specification , 1993, Texts and Monographs in Computer Science.

[20]  Jeannette M. Wing,et al.  Specifications and their use in defining subtypes , 1993, OOPSLA '93.

[21]  Raymie Stata,et al.  Modular reasoning in the presence of subclassing , 1995, OOPSLA.

[22]  K. R Leino,et al.  Towards Reliable Modular Programs , 1995 .

[23]  Susan Stepney,et al.  Object Orientation in Z , 1992, Workshops in Computing.

[24]  Kim Mens,et al.  Vrije Universiteit Brussel Faculteit Wetenschappen Reuse Contracts: Managing the Evolution of Reusable Assets Reuse Contracts: Managing the Evolution of Reusable Assets , 2022 .

[25]  Gary T. Leavens,et al.  Safely creating correct subclasses without seeing superclass code , 2000, OOPSLA.

[26]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[27]  Albert L. Baker,et al.  JML: A Notation for Detailed Design , 1999, Behavioral Specifications of Businesses and Systems.

[28]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

[29]  Ralph-Johan Back,et al.  Refinement Calculus: A Systematic Introduction , 1998 .

[30]  Carroll Morgan,et al.  Data Refinement of Predicate Transformers , 1991, Theor. Comput. Sci..

[31]  Emil Sekerinski,et al.  A Study of The Fragile Base Class Problem , 1998, ECOOP.