Crisp: a debugging tool for Java programs

Crisp is a tool (i.e., an Eclipse plug-in) for constructing intermediate versions of a Java program that is being edited in an IDE such as Eclipse. After a long editing session, a programmer usually would run regression tests to make sure she has not invalidated previously checked functionality. If a test fails unexpectedly, Crisp uses input from Chianti, a tool for semantic change impact analysis, to allow the programmer to select parts of the edit that affected the failing test and to add them to the original program, creating an intermediate version guaranteed to compile. Then the programmer can re-execute the test in order to locate the exact reasons for the failure by concentrating on those affecting changes that were applied. Using Crisp, a programmer can iteratively select, apply, and undo individual (or sets of) affecting changes and, thus effectively find a small set of failure-inducing changes.

[1]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[2]  Interprocedural optimization: eliminating unnecessary recompilation , 1986, SIGPLAN '86.

[3]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[4]  Ken Kennedy,et al.  Efficient recompilation of module interfaces in a software development environment , 1987, SDE 2.

[5]  Rolf Adams,et al.  The cost of selective recompilation and environment processing , 1994, TSEM.

[6]  David Grove,et al.  A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies , 1995, 1995 17th International Conference on Software Engineering.

[7]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[8]  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).

[9]  Frank Tip,et al.  Change impact analysis for object-oriented programs , 2001, PASTE '01.

[10]  Mikhail Dmitriev Language-specific make technology for the Java programming language , 2002, OOPSLA '02.

[11]  Frank Tip,et al.  Chianti: A Prototype Change Impact Analysis Tool for Java , 2003 .

[12]  Frank Tip,et al.  Chianti: a tool for change impact analysis of java programs , 2004, OOPSLA.

[13]  Frank Tip,et al.  Change classification and its applications to program development and testing , 2005 .