领域驱动实战思考(一):用TDD思想对DDD的协作设计过程进行基准化

版权声明:本作品采用【知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议】进行许可。


前言

在这一年聚焦DDD设计,尤其是DDD的协作设计工作坊的咨询工作中,我发现客户同很多咨询顾问之间总是存在以下冲突:

  • 体验的“一致性”冲突
    • 客户:希望不同的顾问在售卖方法论的时候解释能一致;
    • 顾问:认为每个人对方法论的认识和理解本身就不同,很难做到一致。
  • 服务的“标准化”冲突
    • 客户:希望顾问能够将所售卖的方法论进行标准化;
    • 顾问:认为顾问所售卖的方法论本身非常灵活,需要 By Experience 依据不同的情况进行适配,标准化是做不到,并且也是不应该做的。

结合我曾经在ThoughtWorks近4年的人员培养和教学经验,和这几年来的咨询经验,我能够理解客户这样要求,是因为希望能够实现方法论的规模化落地。而在方法论规模化落地的过程中,一个很重要的问题,就是绝大多数能力一般的人,都更习惯于依据“明确的指令”进行工作,而不是依赖自己“有限的经验”和“莫能两可的方法论”

这篇文章就是记录我是如何来解决这个问题的。

我的基准化思维框架

对DDD这样的方法论进行“按部就班”式的基准化梳理,从而形成“基准化的操作”,以提供“明确的指令”,说起来简单,做起来却没有想象中容易。绝大多数的顾问虽然能够对方法论进行阶段性拆分,但是却没有能够将方法论进行细粒度的拆分和验证。

从我的观察来看,之所以造成这个问题,主要原因来自几个方面:

  • 对方法论的深入研究不够:在售卖方法论的时候,现学现卖。
  • 缺乏反复的思考和打磨:缺乏机会进行反复验证和优化,或者注意力不够聚焦。

还有一个很重要的原因,就是绝大多数技术顾问可能脱离写代码这件事情太久了,没有意识到对方法论基准化非常像我们开发软件的过程

  • 首先,都是需要从客户需要出发,明确交付目标的价值和内容。
  • 然后,以Tasking思想和阶段性验收条件为着眼点,将目标拆解为不同的阶段。
  • 接下来,对每个阶段进行细化的实现,保证每个阶段的验收条件在实现过程中可以通过最简单的方式达成。
  • 最后,产出第一版最小基准化内容,通过不断的适配和打磨,进行迭代式的改进,或者较大幅度的修改(类似需求变更)。

更重要的是,以上这个过程,是可以用“测试驱动开发(Test Driven Development)”的思想来做的!

利用TDD的方式进行DDD设计过程的基准化

那么,我是怎样用TDD的思想,对DDD的设计过程进行基准化的呢?在这一年,通过大大小小十数个咨询项目,我是这样做的:

  • 第一步,我通过在不同客户项目的实践中打磨和定义了每个阶段清晰的输出件,产出了《DDD工作坊准入条件和产出物图例》。这一步就相当于通过Tasking确定程序的输入和输出,以及定义测试驱动开发中的测试用例。
  • 第二步,在确定了输入输出后,我继续通过不同项目的不断打磨,基准化了每一个阶段的操作步骤,并把每一步细化到概念介绍、操作步骤、过程图例、要点提示四个部分,产出了《DDD工作坊操作手册》。这一步就相当于通过测试驱动的方式,进行了程序“处理”过程的实现,并且还通过小步迭代的方式,对操作过程进行了一遍又一遍的迭代。
  • 第三步,在整个操作手册完成之后,基于操作手册,重新梳理抽象出了适配这个操作手册的最简单和通常的概念,并从整个宏观上优化和定义了新的DDD分段式设计(战略设计阶段、战术设计阶段、技术实现阶段),解决了之前所有我所参与过的DDD培训所看到的知识体系凌乱,不统一,不顺畅等问题,让概念讲解部分最小化,产出了《DDD工作坊概念讲解》课件。这一步就相当于程序设计和开发过程中,通过高度抽象,进行分层架构并实现架构演进的过程。
  • 第四步,通过项目开发实践和进一步总结,结合多种以领域为核心的分层架构思想,不断打磨形成了适配整个基准化DDD的基准化代码样例(https://github.com/howiehu/ddd-architecture-samples)。实现了代码化落地。
  • 第五步,继续通过不断的实践、打磨和总结,产出《DDD成熟度评估标准》。

这样,就通过实战验证的方式,从确定交付物开始,一步一步的增量式的完成了DDD设计过程的基准化,这也很像我们做软件设计时通过TDD而达到的“简单设计(增量式设计)”思想。

结果

DDD的思想和设计过程,是公开并且没有什么保留意义的,所以,我在这里也选择分享给大家,以便为DDD在中国的落地和完善贡献一份力量。

同时,我也正在建立一系列的DDD基准化公开材料、社区和培训,我未来会将这些内容逐步发布到Github的“领域驱动”组织之中,地址如下:

而文章中所说的基准化的领域驱动设计产出物如下,未来我会继续进行不断的打磨和优化:

对于这些基准化的产出,我已经通过带领7个新咨询师进行了可复用性的验证,这些新咨询师只需要通过我讲解或示范一遍,就能够独立承担后续的DDD设计咨询工作,并且还能够实现概念和手法的一致性。

至于“By Experience”,则只剩操作者个人经验的高低,和智商的天花板了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容