Contract-based Specification and Verification of Dataflow Programs
Jonatan Wiik Pontus Boström
Åbo Akademi University, Finland
Nordic Workshop on Programming Theory 2015
1 / 20
Contract-based Specification and Verification of Dataflow Programs - - PowerPoint PPT Presentation
Contract-based Specification and Verification of Dataflow Programs Jonatan Wiik Pontus Bostrm bo Akademi University, Finland Nordic Workshop on Programming Theory 2015 1 / 20 Introduction Modern software systems are increasingly
1 / 20
◮ Increased number of processer cores, heterogenous systems etc.
◮ New programming paradigms have been proposed to solve this
◮ A dataflow program consists of a network actors, communicating
◮ Exploits parallelism, as actors can execute concurrently whenever
2 / 20
◮ There are typically fewer processing units than actors, which
◮ Different techniques to decrease the number of runtime
3 / 20
◮ Contracts refer to functional specifications, consisting of
◮ Only aided by annotations in the source code ◮ Based on translation to the Boogie intermediate verification
◮ The use of contracts can improve both functional quality and
4 / 20
5 / 20
◮ Has received much recent attention within the signal processing
◮ A subset of CAL has been standardised by ISO/IEC MPEG as
6 / 20
◮ An actor executes by firing an eligible action ◮ An action is eligible depending on the tokens available on the
◮ Actions consume/produce a predefined amount of tokens on the
◮ Actions written in a simple imperative programming language
◮ Networks are also actors 7 / 20
8 / 20
8 / 20
8 / 20
9 / 20
10 / 20
11 / 20
◮ Standard requires and ensures annotations
12 / 20
◮ Networks in pure CAL do not have actions, but we use them here
◮ Used to express the relationship between data on different
◮ Required to hold during execution of a network action
13 / 20
14 / 20
14 / 20
◮ Designed to bridge the gap between programs with specifications
◮ The Boogie verifier generates verification conditions and
15 / 20
◮ Assume that the invariant, guard and precondition hold ◮ Check that the postcondition and invariant hold after executing
16 / 20
◮ Assume that C hold and check that C hold again after executing
◮ If no action can be fired, the postcondition Q and the network
17 / 20
18 / 20
18 / 20
18 / 20
◮ To make the approach usable in practice, channel invariants
◮ We plan to investigate automatic inference of invariants for
◮ The approach is now limited to static networks ◮ We plan to investigate if the approach can be extended to also
19 / 20
20 / 20