Real Time Vs Mission Critical

Many programming texts (written by folks who ought to know better) confuse the concepts of real-time software with mission-critical.

They are not in any sense the same.

RealTime software is software which fails if a timing deadline is not met.

MissionCritical software is software whose failure might cause catastrophic consequences (such as someone dying, damage to property, severe financial losses, etc.)

While the two frequently go hand-in-hand (much real-time software is also mission-critical); the two concepts are orthogonal.


Hard real-time systems must not miss a deadline. "A late answer is a wrong answer". In certain cases, an early answer is also a wrong answer. Generally, the deadlines are not negotiable - they are often determined by the physics of the other objects involved. An example of hard real-time is an air bag for a car.

Soft real-time systems can handle missing some deadlines (or their deadlines are soft), although their functionality does depend on speedy processing. An example of soft real-time is echoing input from a keyboard. Slow echoing is annoying, but the result is still correct.

Non-real-time systems have no absolute deadlines, although issues like performance and throughput may still be important.

If performance or throughput are important, the system is at least soft real-time. There are really very few systems that are non-real-time -- the user expects an answer within a "reasonable" amount of time. Usually, that "reasonable" amount of time is so much longer than the computer really needs that you can implement the software without resorting to real-time techniques.

Really? Many "overnight batch" programs are (or were) designed with performance and throughput in mind, and the user expects an answer within a "reasonable" amount of time (8 to 16 hours), but I've never heard them described as real-time! This discussion seems to have already taken place on RealTime. RefactorMe

It should be noted that many design techniques designed for high throughput are inappropriate for real-time, and vice versa. For high-throughput applications, it is not uncommon to see (non-deterministic) caching strategies employed, for example -- strategies which improve average performance (but make worst-case worse). Such strategies are a no-no in a hard realtime system; where one tries to make things deterministic as possible, and is generally interested in worst-case performance. The importance of average-case analysis vs worst-case analysis is a key differentiator between real-time and non-real-time. The worst-case query time for OracleDatabase, for instance, is something that most folks don't care about (and Oracle doesn't specify). The average-case query time (and the number of queries per second possible on a given system), OTOH, is a BannerSpec? for any RDBMS.

Actually, real time design starts with the worst case and moves to the average from there. If there is a hard real time limitation (this rotary encoder must be read before the count exceeds 127 at this speed) then it won't matter if the system is faster overall but fails to meet the worst case. The system is a failure. Real time design starts with these considerations foremost.


Does the term "mission-critical" really have to imply catastrophic consequences when it fails? I thought it just meant that correct operation was necessary for the users to be able to perform their mission, whatever that is. A printer component could be mission critical if that was the only printer available to an organization that makes its money by printing things. An X-Box could be mission-critical if you are seeking to entertain some kids.

Any software can be considered mission-critical. It's up to the "mission" to determine what is "critical" and to manage its risk accordingly. Whether the "mission" should use software designed with a radically different perception of criticality in mind is an entirely separate question.


See: RealTime

CategoryTime, CategoryEmbeddedSystems?


EditText of this page (last edited April 27, 2010) or FindPage with title or text search