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
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inheritance: From Code Reuse to Reasoning Reuse
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
A proof outline logic for object-oriented programming
Theoretical Computer Science - Formal methods for components and objects
Slicing techniques for verification re-use
Theoretical Computer Science - Formal methods for components and objects
Contract-Based Verification for Aspect-Oriented Refactoring
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
Delta-oriented programming of software product lines
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
Synchronizing model and program refactoring
SBMF'10 Proceedings of the 13th Brazilian conference on Formal methods: foundations and applications
Incremental reasoning with lazy behavioral subtyping for multiple inheritance
Science of Computer Programming
Verifying traits: a proof system for fine-grained reuse
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
Approaches for mastering change
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Reuse in software verification by abstract method calls
CADE'13 Proceedings of the 24th international conference on Automated Deduction
Hi-index | 0.00 |
An intrinsic property of real world software is that it needs to evolve. The software is continuously changed during the initial development phase, and existing software may need modifications to meet new requirements. To facilitate the development and maintenance of programs, it is an advantage to have programming environments which allow the developer to alternate between programming and verification tasks in a flexible manner and which ensures correctness of the final program with respect to specified behavioral properties. This paper proposes a formal framework for the flexible development of object-oriented programs, which supports an interleaving of programming and verification steps. The motivation for this framework is to avoid imposing restrictions on the programming steps to facilitate the verification steps, but rather to track unresolved proof obligations and specified properties of a program which evolves. A proof environment connects unresolved proof obligations and specified properties by means of a soundness invariant which is maintained by both programming and verification steps. Once the set of unresolved obligations is empty, the invariant ensures the soundness of the overall program verification.