Keynote address - data abstraction and hierarchy
OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum)
Towards a method of programming with assertions
ICSE '92 Proceedings of the 14th international conference on Software engineering
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Practical Approach to Programming With Assertions
IEEE Transactions on Software Engineering
Forcing behavioral subtyping through specification inheritance
Proceedings of the 18th international conference on Software engineering
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Data groups: specifying the modification of extended state
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Concepts of behavioral subtyping and a sketch of their extension to component-based systems
Foundations of component-based systems
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
Design by contract, by example
Design by contract, by example
Computer
On the Frame Problem in Procedure Specifications
IEEE Transactions on Software Engineering
Verification of Object Oriented Programs Using Class Invariants
FASE '00 Proceedings of the Third Internationsl Conference on Fundamental Approaches to Software Engineering: Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 2000
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
An Architecture for Interactive Program Provers
TACAS '00 Proceedings of the 6th International Conference on Tools and Algorithms for Construction and Analysis of Systems: Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 2000
The LOOP Compiler for Java and JML
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Designing an Object-Oriented Programming Language with Behavioural Subtyping
Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages
The Early Search for Tractable Ways of Reasoning about Programs
IEEE Annals of the History of Computing
Model variables: cleanly supporting abstraction in design by contract: Research Articles
Software—Practice & Experience
How the design of JML accommodates both runtime assertion checking and formal verification
Science of Computer Programming - Formal methods for components and objects pragmatic aspects and applications
An overview of JML tools and applications
International Journal on Software Tools for Technology Transfer (STTT) - Special section on formal methods for industrial critical systems
Safe Concurrency for Aggregate Objects with Invariants
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Observational purity and encapsulation
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
A verification methodology for model fields
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Early detection of JML specification errors using ESC/Java2
Proceedings of the 2006 conference on Specification and verification of component-based systems
A Sound Assertion Semantics for the Dependable Systems Evolution Verifying Compiler
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Verification-centric realization of electronic vote counting
EVT'07 Proceedings of the USENIX Workshop on Accurate Electronic Voting Technology
JML Runtime Assertion Checking: Improved Error Reporting and Efficiency Using Strong Validity
FM '08 Proceedings of the 15th international symposium on Formal Methods
Modelling with Relational Calculus of Object and Component Systems - rCOS
The Common Component Modeling Example
JML4: Towards an Industrial Grade IVE for Java and Next Generation Research Platform for JML
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Implicit Flows: Can't Live with `Em, Can't Live without `Em
ICISS '08 Proceedings of the 4th International Conference on Information Systems Security
Refinement and verification in component-based model-driven design
Science of Computer Programming
Specifying and checking protocols of multithreaded classes
Proceedings of the 2009 ACM symposium on Applied Computing
Certificate translation for optimizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Bridging the gap: Discrete-Event Systems for software engineering (short position paper)
C3S2E '09 Proceedings of the 2nd Canadian Conference on Computer Science and Software Engineering
Ensuring Consistency between Designs, Documentation, Formal Specifications, and Implementations
CBSE '09 Proceedings of the 12th International Symposium on Component-Based Software Engineering
Formal methods: Practice and experience
ACM Computing Surveys (CSUR)
UnitCheck: Unit Testing and Model Checking Combined
ATVA '09 Proceedings of the 7th International Symposium on Automated Technology for Verification and Analysis
Certifiable Specification and Verification of C Programs
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Testable requirements and specifications
TAP'07 Proceedings of the 1st international conference on Tests and proofs
Automatic certification of Java source code in rewriting logic
FMICS'07 Proceedings of the 12th international conference on Formal methods for industrial critical systems
Formal methods and hybrid real-time systems
Analysis of invariants for efficient bounded verification
Proceedings of the 19th international symposium on Software testing and analysis
The design of SafeJML, a specification language for SCJ with support for WCET specification
Proceedings of the 8th International Workshop on Java Technologies for Real-Time and Embedded Systems
Test-based inference of polynomial loop-bound functions
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Tackling pointcut fragility with dynamic annotations
Proceedings of the 7th Workshop on Reflection, AOP and Meta-Data for Software Evolution
A parametric segmentation functor for fully automatic and scalable array content analysis
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Practical verification for the working programmer with codecontracts and abstract interpretation
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Midlet navigation graphs in JML
SBMF'10 Proceedings of the 13th Brazilian conference on Formal methods: foundations and applications
Specifying subtypes in SCJ programs
Proceedings of the 9th International Workshop on Java Technologies for Real-Time and Embedded Systems
Making software verification tools really work
ATVA'11 Proceedings of the 9th international conference on Automated technology for verification and analysis
Formal object-oriented development of a voting system test oracle
Innovations in Systems and Software Engineering
A dataflow analysis to improve SAT-based bounded program verification
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
Using Coq in specification and program extraction of hadoop mapreduce applications
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
JML’s rich, inherited specifications for behavioral subtypes
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Idea: enforcing consumer-specified security properties for modular software
ESSoS'10 Proceedings of the Second international conference on Engineering Secure Software and Systems
On the integration of software testing and formal analysis
Empirical Software Engineering and Verification
Comparing verification condition generation with symbolic execution: an experience report
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Translating B machines to JML specifications
Proceedings of the 27th Annual ACM Symposium on Applied Computing
A formal model of user-defined resources in resource-restricted deployment scenarios
FoVeOOS'11 Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software
Using coverage criteria on RepOK to reduce bounded-exhaustive test suites
TAP'12 Proceedings of the 6th international conference on Tests and Proofs
Making resource analysis practical for real-time Java
Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems
Behavioral specification based runtime monitors for OSGi services
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Translation of Z specifications to executable code: Application to the database domain
Information and Software Technology
Parallel bounded analysis in code with rich invariants by refinement of field bounds
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Subclack: feature-oriented programming with behavioral feature interfaces
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Feature-interaction detection based on feature-based specifications
Computer Networks: The International Journal of Computer and Telecommunications Networking
Reducing lookups for invariant checking
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Many state-based specification languages, including the Java Modeling Language (JML), contain at their core specification constructs familiar to most undergraduates: e.g., assertions, pre- and postconditions, and invariants. Unfortunately, these constructs are not sufficiently expressive to permit formal modular verification of programs written in modern object-oriented languages like Java. The necessary extra constructs for specifying an object-oriented module include (perhaps the less familiar) frame properties, datagroups, and ghost and model fields. These constructs help specifiers deal with potential problems related to, for example, unexpected side effects, aliasing, class invariants, inheritance, and lack of information hiding. This tutorial paper focuses on JML's realization of these constructs, explaining their meaning while illustrating how they can be used to address the stated problems.