Développement

Back-office : générateur ou sur mesure.

Un générateur d’administration fait gagner trois semaines et coûte six mois quand une règle métier n’entre pas dans son modèle. Le critère : la part de CRUD pur.

18 septembre 2026Par Amine14 min de lecture
Écran large affichant un générateur d’interface d’administration, une table d’utilisateurs et du code à côté
Article publié le 18 septembre 2026 · dernière modification le 18 septembre 2026

Un générateur d’interface d’administration fait gagner trois semaines au démarrage et peut coûter six mois le jour où une règle métier ne rentre pas dans son modèle. Ce n’est pas un procès en médiocrité : ces outils sont excellents dans leur domaine, et refuser de les utiliser par principe est aussi coûteux que les utiliser partout. Le problème est qu’ils sont choisis pour la mauvaise raison — la rapidité de la première démonstration — alors que le seul critère qui compte se mesure avant de coder : la part de vos écrans qui relèvent du CRUD pur, c’est-à-dire de la création, lecture, modification et suppression d’enregistrements, sans logique métier au milieu.

Cet article donne la méthode pour calculer cette part sur votre propre besoin, décrit les quatre situations où un générateur casse, et chiffre ce que coûte la sortie. Il s’appuie sur un relevé de banc sans ambiguïté : trois manières d’afficher la même liste de 5 000 lignes, qui transfèrent le même poids à quelques kilo-octets près — 643, 708 et 709 Ko — et donnent des expériences radicalement différentes, de 1 668 ms de premier affichage à une page instantanée. Ce relevé explique pourquoi la volumétrie est le mur que les générateurs rencontrent le plus souvent.

Les trois familles de solutions

Le marché propose trois approches, et la confusion entre elles est la première source de mauvais choix. Les générateurs partent de votre modèle de données et produisent les écrans : vous déclarez une ressource, vous obtenez une liste, un formulaire, des filtres, une recherche, la gestion des droits de base. Les bibliothèques de composants ne génèrent rien : elles fournissent les briques visuelles — tableaux, formulaires, sélecteurs — que vous assemblez, avec vos règles, dans vos écrans. Le sur-mesure complet écrit les écrans un par un, au-dessus du cadre applicatif.

Les trois familles d’interfaces d’administration : ce qu’elles coûtent au démarrage et ce qu’elles imposent ensuite
FamilleCoût de démarrageCe qu’elle imposeCoût d’un écran hors norme
GénérateurTrès faible : quelques jours pour trente écransSon modèle de données, son modèle de droits, sa manière d’afficher les listesÉlevé : il faut soit le contourner, soit sortir de l’outil pour cet écran
Bibliothèque de composantsMoyen : les briques sont fournies, l’assemblage est à votre chargeUne grammaire visuelle, rien sur vos données ni vos règlesFaible : l’écran hors norme s’écrit comme les autres
Sur-mesure completÉlevé : chaque écran est écritRien, hormis vos propres conventionsFaible, mais chaque écran ordinaire coûte aussi plein tarif

La lecture du tableau donne déjà la stratégie gagnante dans la plupart des projets, et elle n’est ni tout l’un ni tout l’autre : générateur pour les écrans ordinaires, sur-mesure pour les écrans métier, à condition d’avoir décidé lesquels sont lesquels avant de commencer. Ce qui échoue, c’est de découvrir en cours de route qu’un écran essentiel est hors modèle — parce qu’à ce stade, le générateur structure déjà l’authentification, la navigation et les droits de toute l’application.

Le test de la part de CRUD pur

Voici la mesure à faire avant de choisir, et elle prend une demi-journée. Listez tous les écrans de la future application — une ligne par écran, sans exception, y compris les écrans d’export et de paramétrage. Puis classez chaque ligne dans l’une des trois catégories suivantes, sans en inventer une quatrième.

CRUD pur : l’écran affiche, crée, modifie ou supprime des enregistrements d’une table, avec des filtres et une recherche, et aucune règle métier ne s’exécute au milieu. Une liste de fournisseurs, une fiche de produit, un catalogue de références. CRUD avec règle : l’écran ressemble à du CRUD mais une règle s’applique — un champ dépend d’un autre, une modification déclenche un calcul ou une notification, certaines lignes sont invisibles pour certains utilisateurs. Écran métier : l’écran n’est pas une table — un tableau de bord, un plan de charge, un rapprochement entre deux sources, un assistant en plusieurs étapes.

