Salta al contenuto principale

17 - BMAD Method: Sviluppo Agile AI-Driven

BMAD Method: Sviluppo Agile AI-Driven Il BMAD Method (Breakthrough Method for Agile AI-Driven Development) e una metodologia rivoluzionaria che affronta...

Cosa ne pensi di questo articolo?

17 - BMAD Method: Sviluppo Agile AI-Driven
ClaudeFoto:Matheus BertelliPexels

In Breve

BMAD Method: Sviluppo Agile AI-Driven Il BMAD Method (Breakthrough Method for Agile AI-Driven Development) e una metodologia rivoluzionaria che affronta...

BMAD Method: Sviluppo Agile AI-Driven

Il BMAD Method (Breakthrough Method for Agile AI-Driven Development) e una metodologia rivoluzionaria che affronta uno dei problemi più critici dello sviluppo software assistito da AI: come gestire progetti complessi che superano le capacità di una singola sessione di conversazione? La risposta sta in un concetto tanto semplice quanto potente: il Document Sharding, ovvero la frammentazione della documentazione di progetto in pezzi atomici ottimizzati per il consumo da parte di agenti AI.

BMAD non è semplicemente un set di prompt o una collezione di template: è un framework completo che include 21 agenti specializzati, oltre 50 workflow guidati, template per ogni fase di progetto e un sistema di intelligence adattiva che scala la complessità in base alla dimensione del progetto. In questo articolo esploreremo ogni aspetto del metodo, dalla teoria alla pratica, con esempi concreti di implementazione.

Cosa Imparerai

  • Comprendere il problema del context overflow e come BMAD lo risolve
  • Padroneggiare il concetto di Document Sharding e la sua importanza
  • Conoscere i 21 agenti specializzati e i loro ruoli
  • Utilizzare i 50+ workflow guidati per ogni fase del progetto
  • Applicare l'intelligence scale-adaptive di BMAD
  • Configurare BMAD nel proprio progetto con Claude Code
  • Confrontare BMAD con metodologie tradizionali
  • Evitare i comuni errori di implementazione

Panoramica della Serie

#ArticoloFocus
1Claude come Partner TecnicoSetup e primi passi
2Contesto e Setup del ProgettoCLAUDE.md e configurazione
3Ideazione e RequisitiMVP e user personas
4Architettura Backend e FrontendSpring Boot e Angular
5Struttura del CodiceOrganizzazione e convenzioni
6Prompt Engineering AvanzatoTecniche avanzate
7Testing e qualitàStrategie e generazione test
8Documentazione ProfessionaleREADME, API, ADR
9Deploy e DevOpsDocker, CI/CD, monitoring
10Evoluzione e ManutenzioneRefactoring e scalabilità
11Integrazione Progetto RealeClaude Code in produzione
12CLI Avanzata e ComandiPadronanza della riga di comando
13Custom Slash Commands e SkillsEstendere Claude Code
14Sub-Agenti e DelegazioneOrchestrare agenti specializzati
15Hooks: Automazione Event-DrivenAutomazione basata su eventi
16Ralph Wiggum: Loop AI AutonomiSviluppo autonomo iterativo
17BMAD Method: Sviluppo Agile AI (sei qui)Metodologia agile AI-driven
18Orchestrazione Multi-AgenteCoordinare team di agenti
19Collaborazione e Coworking AILavorare insieme a Claude
20Sicurezza e PermessiProteggere il workflow
21Monitoring e OttimizzazioneMetriche e performance

1. Il Problema del Context Overflow

Per comprendere perchè BMAD esiste, bisogna capire il problema fondamentale che risolve. I modelli linguistici come Claude hanno una finestra di contesto limitata: la quantità massima di testo che possono "ricordare" durante una conversazione. Anche i modelli più avanzati con finestre da 200K token hanno limiti pratici significativi quando si tratta di gestire progetti software complessi.

Un progetto enterprise tipico include centinaia di file sorgente, decine di documenti di specifica, architettura, test plan, deployment guide, e documentazione API. Inserire tutto questo in una singola conversazione è impossibile, e anche inserirne parti significative degrada la qualità delle risposte perchè il modello deve "diluire" la sua attenzione su troppo materiale.

Il Problema in Numeri

ElementoDimensione Tipica% Context Window (200K)
Specifica requisiti completa20K-50K token10-25%
Documento architettura15K-30K token7-15%
Schema database (20 tabelle)5K-10K token2-5%
API documentation30K-80K token15-40%
Test plan completo10K-25K token5-12%
Codebase esistente (100 file)100K-500K token50-250%
Totale tipico progetto medio200K-700K token100-350%

Come si vede, anche un progetto di media complessità genera più documentazione di quanta ne possa contenere una singola finestra di contesto. Le soluzioni tradizionali a questo problema sono insoddisfacenti:

  • Riassumere tutto: Si perde dettaglio critico per l'implementazione
  • Sessioni separate: Si perde coerenza tra le diverse parti del progetto
  • Copia-incolla selettivo: Richiede gestione manuale costante e soggetta a errori
  • RAG (Retrieval Augmented Generation): Buono per domande puntuali, ma insufficiente per task di implementazione complessi

2. Document Sharding: L'Innovazione Chiave

Il Document Sharding è il concetto centrale di BMAD. L'idea è semplice ma profonda: anziché creare documentazione monolitica che tenta di descrivere tutto il progetto in documenti lunghi, BMAD suddivide ogni aspetto del progetto in frammenti atomici, auto-contenuti e interconnessi che possono essere forniti all'agente AI esattamente quando servono, senza spreco di contesto.

