Composing Embedded Real-Time Software Components: the PECOS Data-Centric Approach
by Stéphane Ducasse, Oscar Nierstrasz and Roel Wuyts
Although component-based software development (CBSD) has become mainstream for conventional applications, it has remained elusive for embedded applications due to non-functional constraints. The PECOS project has demonstrated that CBSD can also be applied to severely constrained embedded devices, with timing and memory requirements being taken into account.
Most component models and systems, such as (D)COM, .Net, JavaBeans and CCM, target the development of mainstream desktop applications with abundant hardware resources. None of these existing models explicitly addresses the constraints imposed by small, embedded devices. Although CBSD would bring numerous advantages to the embedded systems world, including shorter development times and the ability to secure investments through reuse of existing components, in practice, standard component models are too heavyweight to be applied to embedded systems development.
The European IST project PECOS (IST-1999-20398), which stands for Pervasive Component Systems, enables CBSD for small embedded systems by providing an environment that supports the specification, composition, configuration checking, and deployment of embedded systems built from software components. The PECOS approach was applied in the context of field devices - small, embedded devices developed by the prime contractor of the project, ABB.
A Data-Centric Model
The PECOS component model is unusual in that PECOS components have very simple interfaces consisting solely of data ports. Components are one of three types: active, passive or event; interaction occurs only where data ports are connected. This design choice makes it particularly easy to work out the synchronisation and timing aspects of components. First of all, it enables timing analysis of component compositions using rate monotonic analysis, a technique for verifying that a set of tasks can meet their deadlines. Second, it enables schedule verification of component compositions using a constraint logic programming approach. Last but not least, the model minimises the number of concurrent tasks needed to implement the system.
The model is the conceptual part of the toolchain used by developers to compose, deploy and test applications for field devices. Specifying components and compositions is done with CoCo, the component description language. From the CoCo specification, skeleton code is generated that tailors a runtime environment for the device. The skeleton code has hooks where the actual behaviour of the components is manually implemented. The result is then compiled and deployed on the device.
When components are composed, different validation actions are performed. First of all, compositions can be checked structurally for adherence to developer-specified patterns. Second, a timing analysis can be performed to determine whether a composition can meet its deadlines by mapping the composition to sets of tasks that can be checked by rate monotonic analysis. Note that the components need to have certain runtime figures (worst-case execution time and maximum blocking time) associated with them for which a profiling environment was built. Third, a constraint logic programming approach can be used to check whether compositions have a valid schedule (or a schedule can be generated if none was specified).
Although a full validation of the PECOS approach was not possible within the scope of the project, the ideas have been convincingly tested in the context of the field device demonstrator, and plans are underway to apply the model to further case studies.
PECOS was composed by ABB Corporate Research Centre, Ladenburg (DE), Research Centre for Information Technologies (FZI), Karlsruhe (DE), the Software Composition Group (SCG) at the University of Bern (CH), and Object Technology International (OTI), Amstelveen (NL).
Results of the project are available at http://www.pecos-project.org/
Software Composition Group, University of Berne: http://www.iam.unibe.ch/~scg
Oscar Nierstrasz, University of Berne