JRipples is a change impact analysis tool for the Java programming language.  It helps a developer calculate the impact of software change.  It is an open source Eclipse plug-in.  The tool not only give relevant program analysis, but it also organizes the steps of change propagation.

When a change is made to software, the change will quite often have an undesirable or unintended impact on the software as a whole.  During a change, JRipples can be run to assist the developer in identifying the impact of the change.  This tool analyzes a program and marks classes which need attention from the developer.  The developer will then visit each marked class and decide if the impact requires refactoring or not.  This frees the developer from trivial duties, so they can be more effective.

History 

JRipples was developed by Maksym Petrenko starting 2005.  Petrenko was a member of SEVERE group of the Wayne State University Department of Computer Science in Detroit, Michigan.  The research and implementation was done during his doctoral studies.  It is maintained by Laurentiu Radu Vanciu

Simple example 

JRipples integrates into the Eclipse menu toolbar.  To start an analysis the user selects JRipples -> Start Analysis. 

This will provide a popup window for the developer to select a project.  The tool will then analyze the project and present a menu with classes to be inspected.  After the analysis a JRipples Hierarchical View will appear.  For this example there is only a single class "Main" to be analyzed, which is mark "next" in green.

After the developer visits the Main class, three options are presented by right clicking on the green "Next".  They are "Located", "Propagating" and "Unchanged".  For this example we shall assume the change propagated to other classes.

After selecting "Propagating" from the right click menu, JRipples identified four more classes which the change may have propagated to, and marked them "Next".  The developer will then visit each of those classes to determine if the change has propagated into those classes or not.  If the change does not require the class to be modified the class will be marked "Unchanged" and the developer will move on to another class marked "Next".

After the developer has iterated through all marked classes and identified if change is necessary, they are then able to organize their actions to most effectively complete the change request.

Additional features 

JRipples includes two features to make a developer's search more direct: Lucene and GREP analysis.  To use these tools, the developer only has to right-click in the JRipples Hierarchical View and select either tool in the pop-up menu.  

The GREP tool may be used like a customary GREP tool, however JRipples will rank each class based on the number of hits from the GREP.  This information should help developers; they are able to start with the most or fewest hits, depending on their strategy.

The Lucene tool is more intelligent.  The first time a developer uses the Lucene tool, the project will need to be indexed, which may take a significant amount of time if the project is large.  However, after indexing the tool may be used multiple times.  After indexing, the tool works in a similar way: a word or string of text is entered into the search pop-up and the tool searches.  However, now the tool ranks each class not just by how many times the search query appears in the class, but how it is used.  To start with, it assumes that if a query is only used once in a class it must be important.  However, it also takes other factors into account.  The end result is that the classes are given a decimal number rank indicating the most likely to contain the concept.

Bugs 

Version 3.2.0 has a known bug, it has a fatal error when run on Eclipse IDE for Java EE for Web Developers, Build id: 20090920-1017.  It will however, work with the standard Java Developers version along with many older versions of Eclipse.

References

External links 
 JRipples Homepage

Java development tools
Extreme programming
Free software programmed in Java (programming language)
Cross-platform software