对结合BDD进行DDD开发的一点思考和整理(2)

发表于:2016-12-01来源:老毕的程序人生作者:老毕的程序人生点击数: 标签:BDDDDD
当应用层接口和系统模型相对稳定后,我们才开始着手UI和持久层的设计实现。在MVP、MVVM模式和ORM工具的帮助下,这个阶段通常没有太大的难度。随后,是
  • 当应用层接口和系统模型相对稳定后,我们才开始着手UI和持久层的设计实现。在MVP、MVVM模式和ORM工具的帮助下,这个阶段通常没有太大的难度。随后,是以应用层接口为单位的集成测试和性能分析,期间还会穿插若干次的重构和单元测试,通常这是最恼人的一步——眼看胜利在即,仍只能望梅止渴。接下来,是完整系统的模拟运行,一帮人整天想着法子折腾它,并记下每一次的错误和异常,然后又进入新一轮的重构和测试。
  • 最后,大家伙再加把劲,编制用户手册、完成代码和资料存档、再完成生产环境的部署,就算万事大吉了。
  • 在整个开发流程里,如果说建模、实现、测试等等,都还在我的控制之中,那么在与客户交流时,我不知道有多少人象我一样,时常感到引导话题或者讨论方向时那种深深的无力。客户总会认为你是专家,他说的你都能理解、都能实现,无论其表述是如何的天马行空。而这种信马由缰式的讨论,也对我划分子域、切分BC带来了很大的困扰。可能有的人会说,你为什么不每次都拟定一个讨论的主题和大致的提纲呢?而我能说的是,嗯,是的,我准备了,可是客户思维的发散性和跳跃性永远会给你带来意外的“惊喜”。另一方面,是伴随系统模块逐渐增多后迅速膨胀的各类测试,以及繁琐的UI测试,给我们的维护与迭代带来的巨大心理和工作压力。

    所以,我希望有一种方法学的指引,帮助我们更加专注于每次讨论的主题,帮助我们更好地发现和切分BC。在张逸的《 如何识别Bounded Context 》一文中,我找到了方向。在文中,他倡导以领域中的 Who-What-Why-When-Where-How 为媒,以Actor为驱动,不断堆砌出系统的关键用例,再以对用例的分类划定问题的边界,最终由此催生不同的BC切分。

    这更加深了我对 “讲好故事、划好边界” 的认识,并由此引导我迅速地转入了对BDD、Specification by Example的学习。

    初识BDD

    关于BDD,我在前一篇《行为驱动开发BDD概要》中已经做了一份《 BDD in Action 》的书摘,并按图索骥尝试了.NET平台下的 Specflow + NUnit

    原文转自:http://www.cnblogs.com/Abbey/p/5143674.html