Non, non, ne hurlez pas; je vous vois venir avec vos mais qu'est-ce qu'il va encore nous inventer cette fois-ci ?
:)
Lisez, vous allez voir, ça va vous intéresser.
Avant-propos
Je travaille depuis maintenant un bon moment à mettre en place une partie de nos idées sur les traces, concernant la visualisation d'activité (individuelle ou collaborative, a/synchrone, ici on s'en fout). Architecture, conception de modèles, instrumentation d'application, couche réseau, formats de données, parsers, etc; vous l'avez compris, tout passe entre mes mains excepté le SGBT qui est pour moi une boîte noire. Si vous pouvez imaginer quelque chose relatif aux traces (RàPC excepté), alors je me suis certainement penché dessus à un moment durant ces six derniers mois.
Je vous présente ici un retour sur l'expérience que j'ai développé, à base de réflexions personnelles. Le constat est plutôt mitigé, je vous préviens d'avance. Rien de dramatique, mais il faudra en tenir compte pour la suite de nos travaux car ça a des conséquences importantes. Je vais essayer de faire un découpage propre, mais vous allez voir que tout est lié.
Ma réflexion est orientée sur le transfert vers l'entreprise (non, ce n'est pas un gros mot) de nos travaux de recherche. C'est à dire : « qu'est-ce qu'il faut prendre en compte lorsqu'on va essayer de vendre la trace modélisée à un industriel ».
La conception de modèle
La première étape de l'enrichissement d'une situation informatique par les traces (sous-entendu, après tout le blabla d'analyse) est la conception d'un modèle de traces de logiciel(s). Cela :
Demande des compétences très spécialisées
Soyons réalistes, comprendre la théorie de la trace modélisée et être capable d'expliciter des interactions dans son formalisme n'est pas à la portée de tout le monde. Non pas que cela soit particulièrement complexe, mais cela exige un certain nombre de connaissances et de compétences qui ne se trouvent pas partout.
Que ce soit par une méthode ascendante ou descendante, concevoir des modèles de trace d'applications ne peut être fait que par un petit nombre de personnes. Or, ce qui est rare est cher. Il va donc falloir convaincre l'entreprise de réaliser cet investissement. Cela peut passer par une mission d'un expert extérieur, la formation d'une personne déjà en place, un partenariat avec une structure compétente, etc. Plusieurs possibilités existent, mais toutes ont un coût qui n'est pas négligeable.
Nécessite beaucoup de temps
Un logiciel, même très simple, est riche en possibilités d'interactions. On peut retenir l'utilisation de menus, de boutons, de paramètres, de zones de saisie, de fonctions, etc, ainsi que des opérations plus globales impliquant les périphériques d'entrée et de sortie.
Au final, on se retrouve à manipuler un très grand nombre d'observés et de relations, ce qui nécessite plusieurs jours semaines de travail. La richesse en observés étant exponentielle par rapport à la complexité d'un logiciel, essayez de visualiser ce à quoi pourrait ressembler le modèle de trace d'OpenOffice. Oui, c'est plus que gros : c'est énorme. Et on ne peut pas se permettre de laisser de côté certaines parties du modèle car cela impliquerait de ne pas être capable de représenter correctement les interactions de l'utilisateur sur ce logiciel.
L'entreprise ayant besoin de tracer une activité, un environnement ou que sais-je encore, va devoir y passer du temps (qui est aussi de l'argent, comme nous le rappel le célèbre adage). Ce temps sera pris au dépend d'autres activités, peut-être plus facilement et rapidement rentables.
Comprend aussi la conception des règles de transformations usuelles
Tout comme sans maîtrise, la puissance n'est rien, des traces qu'on ne peut pas manipuler sont tout de suite moins intéressantes. La conception de jeux de règles de transformations adaptées aux modèles de traces est un des à-côté du travail conceptuel de la trace.
En effet, on ne peut pas simplement donner un modèle de trace à une entreprise en lui disant « voilà, tu as ton modèle, à toi de te débrouiller pour faire ce que tu veux avec ». Il faut donc en parallèle du modèle construire les règles de transformations qui vont les utiliser, afin d'obtenir un résultat final qui corresponde aux attentes de l'entreprise. L'entreprise pourra certes produire en interne de nouvelles règles de transformations (par une tactique de copie/adaptation), mais il faudra lui préparer le terrain. Et qui est-ce qui va se taper le travail ? Gagné, c'est l'expert qui s'occupe déjà du modèle. Cela augmente sensiblement sa charge de travail, et donc le coût pour l'entreprise.
Instrumentation des logiciels
Selon le logiciel à instrumenter, le travail technique pour réaliser la collecte d'observés varie grandement. J'ai identifié 3 catégories d'instrumentation :
- édition en profondeur du code source : méthode qui nécessite d'avoir accès au code source du logiciel, et d'être en mesure d'y apporter des modifications;
- création de greffons présentant des interfaces pour interroger le contenu de variables d'état : ici, on ajoute des fonctionnalités à l'application en s'appuyant sur ses API. On est limité par ce que propose l'application en terme d'accès aux ressources internes.
- création de préparateurs de traces qui récupèrent des données exportées par l'application pour produire des observés : cette approche consiste à récupérer des informations sorties de l'application via ses méthodes standard (par exemple, flux RSS ou AppleEvent). Cette méthode apporte le découpage le plus fort dans le tandem application/traçage, et est limitée par l'application elle-même.
Selon les applications à instrumenter et les méthodes utilisées, le coût de l'adaptation logicielle varie énormément. Malheureusement, il n'est pas possible d'identifier un petit nombre de critères précis permettant de quantifier simplement ce coût. C'est uniquement en prenant en compte une combinaison de nombreux facteurs qu'on peut le déterminer. À titre d'idée, on peut citer sans s'y restreindre :
- la complexité du travail;
- la durée du travail;
- le langage de programmation (allez trouver quelqu'un qui fait encore du COBOL, tiens :)
- la documentation disponibles (humain, référentiel de développement, etc);
- l'urgence;
- etc.
Il y a également les coûts liés; par exemple, les structurels : achat d'un serveur pour le SGBT, mise à jour des matériels, adaptation de l'architecture réseau...
Les cycles de vie logiciel dans environnements tracés
Un logiciel peut être vu comme quelque chose de « vivant », évoluant au fur et à mesure des versions. Ces évolutions sont nécessaires pour de nombreuses raisons : changement dans l'environnement d'accueil (le système d'exploitation), sécurité, nouvelles fonctionnalités, etc.
Tout naturellement, il faut que les éléments du traçage accompagnent ces évolutions. Tout s'enchaînent très rapidement de façon implacable :
- modifier le logiciel tracé (peut) oblige(r) à modifier la collecte
- modifier le logiciel tracé oblige (pas moyen d'y échapper, là) à modifier le modèle de traces
- modifier le modèle de traces oblige à modifier les transformations de traces (et oui...)
- modifier les transformations de traces impacte sur la visualisation des traces (j'y reviendrais plus tard)
On se rend compte alors que la mise à jour est coûteuse car il faut de nouveau faire appel à notre expert. Vous souvenez de lui, celui de la 1e étape, qui avait conçu les modèles ? Et bien il va falloir retourner le voir pour lui demander de se pencher sur les modifications. Ceci dit, ça tombe bien car il pourra tout traiter d'un seul coup : l'évolution des modèles et celle des transformations. Et si en plus derrière il peut assurer la formation ça ne sera pas perdu.
Le plus problématique est qu'il faut répéter ce cycle à chaque nouvelle version du logiciel. C'est réellement un surcoût, car la rentabilité n'est pas évidente à dégager (comptablement parlant).
Mentalement, insérez ici un joli schéma de traces complet d'une application, montrant côte à côte les modèles de traces pour la version N et la version N+1. Imaginez de gros, gros (mais alors gros), graphes avec des nœuds et des arcs dans tous les sens, qui seraient différents de seulement quelques détails : observés en plus ou en moins, déplacement de relations, changement d'attributs, etc.
Je mettrais les schémas quand je les aurais fini, le but est ici de vous faire prendre conscience du volume de travail que ça représente.
Pratiques des utilisateurs liées aux traces
En ce qui concerne l'utilisateur final, c'est plus simple pour lui. Une évolution de son environnement tracé se traduit non seulement par une modification de sa pratique métier, mais également de sa pratique réflexive via les traces. Ben oui, vous ne croyez quand même pas qu'au final rien ne change ? Et comme nous le savons, tout ce qui change les habitudes de l'utilisateur le fait râler (sauf si c'est Génial, mais ça seul Apple arrive à le faire :)
De petites modifications dans un logiciel peuvent avoir de grandes répercutions sur le modèle de trace, et donc sur la visualisation interactive de la trace par l'utilisateur. Il va donc lui falloir un temps d'adaptation (ce qui influera sur sa productivité), voir même une formation.
Également, les changements dans les traces et modèles pourront se propager à d'autres environnements, tracés ou non. C'est le cas lors de la documentarisation de traces en vue de générer des productions (textes, hypermédia, etc.) Même si ces outils ne sont pas tracés, ils sont impactés par les changements sur les données d'entré.
Que retenir au final ?
On peut dire qu'instrumenter un environnement pour lui faire générer des traces est long, pas toujours simple, et n'est pas nécessairement faisable de façon clairement rentable.
Les problèmes apparaissent à tous les niveaux : conceptuel (modèles), technique (instrumentation) et humain (usage). Les principaux étant le coût (je crois l'avoir suffisamment répété :) de la mise en œuvre de la trace dans un système existant, et les compétences spécialisées requises dans chacune des étapes de la réalisation.
Convaincre un industriel d'investir dans la trace est alors réellement un problème, car les gains à dégager sont difficilement calculables, et la mise initiale est élevée.
Au final, pour moi la théorie de la trace est attirante sur le papier, mais les difficultés liées à la réalisation sont vraiment rebutantes.
Pistes envisageables
Tout n'est pas perdu ! Maintenant que nous avons regardé le problème droit dans les yeux, on peut louvoyer en évitant ce qui justement nous embête.
Ainsi, on peut songer à cibler en priorité les systèmes figés, qui n'évoluent pas ou très peu :
- machine-outil : une chaîne de production change rarement, car son utilisation est planifiée en amont. Du coup, pas besoin non plus de faire évoluer les trucs-de-la-traces \o/
- systèmes critiques : les outils comme ceux du contrôle aérien n'ont pas le même cycle de vie que les logiciels grand public; on ne passe pas son temps à les mettre à jour. Il sont conçus pour durer, et c'est au contraire les autres systèmes qui s'adaptent pour interagir avec eux. En gros, une fois le traçage dedans, il n'en bouge plus.
- logiciels arrivés à maturité; ils peuvent être complexes (Lotus Notes) ou très simples (calepin de Windows). De par leur nature, rôle ou histoire, certains logiciels sont intouchables; on se contente au plus de les recompiler, mais en veillant à ne rien changer afin de ne pas provoquer d'effets de bord (comme par exemple un changement de modèle de trace).
Une autre approche est de se poser la question de savoir qui a suffisamment d'argent à dépenser pour se lancer dans un projet pareil, sans que le responsable risque de se faire virer après la réception de la facture par le service compta :
- les grands comptes : la Poste, EDF (eh, ça tombe bien :), etc;
- la fonction publique : quand l'administration investie, elle ne le fait pas à moitié; souvenons-nous du « Plan informatique pour tous »;
- les Décideurs Pressés qui imposent contre l'avis de leurs DSI des solutions qu'ils jugent intéressantes. Avec un joli PowerPoint®™©, on arrive à vendre des glaçons au Pôle Nord.
Vous l'avez compris, j'exclus tout ce qui est grand public dans les cibles potentielles. Il y a éventuellement le monde du Libre qui pourrait mettre en place et maintenir des utilisations de traces modélisées, mais il faudrait vraiment que ça soit pertinent.
Commentaires récents