Lab Key visual

Computing systems are becoming ubiquitous: the state of almost everything can be sensed, measured and monitored; people and objects can communicate and interact in entirely new ways; intelligent systems allow enhanced predictability of events and optimal use of resources. Their ever-increasing complexity (size, legacy code, third-party components, openness, higher user expectations, multi-core hardware and mixed criticality) severely challenges our capability for ensuring their trustworthiness.

Today, system design techniques are mostly empirical and lack scientific foundations. We need to formalize system design as a process leading from application software and a model of its execution infrastructure, to an implementation meeting given requirements. Design should be sound, accountable and scalable, and supported by methods and tools for enhanced productivity.

These needs raise challenging problems such as:

  • Building complex systems as the composition of heterogeneous components;
  • Ensuring correctness-by-construction of essential system properties to reduce development costs entailed by correctness-by-checking techniques such as verification and testing;
  • Automatic generation of implementations which are optimized with respect the resources of the computing infrastructure;
  • Evaluating trustworthiness of the designed systems.

Our work program embraces all these problems and endeavors integration of the obtained results in domain-specific system design flows. Application domains include critical systems, multimedia systems and networked embedded systems.