Fiabilité logicielle : les ignorants sont-ils vraiment bénis ?

Pourquoi la gestion de la qualité et de la fiabilité de nos systèmes n'est pas triviale. Une chronique de Xavier Devroey, professeur en génie et test logiciel à la Faculté d'Informatique et au Namur Digital Institute de l'Université de Namur.

Contribution externe
Une faille dans un composant peut poser des problèmes de sécurité.
Une faille dans un composant peut poser des problèmes de sécurité. ©Copyright (c) 2022 Fahroni/Shutterstock. No use without permission.

Ne vous êtes-vous jamais demandé comment naissaient et mouraient les systèmes logiciels ? Il y a le fameux code source et les (parfois impopulaires) algorithmes mais comment le tout est-il assemblé ? En fait, cette pratique est ce que l'on appelle le génie logiciel. Bien qu'ayant fortement évolué au cours de ces dernières années, elle reste encore souvent plus un art qu'une science. Ce n'est pas étonnant lorsque l'on y pense : construire des systèmes et des produits logiciels avec succès demande de comprendre ses utilisateurs et le contexte dans lequel ceux-ci évoluent. Or, il s'agit probablement de l'un des exercices les plus difficiles qui soit au vu de la diversité que l'on trouve dans nos sociétés humaines. J'irai jusqu'à dire qu'il y a quelque chose de merveilleux au fait de pouvoir, par exemple, contacter des amis en vidéoconférence depuis l'autre bout du monde. La complexité des systèmes impliqués pour cette simple action est titanesque. Et le quidam, ignorant les rouages de la machine, trouve cela normal. Cependant, une telle complexité n'est pas gratuite et tout système est aussi fiable que son élément le plus faible. Dans un monde où le logiciel est créé par assemblage de composants développés par d'autres, c'est une leçon qui se rappelle régulièrement et douloureusement à nous.

Une faille dans un composant

Par exemple, en décembre 2021, la vulnérabilité Log4Shell, posait des problèmes de sécurité sérieux : 93 % des services en ligne étaient vulnérables au niveau mondial. Il s'agissait d'une faille dans un composant permettant à une application d'enregistrer des messages dans un carnet de bord pour des raisons d'analyse et de suivi. Une fonction basique, invisible pour les utilisateurs et couramment utilisée lors d'un développement logiciel. Cette fonction est sous-traitée à un composant (une bibliothèque logicielle) utilisé par un très grand nombre d'applications : Log4J. Malheureusement, sa maintenance n'était assurée que par une poignée de développeurs volontaires. Heureusement, son caractère libre (open source) a rapidement permis aux développeurs de circonscrire le problème à défaut de pouvoir le régler. Cet exemple, pourtant simple, illustre que, dans un monde globalisé, la gestion de la qualité et de la question de la fiabilité de nos systèmes n'est pas triviale. Et si le quidam peut effectivement continuer à utiliser ces systèmes en méconnaissant les dessous de leurs fonctionnements (aviez-vous entendu parler de Log4Shell avant de lire cette chronique ?), c'est également en occultant, par la même occasion, les risques qu'il ou elle prend.

Des victimes sans comprendre pourquoi

Dès lors, les ignorants sont-ils vraiment bénis ? Oui, car des systèmes d'une complexité insoupçonnée rendent des services quotidiens. Et non, car en n'ayant pas conscience de leur fonctionnement, même global, nous pouvons nous (des décideurs jusqu'aux informaticiens eux-mêmes) retrouver victimes sans comprendre pourquoi. Alors que faire ? C'est simple : prendre conscience que la complexité fait partie des systèmes logiciels modernes et arrêter de se cacher derrière une ignorance, bien souvent pratique ("moi, l'informatique, je n'y connais rien").

Il n'est pas nécessaire de comprendre la dynamique des changements de phase du gaz dans un frigo pour savoir qu'il est nécessaire d'instaurer des normes de construction garantissant qu'il ne déclenchera pas un incendie lors de sa mise en route.

De la même manière, il n'est pas nécessaire de comprendre la théorie des langages de programmation pour exiger qu'un système logiciel réponde à des normes de qualité de fonctionnement, d'environnement, etc. Ainsi, le génie logiciel ne sera-t-il peut-être plus seulement évoqué lorsqu'un système se plante de manière tellement magistrale qu'une armée de développeurs se retrouve poussée au bord du burn-out afin d'éviter la catastrophe mais aussi lorsqu'un système se sera montré d'une fiabilité remarquable dans un contexte d'une complexité sans précédent dans l'histoire de l'humanité.

D'autres lecteurs ont également lu

Les + consultés

Vous êtes hors-ligne
Connexion rétablie...