AMOA : pourquoi industrialiser la gestion de son site ?

Photo de Stéphane

Par Stéphane Bordage le mardi 07 juillet 2015

AMOA : pourquoi industrialiser la gestion de son site ?

Récemment, j'ai dû expliquer à des non-techniciens l'intérêt d'industrialiser la gestion d'un site web. C'est une démarche qui paraît évidente quand on travaille sur de "gros" projets mais qui n'existe presque pas (voir pas du tout) sur des projets plus petits. Ça a été l'occasion de reposer quelques principes fondamentaux.

Principe n°1 - La REUSSITE du projet se gagne avant le développement

Du côté client, le plus important est d'avoir une "vision" de ce qu'est son projet à moyen et long terme de manière à aboutir, avec son prestataire, à une architecture fonctionnelle et technique pérenne. C'est la clé de la cohérence et donc de la maintenabilité du projet dans la durée.

Pour y arriver, la première étape est l'expression des besoins qui liste tout ce que devra faire le projet : front, back, interfaces, etc. Les méthodes agiles étant à la mode, on parle de plus en plus de "backlog" pour cette étape.

Ensuite, la stratégie de l'entreprise se traduira dans la mise en œuvre progressive et plannifiée des différentes fonctionnalités. Bien sur, de nouveaux besoins émergerons et le planning sera souvent boulversé. L'idée n'est pas de tout figer mais plutôt de donner un cap et une structure pour limiter les développements anarchiques aboutissant à un code impossible à maintenir.

La deuxième étape importante est l'appropriation du projet par tous les acteurs au travers du travail de maquettage (wireframes, pistes, prototype, etc.). C'est à ce moment que tout le monde visualise le futur site web et peut ajouter ses règles et contraintes : règles de gestion, d'affichage, accessibilité, SEO, etc.

Ce travail doit être réalisé sans précipitation et en multipliant les réunions physiques. D'autant qu'en parallèle, les spécifications sont rédigées pour justement capter et figer toutes les règles et contraintes tout en décrivant le niveau opérationnel de l'architecture fonctionnelle et technique.

A ce stade on sait ce qui doit être réalisé et comment. C'est déjà pas mal ! Malheureusement, beaucoup de projets sautent cette étape ou la bâclent en rédigeant un document mixant besoins, contraintes, règles de gestion, etc. C'est le meilleur moyen de se planter en croyant avoir bien fait. Donner un cadre au futur prend du temps.

Enfin, sur les projets impliquant beaucoup de prestataires (hébergeur, exploitant, SEO, agences pour les campagnes et mini-sites, intégrateur pour la TMA, etc.) la rédaction et la validation par tous d'une matrice des responsabilités (un RACI pour les connaisseurs) est une bonne idée.

Principaux bénéfices de l'industrialisation à ce stade :

  • Vision stratégique ET opérationnelle
  • Compréhension et appropriation du projet par tous les acteurs
  • Périmètre clair limitant les risques
  • Répartition claire des responsabilités

Principe n°2 - La QUALITE du projet se gagne pendant le développement

Maintenant qu'on sait quoi faire, qui le fait et comment, il "suffit" de développer. Mais encore faut-il rassembler les conditions d'un travail de qualité, seul garant de l'évolutivité et de la maintenabilité du projet. C'est là que l'industrialisation prend tout son sens.

Premier point clé, l'historisation et le partage du code au travers d'un outil de versionning type SVN, CVS ou Git. L'intérêt est d'organiser le code pour pouvoir travailler à plusieurs en même temps et automatiser certaines manipulations : revenir en arrière, mixer / dé-mixer des versions, etc. Ces systèmes étant très répandus leur mise en œuvre est aisée.
Une bonne pratique consiste à lier le référentiel de code à l'outil de gestion de projet (Redmine, Jira, etc.) afin que tout le cycle soit géré au même endroit : besoin client, spécifications, développement, tests, recette, remontée d'anomalie, documentation, etc.

