At a Glance


Component-based Software Design


Credits: 9

Objectives: The objective of the course is to present a set of methodologies for designing, analyzing, and implementing complex embedded software as a number of interacting components, using precise interface operations. The course analyzes the main sources of interference in an embedded system and presents techniques to reduce and analyze them. Particular examples will be provided for multicore and heterogeneous CPU-GPU platforms. Standards for component-based development will also be presented.

Description:  In most application domains related to embedded systems (especially in consumer electronics, automotive, avionics, and multimedia systems), software size is growing exponentially, since more and more functions, previously developed in hardware, are now being implemented in software, and also new functions are continuously being added in order to lead the market and satisfy customers’ requirements. Moreover, complex systems are organized into interacting components (independently developed by different teams), tested, and later integrated to compose the complete system. The major problem caused by such a high software complexity is a lack of predictability, mainly due to the interference generated by several concurrent activities sharing common resources, especially on multicore platforms. Even worst, software modules that are certified to be correct in isolation, could not behave as expected when integrated together in the whole system.


  1. Introduction to component-based design: motivations, sample applications, terminology, definitions, and major problems.
  2. Interference analysis and techniques to reduce the interference. Hierarchical component-based systems. Resource reservations servers. Schedulability analysis of single components. Resource sharing protocols for hierarchical systems. Task scheduling and allocation on multiprocessor platforms. Energy-aware algorithms.
  3. Processor abstraction and interface. Efficient algorithms for the design of the interface. Multiprocessor abstractions. Applications models. Application partitioning and resource allocation.
  4. Expressing parallelisms through OpenMP: programming principles and language definition. Applying OpenMP; GPU tools: CUDA and OpenCL; Higher level tools: C++ based libraries and code generation techniques.
  5. Component-oriented programming and models: introduction to C++ patterns, UML models of components, code generation using patterns under the Eclipse-EMF framework.
  6. Standards for component-based development. ARINC: a standard for avionic systems. AUTOSAR a standard for automotive systems.
  7. Hypervisors: The Xen project. Guaranteeing real-time constraints on hypervisor-based systems.

Assessment: Software project and written test.

Prerequisites: Real-Time and Distributed Systems, Design of Embedded Systems.

Modules: 1

Module 1 (9 Credits): Component-Based Software Design. 

Material: Notes from the teachers.

Latest News


September 2017
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Upcoming Events

No events