Lecture du décompte : part de CRUD pur dans les écrans et orientation correspondante
Part de CRUD purOrientationPrécaution
Plus de 80 %Générateur, sans hésiterVérifier que les écrans métier restants peuvent vivre à côté, hors de l’outil
Entre 50 et 80 %Générateur pour le CRUD, écrans métier écrits à partDécider dès le premier jour où passe la frontière, et la documenter
Entre 30 et 50 %Bibliothèque de composantsLe générateur ferait gagner peu et contraindrait beaucoup
Moins de 30 %Sur-mesure completLe gain d’un générateur serait marginal et son modèle, un obstacle permanent

Un avertissement sur le décompte : les écrans métier sont systématiquement sous-représentés dans les listes faites en début de projet, parce qu’ils sont plus difficiles à imaginer que les listes ordinaires. Une part de CRUD pur mesurée à 85 % descend souvent à 60 % une fois le cadrage terminé. Prenez une marge, et faites le décompte avec les utilisateurs finaux plutôt qu’avec le seul commanditaire — ce sont eux qui savent quels écrans ils ouvrent vingt fois par jour.

Ce qu’un générateur fait très bien

Il faut lui rendre justice, parce que le gain est réel et mesurable. Sur une trentaine de ressources ordinaires, un générateur produit en quelques jours ce qui demanderait plusieurs semaines à écrire : listes paginées, tri, filtres, recherche, formulaires validés, messages d’erreur cohérents, actions de masse, exports, journalisation des modifications. Il apporte aussi une homogénéité que le sur-mesure obtient rarement — trente écrans écrits à la main par trois développeurs ne se ressemblent pas, trente écrans générés si.

Il y a un bénéfice moins évident et plus durable : le générateur impose une discipline de modélisation. Pour qu’un écran se génère proprement, le modèle de données doit être propre — relations déclarées, contraintes en base, nommage cohérent. Les projets qui commencent par un générateur ont souvent un meilleur schéma que ceux qui commencent par des écrans, parce que le raccourci sale y est plus difficile.

La conclusion pratique est donc nuancée : pour un outil interne dont l’essentiel est de saisir et consulter des enregistrements — un référentiel, un annuaire, une base documentaire — le générateur est le bon choix, et le débattre est une perte de temps. Le sujet de cet article commence là où cette description cesse d’être exacte.

Les quatre cas où un générateur casse

Premier cas : les droits par ligne. Un générateur gère nativement les droits par écran — qui peut voir la liste des commandes, qui peut la modifier. Il gère beaucoup moins bien les droits par ligne : ce commercial voit les commandes de ses clients, son responsable voit celles de sa région, la comptabilité voit toutes les commandes mais aucun commentaire commercial. Ce type de règle traverse toutes les requêtes de l’application et doit être appliqué au niveau de l’accès aux données, pas à celui de l’affichage. C’est exactement le poste que nous identifions comme décisif dans le chiffrage d’un intranet sur mesure, et il ne se rattrape pas après coup : le rétrofiter sur trente écrans générés coûte plus cher que de l’avoir conçu d’emblée.

Deuxième cas : les actions métier composées. « Valider un dossier » n’est pas une modification de champ : c’est vérifier des conditions, écrire dans trois tables, envoyer une notification, produire un document et journaliser l’opération, le tout dans une transaction qui doit tout annuler en cas d’échec. Un générateur sait attacher une action à une ressource ; il ne sait pas structurer une opération métier transactionnelle, et le code qu’on y glisse finit par vivre dans un endroit prévu pour de la présentation.

Troisième cas : les écrans de synthèse. Un tableau de bord ne dérive d’aucune table : il agrège plusieurs sources, sur des périodes, avec des règles de calcul qui appartiennent au métier. Le générateur n’a rien à générer — et l’écrire à l’intérieur de l’outil revient à écrire une application dans une application.

Quatrième cas : la volumétrie. C’est le plus mécanique, et le plus facile à mesurer. La section suivante lui est consacrée.

La volumétrie : ce que les générateurs ne fenêtrent pas

Un générateur pagine, mais pagine parfois large — et surtout, il affiche tout ce qu’on lui demande d’afficher. Le relevé de banc suivant compare trois manières de présenter la même liste de 5 000 lignes, sur la même machine et avec le même jeu de données.

