Communicating sequential processes
Communicating sequential processes
Parallel program design: a foundation
Parallel program design: a foundation
Objects as closures: abstract semantics of object-oriented languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Inheritance in smalltalk-80: a denotational definition
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The existence of refinement mappings
Theoretical Computer Science
Proving correctness with respect to nondeterministic safety specifications
Information Processing Letters
Compositional specification and verification of distributed systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
A denotational semantics of inheritance and its correctness
Information and Computation
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular reasoning in the presence of subclassing
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Communication and concurrency
Forcing behavioral subtyping through specification inheritance
Proceedings of the 18th international conference on Software engineering
An introduction to object-oriented programming (2nd ed.)
An introduction to object-oriented programming (2nd ed.)
Building secure and reliable network applications
Building secure and reliable network applications
Specifying and using a partitionable group communication service
PODC '97 Proceedings of the sixteenth annual ACM symposium on Principles of distributed computing
Using I/O automata for developing distributed systems
Foundations of component-based systems
An inheritance-based technique for building simulation proofs incrementally
Proceedings of the 22nd international conference on Software engineering
Distributed Algorithms
A Theory of Objects
Wrapper Semantics of an Object-Oriented Programming Language with State
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
A New Definition of the Subtype Relation
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
On the Need for Practical Formal Methods
FTRTFT '98 Proceedings of the 5th International Symposium on Formal Techniques in Real-Time and Fault-Tolerant Systems
Inheriting and Modifying Behavior
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
On the Behavioral Inheritance of State-Based Objects
TOOLS '00 Proceedings of the Technology of Object-Oriented Languages and Systems (TOOLS 34'00)
Formal Methods For Developing High Assurance Computer Systems: Working Group Report
WIFT '98 Proceedings of the Second IEEE Workshop on Industrial Strength Formal Specification Techniques
A Client-Server Oriented Algorithm for Virtually Synchronous Group Membership in WANs
ICDCS '00 Proceedings of the The 20th International Conference on Distributed Computing Systems ( ICDCS 2000)
A Client-Server Approach to Virtually Synchronous Group Multicast: Specifications and Algorithms
ICDCS '00 Proceedings of the The 20th International Conference on Distributed Computing Systems ( ICDCS 2000)
Inheritance: From Code Reuse to Reasoning Reuse
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Optimizing Layered Communication Protocols
Optimizing Layered Communication Protocols
The Generalized Railroad Crossing: A Case Study in Formal Verification of Real-Time Systems
The Generalized Railroad Crossing: A Case Study in Formal Verification of Real-Time Systems
Bridging the Gap between Simulation and Experimental Evaluation in Computer Networks
ANSS '06 Proceedings of the 39th annual Symposium on Simulation
Programming with Live Distributed Objects
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Hi-index | 0.00 |
This paper presents a formal technique for incremental construction of system specifications, algorithm descriptions, and simulation proofs showing that algorithms meet their specifications.The technique for building specifications and algorithms incrementally allows a child specification or algorithm to inherit from its parent by two forms of incremental modification: (a) signature extension, where new actions are added to the parent, and (b) specialization (subtyping), where the child's behavior is a specialization (restriction) of the parent's behavior. The combination of signature extension and specialization provides a powerful and expressive incremental modification mechanism for introducing new types of behavior without overriding behavior of the parent; this mechanism corresponds to the subclassing for extension form of inheritance.In the case when incremental modifications are applied to both a parent specification S and a parent algorithm A, the technique allows a simulation proof showing that the child algorithm A′ implements the child specification S′ to be constructed incrementally by extending a simulation proof that algorithm A implements specification S. The new proof involves reasoning about the modifications only, without repeating the reasoning done in the original simulation proof.The paper presents the technique mathematically, in terms of automata. The technique has been used to model and verify a complex middleware system; the methodology and results of that experiment are summarized in this paper.