Index of /Software/Bandera/bandera

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]Bandera.class2012-11-01 12:13 4.8K 
[TXT]Bandera.java2012-11-01 12:13 6.5K 
[   ]COPYING2012-11-01 12:13 14K 
[DIR]ca/2012-11-01 12:13 -  
[DIR]doc/2012-11-01 12:13 -  
[DIR]edu/2012-11-01 12:13 -  
[TXT]filelist.txt2012-11-01 12:13 365K 
[DIR]java_cup/2012-11-01 12:13 -  

Bandera Readme

Bandera


A toolset for model checking Java programs





Bandera has been developed as a collection of tool components for exploring approaches to model checking correctness properties of Java programs. For the purpose of assessing the effectiveness of different approaches the components have been integrated into what we hope is a useful tool for specifying a useful class of correctness properties and verifying/validating those properties on associated implementations.

Bandera Release 0.1 has quite a few known limitations, which we outline below, and we're sure it has some unknown limitations (i.e., bugs) as well.

This file contains some notes about installing and running Bandera, as well as a description of the limitations of the toolset. The directory doc directory contains a detailed tutorial/manual; doc/examples contains examples associated with the tutorial, both can be downloaded separately.

Bandera is available for download at: http://www.cis.ksu.edu/santos/bandera


Please send email about any questions/bug fixes/contributions etc. about Bandera to bandera-support@cis.ksu.edu






TABLE OF CONTENTS:

  1. General release information
  2. Installation notes
  3. Running the tool
  4. Pointers to related resources
  5. Known limitations

1. RELEASE INFORMATION:

Release 0.1 is the first public Bandera. We plan on making periodic subsequent bug-fix releases as time permits and to make major releases when significant new functionality has been added (see the project web page for release plans).



2. INSTALLATION NOTES:

2a. Machine requirements:

2b. Supported operating systems:

2c) Other software that is needed:

We are aware that Java programs can be run on any platform with Java compiler. Although we endeavor to make Bandera run in all Java-supporting platforms, we have not yet tested it in platforms other than those mentioned above. We currently use Sun's standard JDK version 1.3 for Bandera development. We are aware that there are many Java compilers. Even if it claims compatibility with the standard JDK, we are not certain that Bandera would compile or run. Earlier versions of standard JDK are also not recommended.

Bandera supports JPF, Spin, dSpin, and NuSMV for this release. However none of these checkers are bundled with the distribution --- you need to separately install those model checkers if you intend to use Bandera with them. Spin can be obtained here. For Spin, we expect that the main model checker filename is spin. For SMV, it should be NuSMV, which is obtainable here For DSpin, it should be dspin, which is from here. Please make sure that all of these are installed in the directories mentioned in your path. To obtain JPF, visit here. To use JPF with Bandera, simply put it with all its supporting packages into the same directory with Bandera.

Make sure that you have your C compiler and C preprocessor properly installed and their directory is mentioned in the path. This is necessary because the Spin model checker produces C files that have to be preprocessed and compiled. We assume the C compiler is GNU's gcc and that the C preprocessor is GNU's cpp. The gcc and cpp versions are not specific, but our testing shows that version 2.91 or above is fine. For the Windows environment, DJGPP's gcc has worked for us without problems.

Bandera is built on top of the SOOT framework. Since we use an older version of SOOT, we include that version in our release. We will be synchronizing Bandera with the latest SOOT release later this year.

2d) Installing Bandera

Bandera is distributed in jar format. It should be installed into a directory with the command: jar xvf bandera-x.y.jar, where "x.y" is the version number. For example: jar xvf bandera-0.1.jar The following descriptions assume that you will have unpacked the distribution in a directory named BANDERA.

  1. ... on UNIX:

    Assuming that you have the Java SDK installed in SDK set the CLASSPATH as follows and export it:

       CLASSPATH=BANDERA:SDK/jre/lib/rt.jar:SDK/lib/tools.jar:$CLASSPATH
    

    You need to have the current directory in your PATH, e.g., PATH=.: ...

  2. ... on Windows 95/98/Me:

    Add the following line to your AUTOEXEC.BAT file:

       SET CLASSPATH=C:\BANDERA;C:\JDK1.3\JRE\LIB\rt.jar;C:\JDK1.3\LIB\tools.jar;%CLASSPATH%
    

    This assumes that you unjarred Bandera in C:\ drive and that the JDK is installed in C:\JDK1.3. Don't forget to reboot your machine before using Bandera. We assume your familiarity of Windows operating system when installing Bandera. If you are not sure, please consult your system administrator.

  3. ... on Windows NT 4.0 or Windows 2000:

    Set the classpath as follows:

    Right-click "My Computer" icon then choose "Properties". Open the "Environment" tab. In "System Variables" box, look for "ClassPath" variable. Highlight it. At the bottom of the dialog box, there is a "Value" input text box. Add the following text in front of the text box:

       C:\BANDERA;C:\JDK1.3\jre\lib\rt.jar;C:\JDK1.3\LIB\tools.jar;
    

    If you do not have ClassPath variable in your system, you can add it by typing ClassPath in the "Variable" input text box at the bottom and type the above text in "Value" input text box. Please delete the last semicolon.

    This assumes that you unjarred Bandera in C:\ and the JDK is installed in C:\JDK1.3. We also assume your familiarity of Windows operating system when installing Bandera. If you are not sure, please consult your system administrator.

