引子:
今晚跟朋友讨论DDD(领域驱动设计),说到如何分析业务、设计方案的事情,大家对于分析与设计的关系有点搞不清,DDD到底是分析,还是设计,谈了很久的DDD,还是搞不清楚该怎么分析,怎么设计。我觉得在设计之前一定要搞清楚前一个问题,即什么是分析,什么是设计。
“业务分析”之宝宝哭了:
以领域的思维来分析问题,以分析的结果来驱动设计
----这是我理解的DDD(领域驱动设计)。
比如,婴儿哭了,这个是问题,客户拿着这个问题,来请你分析。
角色领域视角分析:
角色 | 领域视角 | 分析 | 设计 |
---|---|---|---|
妈妈 | 育儿领域 | 如果你是有经验的妈妈(育儿领域专家),根据宝宝的哭声洪亮 ,吸吮手指,你的分析是宝宝可能饿了。 | 于是你脑袋里面开始设计:喂奶?喂奶粉?米粉?。。。。 最终,你决定直接母乳。 在你最终采取行动之前的过程,是设计的过程,设计一种喂养方案。 |
爸爸 | 育儿领域 | 如果你是婴儿的爸爸(婴儿问题的另一种领域专家),你开始分析:是不是生气了?没有陪他玩?。。。。 | 于是你开始设计:我该用哪种玩具来哄他玩?小铃铛?风车?变形金刚?。。。。 最后,你拿了一个风车过来。 |
儿科医生 | 医学领域 | 如果你是医生(婴儿问题的另一个领域专家了),你开始分析:这孩子是不是消化不良?或者其它疾病? 先去做个检查 ,根据检查结果再进一步分析确诊。 | 于是你开始设计婴儿的检查方案:查体温、超声波检查、核磁。。。。。 最终你决定,查查体温即可。这就是你对婴儿哭闹问题的设计方案。 |
领域分析的缺陷:
由上面的例子可见,我们对同样一个问题,以不同领域专家的视觉,会得到不同的分析结果。
到底哪种分析是正确的?
这,就是领域事先不能评判的。所以这是领域分析的短板。
但是将问题放到历史的时间轴去观察,我们很快就能够发现哪种领域分析是最可靠的,同时结合场景,就能够做出正确的判断。
场景角色分析法:
比如,在睡觉的场景,婴儿突然哭闹,那找妈妈这个领域专家即可解决,孩子可能做噩梦了,妈妈抱抱即可;
在玩耍场景,婴儿突然哭闹,那找爸爸这个领域专家即可解决。
而结合历史情况,婴儿有爱哭闹的习惯,婴儿身体体质不好....
那么同一个场景下可能又该使用不同的领域视觉去分析解决问题。而从分利用这个分析方式,就能够设计出满意的解决方案:
业务分析三维度理论:
所以,离开场景谈领域,离开时间谈领域,都是不合适的,领域都没有找对,那么分析就算是有道理,但也无助于解决问题。 而具体会采用哪种领域视角,又跟场景中的角色有关。 不同的角色总有不同的领域思维。
因此我们发现,仅仅依靠领域的思维来分析解决问题,有很大的局限性。
所以我们可以总结出,采用 场景 角色 时间 这三个纬度的问题分析方式,才是最合适的方式。
这就是《业务分析三维度(场景 角色 时间)理论》
注:本文的图片均来自网络,如果侵权请和我联系。
本文理论属于原创,欢迎转载,转载请注明出处。
相关链接:
春节前最后一篇,CRUD码农专用福利:PDF.NET之SOD Version 5.1.0 开源发布(兼更名)