Principi del Document Sharding

  1. Atomicita: Ogni shard descrive un singolo concetto, componente o decisione. Non è necessario leggere altri shard per comprenderlo completamente.
  2. Auto-contenimento: Ogni shard include tutto il contesto necessario per il suo utilizzo. Se un shard descrive un'API endpoint, contiene schema di input/output, validazione, errori possibili e dipendenze.
  3. Interconnessione: Gli shard contengono riferimenti espliciti ad altri shard correlati, permettendo all'agente di navigare la documentazione come un grafo.
  4. Dimensione ottimale: Ogni shard è dimensionato per occupare una porzione gestibile della finestra di contesto (tipicamente 2K-8K token), lasciando spazio per il ragionamento e la generazione di codice.

Struttura Directory BMAD

Struttura del Progetto BMAD
bmad-agent/
├── agents/                     # 21 agenti specializzati
│   ├── pm-agent.md             # Product Manager
│   ├── architect-agent.md      # System Architect
│   ├── developer-agent.md      # Developer
│   ├── ux-agent.md             # UX Designer
│   ├── sm-agent.md             # Scrum Master
│   ├── qa-agent.md             # Quality Assurance
│   ├── devops-agent.md         # DevOps Engineer
│   ├── data-agent.md           # Data Engineer
│   ├── security-agent.md       # Security Specialist
│   ├── tech-writer-agent.md    # Technical Writer
│   ├── analyst-agent.md        # Business Analyst
│   ├── design-agent.md         # System Designer
│   ├── frontend-agent.md       # Frontend Specialist
│   ├── backend-agent.md        # Backend Specialist
│   ├── mobile-agent.md         # Mobile Developer
│   ├── ml-agent.md             # ML Engineer
│   ├── performance-agent.md    # Performance Engineer
│   ├── migration-agent.md      # Migration Specialist
│   ├── review-agent.md         # Code Reviewer
│   ├── release-agent.md        # Release Manager
│   └── orchestrator-agent.md   # Agent Orchestrator
│
├── tasks/                      # 50+ workflow guidati
│   ├── analysis/
│   │   ├── gather-requirements.md
│   │   ├── competitive-analysis.md
│   │   ├── user-persona-creation.md
│   │   └── risk-assessment.md
│   ├── planning/
│   │   ├── create-roadmap.md
│   │   ├── sprint-planning.md
│   │   ├── resource-allocation.md
│   │   └── milestone-definition.md
│   ├── architecture/
│   │   ├── system-design.md
│   │   ├── api-contract.md
│   │   ├── database-schema.md
│   │   └── integration-patterns.md
│   ├── implementation/
│   │   ├── feature-implementation.md
│   │   ├── code-generation.md
│   │   ├── refactoring-guide.md
│   │   └── testing-strategy.md
│   └── delivery/
│       ├── deployment-plan.md
│       ├── release-checklist.md
│       ├── monitoring-setup.md
│       └── post-mortem.md
│
├── templates/                  # Template riutilizzabili
│   ├── prd-template.md         # Product Requirements Document
│   ├── adr-template.md         # Architecture Decision Record
│   ├── epic-template.md        # Epic/Feature template
│   ├── story-template.md       # User Story template
│   └── test-plan-template.md   # Test Plan template
│
├── personas/                   # Configurazioni persona
│   ├── startup-mode.md         # Modalità startup lean
│   ├── enterprise-mode.md      # Modalità enterprise rigorosa
│   └── solo-dev-mode.md        # Modalità sviluppatore singolo
│
└── checklists/                 # Checklist di qualità
    ├── code-review.md
    ├── security-audit.md
    ├── accessibility.md
    └── performance.md

Esempio di Shard: API Endpoint

shard: POST /api/bookings
# API Shard: Crea Prenotazione

## Endpoint
POST /api/v1/bookings

## Descrizione
Crea una nuova prenotazione per un utente registrato.

## Autenticazione
Bearer JWT Token (ruoli: USER, ADMIN)

## Input Schema
{
  "roomId": "string (UUID, obbligatorio)",
  "checkIn": "string (ISO 8601, obbligatorio)",
  "checkOut": "string (ISO 8601, obbligatorio)",
  "guests": "number (1-10, obbligatorio)",
  "notes": "string (max 500 char, opzionale)"
}

## Validazioni
1. checkOut deve essere successivo a checkIn
2. La durata minima è 1 notte
3. La durata massima è 30 notti
4. La room deve esistere e essere disponibile nel periodo
5. L'utente non deve avere prenotazioni sovrapposte

## Risposte
- 201 Created: prenotazione creata con successo
- 400 Bad Request: validazione fallita
- 401 Unauthorized: token mancante o invalido
- 404 Not Found: room non trovata
- 409 Conflict: room non disponibile nel periodo

## Dipendenze
- Shard: room-availability-service
- Shard: user-validation-middleware
- Shard: booking-entity-schema

## Test Richiesti
- Happy path con dati validi
- Validazione date (checkOut prima di checkIn)
- Room non disponibile (conflict)
- Utente non autenticato
- Prenotazione sovrapposta

Questo shard contiene tutto ciò che serve per implementare l'endpoint: schema di input, validazioni, risposte, dipendenze e test richiesti. Un agente AI che riceve questo shard ha il contesto necessario per produrre un'implementazione completa senza bisogno di leggere l'intera documentazione del progetto.

3. I 21 Agenti Specializzati BMAD

Il cuore operativo di BMAD è composto da 21 agenti specializzati, ciascuno configurato con competenze, prompt di sistema e workflow specifici per un aspetto dello sviluppo software. Questi agenti non sono entità indipendenti ma configurazioni di Claude Code che attivano expertise specifica attraverso prompt di sistema e accesso selettivo agli shard di documentazione.

Mappa degli Agenti per Fase di Progetto

