The C++ programming language
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
STACS 91 Proceedings of the 8th annual symposium on Theoretical aspects of computer science
Eiffel: the language
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Specifications and their use in defining subtypes
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Object-oriented specification case studies
Object-oriented specification case studies
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
An algebraic model of sybtypes in object-oriented languages (draft)
OOPWORK '86 Proceedings of the 1986 SIGPLAN workshop on Object-oriented programming
Inheritance in Object-Oriented Z
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Object Orientation in Z
Designing an Object-Oriented Programming Language with Behavioural Subtyping
Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages
Specification matching of software components
ACM Transactions on Software Engineering and Methodology (TOSEM)
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
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)
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
Representation independence, confinement and access control [extended abstract]
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An inheritance-based technique for building simulation proofs incrementally
ACM Transactions on Software Engineering and Methodology (TOSEM)
Behavior-consistent specialization of object life cycles
ACM Transactions on Software Engineering and Methodology (TOSEM)
Executing Formal Specifications with Concurrent Constraint Programming
Automated Software Engineering
Behavioural Subtyping Relations for Object-Oriented Formalisms
AMAST '00 Proceedings of the 8th International Conference on Algebraic Methodology and Software Technology
The Construction Principles of the Class Library KARLA
Selected Papers from the International Seminar on Generic Programming
Enhancing the Pre- and Postcondition Technique for More Expressive Specifications
FM '99 Proceedings of the Wold Congress on Formal Methods in the Development of Computing Systems-Volume II
Relating state-based and behaviour-oriented subtyping
Nordic Journal of Computing
Enhancing the Object Constraint Language for More Expressive Specifications
APSEC '99 Proceedings of the Sixth Asia Pacific Software Engineering Conference
ROAD/EE: A Prototyping Environment for Object-Oriented Specifications
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
Life-cycle inheritance in concurrent object-oriented systems
CRPIT '02 Proceedings of the conference on Application and theory of petri nets: formal methods in software engineering and defence systems - Volume 12
Inheritance: From Code Reuse to Reasoning Reuse
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Behavioral Subtyping Relations for Active Objects
Formal Methods in System Design
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
Specification and (property) inheritance in CSP-OZ
Science of Computer Programming - Formal methods for components and objects pragmatic aspects and applications
Ownership confinement ensures representation independence for object-oriented programs
Journal of the ACM (JACM)
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
Java bytecode specification and verification
Proceedings of the 2006 ACM symposium on Applied computing
Overview and Evaluation of Constraint Validation Approaches in Java
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Information Hiding and Visibility in Interface Specifications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Modular verification of higher-order methods with mandatory calls specified by model programs
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Separation logic, abstraction and inheritance
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Enhancing modular OO verification with separation logic
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation Logic for Multiple Inheritance
Electronic Notes in Theoretical Computer Science (ENTCS)
Modular Reasoning in Object-Oriented Programming
Verified Software: Theories, Tools, Experiments
Verified Software: Theories, Tools, Experiments
Checking Framework Interactions with Relationships
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
UML behavior: inheritance and implementation in current object-oriented languages
UML'99 Proceedings of the 2nd international conference on The unified modeling language: beyond the standard
Modular specification and verification of object-oriented programs
Modular specification and verification of object-oriented programs
An automatic verifier for Java-like programs based on dynamic frames
FASE'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Fundamental approaches to software engineering
Specification and verification: the Spec# experience
Communications of the ACM
A Theory of Synchronous Relational Interfaces
ACM Transactions on Programming Languages and Systems (TOPLAS)
Enabling the runtime assertion checking of concurrent contracts for the Java modeling language
Proceedings of the 33rd International Conference on Software Engineering
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
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
Using the spec# language, methodology, and tools to write bug-free programs
Advanced Lectures on Software Engineering
A modular verification methodology for c# delegates
Rigorous Methods for Software Construction and Analysis
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Applying design by contract to feature-oriented programming
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Formally based modeling and inheritance of behaviour in object-oriented systems
Journal of Systems and Software
Tracking behavioral constraints during object-oriented software evolution
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Correctness of intrusive data structures using mixins
Proceedings of the 16th International ACM Sigsoft symposium on Component-based software engineering
Automatic testing of sequential and concurrent substitutability
Proceedings of the 2013 International Conference on Software Engineering
Subclack: feature-oriented programming with behavioral feature interfaces
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Client-aware checking and information hiding in interface specifications with JML/ajmlc
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Hi-index | 0.02 |
A common change to object-oriented software is to add a new type of data that is a subtype of some existing type in the program. However, due to message passing, unchanged pearls of the program may now call operations of the new type. To avoid reverification of unchanged code, such operations should have specifications that are related to the specifications of the appropriate operations in their supertypes. This paper presents a specification technique that uses inheritance of specifications to force the appropriate behavior on the subtype objects. This technique is simple, requires little effort by the specifier, and avoids reverification of unchanged code. We present two notions of such behavioral subtyping, one of which is new. We show how to use these techniques to specify examples in C++.