SLS - Science du Logiciel et des Systèmes Distribués

Se basant sur la progression fulgurante du nombre et de la complexité des calculateurs (des objets connectés aux centres de données) et de la migration des systèmes centralisés vers des systèmes distribués, le pôle « Science du Logiciel et des Systèmes Distribués » porte une attention particulière au génie de la programmation, du logiciel et des systèmes.


Responsable : JM. Menaud


Depuis les années 2000, le nombre et la complexité des calculateurs, du simple objet connecté aux plus grands centres de données, ont connu une progression fulgurante. Sur cette même période, les services applicatif et système ont naturellement migré d’un monde principalement centralisé à hautement distribué, les rendant de plus en plus complexes à analyser, développer, corriger et maintenir. Pour adresser ces nouveaux défis, la science du logiciel et les systèmes distribués se sont progressivement appariées.

En s’appuyant sur les compétences des équipes de recherche concernés, le pôle SLS porte une attention particulière au génie de la programmation, du logiciel et des systèmes, aussi bien dans un contexte enfoui que hautement distribué, en explorant les facettes complémentaires des langages, des modèles et des systèmes. Les compétences, l’expertise scientifique et les projets des équipes constituant le pôle SLS permettent de définir trois orientations différenciantes :

  • Les langages de programmation et les langages de modélisation pour la spécification, la vérification et le développement de logiciels complexes. La recherche en langages de programmation cible la définition et l’implémentation de nouveaux concepts sous forme d’éléments de langages et de langages dédiés (domain-specific languages) en mettant l’accent sur la maitrise énergétique des logiciels et des systèmes (le « greenIT »), des micro-capteurs au Cloud Computing. La recherche sur les langages de modélisation s’intéresse aux paradigmes de découpage structurel et fonctionnel des systèmes complexes en formalisant les éléments architecturaux, métiers, patrons, styles et finalement la démarche d’ingénierie dans laquelle ces éléments cohérents et autonomes peuvent être gérés.
  • Les systèmes et algorithmes distribués pour la gestion, possiblement temps réel, des capacités informatiques tant au niveau applicatif (dans le développement par exemple du web social et sémantique) que système (dans le développement par exemple de systèmes d’optimisation des capacités de calcul, mémoire, disque, réseaux, etc.). Les domaines applicatifs sont principalement l’internet des objets et le Cloud Computing.
  • Les systèmes et logiciels adressés par le pôle sont, entre autres, distribués, (a)synchrones, temps réel, autonomes, dynamiques, ubiquitaires et nécessite de ce fait le développement (automatique ou non) de modèles dans un but d’analyse pour entre autres, la correction, la sécurité, et les performances y compris énergétiques. En effet, la fonction d’un modèle consiste à faciliter l’analyse d’un système par simplification et interprétation de ce dernier. C’est en s’appuyant sur ses compétences internes déjà éprouvées (en modélisation du vivant, systèmes à événements discrets, model-checking, preuves, modèles temporisés, paramétrés et probabilistes, ingénierie dirigée par les modèles, reconfiguration dynamique d’architectures logicielles, modélisation des flux, modélisation de l’évolution des logiciels) que le pôle compte relever ces défis.

Sur les prochaines années, l’omniprésence toujours plus grande de l’informatique dans notre quotidien, que ce soit en terme de services (du Web aux réseaux sociaux) ou d’objets(connectés ou non), soulève de nombreux défis tant sur les aspects logiciel, modèle, que système. La triple compétence du pôle est une force pour relever ces défis. Nous pouvons citer ici quelques défis qui seront traités : Comment structurer les logiciels pour leur évolution et composition ? Quels méthodes et outils pour l’analyse, la vérification et la validation des systèmes complexes ? Comment administrer, gérer, optimiser, programmer et faire évoluer des infrastructures hautement distribuées et ce de manière sûre et sécurisée ?