FaseAgenti CoinvoltiResponsabilità
Analisi PM Agent, Analyst, UX Agent Requisiti, personas, analisi competitiva
Pianificazione SM Agent, PM Agent Roadmap, sprint planning, risorse
Architettura Architect, Designer, Security System design, API contract, sicurezza
Implementazione Developer, Frontend, Backend, Mobile, ML Codice, test, integrazione
qualità QA Agent, Review Agent, Performance Testing, code review, performance
Delivery DevOps, Release, Tech Writer Deploy, documentazione, release notes
Coordinamento Orchestrator, Data Agent, Migration Orchestrazione, dati, migrazione

Profilo Agente: PM Agent (Product Manager)

Il PM Agent è responsabile della raccolta e gestione dei requisiti di prodotto. È il primo agente ad essere invocato nella maggior parte dei progetti e produce gli artefatti fondamentali che guidano tutto il resto dello sviluppo.

agents/pm-agent.md - Configurazione
# PM Agent - Product Manager

## Identita
Sei un Product Manager esperto con 15+ anni di esperienza in prodotti
software B2B e B2C. Eccelli nella raccolta dei requisiti, nell'analisi
dei bisogni degli stakeholder e nella definizione di roadmap strategiche.

## Competenze Specifiche
- Tecniche di elicitazione dei requisiti (interviste, workshop, survey)
- Framework di prioritizzazione (MoSCoW, RICE, Kano)
- Creazione di Product Requirements Document (PRD)
- Definizione di metriche di successo (KPI, OKR)
- Analisi competitiva e posizionamento

## Workflow Disponibili
1. gather-requirements: Raccolta strutturata dei requisiti
2. competitive-analysis: Analisi del panorama competitivo
3. user-persona-creation: Creazione di user personas dettagliate
4. prd-creation: Stesura del Product Requirements Document
5. roadmap-planning: Pianificazione della roadmap di prodotto

## Template
- prd-template.md: Template per il documento requisiti
- epic-template.md: Template per epic/feature
- story-template.md: Template per user stories

## Regole di Interazione
1. Fai sempre domande chiarificatrici prima di procedere
2. Quantifica i requisiti quando possibile (numeri, metriche, SLA)
3. Identifica e documenta i rischi per ogni requisito critico
4. Distingui sempre tra MUST, SHOULD, COULD e WON'T (MoSCoW)
5. Produci artefatti in formato shard per il consumo da parte di altri agenti

Profilo Agente: Architect Agent

L'Architect Agent trasforma i requisiti del PM Agent in decisioni architetturali concrete. Produce shard di architettura che guidano l'implementazione, definendo tecnologie, pattern, interfacce e trade-off.

agents/architect-agent.md - Configurazione (estratto)
# Architect Agent - System Architect

## Identita
Sei un System Architect senior con esperienza in architetture distribuite,
microservizi, event-driven e serverless. Bilanci pragmatismo e rigore
tecnico nelle decisioni architetturali.

## Competenze Specifiche
- Design di architetture scalabili (verticale e orizzontale)
- Pattern architetturali (DDD, CQRS, Event Sourcing, Hexagonal)
- API Design (REST, GraphQL, gRPC)
- Database selection (SQL vs NoSQL vs NewSQL)
- Trade-off analysis (CAP theorem, performance vs consistency)
- Security by design

## Output Attesi
Per ogni decisione architetturale, produrre:
1. ADR (Architecture Decision Record) in formato shard
2. Diagramma componenti (descrizione testuale per mermaid)
3. API contract shard per ogni interfaccia
4. Database schema shard
5. Lista di vincoli e assunzioni

## Regole
1. Ogni decisione deve avere un ADR con alternative considerate
2. Preferire soluzioni semplici a soluzioni eleganti
3. Documentare i trade-off in modo esplicito
4. Definire interfacce prima delle implementazioni
5. Considerare sempre scalabilità, sicurezza e manutenibilità

Profilo Agente: Developer Agent

Il Developer Agent è l'agente che produce codice effettivo. Consuma gli shard prodotti dal PM Agent e dall'Architect Agent per implementare feature, scrivere test e produrre codice che rispetti i vincoli architetturali.

agents/developer-agent.md - Configurazione (estratto)
# Developer Agent - Full-Stack Developer

## Identita
Sei uno sviluppatore full-stack esperto con padronanza di TypeScript,
Java, Python e Go. Scrivi codice pulito, testabile e manutenibile.
Segui le best practice della community e i principi SOLID.

## Competenze Specifiche
- TypeScript/JavaScript (Node.js, Angular, React, Next.js)
- Java (Spring Boot, Hibernate)
- Python (FastAPI, Django)
- Database (PostgreSQL, MongoDB, Redis)
- Testing (Jest, JUnit, pytest)
- Clean Code e Design Patterns

## Workflow
1. Leggi lo shard della feature/endpoint da implementare
2. Leggi lo shard dell'architettura rilevante
3. Implementa il codice seguendo le convenzioni del progetto
4. Scrivi test unitari con coverage > 80%
5. Esegui lint e type check
6. Aggiorna il STATUS.md del modulo

## Regole
1. Mai usare `any` in TypeScript senza commento giustificativo
2. Ogni funzione pubblica deve avere JSDoc/JavaDoc
3. Error handling esplicito, mai catch vuoti
4. Seguire il naming convention definito in CLAUDE.md
5. Rispettare le interfacce definite dall'Architect Agent

Profilo Agente: QA Agent

Il QA Agent è responsabile della strategia di testing e della validazione della qualità del codice. Opera in parallelo al Developer Agent, producendo test case, eseguendo analisi di copertura e identificando gap nella qualità dell'implementazione.

Profilo Agente: Scrum Master Agent

