Results 1 -
4 of
4
Program checking with less hassle
, 2013
"... Abstract. The simple and often imprecise specifications that programmers may write are a significant limit to a wider application of rigorous program verification techniques. Part of the reason why non-specialists find writing good specification hard is that, when verification fails, they receive li ..."
Abstract
-
Cited by 4 (4 self)
- Add to MetaCart
(Show Context)
Abstract. The simple and often imprecise specifications that programmers may write are a significant limit to a wider application of rigorous program verification techniques. Part of the reason why non-specialists find writing good specification hard is that, when verification fails, they receive little guidance as to what the causes might be, such as implementation errors or inaccurate specifications. To address these limitations, this paper presents two-step verification, a technique that combines implicit specifications, inlining, and loop unrolling to provide improved user feedback when verification fails. Two-step verification performs two independent verification attempts for each program element: one using standard modular reasoning, and another one after inlining and unrolling; comparing the outcomes of the two steps suggests which elements should be improved. Two-step verification is implemented in AutoProof, our static verifier for Eiffel programs integrated in EVE (the Eiffel Verification Environment) and available online.
Unifying Configuration Management with Merge Conflict Detection and Awareness Systems
"... Abstract—As software development becomes an increasingly collaborative effort, traditional development tools have to be extended to support seamless collaboration while minimizing the chances of conflicts. This paper describes CloudStudio, a collaboration framework that integrates a fine-grained sof ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
(Show Context)
Abstract—As software development becomes an increasingly collaborative effort, traditional development tools have to be extended to support seamless collaboration while minimizing the chances of conflicts. This paper describes CloudStudio, a collaboration framework that integrates a fine-grained software configuration management model and a real-time awareness system. CloudStudio’s configuration management operates transparently by automatically sharing the changes of developers working on the same project; the real-time awareness system allows for dynamic views on the project selectively including or excluding other developers ’ changes. With this tight integration, conflicts are prevented in many cases, while leaving individual developers free to experiment without blocking others. The paper also describes a freely available prototype web-based implementation of CloudStudio and a case study that demonstrates the usability of the approach for collaborative software development. I.
AutoProof: Auto-active Functional Verification of Object-oriented Programs
"... Abstract. Auto-active verifiers provide a level of automation intermediate be-tween fully automatic and interactive: users supply code with annotations as in-put while benefiting from a high level of automation in the back-end. This paper presents AutoProof, a state-of-the-art auto-active verifier f ..."
Abstract
- Add to MetaCart
(Show Context)
Abstract. Auto-active verifiers provide a level of automation intermediate be-tween fully automatic and interactive: users supply code with annotations as in-put while benefiting from a high level of automation in the back-end. This paper presents AutoProof, a state-of-the-art auto-active verifier for object-oriented se-quential programs with complex functional specifications. AutoProof fully sup-ports advanced object-oriented features and a powerful methodology for framing and class invariants, which make it applicable in practice to idiomatic object-oriented patterns. The paper focuses on describing AutoProof’s interface, de-sign, and implementation features, and demonstrates AutoProof’s performance on a rich collection of benchmark problems. The results attest AutoProof’s com-petitiveness among tools in its league on cutting-edge functional verification of object-oriented programs. 1 Auto-active Functional Verification of Object-oriented Programs Program verification techniques differ wildly in their degree of automation and, cor-respondingly, in the kinds of properties they target. One class of approaches—which
Software Tools for Technology Transfer manuscript No. (will be inserted by the editor) AutoProof Meets Some Verification Challenges
"... Abstract AutoProof is an automatic verifier for func-tional properties of programs written in Eiffel. This pa-per illustrates some of AutoProof’s capabilities when tackling the three challenges of the VerifyThis veri-fication competition held at FM 2012, as well as on three other problems proposed i ..."
Abstract
- Add to MetaCart
(Show Context)
Abstract AutoProof is an automatic verifier for func-tional properties of programs written in Eiffel. This pa-per illustrates some of AutoProof’s capabilities when tackling the three challenges of the VerifyThis veri-fication competition held at FM 2012, as well as on three other problems proposed in related events. Auto-Proof’s design focuses on making it practically appli-cable with reduced user effort. Tackling the challenges demonstrates to what extent this design goal is met in the current implementation: while some of AutoProof’s current limitations prevent us from verifying the com-plete specification of the prefix sum and binary search tree algorithms, we can still prove some partial proper-ties on interesting special cases, but with the advantage of requiring little or no specification. 1 Verification Benchmarks Can Shape the Field For better or worse, benchmarks shape a field [16]. Pat-terson’s compelling analysis of the coming of age of computer architecture seems to fit the progress of for-mal software verification too – possibly with a couple-of-decade time shift. As verification techniques left the realm of pure theory and became implementable and usable, they often reported incomparable results: dif-ferent tools that work on different languages and solve different problems (such as extended static checking, functional correctness, shape analysis, and so on). Verification competitions and challenges [9,4,5,7] can help in this regard: by providing benchmarks for