Vai al contenuto principale
Categorie articolo: Learn

Specification-Driven Development: rivalorizzare le specifiche nello sviluppo software agentico

29 Giugno 2026 - 4 minuti di lettura

Negli ultimi anni l’intelligenza artificiale generativa ha modificato profondamente il modo in cui viene sviluppato il software. Attività che fino a poco tempo fa richiedevano ore di implementazione possono oggi essere delegate a un AI coding agent in grado di produrre codice, test e documentazione in pochi minuti. In due parole, vibe coding [1].

Questo cambiamento porta però con sé una conseguenza meno evidente. Se il costo della scrittura del codice diminuisce, aumenta il valore delle informazioni che ne guidano la generazione. In altre parole, la qualità del risultato risulta fortemente influenzata dalla capacità di descrivere correttamente il problema da risolvere.

In questo contesto stanno emergendo approcci come lo Specification-Driven Development (SDD), che spostano l’attenzione dalla produzione del codice alla costruzione di specifiche complete, tracciabili e condivise.

Dal codice generato al contesto che lo guida

L’adozione degli AI coding agent ha introdotto un cambio di prospettiva significativo. Lo sviluppatore parte ancora da una richiesta da realizzare, ma non si limita più a tradurla direttamente in codice: ora può delegare parte (o la totalità) dell’implementazione a un modello linguistico, trasformando la richiesta iniziale in istruzioni chiare, complete e contestualizzate per l’agente AI.

Questo approccio funziona molto bene quando il contesto è chiaro e i requisiti sono definiti con precisione. Le difficoltà emergono quando le informazioni disponibili sono incomplete o ambigue. In questi casi l’agente è costretto a fare assunzioni: può interpretare in modo errato il comportamento atteso, scegliere tecnologie non coerenti con il progetto o adottare convenzioni differenti da quelle utilizzate dal team.

Il risultato è spesso un codice apparentemente corretto che richiede comunque un’importante attività di revisione e validazione.

Che cos’è lo Specification-Driven Development

Lo Specification-Driven Development [2][3][4] nasce proprio dall’esigenza di ridurre queste ambiguità.

L’idea centrale è semplice: ogni modifica da apportare al software deve essere descritta attraverso una specifica che raccolga obiettivi, motivazioni, vincoli, requisiti funzionali e criteri di accettazione. La specifica diventa così l’artefatto principale del processo di sviluppo e il punto di riferimento sia per gli sviluppatori sia per gli agenti AI [2]. A tal proposito, si può visionare spec-kit [8], un toolkit open-source che implementa Specification-Driven Development.

L’implementazione non parte quindi direttamente dal codice, ma da una fase di raffinamento che ha l’obiettivo di rendere esplicite tutte le informazioni necessarie.

Perché gli LLM rendono possibile questo approccio

Le attività di raffinamento dei requisiti non rappresentano una novità. Da anni metodologie Agile e pratiche come il backlog refinement aiutano i team a chiarire gli obiettivi prima dell’implementazione.

La differenza è che oggi gli LLM sono in grado di analizzare rapidamente grandi quantità di documentazione, confrontare requisiti con il codice esistente e individuare incongruenze in tempi estremamente ridotti.

Questa capacità permette di poter valutare l’integrazione di attività di chiarimento e validazione direttamente nel processo di sviluppo quotidiano, rendendo sostenibile un livello di approfondimento che in passato avrebbe richiesto un investimento molto più elevato [3][4].

Specification-Driven Development: le osservazioni emerse dalla sperimentazione

Durante le attività di studio svolte nel corso dell’ultimo ciclo di Gilda è emerso un aspetto particolarmente interessante: adottare lo SDD richiede un cambio di mentalità.

La specifica smette di essere un semplice documento di supporto e diventa il centro dell’intero processo. Ogni nuova informazione che emerge durante lo sviluppo dovrebbe essere riportata nella specifica stessa prima di procedere con ulteriori implementazioni.

Questo porterebbe inevitabilmente a una collaborazione più stretta tra sviluppatori, Product Owner, designer e stakeholder. Le domande poste dall’agente durante la fase di chiarimento diventano occasioni per esplicitare decisioni che spesso rimangono implicite.

I vantaggi di un approccio guidato dalle specifiche

Il beneficio più evidente consiste nello spostare il lavoro di chiarimento all’inizio del processo.

Investire più tempo nella definizione delle specifiche permette di ridurre il numero di assunzioni, limitare le interruzioni durante lo sviluppo e fornire un contesto migliore sia agli sviluppatori sia agli agenti AI.

Esiste però un vantaggio altrettanto importante: la conoscenza del prodotto viene centralizzata e resa facilmente consultabile. Le specifiche diventano una forma di documentazione viva che racconta non solo cosa è stato realizzato, ma anche perché determinate decisioni sono state prese [2].

Le criticità da considerare

Lo Specification-Driven Development, inserito nello sviluppo di un prodotto, non sarebbe privo di costi. La produzione e il mantenimento delle specifiche richiederebbero tempo da parte delle figure diverse dal team di sviluppo. Inoltre, l’utilizzo intensivo degli LLM introdurebbe dei costi operativi legati ai modelli utilizzati da considerare in termini di budget.

Per questo motivo l’approccio può essere percepito inizialmente come un rallentamento. Il ritorno dell’investimento emerge soprattutto nel medio e lungo periodo, quando la qualità delle informazioni raccolte inizia a ridurre errori, chiarimenti successivi e rilavorazioni.

Conclusioni

Più che una metodologia dedicata esclusivamente agli AI coding agent, lo Specification-Driven Development rappresenta una riflessione sul valore delle informazioni all’interno del processo di sviluppo software [7].

L’aspetto più interessante non è la generazione automatica del codice, ma l’attenzione posta sulla costruzione di una conoscenza condivisa, verificabile e facilmente accessibile.

In un contesto in cui la scrittura del codice sta diventando sempre più automatizzabile, la capacità di definire chiaramente requisiti, vincoli e obiettivi rischia di diventare una delle competenze più importanti per i team di sviluppo. Se il software del passato era limitato dalla velocità con cui si scriveva codice, quello del futuro potrebbe essere limitato dalla qualità delle specifiche che guidano la sua generazione.

Riferimenti

  1. Articolo “What Is Vibe Coding?
  2. Pagina “Specification-Driven Development (SDD)” della documentazione del progetto spec-kit
  3. Articolo “Diving Into Spec-Driven Development With GitHub Spec Kit
  4. Articolo “Spec-driven development with AI: Get started with a new open-source toolkit
  5. OpenSpec framework
  6. Pagina “Welcome to the BMad Method” della documentazione BMad+
  7. ùArticolo “Structured-Prompt-Driven Development (SPDD)” di Martin Fowler
Articolo scritto da