JML. Java Modeling Language
|
|
- Leslie Fields
- 6 years ago
- Views:
Transcription
1 JML Java Modeling Language
2 Overview About the JML Project DBC Design By Contract JML concepts, examples, syntax and capabilities Basics Exceptions Invariants Assertions Quantifiers Other keywords JML hiding Main tools Comprehensive example Summary 2
3 JML Open source Gary T. Leavens s group at the University of Central Florida (formerly Iowa State University Yoonsik Cheon s group at University of Texas at El Paso University College Dublin Many others 3
4 JML Uses As a common language for: Research projects and tools (ESC/JAVA) Several formal verification tools (LOOP, JACK, KRAKATOA, Jive and KeY) In the industry: in financial applications on Java smart cards For verifying some security properties on computer based voting systems 4
5 DBC Design By Contract Each part of a program has a contract with the rest of the program: Requirements What does a method require from it s caller? Assurances What does this method ensure? 5
6 DBC Design By Contract Advantages: Method s responsibilities are given explicitly (depends on how good it is indicated) Forces the programmer to write exactly what the method does and needs (and therefore think things over ) Assigns blame Specifies who s to blame for not keeping the contract 6
7 DBC Design By Contract Coding advantages: Allows avoiding constantly checking validity of arguments as those checks are enforced by the spec JMLc compiles the contract as a part of the program as well as compiling the java class JMLrac runs the compiled program taking into consideration the compiled contracts Gives a specific view of what the code does without revealing it 7
8 Syntax Pre-condition: requires <boolean_expression>; Post-condition: ensures <boolean_expression>; 8
9 JML Syntax Example requires x>=0.0; (x, \result*\result, public static double sqrt(double x) { /* */ 9
10 JML Syntax Example requires x>=0.0; (x, \result*\result, public static double sqrt(double x) { /* */ A static method of class JMLDouble tests whether the relative difference of the first 2 double arguments is within the given epsilon, the third argument. 10
11 JML Syntax Example import org.jmlspecs.models.jmldouble; requires x>=0.0; (x, \result*\result, public static double sqrt(double x) { /* */ 11
12 No space here JML Syntax Example requires x>=0.0; (x, \result*\result, No space here public static double sqrt(double x) { /* */ 12
13 What is missing What if the user can t guarantee to impose the method s requirements? In other words, what if we would like the method to deal with bad input rather then the spec. (which won t always be a part of the running program)? 13
14 Exceptions JML allows the specification of what exceptions a method may throw Done by using JML s signals_only or signals clause Syntax: //@ signals (<exception>) <boolean_expression>; 14
15 Exceptions JML allows the specification of what exceptions a method may throw Done by using JML s signals_only clause Example: //@ signals_only IllegalArgumentException; 15
16 Exceptions JML allows the specification of what exceptions a method may throw Example of using signals : /*@ (x, \result*\result, signals (Exception e) x < 0 (e instanceof public static double sqrt(double x); 16
17 Exceptions signals Allows stating the condition for throwing the exception signals_only Allows specifying a list of thrown exceptions separated by, Post Conditions are discarded when an exception is thrown 17
18 Exceptions Rule out exceptions: signals (Exception) false; Or use: normal_behavior requires Exceptions mentioned in throws clause are allowed be default 18
19 Invariants An invariant is a property that is always true when control is not in object s scope Allows defining acceptable states and consistency Syntax: //@ invariant <boolean_expression>; 19
20 Invariants An invariant is a property that is always true when control is not in object s scope Allows defining acceptable states and consistency Example ( name and weight are members of some class): //@ public invariant!name.equals("") && weight >= 0; 20
21 Invariants Assure that name is always not null, example: private String name; 21
22 Assertions An assert clause specifies a property that should hold at the point of assertion (as opposed to invariant clause) 22
23 Assertions Example: if (i<=0 j<0) { else if (j<5) { //@ assert i>0 && 0<j && j<5; else { //@ assert i>0 && j>5; 23
24 Quantifiers Universal and existentials: \forall and \exists General: \sum, \product, \min and \max Numeric: \num_of 24
25 Binary search example We would like to write a method that uses binary search to find requested value. What do we need? 25
26 Binary search example requires a!=null && (\forall int i; 0<i && i<a.length; int binarysearch(int[] a, int x) { 26
27 Binary search example Complexity of binary search is supposed to be O(log(n)) Checking that we are eligible to use it is of linear complexity Tearing out JML specs is easy 27
28 pure and assignable Specifying a method that has no side effects: public /*@ int get(){ Limit side effects of methods: /*@ assignable balance; ensures balance ==\old(balance)-amount; public int decrease(int amount) { Meaning the value of balance before the change 28
29 Expressions JML extensions to java: Syntax Meaning a ==> b a implies b a <== b b implies a a <==> b a iff b a <=!=> b!(a <==> b) JML does not allow operators that have side effects such as = etc. Can only call pure methods 29
30 JML hiding JML does not allow private java fields to be used in public specifications A public invariant or method specifications can only mention public fields in that class Adding annotation spec_public allows public specs to treat private fields as public Example: private /*@ int variable; Allows a public method s spec to address member variable 30
31 Main Tools Assertion checking compiler JMLC Runtime assertion checker JMLRAC Unit testing tool JMLUNIT Enhanced version of javadoc JMLDOC 31
32 Goals: JMLC Executable JML compiler Performs parsing and type checking Compile JML annotated files with runtime assertion checks Processes JML specifications (e.g..spec files) How it works: Sets up the CLASSPATH Generates runtime assertion enabled JVM bytecode in each class file for each of the Java files 32
33 How to use JMLC: jmlc *.java jmlc -Q *.java Output: *.class files JMLC Executable JML compiler 33
34 34 JMLRAC Executable JML runtime assertion checker Goals: Run Java programs compiled with the JML runtime assertion checker compiler How it Works: Sets CLASSPATH to allow access to org.jmlspecs.jmlunit and org.jmlspecs.models The JML/bin/jmlruntime.jar file is added to the bootclass path Runs the java program with parameters
35 35 JMLRAC Executable JML runtime assertion checker How to use JMLRAC: jmlrac filename Output: If everything goes well whatever the program does If not: Exception in thread "main" org.jmlspecs.jmlrac.runtime.jmlentrypreconditionerror: by method Person.Person at Person.checkPre$$init$$Person(Person.java:877) at Person.<init>(Person.java:50) at MainClass.main(MainClass.java:3)
36 JMLRAC and JMLC Cheap and easy to do (spare time) Gives better feedback and better testing More properties tested at more places in the code 36
37 JMLUNIT Executable Goal: Generate file for running JUnit tests on JML annotated Java files How it works: Sets CLASSPATH Runs the Java class org.jmlspecs.jmlunit.main 37
38 JMLUNIT Executable How to use JMLUNIT on a single class: jmlunit name.java Output: Files ending with (1 of every kind): _JML_Test.java The test to be run by using JUnit or jml-junit _JML_TestData.java This file should be edited by the user 38
39 JMLUNIT and JML-JUNIT This comment is found throughout the file ending with _JML_TestData.java : // replace this comment with test data if desired Run can be done by executing JUnit regularly, but JML/bin/jmlruntime.jar and JML/bin/jmljunitruntime.jar must be added to the CLASSPATH Automated script that does it for you: jml-junit name_jml_test Where name is replaced by the name of the class 39
40 JMLDOC Executable Goal: Generate HTML (web) pages from JML annotated Java and JML files Similar to Javadoc, but jmldoc understands JML specifications, and includes this information in the generated HTML pages How it works: As before sets the CLASSPATH Runs the Java class org.jmlspecs.jmldoc.main 40
41 JMLDOC Executable How to use JMLDOC: jmldoc *.java Output: Use the above command to create this files: allclasses-frame.html, allclasses-noframe.html, constant-values.html, deprecated-list.html, etc. JMLDOC also type checks the JML specifications to some extent and combines annotations across refinement files 41
42 Comprehensive Example class Person public class Person { private String name; private int weight; public String tostring() { return "Person(\"" + name + "\"," + weight + ")"; public int getweight() { return weight; public void addkgs(int kgs) { if (kgs >= 0) { weight += kgs; else { throw new IllegalArgumentException(); public Person(String n) { name = n; weight = 0; 42
43 Comprehensive Example class Person public class Person { private /*@ spec_public String name; private /*@ int weight; /*@ public Overriding /*@ ensures \result!= && (* \result is a form of this person public String tostring() { return "Person(\"" + name + "\"," + weight + ")"; //@ ensures \result == weight; public int getweight() { return weight; Each person has a name We would like to ensure returning something And add a comment that describes what we are doing Simply return weight not that simple spec_public /*@ requires kgs >= ensures weight == \old(weight + public void addkgs(int kgs) { kgs must be positive if (kgs >= 0) { What do we promise? weight += kgs; else { throw new IllegalArgumentException(); /*@ requires n!= null ensures && weight == public Person(String n) { name = n; weight = 0; What is required? What is needed? 43
44 Comprehensive Example class Person public class Person { private String lastname; public boolean UpdateLastName(String lastname) { if (lastname==null) { return false; this.lastname = lastname; return true; public String GetLastName() { if (lastname!= null) return lastname; return ""; 44
45 Comprehensive Example class Person public class Person { private /*@ spec_public String lastname; We will use this throughout our public specs. It can be null at the beginning /*@ ensures (lastname == null ==> (this.lastname == \old(this.lastname) && \result == && (lastname!= null ==> (this.lastname == lastname && \result == public boolean UpdateLastName(/*@ String lastname) { if (lastname==null) { return false; If the given argument is null no changes will be made and false will be returned, If not lastname is updated and true is returned //@ assert lastname!= null; this.lastname = lastname; return true; By default, objects can t be null supposed to be fixed it later editions of JML Double check ourselves 45
46 Comprehensive Example class PersonMain public class PersonMain { public static void main(string [] argv) { Person person = new Person("Israel"); System.out.println("Before adding last name:"); System.out.println(person); person.updatelastname("israeli"); System.out.println("After adding last name"); System.out.println(person + " " + person.getlastname()); person.updatelastname(null); System.out.println("After trying to change it to null:"); System.out.println(person + " " + person.getlastname()); 46
47 Comprehensive Example jmlc -Q person.java yield: File "Person.java", line 35, character 12 warning: Entire clause will be dropped since JmlInformalExpression is not executable. Nevertheless, the output file Person.class is created javac PersonMain.java yield PersonMain.class 47
48 Comprehensive Example Running with jmlrac : >jmlrac PersonMain Before adding last name: Person("Israel",0) After adding last name: Person("Israel",0) Israeli After trying to change it to null: Person("Israel",0) Israeli 48
49 Comprehensive Example public boolean String lastname) { if (lastname==null) { // return false; Put under comment //@ assert lastname!= null; this.lastname = lastname; return true; Running it now yields: >jmlrac PersonMain Before adding last name: Person("Israel",0) After adding last name Person("Israel",0) Israeli Exception in thread "main" org.jmlspecs.jmlrac.runtime.jmlasserterror: ASSERT: b y method Person.UpdateLastName at Person.internal$UpdateLastName(Person.java:144) at Person.UpdateLastName(Person.java:1152) at PersonMain.main(PersonMain.java:34) 49
50 Comprehensive Example Running JMLDOC yields: 50
51 51 Comprehensive Example
52 52 Comprehensive Example
53 JML vs. Pathfinder JML Uses comments for design of specs Currently dos not cope with multi-threading Pathfinder Hard to tear out from project All about multithreading 53
54 A Few More Points Contracts can by as weak or as strong as you choose ESC/JAVA2 is an extension that finds violations before actually running the program All tools have versions for Windows, Unix/Linux and Cygwin JMLC can compile file types (other than *.java) used by JML such as *.refines-java and more There is much more to cover Inheritance for example Not the most convenient tool seen here 54
55 Links Home Articles ftp://ftp.cs.iastate.edu/pub/leavens/jml/jmldbc.pdf Slide shows
Java Modelling Language (JML) References
Java Modelling Language (JML) References G. T. Leavens and Y. Cheon. Design by Contract with JML, August 2005. L. Burdy, Y. Cheon, D. Cok, M. Ernst, J. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll.
More informationFormale Entwicklung objektorientierter Software
Formale Entwicklung objektorientierter Software Praktikum im Wintersemester 2008/2009 Prof. P. H. Schmitt Christian Engel, Benjamin Weiß Institut für Theoretische Informatik Universität Karlsruhe 5. November
More informationJava Modelling Language (JML) References
Java Modelling Language (JML) References www.jmlspecs.org G. T. Leavens and Y. Cheon, Design by Contract with JML, August 2005. C. Marché, C. Paulin-Mohring, and X. Urbain, The Krakatoa Tool for Cerification
More informationJML tool-supported specification for Java Erik Poll Radboud University Nijmegen
JML tool-supported specification for Java Erik Poll Radboud University Nijmegen Erik Poll - JML p.1/41 Overview The specification language JML Tools for JML, in particular runtime assertion checking using
More informationDesign by Contract with JML
Design by Contract with JML Gary T. Leavens and Yoonsik Cheon August 16, 2006 Abstract This document gives a tutorial introduction to the Java Modeling Language (JML), and explains how JML can be used
More informationIntroduction to JML David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen
Introduction to JML David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2 & JML Tutorial p.1/30
More informationJML. Outline. Métodos Formais em Engenharia de Software. MI, Braga these slides were prepared by adopting/adapting teaching material
Métodos Formais em Engenharia de Software JML José Carlos Bacelar Almeida Departamento de Informática Universidade do Minho MI, Braga 2008 Outline Design by Contract and JML Design by Contract Java Modeling
More informationCHAPTER 6. Slide 6.1 TESTING
CHAPTER 6 Slide 6.1 TESTING Overview Slide 6.2 Quality issues Nonexecution-based testing Execution-based testing What should be tested? Testing versus correctness proofs Who should perform execution-based
More informationFormal Specification and Verification
Formal Specification and Verification Formal Specification, Part III Bernhard Beckert Adaptation of slides by Wolfgang Ahrendt Chalmers University, Gothenburg, Sweden Formal Specification and Verification:
More informationOverview The Java Modeling Language (Part 1) Related Work
Overview The Java Modeling Language (Part 1) Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at
More informationThe JML Tool. Faculty of Engineering Pontificia Universidad Javeriana. The JML Tool p.1/23
The JML Tool Néstor Cataño ncatano@puj.edu.co Faculty of Engineering Pontificia Universidad Javeriana The JML Tool p.1/23 Tools for JML 1. Parsing and type-checking 2. Checking assertions at runtime 3.
More informationDesign by Contract and JML: concepts and tools
Métodos Formais em Engenharia de Software Design by Contract and JML: concepts and tools José Carlos Bacelar Almeida Departamento de Informática Universidade do Minho MI/MEI 2008/2009 1 Talk Outline Design
More informationThe Java Modeling Language (Part 1)
The Java Modeling Language (Part 1) Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL4: JML The Java Modeling Language David Aspinall (slides originally by Ian Stark) School of Informatics The University of Edinburgh Thursday 21 January 2010
More informationAssertions & Design-by-Contract using JML Erik Poll University of Nijmegen
Assertions & Design-by-Contract using JML Erik Poll University of Nijmegen Erik Poll - JML p.1/39 Overview Assertions Design-by-Contract for Java using JML Contracts and Inheritance Tools for JML Demo
More informationFormal Methods for Java
Formal Methods for Java Lecture 30: Conclusion Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Feb 17, 2012 Jochen Hoenicke (Software Engineering) FM4J Feb 17, 2012 1 / 21 Topics
More informationThe Java Modeling Language JML
The Java Modeling Language JML Néstor Cataño ncatano@puj.edu.co Faculty of Engineering Pontificia Universidad Javeriana The Java Modelling Language JML p.1/47 Lecture Plan 1. An Introduction to JML 2.
More informationCanica: An IDE for the Java Modeling Language
Canica: An IDE for the Java Modeling Language Angelica B. Perez, Yoonsik Cheon, and Ann Q. Gates TR #06-36 August 2006 Keywords: Integrated development environment, specification tool, programming tool,
More informationProgram Verification (6EC version only)
Program Verification (6EC version only) Erik Poll Digital Security Radboud University Nijmegen Overview Program Verification using Verification Condition Generators JML a formal specification language
More informationProgramming with Contracts. Juan Pablo Galeotti, Alessandra Gorla Saarland University, Germany
Programming with Contracts Juan Pablo Galeotti, Alessandra Gorla Saarland University, Germany Contract A (formal) agreement between Method M (callee) Callers of M Rights Responsabilities Rights Responsabilities
More informationThe JML and JUnit Way of Unit Testing and its Implementation
Computer Science Technical Reports Computer Science 2-2004 The JML and JUnit Way of Unit Testing and its Implementation Gary T. Leavens Iowa State University Yoonsik Cheon Iowa State University Follow
More informationA Simple and Practical Approach to Unit Testing: The JML and JUnit Way
A Simple and Practical Approach to Unit Testing: The JML and JUnit Way Yoonsik Cheon and Gary T. Leavens TR #01-12a November 2001, revised March 2002 Keywords: Unit testing, automatic test oracle generation,
More informationJava Modeling Language (JML)
CIS 771: Software Specifications Introduction to JML Java Modeling Language (JML) A behavioral interface specification language for Java supporting design-by-contract (DBC)... invented by Gary T. Leavens
More informationAssertions, pre/postconditions
Programming as a contract Assertions, pre/postconditions Assertions: Section 4.2 in Savitch (p. 239) Specifying what each method does q Specify it in a comment before method's header Precondition q What
More informationESC/Java 2. Checker for Java 2. Extended. Static. B y K ats man Andrey S oftware E ngineering S em inar
ESC/Java 2 Extended Static Checker for Java 2 B y K ats man Andrey S oftware E ngineering S em inar 2 0 0 8 Background ESC/Java - Original development by Compaq Systems Research Center (1997) as a successor
More informationESC/Java2 Use and Features David Cok, Joe Kiniry, Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen
ESC/Java2 Use and Features David Cok, Joe Kiniry, Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2 & JML Tutorial
More informationAdvances in Programming Languages
Advances in Programming Languages Lecture 12: Practical Tools for Java Correctness Ian Stark School of Informatics The University of Edinburgh Friday 31 November 2014 Semester 1 Week 7 http://www.inf.ed.ac.uk/teaching/courses/apl
More informationA Simple and Practical Approach to Unit Testing: The JML and JUnit Way
Computer Science Technical Reports Computer Science 11-2001 A Simple and Practical Approach to Unit Testing: The JML and JUnit Way Yoonsik Cheon Iowa State University Gary T. Leavens Iowa State University
More informationA Simple and Practical Approach to Unit Testing: The JML and JUnit Way
Computer Science Technical Reports Computer Science 9-2003 A Simple and Practical Approach to Unit Testing: The JML and JUnit Way Yoonsik Cheon Iowa State University Gary T. Leavens Iowa State University
More informationIntegrating verification in programming languages
Integrating verification in programming languages Thomas Jensen, INRIA Seminar INRIA Rennes, 04/11/2015 Collège de France Chaire Algorithmes, machines et langages x / y Types For division to make sense,
More informationAn Aspect-Oriented Approach. Henrique Rebêlo Informatics Center
An Aspect-Oriented Approach to implement JML Features Henrique Rebêlo Informatics Center Federal University of Pernambuco Summary jmlc problems bigger code, slower code, no suppport for Java ME, and bad
More informationESC/Java2 Warnings David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen
ESC/Java2 Warnings David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2 & JML Tutorial p.1/??
More informationFormal Methods for Java
Formal Methods for Java Lecture 6: Introduction to JML Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg May 15, 2017 Jochen Hoenicke (Software Engineering) Formal Methods for Java
More informationESC/Java2 Use and Features
ESC/Java2 Use and Features The ESC/Java2 tool David Cok, Joe Kiniry, Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2
More informationESC/Java2 extended static checking for Java Erik Poll Radboud University Nijmegen
ESC/Java2 extended static checking for Java Erik Poll Radboud University Nijmegen Erik Poll - JML p.1/19 Extended static checker for Java ESC/Java by Rustan Leino et.al. Extension ESC/Java2 by David Cok
More informationESC/Java2 Use and Features
ESC/Java2 Use and Features David Cok, Joe Kiniry, Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2 & JML Tutorial
More informationRigorous Software Development CSCI-GA
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 6 Disclaimer. These notes are derived from notes originally developed by Jochen Hoenicke. They are copyrighted
More informationJML Class Specifications The Java Modeling Language (Part 2) A Java Class
JML Class Specifications The Java Modeling Language (Part 2) Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria
More informationThe Java Modeling Language (Part 2)
The Java Modeling Language (Part 2) Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at
More informationAdvanced JML Erik Poll Radboud University Nijmegen
JML p.1/23 Advanced JML Erik Poll Radboud University Nijmegen JML p.2/23 Core JML Remember the core JML keywords were requires ensures signals invariant non null pure \old, \forall, \result JML p.3/23
More informationAn introduction to formal specifications and JML. Invariant properties
An introduction to formal specifications and JML Invariant properties Yves Ledru Université Grenoble-1 Laboratoire d Informatique de Grenoble Yves.Ledru@imag.fr 2013 Page 1 Invariant properties Invariants
More informationStatic program checking and verification
Chair of Software Engineering Software Engineering Prof. Dr. Bertrand Meyer March 2007 June 2007 Slides: Based on KSE06 With kind permission of Peter Müller Static program checking and verification Correctness
More informationAdvanced JML. and more tips and pitfalls. David Cok, Joe Kiniry, and Erik Poll
Advanced JML and more tips and pitfalls David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2
More informationIntroduction to the Java Modeling Language
Introduction to the Java Modeling Language Modular Specification and Verification for Java Gary T. Leavens 1 Curtis Clifton 2 Hridesh Rajan 3 Robby 4 1 School of Electrical Engineering and Computer Science,
More informationNon-null References by Default in the Java Modeling Language
Non-null References by Default in the Java Modeling Language Patrice Chalin Dependable Software Research Group (DSRG) Computer Science and Software Engineering Department Concordia University Montreal,
More informationEXAMINATIONS 2009 MID-TERM TEST. COMP 202 / SWEN 202 Formal Methods of Computer Science / Formal Foundations of Software Engineering WITH ANSWERS
T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW V I C T O R I A UNIVERSITY OF WELLINGTON Time Allowed: 90 minutes EXAMINATIONS 2009 MID-TERM TEST COMP 202 / SWEN 202 Formal Methods
More informationUC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara
CS189A - Capstone Christopher Kruegel Department of Computer Science http://www.cs.ucsb.edu/~chris/ Design by Contract Design by Contract and the language that implements the Design by Contract principles
More informationFormal Methods for Java
Formal Methods for Java Lecture 1: Introduction Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg October 26, 2011 Jochen Hoenicke (Software Engineering) Formal Methods for Java October
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 04: Exception Handling MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Creating Classes 2 Introduction Exception Handling Common Exceptions Exceptions with Methods Assertions
More informationTesting, Debugging, Program Verification
Testing, Debugging, Program Verification Automated Test Case Generation, Part II Wolfgang Ahrendt & Vladimir Klebanov & Moa Johansson 12 December 2012 TDV: ATCG II /GU 2011-12-12 1 / 17 Recap Specification-/Model-Based
More informationThe Use of JML in Embedded Real-Time Systems
The Use of JML in Embedded Real-Time Systems Joseph Kiniry Technical University of Denmark JTRES 2012 24 October 2012 Acknowledgements Some content based on an OOPSLA tutorial by: Gary T. Leavens, Curtis
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL14: Practical tools for Java Correctness David Aspinall (slides originally by Ian Stark) School of Informatics The University of Edinburgh Friday 12 November
More informationDiscussion of Design Alternatives for JML Java 5 Annotations
Discussion of Design Alternatives for JML Java 5 Annotations Kristina P. Boysen and Gary T. Leavens January 9, 2008 Abstract The Java Modeling Language (JML) is a specification language for Java that allows
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 04: Exception Handling MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Creating Classes 2 Introduction Exception Handling Common Exceptions Exceptions with Methods Assertions and
More informationFormal Methods for Software Development
Formal Methods for Software Development Java Modeling Language, Part II Wolfgang Ahrendt 29 September 2017 FMSD: Java Modeling Language /GU 171029 1 / 62 JML Modifiers JML extends the JAVA modifiers by
More informationA Fitness Function to Find Feasible Sequences of Method Calls for Evolutionary Testing of Object-Oriented Programs
A Fitness Function to Find Feasible Sequences of Method Calls for Evolutionary Testing of Object-Oriented Programs Myoung Yee Kim and Yoonsik Cheon TR #7-57 November 7; revised January Keywords: fitness
More informationFormal methods What are they? Uses Tools Application to software development
FormalMethods Page 1 Formal methods introduction 9:26 PM Formal methods What are they? Uses Tools Application to software development FormalMethods Page 2 What are formal methods? 9:49 PM Do you have any
More informationVerifying Java Programs. Verifying Java Programs. The Krakatoa/Why Tool Suite
Verifying Java Programs Verifying Java Programs Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.uni-linz.ac.at
More informationA Library-Based Approach to Translating OCL Constraints to JML Assertions for Runtime Checking
A Library-Based Approach to Translating OCL Constraints to JML Assertions for Runtime Checking Carmen Avila, Guillermo Flores, Jr., and Yoonsik Cheon TR #08-05 February 2008; revised May 2008 Keywords:
More informationVerifying Java Programs
Verifying Java Programs Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.uni-linz.ac.at
More informationHow the Design of JML Accommodates Both Runtime Assertion Checking and Formal Verification
Computer Science Technical Reports Computer Science 3-2004 How the Design of JML Accommodates Both Runtime Assertion Checking and Formal Verification Gary T. Leavens Iowa State University Yoonsik Cheon
More informationLecture 10 Design by Contract
CS 5959 Writing Solid Code Fall 2015 Nov-23 Lecture 10 Design by Contract Zvonimir Rakamarić University of Utah Design by Contract Also called assume-guarantee reasoning Developers annotate software components
More informationTesting Library Specifications by Verifying Conformance Tests
Testing Library Specifications by Verifying Conformance Tests Joseph R. Kiniry, Daniel M. Zimmerman, Ralph Hyland ITU Copenhagen, UW Tacoma, UCD Dublin 6th International Conference on Tests & Proofs Prague,
More informationOOP Design by Contract. Carsten Schuermann Kasper Østerbye IT University Copenhagen
OOP Design by Contract Carsten Schuermann Kasper Østerbye IT University Copenhagen 1 Today's schedule Design by Contract why the term contract what design issue is captured, and why bother what is a pre-condition
More informationJML and ESC/Java2 Homework Exercises
This document contains a set of homework exercises for those that wish to learn JML and ESC/Java2. It was begun by Joseph R. Kiniry in May 2004 for the tutorial Design by Contract and
More informationJML s Rich, Inherited Specifications for Behavioral Subtypes
JML s Rich, Inherited Specifications for Behavioral Subtypes Gary T. Leavens TR #06-22 August 11, 2006 Keywords: Supertype abstraction, behavioral subtype, behavioral subtyping, modularity, specification
More informationpublic static void negate2(list<integer> t)
See the 2 APIs attached at the end of this worksheet. 1. Methods: Javadoc Complete the Javadoc comments for the following two methods from the API: (a) / @param @param @param @return @pre. / public static
More informationpublic static boolean isoutside(int min, int max, int value)
See the 2 APIs attached at the end of this worksheet. 1. Methods: Javadoc Complete the Javadoc comments for the following two methods from the API: (a) / @param @param @param @return @pre. / public static
More informationAnnouncements. Specifications. Outline. Specifications. HW1 is due Thursday at 1:59:59 pm
Announcements HW1 is due Thursday at 1:59:59 pm Specifications 2 Outline Specifications Benefits of specifications Specification conventions Javadoc JML PoS specifications Specifications A specification
More informationAn overview of JML tools and applications
Int J Softw Tools Technol Transfer (2004) / Digital Object Identifier (DOI) 10.1007/s10009-004-0167-4 An overview of JML tools and applications Lilian Burdy 1,YoonsikCheon 2,DavidR.Cok 3, Michael D. Ernst
More informationImplementation of Refining Statements in OpenJML and Verification of Higher Order Methods with Model Program Specifications
University of Central Florida Electronic Theses and Dissertations Masters Thesis (Open Access) Implementation of Refining Statements in OpenJML and Verification of Higher Order Methods with Model Program
More informationPreliminary Design of JML:
Preliminary Design of JML: A Behavioral Interface Specification Language for Java by Gary T. Leavens, Albert L. Baker, and Clyde Ruby TR #98-06z June 1998, revised July, November 1998, January, April,
More informationSpecification tips and pitfalls
Specification tips and pitfalls David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2 & JML
More informationJML and Aspects: The Benefits of
JML and Aspects: The Benefits of Instrumenting JML Features with AspectJ Henrique Rebêlo Sérgio Soares Ricardo Lima Paulo Borba Márcio Cornélio Java Modeling Language Formal specification language for
More informationSpecification and Verification of Garbage Collector by Java Modeling Language
Specification and Verification of Garbage Collector by Java Modeling Language Wenhui Sun, Yuting Sun, Zhifei Zhang Department of Computer Science and Technology Beijing Jiaotong University Beijing, China
More informationEnforcing Information Hiding in Interface Specifications: with The AspectJML specification language. A Client Aware checking Approach
Enforcing Information Hiding in Interface Specifications: with The AspectJML specification language A Client Aware checking Approach Henrique Rebêlo Universidade Federal de Pernambuco Brazil Gary T. Leavens
More informationAsserting Expectations. Your Submissions. Oral Exams
Asserting Expectations Andreas Zeller 1 Your Submissions Program must behave exactly as specified (i.e., input, output, flags, etc.) Program must use recent Python 2 version (i.e., Python 2.6 installed
More informationCSE331 Winter 2014, Midterm Examination February 12, 2014
CSE331 Winter 2014, Midterm Examination February 12, 2014 Please do not turn the page until 10:30. Rules: The exam is closed-book, closed-note, etc. Please stop promptly at 11:20. There are 100 points
More informationKarsten Sohr Center for Computing Technologies Universität Bremen, Germany
Towards Formal Specification and Verification of a Role-Based Authorization Engine using JML [Position paper] Tanveer Mustafa Center for Computing Technologies Universität Bremen, Germany tanveer@tzi.de
More informationObject Oriented Programming
Object Oriented Programming Objectives To review the concepts and terminology of object-oriented programming To discuss some features of objectoriented design 1-2 Review: Objects In Java and other Object-Oriented
More informationCS159. Nathan Sprague
CS159 Nathan Sprague What s wrong with the following code? 1 /* ************************************************** 2 * Return the mean, or -1 if the array has length 0. 3 ***************************************************
More informationJava ByteCode Specification Language(BCSL) and how to compile JML to BCSL. Mariela Pavlova March 10, 2006
Java ByteCode Specification Language(BCSL) and how to compile JML to BCSL Mariela Pavlova March 10, 2006 1 1 Introduction This document is an overview of a bytecode level specification language, called
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationPractical Application of a Translation Tool from UML/OCL to Java Skeleton with JML Annotation
Title Author(s) Practical Application of a Translation Tool from UML/OCL to Java Skeleton with JML Annotation Hanada, Kentaro; Okano, Kozo; Kusumoto, Shinji; Miyazawa, Kiyoyuki Citation Issue Date 2012
More informationEffective and Efficient Runtime Assertion Checking for JML Through Strong Validity
Effective and Efficient Runtime Assertion Checking for JML Through Strong Validity Frederic Rioux and Patrice Chalin Dependable Software Research Group, Dept. of Computer Science and Software Engineering,
More informationFormal Specification and Verification
Formal Specification and Verification Proof Obligations Bernhard Beckert Based on a lecture by Wolfgang Ahrendt and Reiner Hähnle at Chalmers University, Göteborg Formal Specification and Verification:
More information5.5 Behavioral Subtyping
5.5 Behavioral Subtyping Subtyping of programming languages enforces that - no type errors occur, and - there is a method implementation for each method invocation. It does not guarantee that subtype objects
More informationCMSC131. Inheritance. Object. When we talked about Object, I mentioned that all Java classes are "built" on top of that.
CMSC131 Inheritance Object When we talked about Object, I mentioned that all Java classes are "built" on top of that. This came up when talking about the Java standard equals operator: boolean equals(object
More informationWeiss Chapter 1 terminology (parenthesized numbers are page numbers)
Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement
More informationAdvances in Programming Languages
O T Y H Advances in Programming Languages APL8: ESC/Java2 David Aspinall (including slides by Ian Stark and material adapted from ESC/Java2 tutorial by David Cok, Joe Kiniry and Erik Poll) School of Informatics
More informationUsing Type Annotations to Improve Your Code
Using Type Annotations to Improve Your Code Birds-of-a-Feather Session Werner Dietl, University of Waterloo Michael Ernst, University of Washington Open for questions Survey: Did you attend the tutorial?
More informationn Specifying what each method does q Specify it in a comment before method's header n Precondition q Caller obligation n Postcondition
Programming as a contract Assertions, pre/postconditions and invariants Assertions: Section 4.2 in Savitch (p. 239) Loop invariants: Section 4.5 in Rosen Specifying what each method does q Specify it in
More informationPreliminary Design of JML:
Preliminary Design of JML: A Behavioral Interface Specification Language for Java by Gary T. Leavens, Albert L. Baker, and Clyde Ruby TR #98-06t June 1998, revised July, November 1998, January, April,
More informationA Small Survey of Java Specification Languages *
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 409 416. A Small Survey of Java Specification Languages * Gábor Kusper a, Gergely
More informationLecture 4: Procedure Specifications
Lecture 4: Procedure Specifications 4.1. Introduction In this lecture, we ll look at the role played by specifications of methods. Specifications are the linchpin of team work. It s impossible to delegate
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationOn the Interplay between the Semantics of Java s Finally Clauses and the JML Run-Time Checker
On the Interplay between the Semantics of Java s Finally Clauses and the JML Run-Time Checker M. Huisman University of Twente Netherlands ABSTRACT This paper discusses how a subtle interaction between
More informationPrinciples of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems)
Principles of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems) More Analysis for Functional Correctness Jonathan Aldrich Charlie Garrod School of Computer Science
More informationA Run-time Assertion Checker for Java using JML
Computer Science Technical Reports Computer Science 5-1-2000 A Run-time Assertion Checker for Java using JML Abhay Bhorkar Follow this and additional works at: http://lib.dr.iastate.edu/cs_techreports
More informationVerifying Java Programs Verifying Java Programs with KeY
Verifying Java Programs Verifying Java Programs with KeY Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at
More information