IDS - Interaction Design Solutions

BDD strategico

Giorgio Brajnik Giorgio Brajnik
· 16 January 2024

Nei nostri precedenti approfondimenti, abbiamo esplorato l’adozione di una strategia nello sviluppo del software, analizzandone la struttura e sottolineandone l’importanza. Un tassello fondamentale di questo percorso è rappresentato dal Behavior-Driven Development (BDD).

Il BDD non è soltanto una convenzione per esprimere test di sistema in modo più comprensibile; è un approccio che mette in primo piano la collaborazione tra sviluppatori, tester e stakeholder non tecnici. In questo modo, si crea un chiaro consenso sulle funzionalità che il software dovrebbe offrire. Concentrandosi sul comportamento percepito dagli utenti finali, il BDD va oltre la mera formalità dei test, portando con sé benefici significativi. Scopriamoli insieme.


Ecco alcuni elementi chiave del BDD

  1. Linguaggio naturale e specifico di dominio: BDD utilizza un linguaggio naturale e specifico del dominio (DSL) per descrivere il comportamento e le aspettative del software. Le parole chiave (GIVEN, WHEN, THEN) sono del linguaggio Gherkin, ma ciò che segue quelle parole è il linguaggio di dominio che viene usato per scrivere scenari in un formato leggibile e comprensibile.

  2. Scenari basati su esempi: Nell’ambito di BDD, le funzionalità del software sono descritte tramite scenari specifici, basati su esempi concreti. Questi scenari illustrano come il software dovrebbe comportarsi in determinate situazioni.

  3. Multi stakeholder: La pratica BDD è una pratica collaborativa, che si articola su incontri che coinvolgono rappresentanti degli sviluppatori, dei tester e degli stakeholder aziendali. Lo scopo è assicurare che tutte le parti abbiano una comprensione comune delle funzionalità e dei requisiti.

  4. Specifiche come documentazione viva: Le specifiche create attraverso BDD servono come documentazione viva (living documentation) del software, mantenendo una stretta corrispondenza tra i requisiti aziendali e l’implementazione tecnica.

  5. Automazione dei test: BDD facilita l’automazione dei test. Gli scenari scritti in Gherkin, vengono direttamente trasformati in test automatizzati.

  6. Integrazione con metodologie agile: BDD si integra bene con metodi agili, vista la sua snellezza e il profondo coinvolgimento in modalità collaborativa dei vari stakeholder.

  7. Focus sul comportamento piuttosto che sui dettagli tecnici: Mentre il TDD (Test-Driven Development) si concentra sui dettagli tecnici dell’implementazione, il BDD pone l’accento sul comportamento e sugli aspetti di business dell’applicazione.

Il BDD è un approccio che collega lo sviluppo del software, i test e la definizione dei requisiti aziendali, promuovendo la comunicazione e la collaborazione tra tutte le parti interessate. Questo non solo migliora la qualità del software, ma assicura anche che esso soddisfi le esigenze e le aspettative degli utenti finali. Questi aspetti lo rendono un ingrediente importante in una strategia integrata.


Un esempio

Nel contesto di un’applicazione di commercio elettronico, questi scenari vengono utilizzati per descrivere una ipotetica funzionalità di “utilizzo di un chatbot stile chatGPT per facilitare gli acquisti”.

Questi scenari possono venir usati per:

  • Individuare fraintendimenti e cose date per scontate dai vari stakeholder. Questo avviene normalmente prima di iniziare progettazione, realizzazione e testing della funzionalità, e quindi consente di eliminare dei difetti ben prima che causino danni notevoli.

  • Fornire focalizzazione agli sviluppatori e ai tester, che così sanno esattamente cosa dovranno fare.

  • Fornire gli strumenti per un project manager in modo che possa facilmente verificare quale sia lo stato di avanzamento dello sviluppo, in base a quali scenari e quali loro aspetti sono stati realizzati e sono disponibili.

  • Individuare un linguaggio specifico del dominio che possa permeare varie prospettive con cui si vede il sistema (quella dell’analista, dell’architetto, dello sviluppatore, del tester), e ridurre in questo modo eventuali discrepanze.

Come si vede quindi il BDD fornisce strumenti di analisi e di design alternativi, o almeno complementari a quelli standard di scrivere dei documenti testuali. 

Nei prossimi interventi vedremo come questo uso del BDD può da una parte coniugarsi con tecniche di analisi agili e con tecniche di progetto di interfacce utente.

Pubblicato originariamente come Articolo LinkedIn.