Démoniaque

Définition, exemples et bonnes pratiques

À retenir

  • Désigne un système non-déterministe qui privilégie l'échec.
  • Utilisé pour tester la robustesse maximale d'un logiciel.
  • S'oppose au concept de non-déterminisme « angélique ».

En informatique théorique, ce terme qualifie un système qui, face à plusieurs possibilités, choisit systématiquement celle qui conduit à un échec ou à un bug, si une telle issue existe. C'est une sorte de « loi de Murphy » modélisée : si le programme peut planter, il le fera.

Étymologie

Dérivé du latin daemon, désignant un esprit ou une force surnaturelle. Dans le contexte du calcul et de la logique, il a été adopté pour décrire un comportement « malveillant » ou pessimiste d'un système, par opposition au choix « angélique » qui mènerait au succès.

Exemples d'usage

  • Une condition de concurrence (race condition) qui ne se produit que dans la séquence d'événements la plus improbable pour faire planter le serveur.
  • Un modèle mathématique de vérification de logiciel qui teste si un programme survit même face à un environnement qui cherche à le bloquer.

Cas d'usage

Ce concept intervient surtout dans les méthodes formelles (preuve de programme), la théorie de la concurrence et la cybersécurité pour modéliser le comportement d'un attaquant ou d'un environnement hostile.

Bonnes pratiques

Pour contrer un comportement démoniaque, il faut pratiquer la programmation défensive. On ne suppose jamais que tout ira bien, on vérifie chaque entrée et on prévoit systématiquement un plan de secours pour chaque étape critique.

Synonymes

non-déterminisme pessimiste démonique

Antonymes

angélique non-déterminisme favorable

Conseil

Ne voyez pas ce terme comme quelque chose de négatif, mais comme un outil de test : si votre algorithme peut vaincre un choix démoniaque, c'est qu'il est véritablement infaillible.

Questions fréquentes

Est-ce lié aux 'daemons' Linux ?

Non, les daemons (processus d'arrière-plan) et le comportement démoniaque sont deux concepts distincts, bien que partageant une racine étymologique commune.

Pourquoi modéliser un système qui veut échouer ?

Pour garantir qu'un logiciel critique (avionique, médical) fonctionnera quoi qu'il arrive, même dans les pires conditions possibles.