How to verify concurrent Ada programs: the application of model checking

Ada 95 is an expressive concurrent programming language with which it is possible to build complex multi-tasking applications. Much of the complexity of these applications stem from the interactions between the tasks. This paper argues that model checking tools are now mature enough that they can be used by engineers to verify the logical correctness of their tasking algorithms. The paper illustrates the approach by showing the correctness of an Ada implementation of the atomic action protocol.

[1]  Wang Yi,et al.  Uppaal in a nutshell , 1997, International Journal on Software Tools for Technology Transfer.

[2]  Edmund M. Clarke,et al.  Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic , 1981, Logic of Programs.

[3]  D. B. Lomet Process structuring, synchronization, and recovery using atomic actions , 1977 .

[4]  Wang Yi,et al.  Time Abstracted Bisimiulation: Implicit Specifications and Decidability , 1993, MFPS.

[5]  Rajeev Alur,et al.  Model-checking for real-time systems , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[6]  Brian Randell,et al.  Reliability Issues in Computing System Design , 1978, CSUR.

[7]  Alan Burns,et al.  Implementing Atomic Actions in Ada 95 , 1997, IEEE Trans. Software Eng..