Download presentation
Presentation is loading. Please wait.
Published byLucas Evans Modified over 9 years ago
1
OOSC - JMSAssert
2
Design By Contract A powerful technique for writing reliable software. Specifying the software purpose with the implementation. Key elements: Invariant Preconditions Postconditions
3
Design By Contract Precondition – The constraints under which the routine will function properly. Postconditions – The state of the class after the routine execution The Contract: If you call routine R() with the preconditions satisfied, R() will return satisfying the postconditions. Invariant – Always holds
4
When are condition checked?
5
JMS Syntax - Invariant Invariant - @inv May access all class members or its direct/indirect bases, including private members May appear in any JavaDoc comment Preferable in the class comment
6
JMS Syntax - Preconditions Precondition - @pre JavaDoc preceding the respective method May reference class members and arguments Multiple @pre markers are conjugated (AND)
7
JMS Syntax - Postconditions Postconditions - @post JavaDoc preceding the respective method May use $prev(expression) to access the value at the method entry. May use $ret to denote method’s return value Multiple @post markers are conjugated (AND)
8
Example /** * @pre !isEmpty() * @post (top == $prev(top- 1)) * @post $ret == elems[top] * @post !isFull */ public synchronized Object pop() { return elems[--top]; } Precondition Postconditions
9
JMS Syntax - General Order has no meaning @macro – for complicated conditions Recursion – as expected, on every call Inner classes can access outer classes’ members Anonymous classes – specify invariant in one of its methods
10
JMSAssert Installation Run the jmssetup-1.02.exe installation file The following lines are added to the path: REM Next two lines are added by JMSAssert SET CLASSPATH=%CLASSPATH%;C:\PROGRA~1\JMSASS~1.0\ bin\mmsclasses.jar; SET PATH=%PATH%;C:\PROGRA~1\JMSASS~1.0\bin; Copy the “ classic ” directory from “..\jdk1.3.1\jre\bin\ ” to the directory: “C:\Program Files\JavaSoft\JRE\1.3\bin\”
11
Setup (cont.) Your JavaSoft directory should look like: If you use jdk 1.2.2, you will have a 1.2 directory
12
JMSAssert – how does it work Annotate source code with assertions Compile your code using javac (as usual) Preprocess the code using jmsassert: creates contract files ( *.jms ) and a Startup.jms file. *.jms files contain java code for the assertions. Execute using: jmsjava Startup to check assertions. jmsjava makes sure method assertions are called before/after the method invocation.
13
JMS Execution “ jmsassert ” – generates help text “ jmsassert –s ” – generate assertions for a class file “ jmsassert –r –s. ” – generate assertions for all class files in the directory and sub-dirs. (use for packages) “ javac ” – compile “ jmsjava Startup ” - execute and check assertions
14
Annotate source with assertions Preprocess to generate assertion files Jmsassert –s Compile Java file javac Execute using jmsjava MyStack.java Startup.jms default_MyStack.jms default_MyStack_StackEnum.jms MyStack.class MyStack$StackEnum.class Jmsjava Startup StackTest.class Stack Demo files Execution process
15
Notes Execute these steps form the command line! Make sure your CLASSPATH environment variable contains the current directory. Add “ CLASSPATH=%CLASSPATH%;.; ” to autoexec.bat.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.