En vedette - Rester simple: prendre le contrôle de la complexité des logiciels
Les logiciels sont devenus non seulement plus complexes, mais aussi plus omniprésents: dans votre voiture et votre compteur électrique, dans les centrales électriques, les avions, les trains, les banques, les hôpitaux, etc. Ils pilotent des systèmes critiques dans lesquels la moindre erreur pourrait avoir des conséquences désastreuses. Et cette complexité croissante ne fait pas qu'augmenter les risques, elle augmente aussi les coûts: les tests de logiciels à la recherche de bogues représentent environ la moitié des dépenses avant la mise sur le marché, et jusqu'à 70% après. Le problème vient de ce que les processus classiques de génie logiciel ne sont pas conçus pour gérer la complexité et la diversité des systèmes logiciels actuels. «Prenons par exemple une automobile: elle contient des centaines d'éléments logiciels, qui vont du contrôle de la qualité de l'audio jusqu'à celui de la vitesse de croisière. Face à des systèmes où l'on entasse de plus en plus d'éléments et de fonctions, les ingénieurs sentent qu'ils perdent le contrôle de la complexité et se demandent s'ils pourront fournir l'assurance qualité requise», explique Alexander Romanovsky, professeur d'informatique. «Et ce niveau de complexité se retrouve partout et dans tout: les constructeurs d'automobiles, de trains, d'avions et autres consacrent une bonne partie de leur temps et de leurs ressources, peut-être jusqu'à la moitié, au développement du logiciel; en fin de compte, tous les secteurs produisent des logiciels.» La question est de savoir si l'on peut trouver une meilleure méthode de conception de logiciels, notamment pour les systèmes critiques. Les chercheurs du projet Deploy («Industrial deployment of advanced system engineering methods for high productivity and dependability»), soutenu à hauteur de 12,4 millions d'euros par la Commission européenne, pensent comme le professeur Romanovsky qu'il existe une autre solution. Leur approche suit des méthodes formelles et, grâce aux efforts de l'équipe, commence à être acceptée par les entreprises et les ingénieurs en tant que méthode plus efficace et pratique pour développer des systèmes logiciels complexes. Les processus Deploy ont déjà servi à concevoir des logiciels de sécurité critiques pour des lignes de métro et des navettes aéroports. Contrairement aux approches classiques de génie logiciel, les méthodes formelles s'appuient sur l'analyse et la modélisation mathématique, soutenant le raisonnement à plusieurs niveaux d'abstraction pour engendrer un processus systématique qui part du cahier des charges, de la modélisation de l'architecture et de la conception des détails, et s'étend jusqu'à l'implémentation, les tests et le déploiement. Pour le projet, l'équipe a poursuivi l'évolution de la méthode formelle «Event-B» de modélisation et d'analyse au niveau du système, conçue par le projet Rodin («Rigorous open development environment for complex systems») financé par l'UE et soutenue par l'environnement intégré de développement constitué des «outils Rodin». Encourager les ingénieurs à penser différemment «Pour les ingénieurs, il s'agit d'un changement plutôt radical. En général, lorsqu'ils débutent un projet, ils ont l'habitude de commencer à développer le logiciel, à le compléter et à l'élargir, puis à garder le plus difficile pour la fin, à savoir l'implémentation, la vérification et les tests. L'ingénierie formelle inverse le processus: elle commence par le plus difficile, avec une abstraction des exigences du système, et suit un rigoureux processus de développement, mathématique et logique», explique le professeur Romanovsky. L'avantage de cette méthode est de détecter très tôt les erreurs, et l'approche logique et rigoureuse permet de confiner la complexité dans des limites définies à l'avance. L'ensemble réduit les besoins de tests aux étapes finales. Au final, les systèmes sont plus fiables, et ce pour un coût potentiellement inférieur aux méthodes classiques de développement. La situation semble donc très positive, mais il reste un problème majeur: les ingénieurs ne sont pas toujours des mathématiciens. «Les méthodes d'ingénierie formelle requièrent des connaissances mathématiques dont ne disposent pas toujours la plupart des ingénieurs habitués aux approches traditionnelles, et le processus est tellement différent qu'il faut changer d'état d'esprit. En outre, il est difficile de convaincre une entreprise qui utilise la même méthode de développement logiciel depuis 10 à 30 ans», souligne le professeur Romanovsky. Le projet Deploy, qui est probablement le plus grand déploiement de génie logiciel formel jamais conduit, a fait beaucoup d'efforts pour surmonter ces obstacles. Ainsi, en collaborant avec le partenaire SAP, l'équipe a implémenté les processus formels de manière transparente, permettant aux ingénieurs de continuer à utiliser les langages de programmation spécifiques à un domaine pour développer des logiciels critiques d'entreprise, traduits ensuite automatiquement en Event-B avec le soutien de spécialistes en ingénierie formelle. Chez Siemens, les ingénieurs avaient déjà une grande expérience en modélisation formelle, et Event-B a servi à développer un logiciel actuellement utilisé par les métros de Barcelone et de Paris, et ailleurs pour des systèmes de contrôle et de signalisation ferroviaires. Avec Bosch, l'approche a servi à réaliser un dispositif de réglage de la vitesse et des systèmes d'arrêt-démarrage. Chez Space Systems Finland, un autre partenaire du projet, le processus a été appliqué pour des composants de la sonde spatiale BepiColombo de l'Agence spatiale européenne (ESA), ainsi que pour des systèmes de contrôle de l'altitude et de l'orbite. De son côté, le partenaire français Systerel utilise Event-B dans toute une gamme de systèmes pour le rail et l'aérospatial. Les chercheurs de Deploy ont lancé deux nouvelles sociétés, Rodin Tools et Formal Mind, afin de commercialiser les outils et d'élargir le déploiement. Ils ont aussi initié le projet de suivi Advance («Advanced design and verification environment for cyber-physical system engineering») financé par l'UE. La mise en place et l'utilisation continue des méthodes d'ingénierie formelle par les entreprises impliquées montrent des exemples très clairs que peuvent suivre d'autres sociétés qui recherchent de nouveaux moyens de gérer la complexité. «Indiscutablement, nous poussons le secteur à réfléchir aux méthodes actuelles et aux avantages de passer à une approche formelle dans certaines circonstances», constate le professeur Romanovsky. Les outils, l'importante documentation pour Event-B et le soutien des partenaires de Deploy contribuent également à convaincre les ingénieurs à se lancer dans des projets d'ingénierie formelle. «La complexité des systèmes logiciels continuera d'augmenter, et nous avons démontré que l'ingénierie formelle est une façon de gérer ce problème», conclut le professeur Romanovsky. Le projet Deploy était financé par le septième programme-cadre (7e PC) de l'Union européenne. Lien vers le projet sur CORDIS: - Le 7e PC sur CORDIS - Fiche du projet Deploy sur CORDIS Lien vers le site Web du projet: - Site web du projet «Industrial deployment of advanced system engineering methods for high productivity and dependability» Autres liens: - Site web de la stratégie numérique de la Commission européenne