Component-based software engineering for distributed embedded real-time systems

The aim of component-based software engineering is to create applications from reusable, exchangeable and connectable components. However, current component models lack support for important concepts of distributed embedded real-time systems, such as execution time and resource usage. These non-functional properties of a component are as important as its functionality. In addition, the non-functional properties are influenced by the platform on which the component is executed. A component model is proposed that separates the component's functionality from the platform-specific issues of concurrency, synchronisation and distribution. A technique that describes the behaviour of a component in a path-based notation similar to use case maps (UCMs) is presented. A method for deducing from these descriptions the behaviour of an application that consists of connected components is also shown. The paths also contain information on real-time requirements of the application. The authors also show how to adapt the components to an execution platform and how to create real-time applications with predictable properties from these components.