BDD eseguito correttamente non produce un modello "completo". C'è una ragione per cui Dan North, il ragazzo che ha inventato il BDD, chiama il suo blog "embracing uncertainty".
Trovo utile in questi giorni pensare a tre tipi di cose che possiamo analizzare: il conosciuto, il conoscibile e l'inconoscibile.
Le cose note sono semplici, ad esempio l'accesso. È ben compreso. Non abbiamo bisogno di parlare attraverso gli scenari.
Le cose conosciute sono solitamente correlate al dominio o a qualcosa che è stato fatto prima. Questo è un ottimo posto dove fare BDD, perché aiuta a trasferire le conoscenze - incluso il modello di dominio - dal business agli sviluppatori. Parlare attraverso gli scenari è un ottimo modo per capire meglio le storie. Può anche aiutarci a trovare gli scenari che abbiamo perso. Chris Matts, che è l'analista che ha contribuito a mettere il "dato" in "Given, When, Then" chiama questo "rottura del modello". In realtà offriva premi a chiunque riuscisse a inventare uno scenario che non era coperto dal suo modello, che utilizza per definire e perfezionare gli scenari.
C'è anche la roba inconoscibile. Questo succede quando lavoriamo su qualcosa di nuovo, o qualcosa che non abbiamo mai fatto prima, o qualcosa in cui nessuno ha esperienza. Puoi dire se sei in questo posto perché gli uomini d'affari inizieranno a reagire con sorpresa quando ti verrà in mente gli scenari a cui non hanno pensato. BDD è un ottimo modo di trovare in questi luoghi, ma a questo punto probabilmente vorrai smettere di cercare di definire gli scenari e provare semplicemente qualcosa e ottenere invece un feedback. Il tuo modello di dominio, le tue storie utente e i tuoi scenari emergeranno gradualmente (see the complex domain in the Cynefin model).
So che molte squadre usano BDD come un modo per eliminare apparentemente questa incertezza. Non puoi eliminarlo. Puoi nasconderlo solo più tardi, quando il feedback dalla consegna torna a morderti.
Per quanto riguarda DDD, quando lo facciamo con BDD si tende a concentrarsi su quelle parti del modello di dominio che sono rilevanti per gli scenari su cui stiamo lavorando, anche se potremmo avere un'idea del dominio più grande modello nel complesso. Se stai utilizzando Feature Injection insieme a BDD, avrai già parlato attraverso la maggior parte delle funzionalità del sistema, in particolare quelle nuove, così avrai un'idea di che tipo di cose ci sono nel dominio. L'evoluzione e tutte le altre regole si applicano ancora. BDD e DDD funzionano davvero, molto bene insieme, con conversazioni su scenari che aiutano a far emergere la lingua del dominio. Non sono fondamentalmente diversi, ma completamente di supporto e compatibili.
Si prega di leggere anche the answer I gave to this similar question, che presenta un video di Dan Nord e me stesso che parla di questo argomento.
Grazie Liz, e grazie per le diapositive su Slideshare. – david004
Piacere mio. Ecco il link alle diapositive del tutorial BDD nel caso in cui qualcun altro sia interessato: http://www.slideshare.net/lunivore/behavior-driven-development-11754474 – Lunivore
Molto ben risposto. –