对结合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都得到完美实现。
-
系统通过集成测试和试运行,顺利交付并完成归档。
对这个流程中,有几点需要说明: