對結合BDD進行DDD開發的一點思考和整理(6)
發表于:2016-12-01來源:老畢的程序人生作者:老畢的程序人生點擊數:
標簽:BDDDDD
解決了Impact Map的問題,下一步就是思考如何將DDD的戰略思考與BDD的戰術實現結合起來,引導整個開發的方向。這一切當然地需要用實踐來解決,在前進中
解決了Impact Map的問題,下一步就是思考如何將DDD的戰略思考與BDD的戰術實現結合起來,引導整個開發的方向。這一切當然地需要用實踐來解決,在前進中才能解決遇到的問題,所以暫且只得到以下的一個思路。
DDD+BDD的開發流程:
-
項目伊始,使用Impact Map勾勒出系統的功能輪廓。
-
找出Key Example,編寫相應的Specification及Feature文本。
-
對領域進行劃分,將Specification劃入不同子域。
-
統一Specification中的概念,建立特定子域內的通用語言。
-
結合Specification的描述和子域的劃分,定義最初的BC結構。
-
選擇核心BC,利用SpecFlow+NUnit等工具,用代碼實現Specification描述的Feature。
-
通過捕捉Feature描述中的Given-When-Then,得到領域事件列表。
-
逐個BC重復第6、7兩步,得到領域模型的原型。
-
不斷審視和完善Specification,中間可能夾雜著BC的調整,使領域模型不斷演進和豐滿。
-
利用SpecLog等工具生成領域模型的Living Documentation。
-
通過自動化測試,審視業務流程是否達到預期。
-
從領域模型由內而外,編寫應用接口層、UI層和基礎設施層的Specification。
-
使用BDD工具,實現這些外圍Specification的自動化測試和文檔生成。
-
經過若干次迭代,所有核心和外圍Specification都得到完美實現。
-
系統通過集成測試和試運行,順利交付并完成歸檔。
對這個流程中,有幾點需要說明: