Summary

As more and more systems in our everyday environment contain major software parts, and we are depending on such systems more and more (we are counting on them), the importance of the dependability of the embedded software is increasing. Unfortunately, there are still very few generally applicable methods for software verification, i.e., the ensurance of its correct functioning under all circumstances. Reasons for this are, one the one hand, the degree of expertise necessary for existing verification methods, and on the other, their poor embedding in the average software development trajectory. An important practical objection is, moreover, that current verification methods typically assume the existence of a sufficiently detailed and precise model of system behaviour. In practice such models hardly ever exist, and the time and expertise to construct them is missing. Examples of methods that are being used widely in practice are therefore typing and testing, neither of which necessarily depends on the existence of models.

In this procect we investigate a new way of automatically verifying software on the basis of code, without assuming a predefined model. The technique used is static analysis, a general principle that encompasses typing; the new aspect is the use of graph transformations to capture the effect of the software. Graphs offer a natural model for the behaviour of dynamic software systems, and at the same time offer the basis for a generic form of static analysis, which can be driven by the properties to be verified.