Le générateur

Le dictionnaire français définit un « générateur » comme étant : « Un programme qui produit, à partir de sous-programmes généraux, un programme adapté au traitement d’une application dont la description permet de calculer l’enchaînement des sous-programmes et leurs paramètres. ».

Pas plus avancés ?

Alors je vous explique ci-dessous en quoi consiste Thot et quelles fonctionnalités il offre.

En savoir plus
Image décorative de la page « Le générateur »

Les origines

Les premiers développements sur un générateur remontent à l’année 2009, date à laquelle j’intégrais une équipe en charge d’une application WBI dans le milieu bancaire.

Cette application, conçue pour recevoir des flux de données en entrée, les manipuler pour ensuite les mettre à disposition d’une trentaine d’applications satellites, n’avait fait l’objet d’aucune documentation digne de ce nom.

L’adaptation des différents connecteurs étant quasi quotidienne, personne ne s’était risqué jusqu’alors à rédiger ladite documentation et cet effort se limitait à la mise à jour d’une pauvre feuille de tableur une fois l’an, lorsque le dernier stagiaire recruté n’avait pas couru assez vite pour y échapper.

Constat habituel dans de nombreuses équipes informatiques : tout le monde veut de la documentation à jour mais personne ne veut consacrer de temps à la rédiger, surtout si les applications ont un taux d’actualisation élevé.

N’ayant pas l’intention d’aller en permanence à la pêche aux informations et après avoir constaté que les fichiers manipulés (ex. objets métier, connecteurs, etc.) étaient structurés au format XML, décision fut prise à titre personnel de développer un générateur de rétro documentation apte à nous délivrer une vision exacte à l’intant T du système WBI mis en œuvre par l’équipe.

Ayant pris connaissance de ce projet a posteriori, la hiérarchie émit alors le souhait que la trentaine d’applications clientes WBI puisse être rétro documentée en moins de deux heures…

Ces estimations se révélèrent in fine plutôt pessimistes, puisque l’outil conçu s’est avéré capable de produire la documentation demandée en moins de 10 mn chrono.

Un effet collatéral non envisagé initialement apparut par la suite lorsqu’un de mes collègues en charge d’une étude pour la migration d’un autre système WBI s’est déclaré intéressé pour passer l’existant dans cet outil et confirmer / infirmer les déclarations des équipes apparemment peu précises et plutôt aléatoires quant à la volumétrie (ex. nombre d’objets métier, nombre de lignes de code, etc.).

Effectivement, le générateur permit de sortir une documentation extrêmement détaillée des systèmes concernés et, donc, d’affiner les estimations en matière de coûts et de délais.

La pertinence du système étant avérée, je suggérais alors à la hiérarchie de mettre en place un pole dédié à la documentation, pouvant servir les différents services et capable de développer ses propres outils d’analyse / rétro documentation. Suggestion écoutée avec forte bienveillance mais immédiatement rejetée au motif que, je cite : « Cela ne rapporte rien ».

Ou comment n’avoir aucune vision prospective et s’en remettre aux seuls aspects financiers immédiats…

Cap vers les sites web

Durant les années qui suivent et bien que les avantages d’un générateur aient été factuellement démontrés, l’entreprise ne se montre pas particulièrement intéressée par ce genre d’outil et les contacts pris pour étendre son champ d’application restent sans lendemain.

Dans le même temps, je m’intéresse de plus en plus à la construction de sites web et aux techniques sous‑jacentes.

Très rapidement le même constat… De nombreuses spécifications et normes doivent être mises en œuvre (HTML, CSS, etc.) et s’avèrent être inter dépendantes. De facto, et que le concepteur de sites web soit très compétent ou non, l’erreur restant humaine il est très facile d’oublier tel ou tel caractère et rendre bancal un code source.

L’idée d’un générateur revient alors sur le devant de la scène et je commence à étudier de façon beaucoup plus approfondie l’architecture des sites web, aussi bien sur le plan du balisage (HTML) que de la mise en forme des pages (CSS), la sécurisation des échanges réseau et, surtout, les performances.

Prises séparément, les techniques à mettre en œuvre ne sont pas forcément très complexes, par contre leur intégration en respectant les spécifications s’avère parfois délicate, certaines règles s’avérant dépendantes du contexte dans lequel le code source est produit.

Développant des programmes en Java depuis plusieurs années, c’est tout naturellement vers ce langage de programmation que je me tourne pour développer ma première librairie permettant la génération d’un site web, la sérialisation des ressources nécessaires et, surtout, le contrôle de cohérence des données et l’obtention d’un niveau de qualité constant.

Les années passent et les contraintes de sécurité deviennent de plus en plus prégnantes sur le web pour garantir, sinon un risque zéro dont on sait qu’il n’existe pas, au moins un niveau de protection le plus élevé à un instant T en fonction des normes du moment.

