A RTS or “Real Time System” is an information processing system which responds to external command inputs, and delivers information in a reliable expected time (Petters, 2008). It is very common to be embedded systems running inside cars, electronic devices, airplanes and cell phones, for instance.
REQUIREMENTS IN REAL-TIME SYSTEMS
One of the most important subjects in this discussion is the timing non-functional requirement for real-time systems. On the need of responding in expected time, the timing should flow the way as the requirement expects, in order to do not have the loss in the quality of the real-time system.
According to Magalhães (1993), real-time systems can be cataloged into two views:
Soft real-time System
Soft real-time systems are systems in which not meeting a timing deadline will not affect or damage the environment, which makes this acceptable.
Hard real-time System
A hard real-time system, it would not be acceptable that a timing deadline to be not met because it would have catastrophic results to the environment.
REAL-TIME SYSTEMS AND OOP
The most difficult concern and OOP and real-time systems in the concurrency because of the need for fusing the two concepts, which are different. According to (R. Welch, L. & Dieter K., H, 1996) the difficulties while working with OOP programming languages to build RTS’s are:
#1 Parallelization in real-time systems should not be arbitrary but according to the application semantics;
#2 Traditional real-time computing paradigms may not be adequate in addition to objects, abstractions at higher levels of granularity are needed (e.g., execution paths consisting of time-constrained sequences of method invocations);
#3 Object-oriented features that make real-time system engineering difficult include: method lookup, garbage;
#4 Collection, and variation in invocation latency due to object distribution and dynamic binding;
In spite of the object-oriented paradigm to be very popular in the development of enterprise applications, the low-level programming languages such as C (for instance) are still a better fit for programming real-time systems. The ‘virtual world’ created by the virtual machines in order to allow programmers to deal with more ‘human’ data types and classes/objects allows more ease while developing some kinds of systems, but systems that get closer of the machine and low-level requirements, usually tends to be best solved with low-level programming languages.
Petters, S., 2008. Real-Time Systems Lecture, [PPT] Australia: UNSW SIDNEY. Available at: <http://www.cse.unsw.edu.au/~cs9242/08/lectures/09-realtimex2.pdf> [Accessed 23 July 2017].
António P. Magalhães, et. al, 1993. Deadlines in Real-Time Systems, [Technical Report] Portugal: Faculdade de Ciências e Tecnologia, Universidade de Ciombra (Portugal). Available at: <https://web.fe.up.pt/~apmag/Suportehome/Ficheiros/drts.pdf> [Accessed 23 July 2017].
R. Welch, L. & Dieter K., H., 1996. OOPS Messenger special issue on object-oriented real-time systems. ACM SIGPLAN, 1 January, pp.1-2.