Formal Methods in the Software Life Cycle

[ main | cases | smart cards | formal methods | schedule | groups ]

Below some information and pointers about the languages, methods, and tools that you will use in this OOTI course. This should help you get started analyzing your applications.

JML

JML, which stands for Java Modeling Language, is a specification language tailored to Java. JML can be used to specify the detailed design of Java (Card) programs, and to record design decisions that have been taken, by annotating programs with for instance class invariants, preconditions, and postconditions, in the Design-By-Contract style.

We will be using two tools that support JML:

Some pointers to literature about JML and JML-related tools:

Lots more can be found via the JML webpage.

Source code analysers: FindBugs and PMD

(Note that it is not clear if we will have time to look at these in the course.)

Source code analysers, also called program checkers, are tools that automatically enforce coding standards and warn about potential bugs using a technique called static analysis. The checks done by these tools can be for rules in coding guidelines, e.g. that method names should not start with a capital letter, but they also can be much more advanced, e.g. to detect dead code, or suspicious and possibly erroneous uses of == rather than .equals() to compare objects. To get an idea of what program checkers do, see article about the program checker Findbugs at IBM developersWorks.

Examples of source code analysers to try out are Findbugs and PMD.