Terme

Reconstructibilité

Définition courte

Propriété d'un système dont les contrats entre API, les règles métier et les tests décrivant le comportement attendu sont assez repérables et assez séparés pour qu'une équipe sache le refaire ailleurs, dans une autre technologie.

Définition détaillée

Le mot circule dans plusieurs sens en dehors d'ici. En exploitation, il désigne la capacité à régénérer un environnement à l'identique depuis ses sources et sa configuration. En archivage et en science des données, il désigne la possibilité de retrouver une donnée ou un résultat à partir de ce qui a été conservé.

Dans les articles de ce blog, le terme désigne une propriété de compréhension, pas d'outillage : un système est reconstructible quand on saurait le refaire, ce qui suppose de savoir où sont les frontières — où passe le contrat d'une interface, où vivent les règles métier, quels tests disent le comportement attendu plutôt que l'implémentation actuelle. La reconstruction n'a pas à être effectuée : elle sert de question de contrôle, posée à la place de « est-ce que ça marche ? ».

Le sens normatif et l'usage terrain divergent sur un point. La norme voudrait la reconstruction à l'identique, y compris dans le détail de l'implémentation. Sur le terrain, la question posée est plus faible et plus utile : saurait-on obtenir le même comportement avec d'autres moyens, en repartant de ce que le système dit de lui-même ?

Usage dans le domaine

Le terme intervient comme critère de qualité d'un développement assisté par un assistant, là où la vitesse de livraison ne dit plus rien de la maîtrise. Il sert aussi dans les décisions d'architecture — imposer des contrats entre API, écrire la pyramide de tests avant de développer, refuser que le métier soit dispersé dans les endpoints — et dans les revues de fin de chantier, comme question qui remplace la démonstration fonctionnelle.

Synonymes et variantes

« Est-ce que je saurais le reconstruire ? » — la forme interrogative est l'usage courant du terme. Variantes attestées : « avoir des prises sur le système », « des points d'ancrage », « des lignes de séparation ».

À ne pas confondre avec

  • Dette de compréhension — passif accumulé par une équipe sur un système qu'elle n'explique pas ; la reconstructibilité est l'actif correspondant, et une équipe peut n'avoir ni l'un ni l'autre sur un système qu'elle n'a pas encore touché.
  • Reproductibilité d'un build — propriété d'une chaîne de fabrication qui produit le même artefact à partir des mêmes entrées ; elle porte sur l'outillage et se vérifie automatiquement, sans qu'aucun humain ait compris ce que le système fait.
  • Portabilité — aptitude d'un logiciel à fonctionner sur un autre environnement sans être refait ; elle évite la reconstruction au lieu de la rendre possible.
  • Documentation d'architecture — description de l'état du système tel qu'il est ; elle peut être complète et laisser un système qu'on ne saurait pas refaire, comme elle peut manquer sur un système dont les tests suffisent à dire le comportement.
  • Dette technique — faiblesse de conception dont le traitement a été décidé et budgété ; un système peut être lourdement endetté et parfaitement reconstructible, puisque l'un qualifie la conception et l'autre ce qu'on sait en dire.

Exemples

« Si demain je dois extraire cette application vers une autre technologie, je sais où sont les contrats, où sont les règles métier, où sont les tests qui décrivent le comportement attendu. » — l'emploi de référence, appliqué à une application développée avec un assistant.

Refuser une démarche DDD complète sur un projet qui ne la justifie pas, tout en refusant que le métier soit dispersé dans les endpoints, est un arbitrage de reconstructibilité : on ne cherche pas la pureté du modèle, on cherche des lignes de séparation repérables.

Ambiguïtés / débats

L'ampleur visée n'est pas stabilisée : reconstruire le comportement, reconstruire l'architecture, ou reconstruire le code. Le sens retenu ici est le premier.

La vérification l'est encore moins. Personne ne reconstruit pour vérifier qu'il aurait su le faire, ce qui laisse le critère à l'état de question posée en conscience — et donc exposé à la complaisance de celui qui y répond.