144 research outputs found
On the organisation of program verification competitions
In this paper, we discuss the challenges that have to be addressed when organising program verification competitions. Our focus is on competitions for verification systems where the participants both formalise an informally stated requirement and (typically) provide some guidance for the tool to show it. The paper draws its insights from our experiences with organising a program verification competition at FoVeOOS 2011. We discuss in particular the following aspects: challenge selection, on-site versus online organisation, team composition and judging. We conclude with a list of recommendations for future competition organisers
Metamodel Instance Generation: A systematic literature review
Modelling and thus metamodelling have become increasingly important in
Software Engineering through the use of Model Driven Engineering. In this paper
we present a systematic literature review of instance generation techniques for
metamodels, i.e. the process of automatically generating models from a given
metamodel. We start by presenting a set of research questions that our review
is intended to answer. We then identify the main topics that are related to
metamodel instance generation techniques, and use these to initiate our
literature search. This search resulted in the identification of 34 key papers
in the area, and each of these is reviewed here and discussed in detail. The
outcome is that we are able to identify a knowledge gap in this field, and we
offer suggestions as to some potential directions for future research.Comment: 25 page
Transforming EVENT B Models into Verified C# Implementations
The refinement-based approach to developing software is based on the correct-by-construction
paradigm where software systems are constructed via the step-by-step refinement of an initial high-level
specification into a final concrete specification. Proof obligations, generated during this process
are discharged to ensure the consistency between refinement levels and hence the system’s overall
correctness.
Here, we are concerned with the refinement of specifications using the EVENT B modelling language
and its associated toolset, the RODIN platform. In particular, we focus on the final steps of
the process where the final concrete specification is transformed into an executable algorithm. The
transformations involved are (a) the transformation from an EVENT B specification into a concrete
recursive algorithm and (b) the transformation from the recursive algorithm into its equivalent iterative
version. We prove both transformations correct and verify the correctness of the final code in a
static program verification environment for C# programs, namely the Spec# programming syste
Testing Guidelines for Student Projects
The guidelines in this report provide a basis for students to test their software projects. It is
not intended to be a complete overview of all testing techniques, but provides a framework to
guide students in the verification and validation of their work. The focus is on the testing of
executable code; code reviews, requirements validation, and design verification are not
addressed in this document, but are as important in the development of high quality software
Implementing the Verified Software Initiative Benchmarks using Perfect Developer
This paper describes research on the Perfect
Developer tool and its associated programming
language, Perfect. We focus on verification
benchmarks that have been presented as part of
the Verified Software Initiative (VSI), proposing
their specification, implementation and verification
in the Perfect language and the Perfect
Developer tools. To the best of our knowledge
this is the first attempt to meet these benchmarks
using the Perfect Developer tools. Our
aim is to implement the benchmarks and analyze
how well the Perfect language can be used
to express these benchmarks. In this paper we
present the first benchmark, its specification
and its verification in the Perfect Developer tool
suite
Introducing the Perfect Language. Department of Computer Science, Technical Report Series. NUIM-CS-TR-2005-06
Perfect Developer is an environment that supports software development by providing
a verification of the softwares correctness. Software is constructed with
the Perfect language, an Object Oriented programming language that encompasses
both specification and implementation features. This paper provides a
general overview of the syntax of Perfect, describing a class template for Perfect.
The novel features of the language are highlighted to document the uniqueness of
Perfect. A small example is developed toward the end of the paper, to illustrate
the process of software development on a small scale
Tactics for Transformational Programming
This paper discusses the relationship between transformational programming and theorem proving. It illustrates
the use of the theorem proving environment as a basis for a program construction tool DEBATE 1 (Deduction Based
Transformational Environment) which is under construction in University College Dublin.
Using a theorem proving framework directly would require the user to be familiar with theorem proving details.
The tool user should only be concerned with transformational programming steps and not with theorem proving
activities. Therefore a layer of transformational tactics are discussed and presented. These tactics consist of the
application of theoremproving tactics. However, they ensure that the user’s only interaction with DEBATE are design
decisions required within the transformational programming paradigm. The N Queens problem is used throughout
the paper to demonstrate how the Isabelle theorem prover is adapted by a transformation tactic layer so that it may be
used as a program construction tool
Data Refinement in Object-Oriented Verification
Data refinement is a special instance of refinement where a specification is refined by replacing the data type used in the specification. The theory of data refinement guarantees that this replacement does not adversely affect the functional behaviour of the programs that use these specifications.
Object-oriented programming languages such as JML and Spec# support the specification and verification of object-oriented programs. We research their capabilities, identifying their strengths and weaknesses from both a specification and a tool-support point of view. This leads us to the conclusion that object-oriented specification languages should support a view of objects that abstracts away from the implementation details. We examine the specification and verification of programs that are written in this way, making use of existing language features, so that data refinements can be verified using existing verification tools.
We propose a framework for the specification and verification of modular data refinement within an object-oriented environment. Objects are specified in terms of one data type and implemented in terms of another. Clients who interact with these objects are never concerned with the underlying implementation details as they interact directly with the abstract specification. A proof-of-concept tool is developed to demonstrate the viability and effectiveness of our proposed framework. This tool takes the form of an application that checks whether or not a program conforms to our framework for the modular data refinement of object-oriented programs
Proceedings Fifth Workshop on Formal Integrated Development Environment
F-IDE 2019 is the fifth international workshop on Formal Integrated Development Environment, held on October 7, 2019 in Porto, Portugal, as part of the FM 2019 World Congress on Formal Methods.
High levels of safety, security and also privacy standards require the use of formal methods to specify and develop compliant software (sub)systems. Any standard comes with an assessment process, which requires a complete documentation of the application in order to ease the justification of design choices and the review of code and proofs. Ideally, an F-IDE dedicated to such developments should comply with several requirements. The first one is to associate a logical theory with a programming language, in a way that facilitates the tightly coupled handling of specification properties and program constructs. The second is to offer a language/environment simple enough to be usable by most developers, even if they are not fully acquainted with higher-order logics or set theory, in particular by making development of proofs as easy as possible. The third is to offer automated management of application documentation. It may also be expected that developments done with such an F-IDE are reusable and modular. Tools for testing and static analysis may be embedded within F-IDEs to support the assessment process. The workshop is a forum of exchange on different features related to F-IDEs.
We solicited several kinds of contributions: research papers providing new concepts and results, position papers and research perspectives, experience reports, tool presentations. The workshop was open to contributions on all aspects of a system development process, including specification, design, implementation, analysis and documentation. The current edition is a one-day workshop with eight communications, offering a large variety of approaches, techniques and tools. Each submission was reviewed by three reviewers.
We also had the honor of welcoming Wolfgang Ahrendt, from Chalmers University of Technology, who gave a keynote entitled What is KeY's key to software verification?info:eu-repo/semantics/publishedVersio
Dafny meets the Verification Benchmarks Challenge
A suite of verification benchmarks for software verification tools and
techniques, presented at VSTTE 2008 [11], provides an initial catalogue of benchmark
challenges for the Verified Software Initiative. This paper presents solutions
to these eight benchmarks using the language and verifier Dafny. A Dafny program
includes specifications, code, inductive invariants, and termination metrics.
Each of the eight programs is fed to the Dafny verifier, which without further user
interaction automatically performs the verification in a few seconds
- …