Ferret: A Tool Supporting Software Exploration

Brian de Alwis, Gail C Murphy

Ferret is a tool aimed to help developers during exploration of software codebases. Ferret provides a new Eclipse view that provides a structured display of information describing how one or more program elements are situated in the context of the system. This context is computed automatically as the program elements are selected in the IDE, and is structured as answers to a set of conceptual queries about those elements.

Ferret's conceptual queries include and build-on the standard queries supported by Eclipse. These conceptual queries include queries such as:

More notable is that Ferret's conceptual queries can make use of different sources of program information, such as the static relations embedded in the source code, the dynamic runtime information recorded in a TPTP trace, and plugin details as defined in plugin.xml and MANIFEST.MF. Thus dynamic runtime information can be used to replace some of the statically-derived relations, transforming the questions above to "Where are objects of this type actually instantiated?" or "Where is this method actually called?"

The conceptual queries are categorized by whether they involve declarations, are about inter-class or intra-class relations, or are hierarchical in nature.

The results of queries may be clustered by their different attributes, as selected by the programmer. For example: the references to a method, which are generally themselves methods, may be clustered into different groups identified by attributes such as their access protection (public, private, package, or default), their containing type, their package, or boolean attributes such as static vs non-static.


B de Alwis, GC Murphy (2008). Answering Conceptual Queries with Ferret. In the Proceedings of the International Conference on Software Engineering (ICSE). Leipzig, Germany. doi:10.1145/1368088.1368092 (pdf)

B de Alwis, GC Murphy (2007). A comparative study of three software exploration tools. In the Proceedings of the International Conference on Program Comprehension (ICPC). Banff, Canada. <doi:10.1109/ICPC.2007.6> (pdf, supporting material)


Ferret has been implemented as an Eclipse plug-in, available using the Eclipse Update Manager. Ferret requires Eclipse Europa (R3.3), and is made available under the Eclipse Public License v1.0. To install, use the following update site:


The Ferret plugins should include their source code. The source is copyright by the University of British Columbia (though I disagree with the legality of UBC's demand of copyright of students source code). The source is also made available under the Eclipse Public License v1.0.

The Ferret documentation ships with the plugin, and is also available online.


Note: You may find references to Ariadne in the Ferret source code. Ferret was formerly named Ariadne, but was renamed so as to not be confused with another Eclipse plug-in called Ariadne.

Brian de Alwis / bsd@cs.ubc.ca