This paper summarizes our experience in communicating the elements of
reasoning about correctness, and the central role of formal specifications in
reasoning about modular, component-based software using a language and an
integrated Web IDE designed for the purpose. Our experience in using such an
IDE, supported by a 'push-button' verifying compiler in a classroom setting,
reveals the highly iterative process learners use to arrive at suitably
specified, automatically provable code. We explain how the IDE facilitates
reasoning at each step of this process by providing human readable verification
conditions (VCs) and feedback from an integrated prover that clearly indicates
unprovable VCs to help identify obstacles to completing proofs. The paper
discusses the IDE's usage in verified software development using several
examples drawn from actual classroom lectures and student assignments to
illustrate principles of design-by-contract and the iterative process of
creating and subsequently refining assertions, such as loop invariants in
object-based code.Comment: In Proceedings F-IDE 2015, arXiv:1508.0338
RESOLVE is an integrated language that combines imperative programming and mathematical specifications for full functional verification of component-based programs. From a researcher's perspective, this paper summarizes the elements of RESOLVE's web IDE that includes a verifying compiler. We use a variety of in-language examples to demonstrate the following: Extensible mathematical units that contain definitions and results, higher-order specifications of generic components that use those mathematical units, alternative implementations of specifications, and automated generation of verification conditions and proofs for implementation correctness. While verification and research are the focus of this paper, it's worth mentioning that the compiler translates RESOLVE code to Java (or C) for execution, and has been utilized in a variety of computer science classes at multiple institutions over the last five years.
This work aims to show through a detailed case study that scaling up automated verification to larger non-trivial data structures is not only possible, but when combined with appropriate tool support, can be made more comprehensible and practicable to users in a variety of settings, including the undergraduate curriculum. The study involves an interplay of multiple components annotated with formal interface contracts and the components are all designed to be modular, reusable, and amenable to automated verification and analysis. The components are built using a formal integrated development environment (F-IDE). The plan is to evaluate the F-IDE in an upper-level undergraduate software engineering course in the Spring semester at Clemson University.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.