Restrictions on the timings of events are called real-time constraints.
A system with real-time constraints is called a real-time system. Not merely
the performance, but also the feasibility of such systems depends on the
satisfaction of real-time constraints. Hard constraints must be satisfied for
system correctness, while the violation of soft constraints only degrades a
system. Specification of real-time constraints either requires extensions of
traditional programming languages through annotations and logic expressions,
or the use of temporal logics or some formal declarative language with temporal
constructs. Stringent restrictions on timings complicate system design and
verification. The time model can be dense or discrete, thus giving different
methods for real-time system synthesis and verification. This article surveys
the specification, design, and verification of real-time constraints and
systems. Different models are presented for handling real-time constraints,
such as object-oriented model, formal model, and dynamic model. Design
techniques for real-time hardware and for real-time software applications are
introduced and discussed. Verification techniques related to real-time
constraints, such as clock shielding, are also presented.