APARTS (Grant agreement no. 251413) is a collaboration project funded by the European Commission’s 7th Framework Programme under the IAPP activity (Industry-Academia Partnerships and Pathways) of the Marie Curie Mobility Actions. The project started in December 2010 and will last four years. The collaborators are Mälardalen University, Sweden, and Tidorum Ltd, Finland.
APARTS is about the static analysis of integer computations in programs, typically embedded programs. In particular, we aim to develop analyses that are both bit-precise, which means that the integer variables have a fixed size and can thus suffer overflow and wrap-around, and relational, which means that relationships (equations, inequations) between variables are both used and generated. A more detailed description and motivation follows.
The real-time performance of embedded software is often critical for the safety and quality of the software-controlled system. Recent research has made it possible to find safe bounds on the worst-case execution time (WCET) of a program by statically analysing the machine-code program. A crucial step is the analysis of the program's computations on integer data. For instance, the program flow usually depends on such computations. Current WCET tools often require program flow constraints to be provided manually, which is cumbersome and error-prone. Better analyses of integer computations would reduce the need for such manual intervention. Such analyses must be both precise and correct.
The mathematical models for such analyses are usually formulated in terms of mathematical integers of unbounded size, while the program actually uses data stored in a fixed number of bits. This can lead to incorrect or imprecise results. We aim to improve WCET analysis by incorporating computation models that give bit-precise results reflecting the finite size of each variable and the possibility of overflow.
Most current WCET-analysis tools analyse the possible values of each variable separately, commonly producing an interval of possible values for each variable. However, the behaviour of the program, and thus its WCET, often depend strongly on the relationship between variable values. Ignoring such relationships can make the analysis fail or give over-estimated WCET bounds. We aim to develop computation models that find and use such relationships, typically expressed as affine constraints between several variables. The end goal is WCET analysis with computation models that are both relational and bit-precise. We expect that this will increase the safety, precision, and level of automation of the analysis, and lead to WCET analysis tools that are easier to apply.