Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content
This paper describes a formal semantics for the Event-B specification language using the theory of institutions. We define an institution for Event-B, EVT, and prove that it meets the validity requirements for satisfaction preservation... more
This paper describes a formal semantics for the Event-B specification language using the theory of institutions. We define an institution for Event-B, EVT, and prove that it meets the validity requirements for satisfaction preservation and model amalgamation. We also present a series of functions that show how the constructs of the Event-B specification language can be mapped into our institution. Our semantics sheds new light on the structure of the Event-B language, allowing us to clearly delineate three constituent sub-languages: the superstructure, infrastructure and mathematical languages. One of the principal goals of our semantics is to provide access to the generic modularisation constructs available in institutions, including specification-building operators for parameterisation and refinement. We demonstrate how these features subsume and enhance the corresponding features already present in Event-B through a detailed study of their use in a worked example. We have impleme...
Software verification is an important approach to establishing the reliability of critical systems. One important area of application is in the field of robotics, as robots take on more tasks in both day-to-day areas and highly... more
Software verification is an important approach to establishing the reliability of critical systems. One important area of application is in the field of robotics, as robots take on more tasks in both day-to-day areas and highly specialised domains. Our particular interest is in checking the plans that robots are expected to follow to detect errors that would lead to unreliable behaviour. Python is a popular programming language in the robotics domain through the use of the Robot Operating System (ROS) and various other libraries. Python’s Turtle package provides a mobile agent, which we formally model here using Communicating Sequential Processes (CSP). Our interactive toolchain CSP2Turtle with CSP models and Python components enables plans for the turtle agent to be verified using the FDR model-checker before being executed in Python. This means that certain classes of errors can be avoided, providing a starting point for more detailed verification of Turtle programs and more compl...
Considering the large number of optimisation techniques that have been integrated into the design of the Java Virtual Machine (JVM) over the last three decades, the Java interpreter continues to persist as a significant bottleneck in the... more
Considering the large number of optimisation techniques that have been integrated into the design of the Java Virtual Machine (JVM) over the last three decades, the Java interpreter continues to persist as a significant bottleneck in the performance of bytecode execution. This paper examines the relationship between Java Runtime Environment (JRE) performance concerning the interpreted execution of Java bytecode and the effect modern compiler selection and integration within the JRE build toolchain has on that performance. We undertook this evaluation relative to a contemporary benchmark suite of application workloads, the Renaissance Benchmark Suite. Our results show that the choice of GNU GCC compiler version used within the JRE build toolchain statistically significantly affects runtime performance. More importantly, not all OpenJDK releases and JRE JVM interpreters are equal. Our results show that OpenJDK JVM interpreter performance is associated with benchmark workload. In addit...
One of the central themes in software language engineering is the specification of programming languages, and domain-specific languages, using a metamodel. One problem associated with the use of programming language metamodels, and... more
One of the central themes in software language engineering is the specification of programming languages, and domain-specific languages, using a metamodel. One problem associated with the use of programming language metamodels, and metamodels in general, is determining whether or not they are correct. In this context, the question addressed by our research is: given a programming language metamodel, how can we generate an appropriate test suite to show that it is valid
We describe recent work on the Aris system that creates and verifies new formal specifications for pre-existing source code. We describe Aris in terms of the abductive reasoning system that suggest possible specifications and then uses an... more
We describe recent work on the Aris system that creates and verifies new formal specifications for pre-existing source code. We describe Aris in terms of the abductive reasoning system that suggest possible specifications and then uses an existing deductive verifier to evaluate these creations. This paper focuses on the abduction system that creates new formal specifications by leveraging a small set of inspiring artefacts to augment a subset of candidate problems. This employs knowledge graphs to represent the raw data (i.e., source code), discovering latent similarities between graphs using a graph-matching process. Results are presented for the C# programming language with novel creations and its sister language called Code Contracts. We outline ampliative creativity, whereby newly created artefacts drive subsequent creative episodes beyond the initially perceived limitations. We also outline some recent work towards transferring specifications between the C# and Java programming...
We report on our progress-to-date in implementing a software de- velopment environment which integrates the efforts of two formal software engineering techniques: program refinement as supported by Event B and program verification as... more
We report on our progress-to-date in implementing a software de- velopment environment which integrates the efforts of two formal software engineering techniques: program refinement as supported by Event B and program verification as supported by the Spec# programming system. Our objective is to improve the usability of formal verification tools by providing a general framework for integrating these two approaches to software veri- fication. We show how the two approaches Correctness-by-Construction and Post-hoc Verification can be used in a productive way. Here, we focus on the final steps in this process where the final concrete specification is transformed into an executable algorithm. We present EB2RC,a plug-in for the Rodin platform, that reads in an Event B model and uses the control framework introduced during its refinement to generate a graphical representation of the executable algorithm. EB2RC also generates a recursive algorithm that is eas- ily translated into executable code. We illustrate our technique through case studies and their analysis.
This report documents the program and the outcomes of Dagstuhl Seminar 14171 “Evaluating Software Verification Systems: Benchmarks and Competitions”. The seminar brought together a large group of current and future competition organizers... more
This report documents the program and the outcomes of Dagstuhl Seminar 14171 “Evaluating Software Verification Systems: Benchmarks and Competitions”. The seminar brought together a large group of current and future competition organizers and participants, benchmark maintainers, as well as practitioners and researchers interested in the topic. The seminar was conducted as a highly interactive event, with a wide spectrum of contributions from participants, including talks, tutorials, posters, tool demstrations, hands-on sessions, and a live competition. Seminar April 21–25, 2014 – http://www.dagstuhl.de/14171 1998 ACM Subject Classification D.2.4 Software/Program Verification, F.3.1 Specifying and Verifying and Reasoning about Programs
The clams are first subjected to a shearing action in the first unit which is a rotating perforated drum having inwardly extending spokes with a rotating rotor disposed within the drum and off-set with respect to the drum axis. The rotor... more
The clams are first subjected to a shearing action in the first unit which is a rotating perforated drum having inwardly extending spokes with a rotating rotor disposed within the drum and off-set with respect to the drum axis. The rotor has outwardly extending spokes in intermeshing relationship with the drum spokes. In the first treating unit, the clams are partitioned into uneviscerated tongues, muscles, straps, siphons and occasional spines and then conveyed onto a classifier which separates the tongues from the remaining parts of the clams and discharges the spines to waste. The uneviscerated tongues are then fed into an eviscerator, which is identical in construction to the first unit but is operated at higher relative rotation between the drum and the rotor, where the tongues are flexed and subjected to shearing forces to expel the viscera. The eviscerated tongues and the viscera are introduced into a rotating reel provided with openings of sufficient size to discharge the vi...
The refinement-based approach to developing software is based on thecorrect-by-construction paradigm were software systems are constructed via the step-by-step refinement of an initial high-level specification into a final concrete... more
The refinement-based approach to developing software is based on thecorrect-by-construction paradigm were 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...
Research Interests:
Abstract: 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),... more
Abstract: 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 ...
Many software verification tools use the design-by-contract approach to annotate programs with assertions so that tools, such as compilers, can generate the proof obligations required to verify that a program satisfies its specification.... more
Many software verification tools use the design-by-contract approach to annotate programs with assertions so that tools, such as compilers, can generate the proof obligations required to verify that a program satisfies its specification. Theorem provers and SMT solvers are then used to, often automatically, discharge the proof obligations that have been generated. While verification tools are becoming more powerful and more popular, the major difficulties facing their users concern learning how to interact efficiently with these tools. These ...
VerifyThis 2018 was a two-day program verification competition which took place on April 14 and 15, 2018 in Thessaloniki, Greece as part of the European Joint Conferences on Theory and Practice of Software (ETAPS 2018). It was the sixth... more
VerifyThis 2018 was a two-day program verification competition which took place on April 14 and 15, 2018 in Thessaloniki, Greece as part of the European Joint Conferences on Theory and Practice of Software (ETAPS 2018). It was the sixth instalment in the VerifyThis competition series. This article provides an overview of the VerifyThis 2018 event, the challenges that were posed during the competition, and a high-level overview of the solutions to these challenges. It concludes with the results of the competition
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... more
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 ...
1 Abstract Perfect Developer is an environment for developing software systems and verifying their correctness. The developer supports programming with the object oriented language Perfect. A general overview of the syntax of Perfect is... more
1 Abstract Perfect Developer is an environment for developing software systems and verifying their correctness. The developer supports programming with the object oriented language Perfect. A general overview of the syntax of Perfect is provided. Interesting features of the language is highlighted and discussed. A small example is developed in Perfect illustrating many of the features of the language.
Both PhD studentships are funded through the Research Frontiers Programme of Science Foundation Ireland. The project investigates the formal foundations of model-oriented engineering; thus, some experience in formal methods or category... more
Both PhD studentships are funded through the Research Frontiers Programme of Science Foundation Ireland. The project investigates the formal foundations of model-oriented engineering; thus, some experience in formal methods or category theory is highly desirable.
This report documents the program and the outcomes of Dagstuhl Seminar 14171 "Evaluating Software Verification Systems: Benchmarks and Competitions". The seminar brought together a large group of current and future competition... more
This report documents the program and the outcomes of Dagstuhl Seminar 14171 "Evaluating Software Verification Systems: Benchmarks and Competitions". The seminar brought together a large group of current and future competition organizers and participants, benchmark maintain-ers, as well as practitioners and researchers interested in the topic. The seminar was conducted as a highly interactive event, with a wide spectrum of contributions from participants, including talks, tutorials, posters, tool demstrations, hands-on sessions, and a live competition. License Creative Commons BY 3.0 Unported license © The seminar aimed to advance comparative empirical evaluation of software verification systems by bringing together current and future competition organizers and participants, benchmark maintainers, as well as practitioners and researchers interested in the topic. The objectives of the seminar were to (1) advance the technical state of comparative empirical evaluation of ver...
Perfect Developer is a software tool that supports the formal development of object-oriented programs by refine-ment, including formal verification of code. It is built around a single language that supports both specification and... more
Perfect Developer is a software tool that supports the formal development of object-oriented programs by refine-ment, including formal verification of code. It is built around a single language that supports both specification and implementation. We critically examine how Perfect De-veloper supports programming by refinement, focusing on three refinement techniques: algorithm refinement, data re-finement and delta refinement. In particular we examine the extent to which Perfect Developer provides formal verifica-tion for these techniques. We assess it as a tool for software construction and compare it with related tools. 1.
Abstract. In this paper we describe the use of ATL as part of a tool chain that calculates coverage measures for UML class diagrams. The tool chains uses the USE tool as a parser and validator for UML diagrams, and represents the diagrams... more
Abstract. In this paper we describe the use of ATL as part of a tool chain that calculates coverage measures for UML class diagrams. The tool chains uses the USE tool as a parser and validator for UML diagrams, and represents the diagrams internally using the EMF framework. 1 Introduction and Related Work Typically, test suites for source code can be measured in terms of their coverage of code features, such as statement, condition or decision coverage. In the context of Model Driven Engineering (MDE), a considerable body of research exists in the area of model-based testing [1, 2], and a number of coverage criteria have
Problem-based Learning (PBL) has proved itself as a successful teaching and learning environment in the medical field, and has slowly become the preferred teaching and learning method in other disciplines. In this report we look at the... more
Problem-based Learning (PBL) has proved itself as a successful teaching and learning environment in the medical field, and has slowly become the preferred teaching and learning method in other disciplines. In this report we look at the learning theories that have influenced PBL and investigate the use of PBL in computer science. We extend the boundaries of PBL and software engineering education with a proposal that fully integrates PBL into a computer science and software engineering degree structure. The objective of this proposal is to produce graduates who can successfully transfer their knowledge and skills into practical situations in new domains. 1.
Many systems are constructed without the use of modeling and visualization artifacts, due to constraints imposed by deadlines or a shortage of manpower. Nevertheless, such systems might profit from the visualization provided by diagrams... more
Many systems are constructed without the use of modeling and visualization artifacts, due to constraints imposed by deadlines or a shortage of manpower. Nevertheless, such systems might profit from the visualization provided by diagrams to facilitate maintenance of the constructed system. In this paper, we present a tool, Reveal, to reverse engineer a class diagram from the C + + source code representation of the software. In Reveal, we remain faithful to the UML standard definition of a class diagram wherever possible. However, to accommodate the vagaries of the C + + language, we offer some extensions to the standard notation to include representations for namespaces, stand-alone functions and friend functions. We compare our representation to three other tools that reverse-engineer class diagrams, for both compliance to the UML standard and for their ability to faithfully represent the software system under study.
This paper presents a technique for translating common comprehension expressions (sum, count, product, min, and max) into verification conditions that can be tackled by two first-order SMT solvers. The technique has been implemented in... more
This paper presents a technique for translating common comprehension expressions (sum, count, product, min, and max) into verification conditions that can be tackled by two first-order SMT solvers. The technique has been implemented in the Spec# program verifier. The paper also reports on the experience of using Spec# to verify several challenging programming examples drawn from a textbook by Dijkstra and Feijen.
Many systems are constructed without the use of modeling and visualization artifacts, due to constraints imposed by deadlines or a shortage of manpower. Nevertheless, such systems might profit from the visualization provided by diagrams... more
Many systems are constructed without the use of modeling and visualization artifacts, due to constraints imposed by deadlines or a shortage of manpower. Nevertheless, such systems might profit from the visualization provided by diagrams to facilitate maintenance of the constructed system. In this paper, we present a tool, Reveal, to reverse engineer a class diagram from the C + + source code representation of the software. In Reveal, we remain faithful to the UML standard definition of a class diagram wherever possible. However, to accommodate the vagaries of the C + + language, we offer some extensions to the standard notation to include representations for namespaces, stand-alone functions and friend functions. We compare our representation to three other tools that reverse-engineer class diagrams, for both compliance to the UML standard and for their ability to faithfully represent the software system under study.
Perfect is an Object Oriented programming language that is supported by the Perfect Developer software development tool. The paper presents the techniques that Perfect supports for the specification and implementation of software. The... more
Perfect is an Object Oriented programming language that is supported by the Perfect Developer software development tool. The paper presents the techniques that Perfect supports for the specification and implementation of software. The executable code produced by Perfect is also discussed. A guideline to the techniques of software development is provided by the paper, illustrating the many software development mechanisms that are supported by Perfect and the Perfect Developer tool. 2
Abstract. In this paper, we used a simple metric (i.e. Lines of Code) to measure the complexity involved in software verification and software testing. The goal is then, to argue for software verification over software testing, and... more
Abstract. In this paper, we used a simple metric (i.e. Lines of Code) to measure the complexity involved in software verification and software testing. The goal is then, to argue for software verification over software testing, and motivate a discussion of how to reduce the complexity involved in software verification. We propose to reduce this complexity by translating the software to a simple intermediate representation which can be verified using an efficient verifier, such as Boogie [2].
In this paper we describe the use of ATL as part of a tool chain that calculates coverage measures for UML class diagrams. The tool chains uses the USE tool as a parser and validator for UML diagrams, and represents the diagrams... more
In this paper we describe the use of ATL as part of a tool chain that calculates coverage measures for UML class diagrams. The tool chains uses the USE tool as a parser and validator for UML diagrams, and represents the diagrams internally using the EMF framework.
Problem-based Learning (PBL) has proved itself as a successful teaching and learning environment in the medical field, and has slowly become the preferred teaching and learning method in other disciplines. In this report we look at the... more
Problem-based Learning (PBL) has proved itself as a successful teaching and learning environment in the medical field, and has slowly become the preferred teaching and learning method in other disciplines. In this report we look at the learning theories that have influenced PBL and investigate the use of PBL in computer science. We extend the boundaries of PBL and software engineering education with a proposal that fully integrates PBL into a computer science and software engineering degree structure. The objective of this proposal is to produce graduates who can successfully transfer their knowledge and skills into practical situations in new domains.
At the heart of most technological advancements is a network of processors executing code and consuming energy. Understanding those systems’ energy consumption profiles provides optimisation possibilities and thus contributes to... more
At the heart of most technological advancements is a network of processors executing code and consuming energy. Understanding those systems’ energy consumption profiles provides optimisation possibilities and thus contributes to strategies for reducing energy consumption in general. This paper assesses the power consumption characteristics of a highly competitive low cost, small form factor development board (the Raspberry Pi4 model B), powered with the minimal load associated with its bare-metal configuration and the related impact on baseline power consumption. We also consider the load associated with an out-of-box operating system, running at several underclocking frequency scaling levels and the associated impact on baseline power consumption. Our experimental set-up consists of integrating an INA219 high-side current sense amplifier for the capturing of power, current, and voltage measurements; and a Teensy 4.0 microcontroller for sampling. Overall, our results indicate statis...
We propose the development of an institution-based framework within which software models can be combined not only at different levels of abstraction but across multiple formalisms. Event-B is an industrial-strength formalism that... more
We propose the development of an institution-based framework within which software models can be combined not only at different levels of abstraction but across multiple formalisms. Event-B is an industrial-strength formalism that supports refinement, we envisage that the construction of an institution for Event-B, EVT, will not only increase the modularity of Event-B specifications but also provide a foundation for the interoperability of Event-B with other formalisms.
Textbooks on program verification make use of simple programs in mathematical domains as illustrative examples. Mechanical verification tools can give students a quicker way to learn, because the feedback cycle can be reduced from days... more
Textbooks on program verification make use of simple programs in mathematical domains as illustrative examples. Mechanical verification tools can give students a quicker way to learn, because the feedback cycle can be reduced from days (waiting for hand-proofs to be graded by the teaching assistant) to seconds or minutes (waiting for the tool’s output). However, the mathematical domains that are so familiar to students (for example, sum-comprehensions) are not directly supported by first-order SMT solvers. This paper presents a technique for translating common comprehension expressions ( , , , , and ) into verification conditions that can be tackled by a first-order SMT solver. The technique has been implemented in the Spec# program verifier. The paper also reports on the experience of using Spec# to verify several challenging programming examples drawn from a textbook by Dijkstra and Feijen.

And 64 more