In this section the reader will find a discussion of the difference
between ``hard'' real-time and ``soft'' real-time. Real-time
engineers often distinguish between hard and soft real-time. In hard
real-time, a correctly computed result delivered after its deadline is
as incorrect as an incorrectly computed result. The system is called
hard if ``the system shall not miss a deadline.'' In soft real-time
systems, it is desirable to deliver all computed results prior to
their deadlines, but a result delivered late is better than no result
at all. The system is soft if ``the system should not miss a
deadline.'' The term ``real-time'' is often misused to indicate a fast
system.
Existing real-time systems often comprise hard and soft real-time
components. When developing soft real-time systems, we have the option
of entirely ignoring traditional methodologies for the design and
analysis of real-time systems. The code is optimized and the system is
expected to run fast enough to meet the requirements. An occasional
missed deadline does not lead to catastrophic results. However, it is
desirable to use established real-time methodologies to characterize
the performance limitations under various work loads, input
conditions, applications, and architectures.
An overview of real-time design methodologies is out of the scope of
this text. The general approach is to submit the system to a
systematic analysis of its behavior. In particular, the worst case
execution times of all instructions and function calls are determined
statically thru a code analysis. The sum of these worst case times
results in the worst case execution time of the system. The design of
hard real-time systems only considers worst execution times, not
average times, since no delay can be tolerated.