Deuxième point clé, la mise à disposition des équipes de développement de plusieurs environnements de travail : développement (où le code des différents développeurs est mixé), test (où les testeurs peuvent tout casser), pré-production (où le client constate que tout va bien), production (le site que les internautes voient).
Cette organisation permet de limiter les risques : mauvaise version déployée en prod, perte de temps parce que les testeurs ont perturbé le travail des développeurs, etc. Malheureusement, maintenir et faire évoluer quatre environnements techniques est vite long et coûteux. Heureusement, une démarche d'industrialisation permet d'automatiser ce travail, au travers de recettes Ansible et/ou Mina par exemple : le travail est fait une fois dans l'environnement de développement et "jouer" automatiquement sur les autres autant de fois que nécessaire. Comme tous les environnements sont les mêmes, un éventuel problème est presque toujours détecté avant sa mise en production.

Troisième point clé, investir dans des tests réguliers pendant (et après) les développements. Ça parait évident, mais combien de projets sont testés APRES la phase de développement ? Et là c'est trop tard. Si tout le code est de mauvaise qualité, il faut tout jeter... et recommencer. C'est à ce moment là qu'on réalise que l'investissement initial aurait été bien moins couteux ;-)
Le sujet des tests est vaste mais on peut grossièrement distinguer les tests unitaires (réalisés par les développeurs eux-même), le "re-factoring" réalisé par un autre développeur (méthode Agile), les tests fonctionnels et la recette client.
L'idée est d'automatiser, au fur et à mesure, ce qui peut l'être afin de disposer d'une indication générale de l'état de santé du site à chaque nouvelle livraison de code. Pour y arriver, une bonne pratique consiste à tester et recetter chaque lot dès sa livraison (ou chaque sprint dans le cas des méthodes Agile).
En plus des tests et recettes traditionnelles, des audits peuvent être réalisés une ou deux fois en cours de projet, soit parce que le budget le permet soit parce que des doutes apparaissent.
Evidemment, pour tester il faut s'appuyer sur des spécifications et un guide utilisateur à jour. Ce qui est loin d'être négligeable quand le responsable du projet s'envole vers d'autres horizons.

Principaux bénéfices de l'industrialisation :

  • Visibilité & traçabilité
  • Travail collaboratif
  • Qualité générale (code, documentation)
  • Réactivité en cas de problème
  • Limitation des risques

Principe n°3 - La MAINTENABILITE du projet se joue au quotidien

Le cadre fixé par l'industrialisation impose, au quotidien, une démarche structurée qui pousse à mieux travailler. Le cycle initié au cours de la création ou de la refonte se répète inlassablement : Besoin -> Spécifications -> Développement -> Tests -> Mise à jour de la documentation -> Recette

Principaux bénéfices de l'industrialisation :

  • Visibilité & traçabilité
  • Travail collaboratif
  • Qualité générale (code, documentation)
  • Réactivité en cas de problème
  • Limitation des risques

Avantages et inconvénients de l'industrialisation

Evidemment l'industrialisation de la gestion de son site n'est pas une démarche à entreprendre à la légère car elle est, à court terme, plus coûteuse et complexe à mettre en œuvre. Mais sur le moyen / long terme, les bénéfices sont bien réels.

Voici un petit résumé des avantages / inconvénients d'une industrialisation qui, je l'espère, vous aidera à vous décider :

Bonnes pratiques Avantages Inconvénients
Expression du besoin Permet d'imaginer dans le temps, donc de réaliser un travail d'architecture Demande à avoir une vision stratégique
Wireframes Appropriation du projet par les acteurs, visualisation Parfois redondant avec les pistes graphiques, coût
Spécifications Périmètre et stratégie d'implémentation clairs, tests facilités, risques limités Long et coûteux à court terme, perception d'inutilité
Repository Structuration, travaille en équipe, automatisation Courbe d'apprentissage
Outil de gestion de projet Structuration, travaille en équipe, référentiel unique Courbe d'apprentissage
3 ou 4 environnements de travail Efficacité, risques limités, souplesse Courbe d'apprentissage, coût
Automatisation du déploiement Efficacité, risques limités, gains de temps Courbe d'apprentissage, souplesse
Automatisation des tests Qualité, efficacité, risques limités, gains de temps Courbe d'apprentissage, coût à court terme

Image par Julien Tromeur

Quelques liens utiles :

comments powered by Disqus