BDD做得很好不是產生了一個「完整」的模型。有一個原因,丹BDD提出了他的博客"embracing uncertainty"。
我覺得現在有用的三種東西我們可以分析:已知的,可知的和不可知的。
已知的東西很簡單 - 例如,登錄。它很好理解。我們不需要談論這些情景。
可以知道的東西通常與域相關,或者與之前做過的事有關。這是做BDD的好地方,因爲它有助於將知識 - 包括領域模型 - 從企業轉移到開發人員。通過場景談話是更好地理解故事的好方法。它也可以幫助我們找到我們錯過的場景。 Chris Matts是幫助將「給定」放在「給定,當時,然後」稱爲「打破模型」的分析師。他實際上爲任何能夠想出他的模型中未涉及的場景的人提供獎勵,他使用場景來定義和優化。
還有一些不可知的東西。無論何時我們正在研究新的事物,或者我們以前從未做過的事情,或者沒有人擁有專業知識的事情,都會發生這種情況你可以告訴你是否在這個地方,因爲當你想出他們沒有想到的情景時,商界人士會開始反應。 BDD是找到這些地方的一個非常好的方式,但是在這一點上,您可能想要停止嘗試確定場景並嘗試一些東西並獲得反饋。您的域名模型,您的用戶故事以及您的場景都將逐漸顯現(see the complex domain in the Cynefin model)。
我知道很多團隊使用BDD作爲一種顯然消除這種不確定性的方式。你無法消除它。你只能隱藏它,直到以後,當交貨的反饋回來咬你。
對於DDD,當我們做到這一點與BDD我們往往把重點放在那些部分領域模型是相關的,我們正在處理的情況下,雖然我們可能有更大的域的想法整體模型。如果您將Feature Injection與BDD一起使用,則您已經討論了系統的大部分功能,尤其是新功能,因此您可以瞭解該域中是什麼類型的東西。進化和所有其他規則仍然適用。 BDD和DDD真的很好地結合在一起,圍繞場景進行對話,幫助推出領域語言。它們並沒有根本的不同,但完全支持和兼容。
請仔細閱讀the answer I gave to this similar question,其特點是單北和我談論這個題目的視頻。
感謝利茲,並感謝之間的聯繫。 – david004 2012-08-01 04:42:06
我的榮幸。下面是萬一別人的鏈接BDD教程幻燈片的興趣:http://www.slideshare.net/lunivore/behavior-driven-development-11754474 – Lunivore 2012-08-01 09:34:18
很好回答。 – 2013-02-16 12:13:09