Affichage d’une liste de 5 000 lignes selon la technique : premier affichage, éléments dans la page, tâche bloquante et poids transféré
TechniquePremier affichageÉléments dans la pageTâche bloquantePoids transféré
5 000 lignes dans le HTML1 668 ms35 021643 Ko
Lignes construites par script92 ms2 478 ms708 Ko
Liste fenêtrée219Aucune709 Ko
0 400 Ko 800 Ko 643 Ko 708 Ko 709 Ko lignes dans le HTML construites par script liste fenêtrée

Le fait marquant est celui que montre le graphique : les trois techniques transfèrent le même poids, à 66 Ko près. Le réseau n’explique donc rien. Ce qui explique tout, c’est ce que le navigateur doit construire : 35 021 éléments dans le premier cas, 219 dans le dernier. Dans le premier, la page met 1 668 ms à s’afficher parce que le navigateur assemble une structure énorme avant de montrer quoi que ce soit. Dans le deuxième, la page apparaît en 92 ms — excellent chiffre — puis une tâche bloquante de 2 478 ms gèle l’interface pendant que le script construit les lignes : l’utilisateur voit la page, clique, et rien ne répond. Dans le troisième, seules les lignes visibles existent, et il n’y a ni attente ni gel.

Ce relevé a une conséquence directe sur le choix d’un générateur : demandez comment il affiche une liste de plusieurs milliers de lignes, et vérifiez-le sur vos propres volumes, pas sur une démonstration à cinquante enregistrements. Beaucoup de générateurs paginent correctement les listes principales mais rendent des sélecteurs de relation qui chargent l’intégralité d’une table — le champ « client » d’un formulaire qui embarque vos 12 000 clients est le cas typique, et il produit exactement le deuxième scénario du tableau. C’est aussi ce que montrent, dans un autre contexte, les deux mesures qui décident d’un intranet : le facteur limitant d’un outil interne est presque toujours le nombre d’éléments manipulés, jamais le débit disponible.

La question des droits, encore

Revenons-y, parce que c’est le poste qui décide du coût total et que la moitié des projets le tranche par défaut. Deux modèles existent, et ils n’ont ni le même prix ni la même trajectoire.

Deux modèles de droits : où la règle s’applique, ce qu’elle coûte à l’écriture et ce que coûte le changement de modèle
ModèleOù la règle s’appliqueCoût initialCoût du changement de modèle
Droit par écranÀ l’entrée de l’écran : l’utilisateur y accède ou nonFaible, souvent natif dans un générateurSans objet
Droit par ligneDans chaque requête de lecture et d’écriture, sans exceptionÉlevé, mais conçu une fois pour toute l’applicationTrès élevé : chaque écran existant doit être repris et retesté

La règle à retenir est celle-ci : le modèle de droits se décide avant le premier écran, jamais après le trentième. Si un seul cas d’usage exige un droit par ligne — « chaque commercial ne voit que ses clients » suffit —, alors toute l’application doit être construite sur ce modèle dès le départ, y compris les écrans qui n’en ont pas besoin. Un modèle de droits mixte, où certains écrans filtrent par ligne et d’autres non, est la garantie d’une fuite de données : il suffit d’un export oublié.

Le coût de sortie

Sortir d’un générateur ne consiste pas à réécrire des écrans : cela, c’est le travail visible et le plus simple à chiffrer. Le coût réel est dans ce que l’outil fournissait sans qu’on y pense — l’authentification et les sessions, la navigation, le système de droits, la validation des formulaires et ses messages, la journalisation des modifications, les exports, la gestion des fichiers joints. Chacune de ces briques doit être reconstruite ou remplacée avant que le premier écran réécrit ne fonctionne.

D’où une recommandation concrète, à appliquer dès le premier jour même quand on choisit le générateur : isolez la logique métier hors de l’outil. Les règles — validation d’un dossier, calcul d’un tarif, contrôle de cohérence — vivent dans des classes de service appelées par les écrans, jamais dans le code de configuration du générateur. Le jour de la sortie, la logique est intacte et seule la présentation est à refaire ; la sortie devient un chantier de semaines au lieu d’un chantier de mois. Cette précaution ne coûte presque rien au départ, et c’est la meilleure assurance qu’on puisse souscrire sur ce type de projet. Elle sert aussi dans un autre cas de figure fréquent : quand il faut connecter un site et un ERP, la logique isolée se réutilise telle quelle côté intégration, alors qu’une logique noyée dans des écrans est à réécrire.

