Aller au contenu
← Idées

Comment décider quels changements de processus nécessitent une règle, une configuration ou un développement sur mesure

Un cadre pratique pour déterminer si un changement de processus doit être traité par du code, une configuration administrable ou une nouvelle capacité produit.

Équipe examinant un flux de processus afin de choisir entre une règle, une configuration et un développement sur mesure.

Lorsqu’un processus numérique évolue, la discussion est souvent formulée de manière trop simple : « Peut-on le faire rapidement à l’aide d’un paramètre ou faut-il le développer ? » Cette question masque une décision de conception plus importante. Chaque changement introduit une règle métier, une attente opérationnelle et un coût de maintenance futur. Tout résoudre par du code ralentit l’adaptation ; tout résoudre par des options de configuration peut rendre le produit imprévisible, difficile à auditer et fragile.

La bonne décision ne dépend pas uniquement de l’effort initial. Elle dépend de la stabilité de la règle, de la personne qui doit pouvoir la modifier, du risque associé et de la question de savoir si le changement introduit une nouvelle capacité. L’objectif est de faire évoluer le processus sans transformer chaque exception en branche permanente ni dissimuler des décisions critiques dans des écrans d’administration ambigus.

Les trois options et les limites de chacune

Les trois options et les limites de chacune

Une même demande peut être exprimée sous la forme d’une règle fixe, d’une configuration ou d’un développement sur mesure. Ce sont des mécanismes différents, qui doivent avoir des responsabilités claires.

Règle stable implémentée dans le code

Une règle intégrée au code convient lorsqu’elle représente un comportement structurel du produit : validations obligatoires, contraintes de sécurité, calculs peu variables ou décisions qui doivent être identiques pour tous les cas d’un même contexte. C’est également un bon choix lorsque sa modification exige de comprendre des dépendances techniques ou lorsqu’une erreur aurait de graves conséquences.

  • Avantage : un comportement explicite, versionné avec le logiciel et couvert par des tests automatisés.
  • Risque : un ajustement opérationnel mineur exige un déploiement et peut créer une dépendance envers l’équipe technique.
  • Signal de diagnostic : la règle reste pratiquement identique pendant des mois et il existe peu de raisons légitimes pour que chaque unité puisse la modifier.

Configuration administrable

La configuration sert à gérer les variations prévues du processus. Il peut s’agir, par exemple, de seuils d’approbation, de destinataires de notifications, de calendriers opérationnels, de catégories activées ou de séquences d’étapes au sein d’un cadre déjà conçu. Ce n’est pas une façon d’éviter la conception : c’est une capacité produit qui requiert un modèle de données, des autorisations, des validations et une interface compréhensible.

  • Avantage : les équipes métier ou opérationnelles peuvent répondre à des changements autorisés sans attendre un cycle de développement.
  • Risque : un trop grand nombre de paramètres crée des combinaisons impossibles à comprendre ou à tester.
  • Signal de diagnostic : le changement est récurrent, prévisible et se situe dans des limites que le système peut valider.

Développement d’une nouvelle capacité

Le développement sur mesure est nécessaire lorsque la demande modifie le modèle du processus : elle ajoute des participants, des états, des décisions, des données, des intégrations ou des exceptions qui n’existaient pas. Tenter de l’intégrer sous forme de paramètre produit généralement une logique conditionnelle dispersée et une interface de configuration que personne ne peut gouverner.

  • Avantage : il permet de concevoir une solution cohérente, observable et pérenne.
  • Risque : traiter un besoin ponctuel comme une plateforme générique et surdimensionner le périmètre.
  • Signal de diagnostic : il faut ajouter des champs, des autorisations, des règles de routage ou de nouveaux états pour prendre en charge le changement.

Les six questions pour classer un changement

Avant d’estimer les tâches, les équipes produit, métier et technique devraient répondre par écrit aux questions suivantes. Les réponses réduisent les décisions prises uniquement selon l’urgence ou le coût apparent de la première implémentation.

  1. À quelle fréquence cela change-t-il ? Si la règle peut varier plusieurs fois par an en raison de décisions opérationnelles légitimes, la configuration mérite d’être évaluée. Si le cas est exceptionnel et ne se reproduira pas, une règle explicite ou une solution temporaire assortie d’une date de retrait peut être préférable.
  2. La variation était-elle prévue dans la conception ? Configurer ne doit pas vouloir dire accepter n’importe quel comportement. Un ensemble délimité d’options et de règles de compatibilité doit exister.
  3. Qui est responsable de la décision ? Si les opérations doivent pouvoir la modifier, elles ont besoin d’une expérience sûre et d’autorisations adaptées. Si elle exige une interprétation technique, elle doit rester dans le code.
  4. Quel est l’impact d’une erreur ? Plus l’impact financier, juridique, sécuritaire ou sur la continuité opérationnelle est important, plus le contrôle doit être rigoureux : validation, revue, tests et traçabilité.
  5. Le changement affecte-t-il le modèle de domaine ? Si une nouvelle entité, un nouvel état, un nouveau rôle ou une nouvelle relation apparaît, il ne s’agit pas seulement de configuration ; une capacité doit probablement être conçue.
  6. Comment le changement sera-t-il vérifié et annulé ? S’il est impossible d’en prévisualiser l’effet, d’enregistrer la modification et de revenir en arrière, la configuration n’est pas prête à être administrable.

