在整个开发流程里,如果说建模、实现、测试等等,都还在我的控制之中,那么在与客户交流时,我不知道有多少人象我一样,时常感到引导话题或者讨论方向时那种深深的无力。客户总会认为你是专家,他说的你都能理解、都能实现,无论其表述是如何的天马行空。而这种信马由缰式的讨论,也对我划分子域、切分BC带来了很大的困扰。可能有的人会说,你为什么不每次都拟定一个讨论的主题和大致的提纲呢?而我能说的是,嗯,是的,我准备了,可是客户思维的发散性和跳跃性永远会给你带来意外的“惊喜”。另一方面,是伴随系统模块逐渐增多后迅速膨胀的各类测试,以及繁琐的UI测试,给我们的维护与迭代带来的巨大心理和工作压力。
所以,我希望有一种方法学的指引,帮助我们更加专注于每次讨论的主题,帮助我们更好地发现和切分BC。在张逸的《 如何识别Bounded Context 》一文中,我找到了方向。在文中,他倡导以领域中的 Who-What-Why-When-Where-How 为媒,以Actor为驱动,不断堆砌出系统的关键用例,再以对用例的分类划定问题的边界,最终由此催生不同的BC切分。
这更加深了我对 “讲好故事、划好边界” 的认识,并由此引导我迅速地转入了对BDD、Specification by Example的学习。
关于BDD,我在前一篇《行为驱动开发BDD概要》中已经做了一份《 BDD in Action 》的书摘,并按图索骥尝试了.NET平台下的 Specflow + NUnit
原文转自:http://www.cnblogs.com/Abbey/p/5143674.html