Les systèmes en temps réel sont des systèmes informatiques qui doivent non seulement produire les valeurs de sortie correctes, en réaction aux entrées du système, mais également produire ces valeurs au bon moment. Dans mon travail, je me concentre sur les systèmes temps-réel durs, où le non-respect de certaines contraintes peut avoir des conséquences catastrophiques. Le système de contrôle de vol d'un avion, ou le système de conduite autonome d'une voiture, sont de bons exemples de systèmes en temps réel durs. Un système en temps réel peut être représenté comme un ensemble de tâches simultanées, où chaque tâche détecte, calcule ou agit. Chaque tâche est soumise à des contraintes en temps réel, telles que la périodicité et le délai contraintes. Réagir plus rapidement que ces contraintes n'améliore généralement pas la qualité du système. Au lieu de cela, l'objectif principal du développement de systèmes en temps réel dur est de s'assurer que les contraintes seront toujours respectées, afin d'assurer la sécurité du système. Le développement de systèmes temps réel durs implique plusieurs domaines de recherche, qui sont traditionnellement étudiés par des communautés de recherche distinctes. Une partie importante de mon travail porte sur la connexion entre ces domaines. Mes contributions portent sur trois thèmes principaux. Tout d'abord, j'ai étudié la programmation de systèmes temps réel avec un langage de flux de données synchrones spécifique à un domaine appelé Prelude. Dans un second temps, j'ai étudié les analyses temporelles de haut niveau, c'est-à-dire les analyses qui assurent que le système respectera toutes ses contraintes temps-réel à l'exécution. Troisièmement, j'ai étudié les analyses temporelles de bas niveau, qui analysent le code d'une tâche pour déterminer son temps d'exécution dans le pire des cas.
soutenue le 12/06/2023