Σοφία: A Java Bytecode Analysis Tool

Analysis of programs forms an important activity in the field of software engineering. It is necessary to help understand code, which facilitates comprehensive testing, maintenance and optimization of code. A tool called Aristotle already exists to assist in the analysis of programs written in C. Σοφία is a system designed to provide similar program analysis capabilities for Java.

The Σοφία tools utilize the Bytecode Engineering Library (BCEL) for manipulating Java class files. Sadly this library has not been updated to be fully Java 7 compliant, so the Σοφία tools are only useful with Java 7 and earlier. As the BCEL library is now supported by Apache Commons, there is reason to expect that Σοφία tool will eventually be updated once needed capabilities have been implemented within BCEL.


User Documentation

This documentation is intended to describe the installation and use of the Σοφία system.

Obtaining and Installing Σοφία

User's Manual

API Documentation

Example applications

The following are example dynamic analysis applications built using the Σοφία framework. We do not package these analyses with Σοφία, but we believe they illustrate the flexibility and capabilities of Σοφία. We are interested in accepting and reporting here other applications built using Σοφία in the future.

(ab)* heuristic pattern miner: A basic implementation of the technique described by Weimer and Necula (paper) for mining simple (ab)* call sequence patterns from program executions. It uses the heuristic that the b events in such patterns are likely to be found in exception handling code.

Propel FSA pattern checker: A small tool that demonstrates using Σοφία to check program executions against a property encoded as a finite state automata (FSA) generated by the Propel tool created at the University of Massachuessetts. This example uses an earlier version of Σοφία (version 2.0).

Publications

Acknowledgments

This material is based upon work supported by the National Science Foundation, originally developed under Grants No 0454203 and 0454348, and under continuing support through CNS-0958346. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.


Page last updated by Wayne Motycka: 10/21/2015