Le cas de l’outil qui a déjà grossi

La situation la plus fréquente n’est pas un choix à faire mais un constat à traiter : l’outil existe, il a été monté avec un générateur il y a deux ans, et il craque. Le réflexe est d’envisager une réécriture complète ; c’est presque toujours le plus mauvais scénario, parce qu’il remet en jeu ce qui fonctionne pour corriger ce qui ne fonctionne pas.

La méthode que nous appliquons tient en trois temps. D’abord, identifier les écrans qui posent problème — ils sont rarement plus de cinq sur trente, et ce sont toujours les mêmes catégories : un écran de synthèse, une ou deux actions métier devenues complexes, une liste devenue trop longue. Ensuite, sortir ces écrans-là du générateur en les écrivant à part, tout en gardant l’authentification, la navigation et le reste des écrans dans l’outil. Enfin, extraire la logique métier de ces écrans vers des services, pour que le prochain déplacement ne coûte rien.

Cette cohabitation a mauvaise presse et pourtant elle tient très bien, à une condition non négociable : le modèle de droits doit être commun aux deux mondes. Deux systèmes de droits parallèles, l’un dans le générateur et l’autre dans les écrans écrits à la main, produisent tôt ou tard une divergence — et une divergence de droits est une fuite de données. Si le générateur ne permet pas de partager son modèle de droits avec du code externe, alors la cohabitation n’est pas possible et l’arbitrage redevient binaire.

Le tableau de décision

Décision par situation : orientation recommandée et point de vigilance principal
SituationOrientationPoint de vigilance
Référentiel ou annuaire, droits par écran, volumes modestesGénérateurVérifier le comportement des sélecteurs de relation sur vos volumes
Outil de saisie avec deux ou trois écrans de synthèseGénérateur + écrans métier écrits à partFixer la frontière et la documenter dès le cadrage
Un seul cas de droit par ligne, même marginalConcevoir le modèle de droits d’abord, quel que soit l’outilAucun modèle mixte : la fuite passe par l’export oublié
Actions métier transactionnelles nombreusesBibliothèque de composants ou sur-mesureLa logique reste dans des services, hors des écrans
Listes de plusieurs milliers de lignes consultées quotidiennementFenêtrage obligatoire, quelle que soit la familleMesurer éléments dans la page et tâches bloquantes, pas le poids
Moins de 30 % de CRUD pur au décompteSur-mesure completLe décompte sous-estime toujours les écrans métier : prendre une marge

Ce qu’il faut retenir

Le choix d’une interface d’administration ne se joue pas sur la rapidité de la première démonstration mais sur un décompte à faire avant de coder : la part de vos écrans qui relèvent du CRUD pur. Au-delà de 80 %, le générateur s’impose ; entre 50 et 80 %, il couvre le CRUD et les écrans métier s’écrivent à côté ; en dessous de 30 %, son modèle serait un obstacle permanent. Et ce décompte sous-estime toujours les écrans métier — prenez une marge, et faites-le avec ceux qui utiliseront l’outil tous les jours.

Quatre situations font céder un générateur : les droits par ligne, les actions métier transactionnelles, les écrans de synthèse et la volumétrie. Le banc chiffre la dernière sans appel : la même liste de 5 000 lignes transfère 643, 708 et 709 Ko selon la technique — donc le réseau n’explique rien — mais construit 35 021 éléments et met 1 668 ms à s’afficher dans un cas, gèle l’interface 2 478 ms après un affichage en 92 ms dans un autre, et se contente de 219 éléments sans aucune tâche longue quand elle est fenêtrée.

Deux décisions se prennent au premier jour et ne se rattrapent pas ensuite : le modèle de droits, qui doit porter sur les lignes dès qu’un seul cas d’usage l’exige, et l’isolement de la logique métier hors de l’outil. La seconde coûte presque rien à mettre en place et transforme une éventuelle sortie du générateur en chantier de semaines plutôt qu’en réécriture. C’est la meilleure assurance disponible sur ce type de projet — et la seule qu’on ne peut pas souscrire après l’incident.

Intranet et outil métier sur mesure

Reliez vos obligations, vos données et vos processus dans un outil que vos équipes utilisent vraiment.

Découvrir cette expertise