Real-Time systems represent the systems that must perform computations by specific times; where late results can be considered incorrect. Shaw (2001) explained that Real-Time systems usually have very specific imposed time constraints defined by the system requirements that can reflect real facts of the outside world. One of the common systems that used the real-time implementation is the Air Traffic Control Systems or Command Control Systems.
Computerised control and real-time systems become essential in our modern societies and such increasing dependency raised many concerns about the safety and the performance of such growing systems. Halang and Druzovec (2000) explained that performance in a real-time systems required not only fast computation power; but also faster response and higher I/O bandwidth where computing tasks within such systems must be initiated and completed at a given points of time. The most essential requirement of real-time application is the ability of such systems to be able to respond to the external events with very short and deterministic delays that represent the critical deadlines for the specific tasks to be achieved.
Halang and Druzovec (2000) also explained that programming languages used to implement the real-time systems must have certain requirements to fulfill the real-time programming, some of these requirement are:
- The programming language must be constructed to communicate with the environment and be able to do other tasks required communication to the outside world of the system.
- The programming language must provide the capability to implement the notion of time.
- The programming language must support redundancy, and be able to generate executable code that will represent a predictable behaviour and deterministic results.
Real-Time Systems & Object-Oriented Approach
Adopting the object-oriented technology in development real-time systems provides adaptation, ease of modifications, and reusability for such systems. Also, object-oriented methods are dominated by the need to deal with manipulating and dealing with the data that typically can be found in most of the information management systems. Awad and Ziegler (1996) explained that such methods meet the requirements of embedded real-time systems with a certain degree where the fact that both priority and time as part of the real-time requirements are ignored.
Because of the specific constraints that real-times system imposed in its design such as the usage of concurrent processes provided by the underlying operating system, synchronizing the access to the shared resources, and the unknown order of occurrence of external events of the real-time systems, the enhancing of the object-oriented techniques are required (Awad and Ziegler, 1996).
Awad and Ziegler (1996) argued that object-oriented methods implemented within the real-time systems must provide the capabilities of concurrent response to any sequence of events from the external world. Traditionally such concurrency is modeled using a thread, task, or process; while in object-oriented methods emphasize objects only. The difficulty of applying the object-oriented model within the real-time systems occur due to the fact that achieving the concurrency response to certain events in the real-time systems require combining the object-centered view with the process centered view.
Awad and Ziegler (1996) suggested that achieving the concurrency in real-time systems with the object-oriented implementation can be achieved through either the implicit concurrency model or the implicit concurrency model:
- Implicit Concurrency Model – Where each object is considered as an autonomous unit that can perform concurrently any request with other objects (i.e. each object will be designed as if it has its own processor that provides the mean to the process execution). Such design model the system as a processing request that broadcasts any external event to the objects where some objects will react to it or may request further processing from other objects.
- Explicit Concurrency Model – Where concurrency is addressed first by using the notion of process. Two abstraction levels are presented in this model, process and objects where inside each process the object-oriented approach is applied to replace the conventional procedural programming, functional decomposition. The interaction of objects is implemented as nested function calls where monitors, locks, and semaphore have to be added to ensure the integrity of objects.
Vesti (2003) explained that real-time systems usually restricted with time frame, and the respond within the time restrictions for these systems is an essential requirement than having such systems to run fast. For example, systems such as car’s ABS (hard real-time) system works within time constraints where missing the deadline can cause a loss of lives. On the other hand, when operating systems (soft real-time) systems miss the deadline do not lead to loss of lives or significant financial loss.
Vesti (2003) also argued that some of the reasons of why not using the object-oriented in the real-time systems are:
- Programming performance overhead through the conceptual implementation of the object-oriented represent a big disadvantage of using such approach in the real-time systems. For example, despite the fact the use of encapsulation can lead to partition the code, the same concept can be implemented within the low-level languages without any overhead.
- Object-oriented implementation deals with only the object technology and don’t have any reference to time.
- Object-oriented methodologies and methods don’t have the formalization in its specification to describe the time constraints within the system.
- From the object-oriented perspective, polymorphism introduces runtime overhead.
- Memory leaks (memory fragmentation) can represent a huge problem to the real-time systems.
- Power consumption and execution time should be considered when using object-oriented programming.
- Lack of control over resources and time consumption per line or per statement during the program execution.
The Real-Time systems represent a complex systems that reflect facts, and physical instances that are used to produce results within such systems. The correctness of such systems’ behaviours depends on the logical results of the system computations, and the physical instants that can produce results.
Juvva (1998) explained that any missed deadline in the hardware or software of such systems can lead to a significant loss that can cause catastrophic results.
Finally, object-oriented programs are depending on compilers, and it is slower when it comes to efficient real-time systems that usually operate within certain time constraints. Despite the fact that the disadvantages described above can prevent using object-oriented technology within the real-systems, it is really depends on what the environment is meant for, and the type of the system to be developed (Vesti, 2003).
Juvva, K. (1998) Real-Time Systems [Online]. Available from: http://www.ece.cmu.edu/~koopman/des_s99/real_time/ (Accessed: 22 June 2011).
Shaw, A. (2001) Real-Time Systems and Software [Online]. Available from: http://books.regehr.org/reviews/realtimesystemsandsoftware.html (Accessed: 22 June 2011).
Halang, W. & Druzovec, M. (2000) Measuring the Performance of Real-Time Systems [Online]. Available from: http://www.soe.uoguelph.ca/webfiles/rmuresan/MeasuringPerformanceOfRealTimeSystems.pdf (Accessed: 22 June 2011).
Awad, M. & Ziegler, J. (1996) Developing Object-Oriented Software For Real-Time Systems [Online]. Available from: ftp://ftp.hte.com/uconline/est/articles/oort.pdf (Accessed: 22 June 2011).
Vesti, J. (2003) Object Orientation in Embedded and Real-Time Systems [Online]. Available from: http://www.itu.dk/people/vesti/texts/ooembsys.pdf (Accessed: 22 June 2011).