Mathematical Principles for a First Course in Software Engineering
IEEE Transactions on Software Engineering
Approaches to specification-based testing
TAV3 Proceedings of the ACM SIGSOFT '89 third symposium on Software testing, analysis, and verification
An Ontological Model of an Information System
IEEE Transactions on Software Engineering
Evaluation criteria for functional specifications
ICSE '90 Proceedings of the 12th international conference on Software engineering
Case studies on testing object-oriented programs
TAV4 Proceedings of the symposium on Testing, analysis, and verification
Specification-based test oracles for reactive systems
ICSE '92 Proceedings of the 14th international conference on Software engineering
The ASTOOT approach to testing object-oriented programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
State abstraction and modular software development
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Automatically Checking an Implementation against Its Formal Specification
IEEE Transactions on Software Engineering
Modular Verification of Data Abstractions with Shared Realizations
IEEE Transactions on Software Engineering
Model Based Testing of a Network-on-Chip Component
Electronic Notes in Theoretical Computer Science (ENTCS)
Automatic testing from formal specifications
TAP'07 Proceedings of the 1st international conference on Tests and proofs
An experimental assessment of module documentation-based testing
Information and Software Technology
Checking formal specifications by testing
IW-FM'99 Proceedings of the 3rd Irish conference on Formal Methods
Hi-index | 0.01 |
Because large-scale software development is a struggle against internal program complexity, the modules into which programs are divided play a central role in software engineering. A module encapsulating a data type allows the programmer to ignore both the details of its operations, and of its value representations. It is a primary strength of program proving that as modules divide a program, making it easier to understand, so do they divide its proof. Each module can be verified in isolation, then its internal details ignored in a proof of its use. This paper describes proofs of module abstractions based on functional semantics, and contrasts this with the Alphard formalism based on Hoare logic.