|Run-time Monitoring and Checking (MaC)|
As the size of software grows, it becomes more difficult to test or verify the correctness of a system. Continuously monitoring of a running system is a complementary approach to increase the assurance of correct execution. We have developed a Monitoring and Checking (MaC) framework to monitor and check running systems against a formal requirement specification. We have also implemented a prototype of the MaC framework for monitoring and checking Java and C programs.
Quite often the requirement description is given in abstract high-level and system implementation is given in the very detailed level. MaC architecture has two layer scripting languages for bridging this abstraction gap in order to check correct execution of the system based on a high level requirement description. A monitoring script maps low level information extracted from the execution of system to the high level events in terms of which the requirement description is written.
One important question here is what to do when MaC detects violation in a system. We have implementing a "steering" component, which, upon detecting the violation, automatically steers the system back to a safe state.
The current activities include: