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.