Runtime verification is a new field of research that is concerned with
languages, algorithms, and environments for monitoring the execution
of programs. An offline monitor analyzes stored program traces, which
is useful for testing large systems before deployment. An online
monitor processes the trace while it is being generated. Online
monitoring is used to detect violations of the specification when the
system is in operation, so that they can be handled before they
translate into observable and cascading failures, and to adaptively
optimize system performance.