Tout système utile doit nécessairement devenir complexe. Non seulement le code tourne au pire, mais la charge cognitive imposée aux opérateurs est toujours croissante. Il n’est pas suffisant de prendre une approche centrée sur la propreté du code pour que nos systèmes soient opérables : nous avons également à comprendre comment nous formons nos modèles mentaux de nos systèmes, ce qui constitue une bonne abstraction, et savoir quels états internes exposer aux observateurs.
7. SYSTEMANTICS SAY
• A simple system may or may not work
• A complex system that works is
invariably found to have evolved from a
small system that worked
• A complex system designed from scratch
never works and cannot be made to
work. You have to start over, beginning
with a simple working system
• A large system, produced by expanding
the dimensions of a smaller system, does
not behave like the smaller system
21. A SOFTWARE ENGINEER’S HOUSE
-1: on voit rien
de côté
fenêtre porteuse:
ne pas ouvrir
// TODO: remplacer par version
// plus fiable
// - @fred (2009)
bug possible, ajouter
plus de visibilité ici
24. SYSTEMANTICS SAY
• Crucial variables are discovered by
accident
• When everything correlates with
everything else, things will never settle
down
• A system is no better than its sensory
organs
• The meaning of a communication is the
behaviour that results
25. Comment structurer son observabilité
• Choisir des formats lisibles, mais outillables
• Un humain doit pouvoir lire le format “raw” ou avoir des outils pour le faire
• Un opérateur doit pouvoir écrire ses propres outils qui utilisent les données
• Différencier entre niveaux d’information et “Chemins logiques” à
suivre
• S’en tenir aux faits
• Éviter de faire une extrapolation générale dans les logs avec une information
locale seulement
• Être conscient que la relation entre un opérateur et un système est
une relation de confiance
28. Loi de la Variété Requise
• L’état cible d’un système peut être perturbé par des événements de
haute variété
• L’état d’un système ne peut être que corrigé que par des actions qui
balancent les événements de haute variété, menant à une réduction
des perturbations
• On ne peut que modéliser et contrôler un système complexe à haute
variabilité si le composant qui le contrôle a une variété interne
supérieure ou égale des états représentables.
• La complexité du mécanisme de contrôle peut représenter une limite
supérieure à son habileté à accomplir ses tâches.
31. What teams do
To be a team player, an agent must fulfill […] an agreement to work
together in a coordinated fashion and to communicate events and
changes in status that the other parties need to know in order to
coordinate.
[…] It must also understand and accept the joint goals of the enterprise,
understand and accept its roles in the collaboration, be capable of
signaling if it is unable or unwilling to fully participate in the activity,
and be capable of understanding other team members’ signals of their
status and changes in participation.
COMMON GROUND AND COORDINATION IN JOINT ACTIVITY - GARY KLEIN, PAUL J. FELTOVICH, JEFFREY MARK BRADSHAW, DAVID D WOODS
32. SYSTEMANTICS SAY
• Extra brain in tail, tail wags on own
schedule
• The system itself does not do what it
says it is doing
• Control is exercised by the element with
the greatest variety of behavioral
responses
• If it’s worth doing at all, it’s worth doing
poorly
33. Évaluer son Model par Proxy
• Les property tests permettent d’écrire un modèle
qui est vérifié en le comparant au vrai système
• Si vous avez du mal à trouver un mon modèle
qui expose des propriétés pratiques, vos
opérateurs vont aussi en avoir
• Autres approches qui peuvent aider: validation
formelle (TLA+), documentation
• Proxy semblable à la couverture de code et
la qualité des tests
34. Mettre en pratique
• Ne pas utiliser de débuggueur et plutôt favoriser les outils de
production en dev
• À chaque fois que vous utilisez un “printf” en debug, posez-vous la
question sur pourquoi vous n’utilisez pas un outil qui existe déjà
• Si l’outil n’existe pas au niveau où vous en avez besoin, demandez-vous si on
un opérateur en aurait besoin