SDD (Specification-Driven Development) : La révolution des spécifications exécutables face au « vibe coding »

SDD (Specification-Driven Development) : La révolution des spécifications exécutables face au « vibe coding »

Qu’est-ce que le Specification-Driven Development (SDD) ?

L’essor fulgurant des assistants de codage basés sur l’intelligence artificielle générative a popularisé en 2025 le concept de « vibe coding », théorisé par Andrej Karpathy. Cette approche, consistant à guider une IA par des invites (prompts) successives et informelles sans examiner en détail le code généré, s’est avérée très efficace pour concevoir rapidement des prototypes. Néanmoins, dès lors que les projets grandissent en taille et en complexité, le « vibe coding » se heurte à des limites majeures : dérive architecturale, hallucinations d’API, failles de sécurité et accumulation accélérée d’une dette technique difficile à résorber.

Pour répondre à ce défi, l’ingénierie logicielle s’est structurée autour du Specification-Driven Development (SDD). Le SDD réinverse le paradigme traditionnel : au lieu d’inviter l’IA au fil de l’eau pour produire du code source qu’il faut ensuite documenter et corriger, l’équipe rédige en amont une spécification structurée et vérifiable. Dans ce modèle, la spécification devient la source unique de vérité, tandis que le code exécutable est traité comme un produit dérivé généré par l’agent IA.

Comment fonctionne le workflow orienté spécifications ?

Le SDD s’appuie sur un cycle de développement rigoureux conçu pour réduire le flou conceptuel avant toute génération de syntaxe :

  • La Constitution (Guardrails) : Définition des règles immuables du projet (stack technique, normes de sécurité, conventions de nommage, patterns d’architecture) consignées dans un fichier dédié (ex. constitution.md).
  • Spécifier (Specify) : Rédaction explicite des exigences fonctionnelles, des scénarios d’utilisation et des limites du système, souvent rédigées sous forme de notations structurées comme EARS (Easy Approach to Requirements Syntax).
  • Clarifier (Clarify) : Élimination systématique des ambiguïtés et des cas limites (états d’erreur, réponses vides) grâce à des étapes d’interrogation guidées avec l’agent IA.
  • Planifier et découper (Plan & Tasks) : Conversion des spécifications en un plan d’action technique (plan.md) puis en une liste de tâches atomiques et traçables (tasks.md).
  • Mise en œuvre et convergence (Implement & Verify) : L’agent de codage exécute les tâches une à une et valide le résultat face aux critères d’acceptation définis dans la spécification.

Une panoplie d’outils et de frameworks open source propulsent cette pratique, notamment GitHub Spec Kit initié sous la conduite de John Lam, ainsi que des intégrations dans AWS Kiro, Claude Code, Cursor ou Tessl.

Les niveaux de maturité du SDD

Les experts en génie logiciel, à l’instar de Martin Fowler et de Birgitta Böckeler chez Thoughtworks, distinguent généralement trois niveaux de maturité dans l’adoption du SDD :

  • Spec-first : La spécification est rédigée en amont pour cadrer la tâche courante de l’agent IA, mais le code reste le principal artefact maintenu sur le long terme.
  • Spec-anchored : La spécification est conservée et maintenue en même temps que le code source au fil des évolutions, servant de documentation vivante et de contrat permanent.
  • Spec-as-source : Niveau le plus poussé où la spécification est le seul artefact édité par les humains. Le code source devient alors un simple produit intermédiaire de compilation automatique réengendré à chaque modification de la spécification.

Conséquences concrètes pour les développeurs et l’industrie

L’émergence du Specification-Driven Development modifie profondément le rôle des ingénieurs logiciels, l’économie des projets informatiques et la gouvernance de l’IA :

  • Transformation du métier de développeur : Le rôle évolue d’écrivain de syntaxe à celui d’architecte et de réviseur d’exigences. La valeur ajoutée se déplace vers la clarté d’expression du besoin métier, la modélisation et le contrôle qualité.
  • Réduction des coûts et de la dette technique : En arrêtant d’utiliser l’IA comme un moteur de recherche en boucle ouverte, les équipes évitent la surconsommation de jetons (tokens) et les cycles d’aller-retour pour corriger des erreurs évitables.
  • Gouvernance et conformité réglementaire : Avec l’entrée en vigueur de textes majeurs comme le règlement européen sur l’IA (AI Act), disposer de spécifications vérifiables et d’un audit clair sur la manière dont les fonctionnalités ont été conçues devienne une exigence légale et de conformité.

Et vous, qu’en pensez-vous ?

Avez-vous déjà expérimenté des démarches de Specification-Driven Development avec vos assistants de codage ou préférez-vous la liberté du « vibe coding » pour prototyper rapidement vos idées ? Quels sont vos retours d’expérience et vos outils favoris ? Exprimez-vous dans la section commentaires ci-dessous !

Photo : Pixabay sur Pexels.

Pour aller plus loin

Liens affiliés Amazon : en tant que Partenaire Amazon, ce site perçoit une commission sur les achats éligibles réalisés via ces liens, sans coût supplémentaire pour vous.

Software Requirements Essentials: Core Practices for Successful Requirements, Karl Wiegers, Candase Hokanson

Un ouvrage de référence synthétisant 20 pratiques clés pour rédiger des spécifications logicielles claires et exploitables aussi bien par des humains que par des agents d’IA.

Couverture : Refactoring: Improving the Design of Existing Code (2nd Edition)Refactoring: Improving the Design of Existing Code (2nd Edition), Martin Fowler

Indispensable pour comprendre la gestion de la dette technique et la restructuration du code, un enjeu majeur lorsque des agents IA génèrent de gros volumes d’implémentations.

Couverture : Building Evolutionary Architectures: Automated Software GovernanceBuilding Evolutionary Architectures: Automated Software Governance, Neal Ford, Rebecca Parsons, Patrick Kua

Explique comment maintenir des garde-fous architecturaux vivants et automatisés pour accompagner l’évolution continue d’un système logiciel.

Sources

Publications similaires

Laisser un commentaire