Comment les systèmes complexes échouent-ils ?

En 1998, le médecin Richard Cook (@ri_cook), spécialiste de la sécurité des systèmes de santé, a écrit Comment les systèmes complexes échouent : un petit traité sur la nature de la défaillance et la façon dont la défaillance est évaluée et attribuée. Professeur émérite, il est le cofondateur du Laboratoire des capacités adaptatives (@adaptativeclabs) et à coécrit en 2010 le livre Derrière l’erreur humaine (Routledge, 2010, non traduit).

« Tous les systèmes complexes sont des systèmes intrinsèquement dangereux », rappelle le spécialiste dans son éclairante synthèse, évoquant à la fois les transports, les soins de santé ou la production d’énergie. La fréquence d’exposition aux dangers peut parfois être modifiée, mais les processus impliqués dans ces systèmes sont eux-mêmes intrinsèquement et irréductiblement dangereux, d’où notre tendance à créer des défenses contre ces dangers. Le risque de défaillance de ces systèmes conduit à la construction de multiples couches techniques, humaines et organisationnelles pour s’en prémunir : systèmes de secours, caractéristiques de sécurité des équipements… mais également formation et information continue ainsi que la multiplication de certifications, procédures et règles… Ces mesures visent à contenir les accidents. Si ces défenses fonctionnent la plupart du temps, cependant, les défaillances catastrophiques se produisent lorsque de petites défaillances, apparemment inoffensives, se conjuguent pour créer l’occasion d’un accident systémique. C’est souvent la combinaison de petites défaillances qui provoque la catastrophe, alors que les opportunités de défaillances sont souvent bloquées par les composants de sécurité du système.

Par nature, les systèmes complexes contiennent une « mixture » de défaillances latentes. De par leur complexité même, ils ne peuvent fonctionner sans que de multiples défauts soient présents. Mais comme ils sont individuellement insuffisants pour provoquer une défaillance, ils sont considérés comme des facteurs mineurs. Leur éradication totale est souvent minorée par le coût économique que cela représenterait, mais aussi parce qu’il est bien souvent difficile de voir comment ces défaillances pourraient contribuer à un accident, isolément les unes des autres. Enfin, ces défaillances sont mouvantes : elles changent constamment en raison de l’évolution des technologies, de l’organisation du travail et des efforts faits pour les éradiquer. Le corollaire de ce constat, c’est que les systèmes complexes ne fonctionnent qu’en mode dégradé. Ils continuent de fonctionner grâce aux redondances et parce que de nombreuses personnes les font fonctionner malgré leurs faiblesses.

Tous les examens post-accidents montrent que les systèmes ont presque toujours un historique d’incidents antérieurs. « Les arguments selon lesquels ces conditions dégradées auraient dû être reconnues avant l’accident manifeste reposent généralement sur des notions naïves liées à la performance du système ». Or, les opérations du système sont dynamiques, avec des composants (organisationnels, humains, techniques) qui tombent en panne et sont remplacés en permanence. En fait, souligne Cook, la catastrophe est toujours en embuscade. « Les systèmes complexes possèdent un potentiel de défaillance catastrophique » qui peut survenir à tout moment et partout. Ce potentiel de défaillance catastrophique tient de la nature même des systèmes complexes.

Après un accident ou une catastrophe, l’enquête à tendance à chercher et à attribuer une « cause première », voire un bouc-émissaire (sur ces sujets, voir notamment « Construire pour durer ? » et l’intervention de Stefana Broadbent dans « Embrasser la complexité »…). Pour Cook, c’est là une façon d’attribuer et d’évaluer la défaillance particulièrement erronée. Les défaillances manifestes nécessitent des défauts multiples et chaque défaut isolément est insuffisant pour créer un accident. C’est leur conjonction, leur association, qui crée l’accident. Pour Cook, la recherche de « cause première » ne reflète pas « une compréhension technique de la nature de la défaillance, mais plutôt le besoin social et culturel d’attribuer la responsabilité à des forces ou à des événements spécifiques et localisés », comme le montre la recherche anthropologique sur la construction sociale de la notion de cause. En fait, post-accident, on a l’impression que les événements qui y conduisent auraient dû sembler plus importants qu’ils ne l’étaient. Cela montre que l’analyse post-accident est inexacte. La connaissance du résultat empoisonne l’observation. Pour Cook, le biais de « rétrospection » est un véritable obstacle aux enquêtes.

En fait, rappelle le médecin, les opérateurs humains ont un double rôle : ils doivent à la fois produire et faire fonctionner le système et le défendre contre ses défaillances. Ce rôle dual, dynamique, à la recherche d’un équilibre entre la production et la défaillance possible est inévitable. Quand il n’y a pas d’accident, la production est mise en avant, mais en cas d’accident, c’est la défense contre les défaillances qu’on met en avant, alors que l’opérateur lui a deux rôles à tenir ! Pour Cook, dans ce contexte, toutes les actions sont des paris, c’est-à-dire des actions qui font face à des résultats incertains. En cas d’échec, on estime que le choix a été mauvais, mais quand ça n’a pas conduit à un échec, on ne souligne pas assez que le pari était pourtant bien là. En fait, les systèmes et les organisations sont profondément ambigus, souvent intentionnellement dans cette relation entre objectifs, utilisation des ressources, économie, coûts d’opérations et risques acceptables d’accidents de faibles et de fortes gravités. Dans les systèmes complexes, les opérateurs humains sont l’élément d’adaptation. Ils adaptent le système pour maximiser la production et minimiser les accidents. L’expertise humaine est forte et change constamment. La compétence et l’expertise font partie de la fonction même du système et doit être constamment entretenue.