Lo SM Agent coordina il processo di sviluppo, gestisce la pianificazione degli sprint, facilità le retrospettive e rimuove gli impedimenti. Nel contesto BMAD, è responsabile della creazione e manutenzione del backlog di shard e della prioritizzazione dei task.

Gli Altri Agenti

Panoramica Completa dei 21 Agenti

#AgenteRuoloOutput Principale
1PM AgentProduct ManagerPRD, User Stories, Backlog
2Architect AgentSystem ArchitectADR, API Contract, Schema
3Developer AgentFull-Stack DeveloperCodice, Unit Test
4UX AgentUX DesignerWireframe, User Flows
5SM AgentScrum MasterSprint Plan, Retrospective
6QA AgentQuality AssuranceTest Plan, Bug Report
7DevOps AgentDevOps EngineerPipeline, Infrastructure
8Data AgentData EngineerSchema, Migration, ETL
9Security AgentSecurity SpecialistThreat Model, Audit
10Tech Writer AgentTechnical WriterDocs, API Guide, README
11Analyst AgentBusiness AnalystAnalysis, Metrics, KPI
12Designer AgentSystem DesignerComponent Design, Patterns
13Frontend AgentFrontend SpecialistUI Components, State
14Backend AgentBackend SpecialistServices, APIs, DB
15Mobile AgentMobile DeveloperApp, Native Features
16ML AgentML EngineerModels, Pipelines, Eval
17Performance AgentPerformance EngineerBenchmarks, Optimization
18Migration AgentMigration SpecialistMigration Plan, Scripts
19Review AgentCode ReviewerReview Notes, Suggestions
20Release AgentRelease ManagerRelease Notes, Changelog
21Orchestrator AgentAgent CoordinatorTask Routing, Sync

4. I 50+ Workflow Guidati

Ogni agente BMAD dispone di workflow predefiniti: sequenze strutturate di passi che guidano l'agente attraverso task complessi in modo sistematico e riproducibile. I workflow eliminano l'ambiguità e garantiscono che ogni aspetto di un task venga affrontato, indipendentemente dalla complessità.

Workflow per Fase: Analisi

I workflow della fase di analisi sono progettati per raccogliere e strutturare le informazioni necessarie prima di qualsiasi attivita di design o implementazione.

tasks/analysis/gather-requirements.md
# Workflow: Raccolta Requisiti Strutturata

## Prerequisiti
- Accesso al cliente/stakeholder (o documento brief)
- Template PRD (prd-template.md)
- Checklist domande standard

## Passi

### Step 1: Comprensione del Contesto
- Qual è il problema che il prodotto risolve?
- Chi sono gli utenti target?
- Quali sono i vincoli di business (budget, timeline, compliance)?
- Esistono sistemi legacy da integrare?

### Step 2: Elicitazione Funzionale
Per ogni macro-funzionalità identificata:
1. Definisci il caso d'uso principale (happy path)
2. Identifica i casi limite (edge cases)
3. Definisci i criteri di accettazione (Given/When/Then)
4. Classifica la priorità (MoSCoW)
5. Stima la complessità relativa (S/M/L/XL)

### Step 3: Requisiti Non-Funzionali
- Performance: tempi di risposta attesi (p50, p95, p99)
- Scalabilità: utenti concorrenti previsti (ora, 6 mesi, 1 anno)
- Disponibilità: SLA target (99.9%? 99.99%?)
- Sicurezza: compliance requirements (GDPR, SOC2, PCI-DSS)
- Accessibilita: WCAG livello target (A, AA, AAA)

### Step 4: Produzione Artefatti
Genera i seguenti shard:
1. shard-prd-overview.md (panoramica progetto)
2. shard-personas.md (user personas)
3. shard-requirements-functional.md (requisiti funzionali)
4. shard-requirements-nonfunctional.md (requisiti non-funzionali)
5. shard-constraints.md (vincoli e assunzioni)
6. shard-risks.md (rischi identificati)

### Step 5: Validazione
- Rivedi ogni shard per completezza
- Verifica che ogni requisito sia testabile
- Conferma le priorità con lo stakeholder

Workflow per Fase: Architettura

tasks/architecture/system-design.md
# Workflow: System Design

## Input Richiesti
- shard-prd-overview.md
- shard-requirements-functional.md
- shard-requirements-nonfunctional.md
- shard-constraints.md

## Passi

### Step 1: Identificazione Componenti
Leggi i requisiti funzionali e identifica:
- Bounded contexts (DDD)
- Servizi principali
- Integrazioni esterne
- Layer di persistenza

### Step 2: Scelta Pattern Architetturale
Valuta e documenta in ADR:
- Monolith vs Microservizi vs Modular Monolith
- Sync vs Async communication
- SQL vs NoSQL per ogni bounded context
- Hosting: Cloud vs On-premise vs Hybrid

### Step 3: Design delle Interfacce
Per ogni servizio/modulo:
1. Definisci API contract (OpenAPI/Protobuf)
2. Definisci event schema (per comunicazione async)
3. Definisci database schema
4. Documenta in shard separati

### Step 4: Security Design
- Autenticazione: metodo e flusso
- Autorizzazione: modello (RBAC, ABAC, ReBAC)
- Encryption: at rest e in transit
- Threat model (STRIDE)

### Step 5: Produzione Shard Architetturali
1. shard-architecture-overview.md
2. shard-adr-{decisione}.md (uno per ogni decisione)
3. shard-api-{servizio}.md (uno per ogni API)
4. shard-db-{context}.md (schema per ogni bounded context)
5. shard-security-model.md

Workflow per Fase: Implementazione

tasks/implementation/feature-implementation.md
# Workflow: Implementazione Feature

