Motivation et enjeux scientifiques

Le GDR Génie de la Programmation et du Logiciel (GPL) a été renouvelé par le CNRS pour une nouvelle période de 5 ans allant de janvier  2021 à décembre 2025. L’objectif du GDR GPL est d’animer  la communauté scientifique  dans le domaine du Génie Logiciel et de la Programmation, et également d’être un outil de prospective scientifique  dans ce domaine par les retours de notre communauté et ses collaborations avec d’autres communautés.

Le Génie de la Programmation et du Logiciel  est au cœur de l’activité informatique. Les concepts, méthodes et les outils de conception et de validation  de logiciels  constituent les éléments manipulés par les informaticiens pour maîtriser et automatiser les problèmes qui leur sont soumis. Plusieurs grandes familles thématiques ont été définies lors des actions de prospective que nous avons menées en 2010 et 2014, et qui avaient conduit  à plusieurs Groupes de Travail (GT). Fin 2019, nous avons lancé une nouvelle action dans ce sens.

Les grandes thématiques du domaine sur lesquelles les chercheurs du domaine travaillent  sont, au regard des 21 défis reçus en décembre 2019 :

  • l’ingénierie  dirigée par les modèles qui exploite une continuité entre modélisation, conception, programmation et développement pour systématiser la production et la maintenance de logiciels plus sûrs et plus agiles, elle inclut :
    • — l’ingénierie des exigences et de leurs interactions  avec les artefacts logiciels  pour assurer la traçabilité logicielle, y compris dans des objectifs d’argumentation  et de validation  de la justesse des systèmes produits
    • — la séparation et la composition  de préoccupations, par exemple la sécurité, pour maîtriser la conception, le développement et l’évolution de grands systèmes,
    • — la modélisation et la gestion de la variabilité  logicielle  à des fins de production, de configuration et de maintenance de lignes de produits logiciels ;
  • la conception et l’outillage  de langages plus sûrs et plus expressifs, elle inclut :
    • — les approches de compilation  pour des architectures spécifiques et notamment parallèles, y compris  ces dernières années pour l’exploitation des GPU et des ordinateurs quantiques,
    • — la conception et l’utilisation de langages métiers et de langages spécifiques à des domaines,
    • — la certification des chaînes de compilation,
    • — de nouvelles approches de la réparation de "bugs" ;
  • le développement de techniques de vérification  et de validation des systèmes, elle inclut  :
    • — la vérification  et la validation à partir de spécifications ou de code : analyse statique, génération de tests et raffinements prouvés,
    • — la prise en compte de la testabilité logicielle de l’élaboration des systèmes logiciels  à leur adaptation en production,  y compris dans des contextes d’intégration d’intelligence artificielle,
    • — l’adaptation de ces travaux aux systèmes émergents tels que les systèmes cyber-physiques, les systèmes intégrant de l’IA, les véhicules autonomes ;
  • la prise en compte dans l’ensemble  du cycle de vie du logiciel des propriétés  telles que la sécurité, la sobriété écologique, la résilience, elle inclut :
    • — la recherche sur de nouvelles architectures logicielles et méthodes de développements pour faire face aux nouvelles contraintes : taille des systèmes, mondialisation  du développe- ment, protection  des données, gestion des ressources, déconnexion,  ...
    • — l’adaptation  des approches de développement pour intégrer la maintenance et l’adaptation dynamique  des systèmes aux changements de contexte, y compris par apprentissage automatique, en particulier pour les systèmes cyber-physiques ;
  • l’étude  des pratiques de développement y compris de maintenance logicielle,  notamment par des études empiriques  et la mise au point d’abstractions adaptées ;
  • l’exploitation des travaux sur l’IA dans un contexte de génie de la programmation et du logiciel et inversement, dont les travaux cités précédemment.

Sans vouloir être exhaustif,  ces grandes thématiques regroupent  une grande partie des thèmes de la programmation et du génie logiciel abordés par les équipes françaises actuellement. Avec l’omniprésence de l’informatique dans notre vie que ce soit en termes d’informatique embarquée, d’intelligence ambiante, d’extension  du web au niveau de la planète, d’intégration  dans les objets du quotidien, ou encore avec le développement de grandes infrastructures de calcul ou de traitement de grandes masses de données, de nouvelles  questions de recherche sont posées. De nouveaux paradigmes, de nouveaux langages, de nouvelles approches de modélisation,  de vérification, de tests et de nouveaux outils dans le domaine de la programmation et du logiciel devraient voir le jour dans les 5 à 10 ans à venir, que ce soit pour faciliter la vie des concepteurs de logiciels,  pour modéliser et fiabiliser  les logiciels ou encore pour devancer l’évolution technologique, mais également pour prendre en compte de nouveaux enjeux de société tels que le développement durable, les économies d’énergie ou la maîtrise des systèmes intégrant de l’intelligence artificielle.