Real-Time Software Components

Real-time systems are computer systems in which the correctness of the systems depends not only on the logical correctness of the computations performed but also upon time factors. In such systems it is essential that the timing constraints are always met. Real-time systems must satisfy under all conditions, requirements of timeliness (meeting deadlines, i.e. finishing certain tasks within specified time limits), simultaneous processing (more than one event may occur simultaneously, all deadlines must be met), predictability (predictable reactions to all possible events), dependability (including characteristics such as reliability, integrity, privacy, safety, security, etc.). In many cases, real-time systems are safety-critical (i.e. their failure may result in injury, loss of life or major environmental damage). Very often, real-time systems must strictly satisfy requirements with respect to restricted use of memory, CPU performance and energy.

It is clear that these specific requirements have a strong impact on real-time system design procedures, not only at the application level but with respect to entire system architectures and infrastructures. Standard component models and technologies cannot be guaranteed to meet these requirements and can only be used in such systems to a limited degree. Different concepts of system design, in component composition reasoning, in reusing components, etc. must be applied. The concept of a component-based approach is as attractive for real-time systems development as for other software systems and a component-based concept has been used successfully in certain domains. This part addresses questions relating to component-based development of real-time, embedded and safety critical systems.

In chapter 13 Components in Real-Time Systems, Damir Isovic and Christer Norström present an introduction to real-time systems describing their main principles and introducing the basic terminology of real-time systems. The basic requirements of real-time systems for infrastructural components such as operating systems, databases, etc. are then discussed. Some successful examples of component-based development models are presented. Finally a process for designing component-based real-time systems is described, using a top-down approach, identifying components at the design phase, specifying their properties, selecting pre-existing components, reasoning about the composition of the components, and analyzing the system. This chapter shows that it is possible to apply the component-based development concept even to dependable real-time systems.

In chapter 14 Testing Reusable Software Components in Safety-Critical Real-Time Systems, Henrik Thane and Anders Wall present arguments for the reuse and re-verification of components in safety-critical real-time systems. The arguments for reuse of software (components) are usually arguments for rapid prototyping, arguments for outsourcing, and arguments for greater reliability. In the latter case it is assumed that the verification of the components can be eliminated or reduced and that the reliability of the component has been demonstrated in previous applications. Expensive and catastrophic experiences have however shown that it is not always so simple. The authors approach this problem by presenting a framework for determining when components in real-time systems can be reused immediately, when complete re-testing is necessary, or when parts only of the systems need additional verification. As an alternative to complete re-verification, the possibility of decreasing the testing effort is attractive, and essential in the case of safety-critical real-time systems.

In chapter 15 Providing Real-Time Services for Commercial-Off-The-Shelf Components, Oscar Javier Gonzalez Gomez, Krithi Ramamritham, Chia Shen, and Gerhard Fohler investigate a practical approach to developing real-time applications in an environment consisting of COTS components with minimal support for real-time. They concentrate on resource management and scheduling techniques to reduce the unpredictability inherent in these types of components. Instead of modifying the COTS components, they provide solutions sitting on the COTS components. They also discuss the limitations and real-time features of modern general-purpose operating systems and in particular present a characterization of Windows NT from the perspective of real-time constraints. They find that the unpredictable part of NT can be minimized by the use of a user-level scheduling scheme. The chapter is concluded with guidelines and recommendations of use to real time system designers building applications using NT.