Le faible taux d’accidents dans les systèmes fiables a tendance à encourager les changements par l’introduction de nouvelles technologies par exemple pour réduire les défaillances à faible conséquence, mais à haute fréquence. Or, ces changements créent souvent de nouvelles opportunités pour des défaillances à faibles fréquences, mais aux conséquences élevées. Il n’est pas rare alors que des catastrophes rares aient un impact encore plus grand que celles éliminées par de nouvelles technologies. Mais ces nouvelles défaillances sont difficiles à déceler a priori : on regarde souvent le bénéfice des changements et moins les conséquences graves, parce qu’elles se produisent rarement. Si vous augmentez cela par de multiples changements, il devient difficile de voir la contribution d’un changement sur la défaillance. Mais surtout, explique Cook, la recherche de causes limite l’efficacité des défenses contre les défaillances à venir. Dans la recherche des causes d’un accident, on obstrue souvent les activités qui peuvent causer des accidents. Bien souvent, au lieu d’accroitre la sécurité, les remèdes post-accidents augmentent la complexité et donc le potentiel de défaillances latentes et leur détection. Pour Cook, la sécurité est une caractéristique des systèmes, pas une composante. La sécurité ne réside pas dans une personne, un dispositif ou une organisation, elle n’est pas un produit ou une matière première. L’état de sécurité d’un système est par nature dynamique et les changements continus des systèmes font en sorte que le danger et sa gestion évoluent également constamment. Les opérateurs créent continuellement de la sécurité, car les opérations sans défaillance sont le résultat de leur travail de maintenance permanent. Bien souvent, elle est le fruit de routines répétées, parfois de nouvelles approches ou d’adaptations inédites.

En fait, rappelle-t-il, pour qu’il y ait des opérations sans défaillance, il faut faire l’expérience des défaillances. « Reconnaître le danger et réussir à manipuler les opérations du système pour rester à l’intérieur des limites de performances tolérables nécessite un contact intime avec la défaillance », à l’image de l’entraînement des pilotes de l’air aux accidents dans des simulateurs. Pour améliorer la sécurité, il faut fournir aux opérateurs une compréhension des dangers qu’ils rencontrent (comme le pointait Nicolas Carr, notamment dans son livre, Remplacer l’humain où il insistait longuement sur l’entraînement des pilotes).

Dans un article pour Scalyr datant de 2016, une entreprise spécialisée dans l’analyse des solutions en nuage (@scalyr), Kathleen Estreich a adapté les observations de Richard Cook aux systèmes distribués en ligne. Leur défaillance est toujours à portée de main rappelle-t-elle et ce d’autant plus qu’ils sont bourrés de failles, trop souvent considérées comme mineures. Ils continuent à fonctionner grâce à diverses mesures de résiliences : bases de données redondantes, serveurs qui se mettent à jour automatiquement, surveillance des pannes… Dans les systèmes web complexes, il n’y a pas de causes premières, constate-t-elle également : les incidents requièrent de multiples contributeurs ! C’est la combinaison des causes, souvent inoffensives, qui constitue la condition préalable à un incident. Trop souvent pourtant, on a tendance à rejeter la responsabilité des erreurs sur une personne ou une procédure et à restreindre les activités mises en cause. Mais cela relève surtout de « la comédie sécuritaire » que décrivait le spécialiste du sujet Bruce Schneier : on fait jeter à tous les voyageurs qui passent aux aéroports leurs dentifrices, sans qu’il y ait de preuves que cela prévienne réellement les attentats ! Or, la complexité des systèmes web repose toujours sur des inconnues : il y a ce que nous croyons savoir, ce que nous ne savons pas et ce que nous ne savons pas que nous ne savons pas. L’incertitude n’est pas éliminable. Trop souvent, les entreprises ne disposent pas d’une politique claire concernant les risques d’incidents acceptables, ce qui fait que les décisions pour les minorer sont souvent prises en fonction de l’intuition.

Pour Kathleen Estreich aussi, l’expérience de l’échec est essentielle… Elle invite également à déclencher des défaillances de manière proactive pour mieux préparer les ingénieurs systèmes au pire et mieux comprendre la résilience des systèmes, comme le propose les méthodes de l’ingénierie du chaos (voir également ces explications). L’échec est inévitable… Pour s’y confronter, expliquait déjà Mathias Lafeldt (@mlafeldt), il ne suffit pas de changer de technique, mais bien de modifier son état d’esprit. Cela ne consiste pas seulement à forcer les systèmes à échouer, mais à mettre en lumières les faiblesses de tout système, à comprendre et gérer la complexité, à introduire une discipline expérimentale, comme l’explique une remarquable synthèse sur le sujet chez O’Reilly. Pour comprendre l’échec et le risque, il faut d’abord apprendre à jouer avec…

Hubert Guillaud

À lire aussi sur internetactu.net