Le Génie de la Programmation et du Logiciel est au coeur 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. Les grandes thématiques du domaine sur lesquelles les chercheurs du domaine travaillent depuis de nombreuses années sont :
De plus, 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 des centres 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 logiciel, 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 et les économies d’énergie.
Six grandes familles thématiques ont été définies lors de l’action de prospective que nous avons menée en 2010 (texte en annexe), à savoir la structuration des logiciels pour leur évolution, la prise en compte de l’utilisateur final, l’accès aux composants et services, la prise en compte de la consommation de ressources dans les outils du logiciel, la modélisation de connaissances et de l’incertain et, finalement, la place des méthodes et outils de vérification et de validation. Sans vouloir être exhaustif, ces six familles regroupent une grande partie des thèmes de la programmation et du génie logiciel abordés par les équipes françaises actuellement. D’autres thèmes non identifiés en tant que tels suscitent des débats et donnent également de nouveaux enjeux pour les travaux de recherche futurs dans le domaine. Il s’agit du continuum dans le développement, des approches agiles, de l’association entre connaissance et développement, du dialogue avec l’utilisateur pendant les phases de développement et de l’apprentissage par les usages, le développement et l’exécution dans des environnements ouverts, la complexité et le passage à l’échelle dans l’utilisation des approches formelles, de l’utilisation de vues dynamiques pour manipuler ou remodulariser des objets existants, et, finalement la contractualisation et la responsabilité face aux utilisateurs du logiciel.