Une configuration saine encadre les décisions à l’intérieur d’une conception ; elle ne transfère pas à l’utilisateur la responsabilité de concevoir le système.

Quand utiliser le code, la configuration ou le développement

Une règle stable dans le code est préférable lorsqu’une demande n’admet pas de variations selon l’unité, lorsqu’elle protège une condition essentielle ou lorsque sa validité dépend d’une logique complexe. Par exemple, empêcher qu’une demande passe à l’approbation sans les données minimales requises. Transformer cette condition en case modifiable peut dégrader la qualité du processus.

La configuration convient aux décisions opérationnelles qui évoluent dans une plage connue. Un flux d’approbation peut permettre de définir le montant à partir duquel une seconde revue est requise, à condition que le système valide la valeur, identifie les responsables et évite de laisser le flux sans approbateur. Dans ce cas, le produit n’offre pas une liberté absolue : il offre une variabilité contrôlée.

Le développement sur mesure doit commencer lorsque le changement modifie la nature du flux. Si une organisation a besoin d’approbations parallèles, d’une délégation temporaire, de règles fondées sur les attributs de plusieurs entités et d’une escalade à l’échéance, elle a probablement dépassé le simple paramètre de seuil. Il est préférable de concevoir une capacité de routage et de décision, même si elle est mise en œuvre progressivement.

Les risques qui révèlent une mauvaise décision

Le paramétrage excessif constitue le risque le plus courant. On le reconnaît souvent parce que l’écran contient des noms techniques, des options contradictoires, des dépendances implicites et des valeurs que personne n’ose modifier. L’équipe finit alors par avoir besoin d’un développeur pour interpréter une configuration que, en théorie, le métier devait gérer.

Le problème inverse tient aux exceptions invisibles dans le code. Elles apparaissent lorsque chaque client, service ou cas particulier ajoute une condition isolée. Au fil du temps, deux règles produisent des résultats différents pour des situations qui semblent équivalentes, et personne ne peut expliquer laquelle prévaut. Un signal clair est que les incidents se résolvent en demandant « quelle condition s’applique en premier » plutôt qu’en consultant une politique compréhensible.

La logique dupliquée représente également un risque. Un seuil défini dans une interface d’administration, répété dans un service d’intégration et réinterprété dans un rapport génère des divergences. Pour l’éviter, chaque décision doit avoir une source de vérité, un responsable et un emplacement connu où elle est évaluée.

Comment concevoir une configuration sûre et gouvernable

Une configuration administrable doit être traitée comme une partie du produit, et non comme une table modifiable. Définissez d’abord les variations qui sont valides et celles qui ne le sont pas. Ajoutez ensuite des contrôles proportionnés à leur impact.

  • Autorisations par rôle : distinguez les personnes pouvant consulter, proposer, approuver et publier les modifications.
  • Validations métier : empêchez les combinaisons invalides avant l’enregistrement, et non lorsque le processus a déjà échoué.
  • Historique auditable : consignez ce qui a changé, qui a effectué la modification, à quel moment et quelle était la valeur précédente.
  • Périmètre explicite : indiquez clairement si la règle s’applique à toute l’organisation, à une unité, à un type de demande ou à une période.
  • Tests de scénarios : permettez de vérifier des cas représentatifs avant d’activer une modification à fort impact.
  • Réversibilité : proposez un moyen contrôlé de restaurer une version antérieure sans modifier manuellement plusieurs valeurs.

Les recommandations de l’OWASP sur l’autorisation et la validation des entrées sont particulièrement pertinentes lorsque des utilisateurs non techniques administrent des règles qui influencent des autorisations, des montants ou des parcours de décision. L’interface doit expliquer l’effet de chaque modification sans révéler de détails techniques inutiles.

Exemple : l’évolution d’un flux d’approbation

Exemple : l’évolution d’un flux d’approbation

Imaginez un flux dans lequel toute demande dépassant un montant défini exige l’approbation d’une personne responsable. L’obligation de renseigner un montant et l’interdiction d’approuver sa propre demande sont des règles stables : elles doivent rester dans le code et être couvertes par des tests.

Le montant seuil et la personne responsable peuvent être configurables s’ils varient selon l’unité opérationnelle et si le système vérifie qu’un responsable actif existe toujours. L’historique doit indiquer quel seuil était en vigueur au lancement de chaque demande, afin qu’une modification ultérieure ne réécrive pas le contexte d’une décision déjà prise.

Si l’on demande ensuite que deux services approuvent en parallèle, que la responsabilité dépende de la catégorie et de la région, et qu’une délégation existe pendant les absences, l’équipe doit s’arrêter. Il n’est plus raisonnable d’ajouter des cases à la configuration existante. C’est le moment de définir une capacité de règles de routage, avec ses propres priorités, conflits, états et moyens d’observation.

La décision durable ne consiste pas à choisir systématiquement l’option la plus rapide. Elle consiste à sélectionner le mécanisme qui préserve la clarté du processus aujourd’hui et permet son évolution demain. Utilisez le code pour les invariants, la configuration pour les variations prévues et le développement pour les changements de modèle.

Fuentes y referencias

  1. Web standardsW3C
  2. OWASP Cheat Sheet SeriesOWASP Foundation
  3. Web performanceweb.dev