C’est ainsi que je découvre le site Mozilla Observatory mis en place par la fondation Mozilla (navigateur Firefox) à partir duquel il est possible de tester n’importe quel site web et obtenir une note allant de F (très mauvais) à A+ (excellent). Assez rapidement on constate que seulement environ 10 % des sites testés jouent dans la catégorie A+ et que la grande majorité d’entre eux n’obtiennent qu’une note F. On parle pourtant de sécurité…

Le générateur Thot est alors conceptuellement orienté vers l’obtention de cette fameuse note A+, niveau de qualité pouvant s’avérer vendeur, et la garantie que tout site issu d’une sérialisation serait d’un niveau de qualité constant.

Les éléments à prendre en compte pour obtenir une note A+ étant nombreux et, parfois, complexes il est en effet illusoire de penser qu’un intervenant humain, aussi compétent soit‑il, produira de façon constante un code source de qualité. Toute interaction avec son environnement de travail ou personnel (répondre au téléphone, problèmes de santé ou familiaux) est de nature à entraîner des erreurs circonstancielles et, de fait, une non qualité des pages HTML produites.

Par ailleurs, disposer dans ses équipes de personnes compétentes est une chose, les conserver et les fidéliser dans le temps en est une autre…

Non seulement les compétences se paient au prix fort mais elles induisent également le risque de voir un personnel quitter les équipes et fragiliser de fait le niveau de qualité. Ré-embaucher des compétences équivalentes est un parcours qui peut s’avérer très long et onéreux car les nouvelles recrues peuvent monnayer leur arrivée, surtout en ayant conscience d’apporter une plus‑value à l’entreprise.

A contrario, un générateur apporte la garantie d’un niveau de qualité constant (sous réserve bien évidemment qu’il ait été correctement testé) et d’une pérennité dans le temps puisque la notion même de départ n’a aucun sens en ce qui le concerne.

L’entreprise qui investit dans ce générateur s’assure donc des garanties quant à sa capacité à répondre aux besoins présents et futurs avec, encore une fois, un niveau de qualité constant. Ce niveau de qualité pouvant par ailleurs être appliqué rétroactivement aux sites web déjà produits.

En effet, lorsque les spécifications et normes évoluent (et le web reste un environnement en constante mutation) un générateur est modifié en conséquence, au besoin en faisant ponctuellement appel à des ressources externes maîtrisant les évolutions concernées. Une fois actualisé, l’outil peut être remis en service pour produire de nouvelles versions de sites web existants auxquels il appliquera de facto un niveau de sécurité, des performances et/ou une conformité accrus.

Fonctionnalités

D’une simple solution sérialisant des pages HTML telle qu’envisagée au départ, le générateur Thot est progressivement devenu une architecture complète prenant en charge les différents aspects de la conception de sites web, notamment : sécurité, optimisation des flux, conformité aux spécifications du W3C, etc.

Pour avoir audité un certain nombre de sites web conçus par des agences plus ou moins connues ou des développeurs indépendants, il apparaît clairement que les bonnes notes, particulièrement en matière de sécurité, ne sont pas au rendez-vous.

Pour autant ces prestations sont la plupart du temps facturées plusieurs milliers d’euros…

Si l’on prend la peine de soumettre ces sites web à l’outil de validation mis à disposition par le W3C pour HTML et CSS, les résultats ne sont pas non plus exceptionnels et le nombre d’erreurs reste élevé.

Quant aux performances, je reste perplexe devant la mention figurant au bas de certaines pages web construites à partir de WordPress et affichant fièrement que le contenu a été généré en 1,152 secondes. Pas sûr qu’on ait avantage à mentionner ce type de statistique.

On jettera également un voile pudique sur les sites contenant des milliers de règles CSS. L’empilement successif d’extensions et d’ateliers logiciels s’avère manifestement avoir un coût en matière d’optimisation…

Le générateur Thot n’utilise aucun atelier logiciel externe, ne recourt pas à Javascript et ne sérialise que le strict minimum. D’aucuns objecteront qu’il existe des outils permettant ce typte d’optimisation a posteriori mais, justement, pourquoi effectuer un traitement après avoir transféré trop de choses. Il est, à mon sens, parfaitement inutile de placer dans un flux HTML des données pour ensuite venir les retirer. Outre le risque d’erreur, le processus entraîne une charge supplémentaire dont il est préférable de se passer.

Ceci étant posé, que fait exactement le générateur Thot ?

Comme indiqué supra, l’outil est optimisé pour répondre avec un niveau de qualité constant à trois objectifs précis :

  1. offrir un niveau de sécurité le plus élevé possible en produisant des sites web notés A+ sur Mozilla Observatory ;
  2. créer des pages HTML conformes aux spécifications du W3C en matière de HTML et CSS c’est à dire ne remontant aucune erreur lors d’une soumission sur les outils de validation de cet organisme ;
  3. offrir les meilleures performances possibles validées par les outils de test (ex. PageSpeed Insights).