Design
and development of real-time computing systems is the most challenging and complex
task that can be undertaken by a software engineer. By its very nature, software
for real-time systems makes demands on analysis, design and testing techniques
that are unknown in other application areas.
Real-time
Systems are highly coupled to the external world. That is, real-time software
must respond to the problem domain (the real world) in a time frame dictated by
the problem domain. Because real-time software must operate under rigorous performance
constraints, software design is often driven by hardware as well as software architecture,
operating system characteristics as well as application requirements, programming
language vagaries as well as design issues.