In real-time systems, actions have to be completed within certain time periods. It is a falure of a system to react within the time constraints, even if no computational errors occur. Such a failure may be disastrous, even life-threatening.
Problems arise because it is difficult to determine the worst-case sequence of events.
It is possible to use code-coverage analysis to ensure that each line of code has been executed at least once, and each conditional test has been executed on both branches. CDO provides a very obvious point for validating timing constraints. Because the sending of a message involves at least a thread switch, and possibly an interprocessor message, the cost of validating, at the Server end, that the timing promise has been kept, is tiny. Each Object is a Client of Objects below it and a Server to Objects above it. When testing whether it meets its own promises as a Server, the Object should use not the actual elapsed time for a call to a Server Object, but the advertised worst case.