2e) Package Contents:

Upon unpacking, Bandera should create the following files and directories:

Bandera.javaMain program file
Bandera.classMain program class file
COPYINGCopyright notice
README.htmlRelease information
filelist.txtComplete list of distribution files
caMcGill University Soot Framework
docDocuments, tutorials and examples (downloaded separately)
eduAll programs reside here
java_cupNecessary files for parsing

For the complete list of files, please consult filelist.txt file.

2f) Compiling:

Bandera is distributed along with the class files. So, you don't have to recompile it. However, you could compile it by invoking Java compiler:

  javac Bandera.java

after you have set the Classpath as mentioned previously.

You should invoke the compiler in Bandera's installed directory if you want to recompile it. Please note that recompiling is absolutely not recommended for the current release.



3) RUNNING THE TOOL:

After setting up the tool and classpaths as described above. You can invoke Bandera on UNIX as:

  java Bandera

For Windows, you can open your Command Prompt or MS-DOS Prompt window, and invoke:

  java Bandera

Upon the first launch, Bandera will initialize itself. This involves in creating a .bandera directory which will reside in user's "home directory". The table below describes the location of the home directory depending on the operating system.

Operating SystemLocation
UNIX variant~/.bandera
Windows 95/98/MeC:\WINDOWS\Profiles\(username)\.bandera
Windows NT 4.0C:\WINNT\Profiles\(username)\.bandera
Windows 2000C:\Documents and Settings\(username)\.bandera

We assume that for Windows environment, the Windows is installed in C:. You should replace the "(username)" with the appropriate user login name. In some variants of Windows 95/98, the directory location is placed in C:\WINDOWS\ directory.

Inside the .bandera directory, we have a preferences file .banderarc, an abstraction file Abstractions, and three directories integral, real, and log.

The preferences file is meant to store user preferences, e.g. directory locations and colors. Later versions of the tool will add more functionality. We currently have no GUI to modify these values. You can hack the color values if you wish, but manually modifying the other entries of this file is highly discouraged.

The Abstractions file is used by Abstraction Manager to store user's custom abstraction library. The directories integral and real are used to categorize these files. However, this functionality is not fully supported in the current version of Bandera.

The log subdirectory is used to store all log files upon Bandera's failure. Please send all these logs along with their related files when you submit a bug report. Whenever you need a spare disk space, you can safely delete these log files.

If you experience some problems in running Bandera, you can try to delete the .bandera directory and re-run Bandera. This is usually due to the growing requirements for Bandera setup settings.

See the tutorial for a detailed walk through of some of the tools capabilities.



4) POINTERS TO ONLINE RESOURCES:



5) KNOWN LIMITATIONS:

Bandera consists of the following components:

  1. Java to Jimple compiler (JJJC)
  2. Bandera specification language (BSL) compiler
  3. Program slicer
  4. Abstraction library manager
  5. Abstraction type inference engine
  6. Source-level abstraction (SLABS) compiler
  7. Jimple to Java decompiler
  8. Bandera intermediate representation (BIR) constructor (BIRC)
  9. BIR to Promela translator
  10. Prototype BIR to SMV translator
  11. Prototype BIR to DSpin translator

Several of these components (1-5) have GUI interfaces associated with them and the translators (8-11) also interface with a GUI that allows navigation of the source code statements that correspond to a counter-example. These GUI components are collectively refered to as the Bandera User Interface (BUI).

5a) Main Limitations:

A detailed component-by-component listing of the known limitations is given below. Here we outline the main toolset-wide limitations.

To summarize how to navigate the set of limitations to various components here are some guidelines:

  1. If you don't have source ==> Use JPF standalone.
  2. If you have source
    • If you are interested in using SPIN/SMV ==> Use Bandera's translators.
    • If minimal code modifications are a priority ==> Use Bandera & JPF.
    • If you want to check temporal properties ==> Use Bandera & SPIN.


5b) Component Limitations:

Features not supported by JJJC:

Features not supported by BSL compiler:

Abstract Type Inference Limitations:

Slicer limitations:

Abstract Type Inference Limitations:

Abstraction Library and BASL Limitations:

SLABS Limitations:

Decompiler Limitations:

BIRC Limitation:

SPIN Translator Limitations:

SMV Translator Limitations:

BUI Limitations:

Helpful Hints for using the BUI:

Helpful Hints for using the JPF and Bandera:

Helpful Hints for using the JPF and Bandera:


Bandera README ends