|M.Sc Student||Dekel Uri|
|Subject||Revealing JAVA Class Structure with Concept Lattices|
|Department||Department of Computer Science||Supervisor||Professor Joseph Gil|
This work suggests, for the first time, that the technique of Formal Concept Analysis (FCA) be applied to individual JAVA classes, in an attempt to automatically classify their features, with a goal of facilitating their reuse and revealing their internal structure. FCA is a mathematical classification technique, which was previously applied to different problems in software research. Each formal concept in this work represents a set of methods that use the same set of fields, and the concept lattice visually presents the containment relationship between the sets of different concepts. We argue that the usage patterns of fields by methods are fundamental to understanding the functionality and the implementation of a class, and can serve as a heuristic for classifying similar methods and revealing inconsistencies.
After the lattice is drawn using information elicited from a Java class file, the user can employ a variety of tools to abstract the class information or focus on interesting details. These tools are discussed as part of a semi-structured 3-stage methodology of applying FCA to the exploration of a Java class: learning its interface, examining the implementation, and inspecting its code.
Two real-life case studies demonstrate the methodology and the various views of the concept lattice. Initial evidence to the efficacy of the methodology is that new problems were revealed for these classes. Preliminary user studies show that even novice developers with no previous familiarity with the technique were able to use it following a very short tutorial.