Abstract :
In computer control situations, one is dealing with the use of real-time software-programs which are not the same as conventional data-processing-type programs. The most important aspect of real-time software is that in most cases, the system inputs are not fixed in time and (normally) cannot be predicted in value. Another important characteristic is that normally such real-time computer systems are executed on different processors, each controlling a separate process. Nevertheless, the processes under control interact. As a result we require a high degree of synchronisation between the different computers. Real-time systems also typically have rigorous time-constraints placed upon them. Even using the most advanced tools, one simply cannot produce software which is 100% reliable. Used correctly, many of the tools and methodologies discussed in this paper can get the software to a point where we certainly can define its reliability. But, as with hardware, one then has to say, in a given situation and with an understanding of the reliability of the inherent components, `How do we make that system safety-critical?´