Change and adaptive maintenance detection in Java software systems

Java is a relatively new programming language that is gaining popularity due to its network-centric features and platform independence (Write Once, Run Anywhere). This popularity has caused rapid evolution in the libraries that are available for Java applications. This evolution, in combination with Java's run-time linking, may cause incompatibilities between an application and the library it depends on: an application may execute with a different library version than the one it was compiled for. This paper presents techniques to automatically detect change in a library from its bytecode (binary) representation, and to apply the impact of those changes to any Java application. This paper also includes results of change detection experiments performed on the standard Java library (JDK).

[1]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[2]  Stanley Ian Letovsky,et al.  Plan analysis of programs , 1988 .

[3]  Hugo T. Jankowitz Detecting Plagiarism in Student Pascal Programs , 1988, Comput. J..

[4]  E. Myers,et al.  Approximate matching of regular expressions. , 1989, Bulletin of mathematical biology.

[5]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

[6]  Randy H. Katz,et al.  Toward a unified framework for version modeling in engineering databases , 1990, CSUR.

[7]  Judith E. Grass Cdiff: A Syntax Directed Differencer for C++ Programs , 1992, C++ Conference.

[8]  Aniello Cimitile,et al.  A Logic-Based Approach to Reverse Engineering Tools Production , 1992, IEEE Trans. Software Eng..

[9]  Michael L. Van de Vanter,et al.  The Pan language-based editing system , 1992, TSEM.

[10]  Linda Mary Wills,et al.  Automated program recognition by graph parsing , 1992 .

[11]  Hausi A. Müller,et al.  Understanding software systems using reverse engineering technology perspectives from the Rigi project , 1993, CASCON.

[12]  Atul Prakash,et al.  A Framework for Source Code Search Using Program Patterns , 1994, IEEE Trans. Software Eng..

[13]  A. Mili,et al.  Storing and retrieving software components: a refinement based system , 1994, Proceedings of 16th International Conference on Software Engineering.

[14]  Aniello Cimitile,et al.  Software salvaging based on conditions , 1994, Proceedings 1994 International Conference on Software Maintenance.

[15]  J. Howard Johnson,et al.  Substring matching for clone detection and change tracking , 1994, Proceedings 1994 International Conference on Software Maintenance.

[16]  Roland Mittermeir,et al.  Storing and retrieving software components: a refinement based system , 1994, ICSE '94.

[17]  Brenda S. Baker,et al.  On finding duplication and near-duplication in large software systems , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[18]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[19]  Gerardo Canfora,et al.  An improved algorithm for identifying objects in code , 1996 .

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

[21]  David Notkin,et al.  Lightweight lexical source model extraction , 1996, TSEM.

[22]  Kostas Kontogiannis,et al.  Evaluation experiments on the detection of programming patterns using software metrics , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[23]  Bruce Eckel Thinking in Java , 1998 .