Une nouvelle approche du génie logiciel tente de simplifier la conception système
Intriguée par le besoin de simplifier le processus difficile et onéreux de la conception de logiciel, le projet LIBRP (Liberating programming) a observé que les professionnels sont souvent capables de décrire le comportement de leurs systèmes (avant, pendant et après le développement), de façon exacte et claire, qu'ils soient ou non compétents en programmation. Gardant cela à l'esprit, l'équipe a abordé le problème en revisitant et en transformant radicalement les modèles acceptés de ce à quoi devrait ressembler un système logiciel bien conçu. L'équipe est partie de l'invention de la programmation à base de scénario (SBP) et de son langage visuel LSC (live sequence charts), pour montrer comment un logiciel complexe peut être aligné sur les descriptions de comportement qui apparaissent dans les documents relatifs aux exigences et les manuels d'utilisateurs. Dans la programmation SBP, au lieu de l'approche classique dans laquelle les séquences de commandes en série (les programmes) doivent être conçues avec soin pour que le système satisfasse aux critères et aux contraintes, ce sont les critères eux-mêmes qui sont totalement exécutables, libérant ainsi la programmation de bon nombre de ses contraintes habituelles. Les critères sont encodés pour qu'un ordinateur puisse les inspecter un par un directement à chaque étape de l'exécution, et déterminer sa prochaine étape sur la base de ce qui doit, devrait ou ne doit pas être fait à un certain point (ainsi le comportement interdit devient part du programme). Les critères sont ainsi transformés en, et en grande mesure remplacent, le programme traditionnel. Cette approche a apporté des méthodes révolutionnaires pour structurer puis exécuter des programmes, ainsi que de nouveaux moyens, plus naturels, pour effectuer la programmation elle-même: sur un simulateur ou GUI du système le développeur déclenche en fait («plays in») les actions que l'utilisateur ou l'environnement présenterait au système, suivi des réactions souhaitées du système. La séquence comportementale enregistrée est ensuite automatiquement transformée vers le scénario adéquat. L'alignement du programme sur ce que pensent les gens du système permet aussi de programmer en langage naturel (contrôlé). En d'autres mots, une fois soumis à des règles grammaticales contraignantes, une phrase comme «lorsque l'utilisateur appuie sur le bouton rouge, la lumière s'allume», est automatiquement analysée et traduite en un scénario formel, programmé et exécutable formel. Le système final découle donc de toute une série de telles phrases. Un bénéfice clé de l'approche est la capacité à coder progressivement chaque nouveau critère, avec peu ou aucun changement aux spécifications existantes, et d'utiliser des outils spécialisés pour comprendre comment le système se comportera lorsque tous les scénarios fonctionneront ensemble sous la forme d'un système. Le projet a également produit des algorithmes et des outils sophistiqués sur la base de méthodes comme la vérification du modèle, la résolution SMT et la synthèse de programmes, pour valider les programmes à base de scénarios, et pour les réparer automatiquement en cas de comportements indésirables ou de scénarios conflictuels. Ces travaux comptaient également les techniques de vérification compositionnelle, où la vérification du système se fait essentiellement par ses scénarios composants. L'équipe a largement élargi l'approche à base de scénario au-delà du langage visuel LSC, le portant dans des langages informatiques standard comme Java, C, C++, C#, Erlang et JavaScript. L'applicabilité de la programmation à base de scénario a été démontrée dans de nombreuses applications; dont l'automatisation industrielle, le contrôle automobile et d'avion, et les modèles biologiques.
Mots‑clés
Programmation de logiciel, génie logiciel, programmation basée sur un scénario, programmation comportementale, LIBPR, programmation libératrice, play-in, play-out, méthodes formelles, vérification du modèle