12.5 Real-World Interfacing
12.5.1 Background
Many design processes pay scant attention to the handling of real-world interactions. Frequently, OO techniques treat interfacing rather dismissively, using "interface" or "boundary" classes that are peripheral to the design (no pun intended). In some ways, this view is understandable in desktop-type IT systems. However, to take the same approach for real-time embedded systems is, at best, risky; at worse, it can be extremely dangerous. Lutz [LUT93], for example, describes the experiences gained in the integration and system testing of the Voyager and Galileo spacecrafts. He found that the misunderstanding of interface requirements and the lack of detailed requirements for robustness were the primary causes of safety-related software errors. These accounted for 44% of all logged safety-related errors, as a result of the following:
- Out-of-range input values
- Non-arrival of expected inputs
- The unexpected...