Abstraction and specification in program development
Abstraction and specification in program development
Writing Larch interface language specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inheritance and subtyping in a parallel object-oriented language
European conference on object-oriented programming on ECOOP '87
The Z notation: a reference manual
The Z notation: a reference manual
A simple approach to specifying concurrent systems
Communications of the ACM
An introduction to Z and formal specifications
Software Engineering Journal - Special Section on Z
Predicate calculus and program semantics
Predicate calculus and program semantics
Programming in the 1990s: an introduction to the calculation of programs
Programming in the 1990s: an introduction to the calculation of programs
Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Reasoning about object-oriented programs that use subtypes
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Eiffel: the language
Towards a method of programming with assertions
ICSE '92 Proceedings of the 14th international conference on Software engineering
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
A logical approach to discrete math
A logical approach to discrete math
Proof in VDM: a practitioner's guide
Proof in VDM: a practitioner's guide
The type and effect discipline
Information and Computation
Part I: the RESOLVE framework and discipline: a research synopsis
ACM SIGSOFT Software Engineering Notes
Part II: specifying components in RESOLVE
ACM SIGSOFT Software Engineering Notes
The Larch/Smalltalk interface specification language
ACM Transactions on Software Engineering and Methodology (TOSEM)
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Forcing behavioral subtyping through specification inheritance
Proceedings of the 18th international conference on Software engineering
Mathematical Notation in Formal Specification: Too Difficult for the Masses?
IEEE Transactions on Software Engineering
Using Z: specification, refinement, and proof
Using Z: specification, refinement, and proof
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Reasoning about Java classes: preliminary report
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Unified Modeling Language user guide
The Unified Modeling Language user guide
The object constraint language: precise modeling with UML
The object constraint language: precise modeling with UML
Modelling systems: practical tools and techniques in software development
Modelling systems: practical tools and techniques in software development
Integrating functional and imperative programming
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Concepts of behavioral subtyping and a sketch of their extension to component-based systems
Foundations of component-based systems
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Safely creating correct subclasses without seeing superclass code
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An axiomatic basis for computer programming
Communications of the ACM
JML (poster session): notations and tools supporting detailed design in Java
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Aspect-oriented programming with adaptive methods
Communications of the ACM
Behavioral contracts and behavioral subtyping
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
Contract Soundness for object-oriented languages
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Alloy: a lightweight object modelling notation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process
The Java Programming Language
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
An analyzable annotation language
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A Logic for the Java Modeling Language JML
FASE '01 Proceedings of the 4th International Conference on Fundamental Approaches to Software Engineering
Capsules and Types in Fresco: Program Verification in Smalltalk
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
A Simple and Practical Approach to Unit Testing: The JML and JUnit Way
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Preliminary Design of Larch/C++
Proceedings of the first First International Workshop on Larch
Checking Java Programs via Guarded Commands
Proceedings of the Workshop on Object-Oriented Technology
Upgrading the Pre- and Postcondition Technique
VDM '91 Proceedings of the 4th International Symposium of VDM Europe on Formal Software Development-Volume I: Conference Contributions - Volume I
Designing an Object-Oriented Programming Language with Behavioural Subtyping
Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS
A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS
Adding Contracts to Java with Handshake
Adding Contracts to Java with Handshake
Ten commandments revisited: a ten-year perspective on the industrial application of formal methods
Proceedings of the 10th international workshop on Formal methods for industrial critical systems
A contextual interpretation of undefinedness for runtime assertion checking
Proceedings of the sixth international symposium on Automated analysis-driven debugging
A specification-based approach to reasoning about pointers
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
Non-null references by default in the Java modeling language
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
Roadmap for enhanced languages and methods to aid verification
Proceedings of the 5th international conference on Generative programming and component engineering
Early detection of JML specification errors using ESC/Java2
Proceedings of the 2006 conference on Specification and verification of component-based systems
Specifying and analyzing security automata using CSP-OZ
ASIACCS '07 Proceedings of the 2nd ACM symposium on Information, computer and communications security
An assertion-based verification methodology for system-level design
Computers and Electrical Engineering
A Sound Assertion Semantics for the Dependable Systems Evolution Verifying Compiler
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Faithful mapping of model classes to mathematical structures
Proceedings of the 2007 conference on Specification and verification of component-based systems: 6th Joint Meeting of the European Conference on Software Engineering and the ACM SIGSOFT Symposium on the Foundations of Software Engineering
Efficient runtime invariant checking: a framework and case study
WODA '08 Proceedings of the 2008 international workshop on dynamic analysis: held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2008)
Verified Software: Theories, Tools, Experiments
Eiffel as a Framework for Verification
Verified Software: Theories, Tools, Experiments
JML Runtime Assertion Checking: Improved Error Reporting and Efficiency Using Strong Validity
FM '08 Proceedings of the 15th international symposium on Formal Methods
A Lightweight Container Architecture for Runtime Verification
Runtime Verification
Developing parallel programs: A design-oriented perspective
IWMSE '09 Proceedings of the 2009 ICSE Workshop on Multicore Software Engineering
A Reusable Model for Data-Centric Web Services
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
Business process monitoring for dependability
Architecting dependable systems IV
Verification of equivalent-results methods
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
PHALANX: parallel checking of expressive heap assertions
Proceedings of the 2010 international symposium on Memory management
Contracts for first-class classes
Proceedings of the 6th symposium on Dynamic languages
Specifying reusable components
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Runtime verification for generic classes with CONGU2
SBMF'10 Proceedings of the 13th Brazilian conference on Formal methods: foundations and applications
Resource allocation contracts for open analytic runtime models
EMSOFT '11 Proceedings of the ninth ACM international conference on Embedded software
Beyond assertions: advanced specification and verification with JML and ESC/Java2
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
JML’s rich, inherited specifications for behavioral subtypes
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Proving consistency and completeness of model classes using theory interpretation
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Extending JML for modular specification and verification of multi-threaded programs
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Verifying a secure information flow analyzer
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
OCL-based runtime monitoring of applications with protocol state machines
ECMFA'12 Proceedings of the 8th European conference on Modelling Foundations and Applications
Automated verification of model transformations based on visual contracts
Automated Software Engineering
What good are strong specifications?
Proceedings of the 2013 International Conference on Software Engineering
Efficient dynamic access analysis using JavaScript proxies
Proceedings of the 9th symposium on Dynamic languages
Contracts for First-Class Classes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Specifications that are used in detailed design and in the documentation of existing code are primarily written and read by programmers. However, most formal specification languages either make heavy use of symbolic mathematical operators, which discourages use by programmers, or limit assertions to expressions of the underlying programming language, which makes it difficult to write exact specifications. Moreover, using assertions that are expressions in the underlying programming language can cause problems both in runtime assertion checking and in formal verification, because such expressions can potentially contain side effects. The Java Modeling Language, JML, avoids these problems. It uses a side-effect free subset of Java's expressions to which are added a few mathematical operators (such as the quantifiers \forall and \exists). JML also hides mathematical abstractions, such as sets and sequences, within a library of Java classes. The goal is to allow JML to serve as a common notation for both formal verification and runtime assertion checking; this gives users the benefit of several tools without the cost of changing notations.