## Input Richiesti
- shard-api-{endpoint}.md (contract dell'endpoint)
- shard-db-{context}.md (schema database)
- shard-architecture-overview.md (vincoli architetturali)

## Passi

### Step 1: Analisi dello Shard
1. Leggi lo shard dell'endpoint/feature da implementare
2. Identifica dipendenze da altri shard
3. Verifica che tutte le interfacce siano definite

### Step 2: Scaffolding
1. Crea i file necessari seguendo la struttura del progetto
2. Definisci interfacce TypeScript/Java per i tipi
3. Crea stub per i metodi principali

### Step 3: Implementazione TDD
Per ogni funzionalità dello shard:
1. Scrivi il test che verifica il comportamento atteso
2. Implementa il codice minimo per far passare il test
3. Refactora mantenendo i test verdi
4. Ripeti per la prossima funzionalità

### Step 4: Integrazione
1. Verifica compatibilità con interfacce definite
2. Esegui test di integrazione
3. Verifica compliance con lo shard di architettura

### Step 5: qualità
1. Esegui linter e type checker
2. Verifica coverage > 80%
3. Documenta API con JSDoc/JavaDoc
4. Aggiorna STATUS.md

5. Scale-Adaptive Intelligence

Una delle innovazioni più significative di BMAD è la Scale-Adaptive Intelligence: la capacità di adattare automaticamente il livello di complessità, formalità e rigore del processo in base alla dimensione e alla natura del progetto. Non tutti i progetti hanno bisogno di 21 agenti e 50 workflow; un side project personale richiede un approccio radicalmente diverso da un sistema enterprise.

Livelli di Scala BMAD

LivelloTipo ProgettoAgenti AttiviWorkflowFormalità
Nano Script, utility, tool singolo 1 (Developer) Minimal Nessuna documentazione formale
Micro Side project, prototype, MVP 3 (PM, Dev, QA) Essenziali README + test di base
Small Startup, team piccolo (2-5) 6 (PM, Arch, Dev, QA, DevOps, Writer) Standard PRD + ADR + API docs
Medium Prodotto aziendale, team medio (5-15) 12 Completi Full documentation + compliance
Large Enterprise, team grande (15+) Tutti i 21 Tutti + custom Full formal + audit trail

Modalità Solo Developer

Per sviluppatori singoli, BMAD offre la modalità Solo Dev che condensa le responsabilità di più agenti in un workflow snello ma efficace:

personas/solo-dev-mode.md
# BMAD Solo Developer Mode

## Agenti Attivi
1. PM Agent (leggero): solo user stories e criteri di accettazione
2. Developer Agent: implementazione + testing
3. DevOps Agent: solo deployment configuration

## Workflow Semplificato
1. Definisci il problema in 1 paragrafo
2. Lista le feature principali (max 10)
3. Per ogni feature, scrivi 1 user story con criteri di accettazione
4. Implementa con TDD
5. Deploy

## Shard Minimi
- overview.md: cosa fa il progetto, per chi, perchè
- features.md: lista feature con priorità
- tech-stack.md: tecnologie scelte con motivazione
- Per ogni feature: 1 shard con interface + test criteria

## Regole
- Niente ADR formali per decisioni ovvie
- Test unitari solo per logica di business complessa
- Documentazione inline (JSDoc) invece di documenti separati
- Deploy continuo senza release formali

6. Le 4 Fasi del Workflow BMAD

Indipendentemente dalla scala del progetto, BMAD organizza il processo di sviluppo in quattro fasi distinte, ciascuna con obiettivi, agenti responsabili e artefatti di output specifici. Le fasi sono sequenziali per la prima esecuzione ma diventano iterative una volta che il progetto e avviato.

Fase 1: Analisi

La fase di analisi è dedicata alla comprensione profonda del problema da risolvere. Gli agenti PM, Analyst e UX collaborano per raccogliere requisiti, definire personas, analizzare il panorama competitivo e identificare vincoli e rischi.

Agenti coinvolti: PM Agent, Analyst Agent, UX Agent

Artefatti prodotti: PRD (Product Requirements Document), User Personas, Analisi Competitiva, Risk Assessment, Requisiti Funzionali e Non-Funzionali sotto forma di shard atomici.

L'output della fase di analisi è un insieme di shard che descrive completamente cosa deve essere costruito e per chi, senza ancora definire come. Questa separazione è fondamentale per evitare decisioni premature di implementazione.

Fase 2: Pianificazione

La fase di pianificazione trasforma i requisiti in un piano di lavoro concreto. Lo Scrum Master Agent e il PM Agent collaborano per definire la roadmap, organizzare il backlog, pianificare gli sprint e allocare le risorse (agenti) ai task.

Agenti coinvolti: SM Agent, PM Agent

Artefatti prodotti: Roadmap di progetto, Sprint Backlog, Milestone Definition, Resource Allocation Matrix. Ogni task nel backlog è associato a uno o più shard di requisiti e a uno o più agenti responsabili dell'implementazione.

Fase 3: Architettura

La fase di architettura definisce come il sistema sarà costruito. L'Architect Agent e il Designer Agent analizzano i requisiti e producono decisioni architetturali documentate, API contract, schema database e modelli di sicurezza.

Agenti coinvolti: Architect Agent, Designer Agent, Security Agent

Artefatti prodotti: Architecture Overview, ADR (Architecture Decision Records), API Contracts, Database Schemas, Security Model, Integration Patterns. Ogni decisione è documentata con le alternative considerate e le motivazioni della scelta, creando un audit trail completo delle decisioni progettuali.

Fase 4: Implementazione

La fase di implementazione è dove il codice viene scritto. I Developer Agent (con le varianti Frontend, Backend, Mobile) consumano gli shard prodotti nelle fasi precedenti per implementare feature, scrivere test e produrre codice pronto per il deploy. In parallelo, il QA Agent valida la qualità e il DevOps Agent prepara l'infrastruttura.

Agenti coinvolti: Developer Agent, Frontend Agent, Backend Agent, QA Agent, DevOps Agent, Tech Writer Agent

Artefatti prodotti: Codice sorgente, Test suite, Documentazione API, Pipeline CI/CD, Release Notes, User Guide.

Diagramma del Flusso BMAD
┌─────────────────────────────────────────────────────────────────┐
│                      FASE 1: ANALISI                            │
│  PM Agent ──→ Analyst Agent ──→ UX Agent                        │
│  Output: PRD shards, Personas, Requirements, Risks              │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│                   FASE 2: PIANIFICAZIONE                        │
│  SM Agent ──→ PM Agent                                          │
│  Output: Roadmap, Sprint Backlog, Milestones                    │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│                   FASE 3: ARCHITETTURA                          │
│  Architect Agent ──→ Designer Agent ──→ Security Agent          │
│  Output: ADR shards, API contracts, DB schemas, Security model  │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│                 FASE 4: IMPLEMENTAZIONE                         │
│  Developer ──→ QA ──→ DevOps ──→ Tech Writer                   │
│  Output: Code, Tests, Pipeline, Documentation                   │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
                    ┌──────────────┐
                    │   DELIVERY   │
                    │  Release +   │
                    │  Monitoring  │
                    └──────────────┘

7. Confronto con Metodologie Tradizionali

BMAD non nasce nel vuoto: si posiziona all'intersezione tra le metodologie agili tradizionali e le capacità emergenti degli agenti AI. Comprendere le differenze e le complementarità con approcci consolidati aiuta a valutare quando e come applicare BMAD.

BMAD vs Metodologie Tradizionali

AspettoScrumKanbanBMAD
Iterazioni Sprint fissi (2-4 settimane) Flusso continuo Loop adattivi (minuti-ore)
Ruoli 3 ruoli umani Nessun ruolo fisso 21 agenti AI configurabili
Documentazione User stories, backlog Card sul board Shard atomici interconnessi
Feedback Fine sprint (retrospettiva) Continuo (metriche flusso) Ogni iterazione (test automatici)
Scalabilità SAFe, LeSS per large-scale Scalabile nativamente Scale-adaptive intelligence
Costo umano Team completo richiesto Team flessibile 1 operatore + costo API
Velocita Settimane per feature Giorni per feature Ore per feature (con loop)

E' importante sottolineare che BMAD non sostituisce le metodologie agili ma le potenzia. Un team che utilizza Scrum può adottare BMAD per accelerare la fase di implementazione di ogni sprint, mantenendo le cerimonie Scrum per il coordinamento umano e utilizzando gli agenti BMAD per l'esecuzione dei task individuali.

8. Configurare BMAD nel Proprio Progetto

L'integrazione di BMAD in un progetto esistente richiede una configurazione iniziale che prepara la struttura di directory, i file di configurazione e gli shard di base. Il processo è progettato per essere incrementale: si può iniziare con la configurazione minima e aggiungere complessità man mano che il progetto cresce.

Step 1: Installazione

Setup iniziale del progetto BMAD
# Clona il template BMAD
git clone https://github.com/bmad-method/bmad-agent.git .bmad

# Crea la struttura di base nel progetto
mkdir -p .bmad/{agents,tasks,templates,shards}

# Copia gli agenti necessari per il livello di scala scelto
# Esempio: livello "Small" (6 agenti)
cp .bmad/agents/{pm-agent,architect-agent,developer-agent,qa-agent,devops-agent,tech-writer-agent}.md \
   .bmad/agents/

# Copia i workflow rilevanti
cp -r .bmad/tasks/{analysis,architecture,implementation} .bmad/tasks/

# Configura CLAUDE.md per integrare BMAD
cat >> CLAUDE.md << 'EOF'

## BMAD Configuration
- Agents directory: .bmad/agents/
- Tasks directory: .bmad/tasks/
- Shards directory: .bmad/shards/
- Active scale: Small (6 agents)

When starting a new task, always:
1. Check which shard is relevant in .bmad/shards/
2. Follow the appropriate workflow in .bmad/tasks/
3. Produce output as new shards when generating documentation
EOF

Step 2: Creazione degli Shard Iniziali

Creare il primo shard: Overview del Progetto
# .bmad/shards/project-overview.md

# Project Overview Shard

## Nome Progetto
BookingAPI - Sistema di Prenotazioni Online

## Problema
I piccoli hotel e B&B non hanno un sistema di prenotazione
moderno, economico e facile da integrare nei loro siti web.

## Soluzione
API REST + Widget embeddabile per la gestione prenotazioni
con calendario disponibilità, pagamenti e notifiche.

## Stack Tecnologico
- Backend: Node.js + Express + TypeScript
- Database: PostgreSQL
- Cache: Redis
- Auth: JWT + OAuth2
- Deploy: Docker + Railway

## Utenti Target
1. Proprietari di piccoli hotel/B&B (admin)
2. Ospiti che prenotano (utente finale)
3. Sviluppatori che integrano il widget (developer)

## Vincoli
- Budget: $0 infrastruttura (free tier)
- Timeline: MVP in 2 settimane
- Compliance: GDPR per dati utente
- Accessibility: WCAG 2.1 AA

## Shard Correlati
- shard-personas.md
- shard-requirements-functional.md
- shard-architecture-overview.md

Step 3: Invocare un Agente

Una volta configurato, si invoca un agente BMAD fornendo a Claude Code il contesto dell'agente e lo shard rilevante:

Invocazione di un Agente BMAD
# Metodo 1: Prompt diretto con contesto agente
claude "Leggi .bmad/agents/architect-agent.md per assumere il ruolo di architetto.
Poi leggi .bmad/shards/project-overview.md e .bmad/shards/requirements-functional.md.
Segui il workflow in .bmad/tasks/architecture/system-design.md per produrre
il design architetturale. Salva ogni output come shard separato in .bmad/shards/"

# Metodo 2: Slash command personalizzato
# In .claude/commands/bmad-architect.md:
# Assume the Architect Agent role from .bmad/agents/architect-agent.md
# Read relevant shards and produce architecture design shards

/bmad-architect "Design del sistema di prenotazioni"

# Metodo 3: Combinazione con Ralph Wiggum
# PROMPT.md con istruzioni BMAD + loop autonomo
cat PROMPT.md | claude --print --dangerously-skip-permissions

9. Best Practice e Errori Comuni

L'adozione di BMAD porta benefici significativi quando applicata correttamente, ma può introdurre complessità non necessaria se utilizzata in modo inappropriato. Questa sezione raccoglie le lezioni apprese dalla community e identifica i pattern di successo e gli anti-pattern da evitare.

Best Practice

  • Inizia piccolo: Parti dal livello di scala Micro o Small e aggiungi complessità solo quando serve. E' molto più facile aggiungere agenti e workflow che rimuoverli una volta integrati nel processo.
  • Shard prima, codice dopo: Resisti alla tentazione di scrivere codice prima di avere shard chiari. L'investimento nella documentazione strutturata ripaga enormemente nella fase di implementazione.
  • Un shard = un concetto: Se uno shard richiede più di 8K token, probabilmente sta cercando di coprire troppi concetti. Suddividilo in shard più piccoli e interconnessi.
  • Aggiorna gli shard: Gli shard non sono documenti statici. Quando l'implementazione rivela che un'assunzione era sbagliata, aggiorna lo shard corrispondente per mantenere la coerenza.
  • Combina con Ralph Wiggum: Per la fase di implementazione, l'accoppiamento BMAD + Ralph Wiggum è estremamente efficace: BMAD fornisce la struttura e gli shard, Ralph Wiggum esegue l'implementazione iterativa.

Errori Comuni

Anti-Pattern BMAD

Anti-PatternProblemaSoluzione
Over-engineering Usare tutti i 21 agenti per un todo-list Scegliere il livello di scala appropriato
Shard monolitici Shard da 20K+ token che contengono tutto Suddividere in shard atomici da 2-8K token
Shard orfani Shard senza riferimenti ad altri shard Ogni shard deve avere una sezione "Shard Correlati"
Analisi infinita Produrre shard senza mai implementare Definire un time-box per ogni fase
Ignorare il feedback Non aggiornare shard quando l'implementazione diverge Review e aggiornamento shard a fine sprint
Copy-paste agenti Usare agenti senza personalizzarli per il progetto Adattare prompt e regole di ogni agente al contesto

10. Integrazione con Claude Code CLI

BMAD si integra nativamente con Claude Code attraverso diversi meccanismi: CLAUDE.md per il contesto persistente, slash commands per l'invocazione degli agenti, hooks per l'automazione e sub-agenti per l'esecuzione parallela.

CLAUDE.md come Hub BMAD

CLAUDE.md con Integrazione BMAD
# CLAUDE.md

## Progetto
BookingAPI - Sistema Prenotazioni Online

## BMAD Configuration
Scale: Small (6 agents active)

### Directory Structure
- `.bmad/agents/` - Agent configurations
- `.bmad/tasks/` - Guided workflows
- `.bmad/shards/` - Project documentation shards
- `.bmad/templates/` - Reusable templates

### Active Agents
1. PM Agent: requirements and product decisions
2. Architect Agent: system design and ADRs
3. Developer Agent: code implementation
4. QA Agent: testing strategy and execution
5. DevOps Agent: deployment and infrastructure
6. Tech Writer Agent: documentation

### Conventions
- Every new feature must start with a shard
- Every architecture decision needs an ADR shard
- Implementation follows TDD within BMAD workflows
- Shards are updated when implementation diverges

### Current Sprint
Read `.bmad/shards/sprint-current.md` for active tasks

## Comandi di Sviluppo
- `npm run dev` - Start development server
- `npm test` - Run test suite
- `npm run build` - Production build
- `npm run lint` - Lint check

Slash Commands per Agenti BMAD

.claude/commands/ - Comandi Personalizzati
# .claude/commands/bmad-pm.md
# Assume the PM Agent role from .bmad/agents/pm-agent.md
# Gather requirements and produce shards

Read .bmad/agents/pm-agent.md to understand your role.
Then follow the workflow in .bmad/tasks/analysis/gather-requirements.md.
Save all outputs as shards in .bmad/shards/.
Ask clarifying questions before proceeding.

---

# .claude/commands/bmad-architect.md
# Assume the Architect Agent role from .bmad/agents/architect-agent.md
# Design system architecture based on requirement shards

Read .bmad/agents/architect-agent.md to understand your role.
Read all shards in .bmad/shards/ that start with "requirements-".
Follow the workflow in .bmad/tasks/architecture/system-design.md.
Produce architecture shards and ADRs.

---

# .claude/commands/bmad-implement.md
# Assume the Developer Agent role from .bmad/agents/developer-agent.md
# Implement the next feature based on architecture shards

Read .bmad/agents/developer-agent.md to understand your role.
Read .bmad/shards/sprint-current.md to identify the next task.
Read the relevant API and architecture shards.
Follow the workflow in .bmad/tasks/implementation/feature-implementation.md.
Use TDD: write tests first, then implement.

11. Caso Pratico: BMAD per un'API di Prenotazioni

Per rendere concreti i concetti presentati, vediamo come BMAD viene applicato alla costruzione di una vera API di prenotazioni per hotel, dalla fase di analisi fino all'implementazione del primo endpoint.

Fase Analisi: Output del PM Agent

Dopo aver invocato il PM Agent con il brief del progetto, vengono prodotti i seguenti shard di requisiti:

  • project-overview.md: Contesto, problema, soluzione e vincoli
  • personas-hotel-owner.md: Profilo del proprietario di hotel
  • personas-guest.md: Profilo dell'ospite che prenota
  • requirements-booking-crud.md: Requisiti CRUD prenotazioni
  • requirements-availability.md: Requisiti calcolo disponibilità
  • requirements-auth.md: Requisiti autenticazione/autorizzazione
  • constraints-budget-timeline.md: Vincoli di budget e tempistiche

Fase Architettura: Output dell'Architect Agent

L'Architect Agent consuma gli shard di requisiti e produce le decisioni architetturali:

  • architecture-overview.md: Architettura modulare a layer
  • adr-001-modular-monolith.md: Decisione di usare un monolite modulare
  • adr-002-postgresql.md: Scelta di PostgreSQL come database
  • api-bookings.md: Contract completo dell'API prenotazioni
  • db-schema-bookings.md: Schema database per il modulo prenotazioni
  • security-model.md: JWT + RBAC per l'autenticazione

Fase Implementazione: Il Developer Agent al Lavoro

Il Developer Agent riceve lo shard api-bookings.md e segue il workflow TDD per implementare il primo endpoint. L'output è codice funzionante con test completi, prodotto iterativamente attraverso il loop di sviluppo.

Output del Developer Agent: Booking Service
// src/bookings/booking.service.ts
// Generato dal Developer Agent seguendo lo shard api-bookings.md

import { Injectable, ConflictException, NotFoundException } from '@nestjs/common';
import { BookingRepository } from './booking.repository';
import { RoomService } from '../rooms/room.service';
import { CreateBookingDto, BookingResponse } from './booking.dto';

@Injectable()
export class BookingService {
  constructor(
    private readonly bookingRepo: BookingRepository,
    private readonly roomService: RoomService,
  ) {}

  /**
   * Crea una nuova prenotazione verificando la disponibilità.
   * @shard api-bookings.md - POST /api/v1/bookings
   */
  async createBooking(
    userId: string,
    dto: CreateBookingDto,
  ): Promise<BookingResponse> {
    // Verifica esistenza room
    const room = await this.roomService.findById(dto.roomId);
    if (!room) {
      throw new NotFoundException('Room non trovata');
    }

    // Verifica disponibilità nel periodo
    const isAvailable = await this.roomService.checkAvailability(
      dto.roomId,
      dto.checkIn,
      dto.checkOut,
    );
    if (!isAvailable) {
      throw new ConflictException('Room non disponibile nel periodo richiesto');
    }

    // Crea prenotazione
    const booking = await this.bookingRepo.create({
      userId,
      roomId: dto.roomId,
      checkIn: dto.checkIn,
      checkOut: dto.checkOut,
      guests: dto.guests,
      notes: dto.notes,
      status: 'CONFIRMED',
    });

    return this.toResponse(booking);
  }

  private toResponse(booking: any): BookingResponse {
    return {
      id: booking.id,
      roomId: booking.roomId,
      checkIn: booking.checkIn,
      checkOut: booking.checkOut,
      guests: booking.guests,
      status: booking.status,
      createdAt: booking.createdAt,
    };
  }
}

Conclusione

Il BMAD Method rappresenta un approccio maturo e sistematico allo sviluppo software assistito da AI. Attraverso il Document Sharding, BMAD risolve il problema fondamentale del context overflow, permettendo di gestire progetti di qualsiasi complessità senza sacrificare la qualità o la coerenza della documentazione e dell'implementazione.

La vera forza di BMAD sta nella sua adattabilita: dalla modalità Solo Dev per side project personali alla configurazione enterprise con tutti i 21 agenti, il framework scala naturalmente con le esigenze del progetto. Combinato con tecniche come il loop Ralph Wiggum per l'implementazione autonoma e gli hooks per l'automazione, BMAD diventa il nucleo di un sistema di sviluppo AI-driven completo ed efficace.

Punti Chiave

  • Document Sharding risolve il context overflow: Frammenti atomici e auto-contenuti permettono di gestire progetti complessi
  • 21 agenti coprono l'intero ciclo: Dall'analisi dei requisiti al deployment, ogni aspetto ha un agente dedicato
  • 50+ workflow eliminano l'ambiguità: Sequenze strutturate garantiscono completezza e riproducibilità
  • Scale-adaptive intelligence: Il framework si adatta dalla scala Nano alla Large senza over-engineering
  • 4 fasi iterative: Analisi, Pianificazione, Architettura e Implementazione in un ciclo continuo
  • Complementare alle metodologie agili: BMAD potenzia Scrum e Kanban, non li sostituisce
  • Integrazione nativa con Claude Code: CLAUDE.md, slash commands e hooks per un workflow fluido

Nel prossimo articolo esploreremo l'Orchestrazione Multi-Agente: come coordinare più istanze di Claude Code che lavorano simultaneamente su aspetti diversi di un progetto, gestendo la sincronizzazione, la risoluzione dei conflitti e la convergenza verso un obiettivo comune.

Prova Questi Strumenti

Strumenti gratuiti correlati a questo argomento.

Commenti

Caricamento commenti...

Accedi per commentare

Discuti questo articolo nella community

Unisciti al gruppo Telegram per discutere con altri sviluppatori, fare domande e condividere le tue esperienze.

Ti è piaciuto questo articolo?

Esplora altri contenuti sul blog o scopri i miei progetti