We describe the Monitoring-aided Checking and Steering (MaCS) framework that assures the correctness of software execution at run-time. Checking is performed based on a formal specification of system requirements to ensure that the current system behavior is in compliance with these requirements. When the system behavior violates these requirements,steering is innvoked to correct the system. Our framework bridges the gap between formal verification and testing. The former is used to ensure the correctness of a design specification rather than an implementation, whereas the latter is used to validate an implementation. The paper presents an overview of the framework and the three scripting languages, which are used to specify what to observe from the running program, the requirements that the program should satisfy and how to steer the running program to a safe state. An important aspect of the framework is clear separation between the implementation-dependent description of monitored objects and the high-level requiremennts specification. Another saliennt feature is automatic instrumentation of executable code for monitoring and steering. This paper also describes our current prototype implemenntation n Janva.