Class-Level Modular Analysis for Object Oriented Languages

In this paper we address the problem of performing a class static analysis in a modular fashion, i.e. by just analyzing the class code and not the full program. In particular we show two things: the first one is how starting from a class C we can derive an approximation Ca to be used either as a class documentation or as a tester for a client using C; the second one is how to discover, in a fully automatic way, a class invariant. Two methods for class invariant computation are presented, proved correct and their usage is discussed.

[1]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[2]  Patrick Cousot,et al.  Relational Abstract Interpretation of Higher Order Functional Programs (extended abstract) , 1991, JTASPEFT/WSA.

[3]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[4]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[5]  Gordon Plotkin,et al.  Semantics of Data Types , 1984, Lecture Notes in Computer Science.

[6]  Martin C. Rinard,et al.  Write barrier removal by static analysis , 2002, SIGP.

[7]  K. Rustan M. Leino,et al.  Extended Static Checking: A Ten-Year Perspective , 2001, Informatics.

[8]  Aneesh Aggarwal,et al.  Related field analysis , 2001, PLDI '01.

[9]  Laurent Mauborgne Abstract Interpretation Using Typed Decision Graphs , 1998, Sci. Comput. Program..

[10]  Michael D. Ernst,et al.  Dynamically discovering likely program invariants , 2000 .

[11]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

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

[13]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[14]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

[15]  Sarfraz Khurshid,et al.  An analyzable annotation language , 2002, OOPSLA '02.

[16]  Christian W. Probst,et al.  Modular Control Flow Analysis for Libraries , 2002, SAS.

[17]  Patrick Cousot,et al.  Modular Static Program Analysis , 2002, CC.

[18]  Barbara G. Ryder,et al.  Relevant context inference , 1999, POPL '99.

[19]  Bart Jacobs,et al.  A case study in class library verification: Java’s vector class , 1999, International Journal on Software Tools for Technology Transfer.

[20]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and Its Correctness , 1994, Inf. Comput..

[21]  Patrick Cousot,et al.  Systematic design of program transformation frameworks by abstract interpretation , 2002, POPL '02.

[22]  Fausto Spoto,et al.  Class Analysis of Object-Oriented Programs through Abstract Interpretation , 2001, FoSSaCS.

[23]  David J. DeWitt,et al.  The Object-Oriented Database System Manifesto , 1994, Building an Object-Oriented Database System, The Story of O2.

[24]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[25]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[26]  Deepak Goyal,et al.  Deriving specialized program analyses for certifying component-client conformance , 2002, PLDI '02.

[27]  Agostino Cortesi,et al.  Distinctness and Sharing Domains for Static Analysis of Java Programs , 2001, ECOOP.

[28]  Maria Handjieva,et al.  Refining Static Analyses by Trace-Based Partitioning Using Control Flow , 1998, SAS.

[29]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[30]  Serge Demeyer,et al.  Object-Oriented Technology ECOOP’99 Workshop Reader , 1999, Lecture Notes in Computer Science.