Descriptif SE301A/B

SE301 A

Cette unité d’enseignement vise à donner aux étudiants les connaissances indispensables pour la conception de systèmes temps réel embarqués critiques. Notamment, l’enseignement se concentre sur les problèmes liés à la satisfaction de contraintes non-fonctionnelles (contraintes matérielles, temporelles, etc.) dans le cadre de la conception de systèmes temps réel et souvent critiques.

Plus particulièrement, le cours se focalise sur la conception et la programmation d’applications devant s’exécuter en temps borné garanti, dîtes « temps-réel dur ». Ceci repose sur des patrons architecturaux (tâches périodiques, serveurs de tâches) et des algorithmes et méthodes d’analyse rassemblés dans ce que l’on appelle la théorie de l’ordonnancement. Vous verrez comment le déploiement de telles applications se fait sur des systèmes d’exploitation spécialisés appelés noyaux temps réel. Pour finir, vous verrez un exemple de contraintes de programmation et conception liées à des standards industriels  propres à l’avionique, l’automobile ou le ferroviaire. Ces contraintes ont pour but de traiter la dimension « critique » du système.

Objectifs d’apprentissage :

  • Algorithmes et Architectures de référence
    • Algorithmes d’ordonnancement de tâches périodiques sur un processeur / sur plusieurs processeurs
    • Modèles et algorithmes pour tâches apériodiques (serveurs d’ordonnancement)
    • Systèmes et architectures dans l’avionique et l’automobile (démarche Integrated Modular Avionics)
  • Programmation
    • Programmation temps réel de tâches périodiques / apériodiques via différentes API
    • Programmation de serveurs d’exécution
    • Implémentation d’un ordonnanceur
  • Analyse et Modélisation
    • Tests d’ordonnancement analytiques pour mono processeur
    • Démarche de test pour code « avionique »

Ces enseignements offrent un bagage équilibré sur la problématique des systèmes temps réels embarqués critiques avec un accent sur la partie temps réel.

Prérequis : SE201, SE202 et SE205, soit :

  • Programmation C élémentaire.
  • Principes de la compilation
  • Fonctionnement d’un processeur et hiérarchie mémoire.
  • Programmation concurrente élémentaire : expression de la concurrence, mécanismes de synchronisation
  • Mathématiques : probabilités discrètes élémentaires

Ce cours peut être complété par l’UE SE301b qui met l’accent sur la partie « critique » et approfondit certains aspects de la partie temps réel.

SE301 B

This course is an extension of skills and concepts learnt in SE301a. This course will be given in english only (exam included). It extends yours understanding of software design of critical and real time embedded systems (it is expected that students that want to register followed SE301a).

This course covers engineering methods and skill for criticial software design and development. It also explains how such concerns can be combined with real time system deployment concerns.

The following point will be covered in 7 half a day sessions (4h approx).  You will see an introduction to dependability concerns and how means to achieve it mainly rely on three practices: fault prevention, fault elimination, and fault tolerance. Fault prevention is illustrated with Model Driven Engineering approach for safety critical software, Fault elimination is covered through model checking approaches, and redundancy based and dedicated real time fault  tolerance mecanismes are presented.

Course main focus:

  • Introduction to dependability main objectives and threats
  • Fault tolerance content
    • Error confinement design parterns
    • Modular redundancy active and passive architectures (data interactions)
    • (optional depending on how fast we go …) Error confinement in real time behavior (timing interactions).
  • Model driven approaches for critical software deployment
  • Model checking of concurrent systems (fault removal)
    • Introduction to formal verification and temporal logic
    • How to model a concurrent system
    • Strategies and memory
    • How to specify properties on concurrent systems
    • Concurrent systems with imperfect information

pre-requisites : SE301A, and minimal knowledge of C and Java programming, INF105

or detailed required background:

  • C programming (multi threading included)
  • Scheduling theory and schedulability tests (mono multi cores + EDF, RMS …)
  • Basic knowledge in propositional logic and automata theory