DDD作者说DDD发展还没完!

昨天,Explore DDD 2018刚刚闭幕,DDD作者Eric Evans在探“持怀疑态度,乐观态度和实用主义”主题演讲中表示,“DDD尚未完成。”,很多人认为DDD诞生于15年前,以为不再是新技术了,其实,从领域驱动设计这本书出版以来的十五年中,人们不断在探索创新,事件风暴建模、事件溯源和CQRS等技术模式改变了我们构建软件的方式,并提供了系统不需要单个数据库的创新。Evans表示:要保持DDD不断发展,还有很多工作要做。

人们经常请Evans对DDD进行严格定义,其实这可能会导致DDD走上宗教原教条主义,因为当DDD被严格定义后,最轻微的改变都会被一些学术教条主义指责说“你没有做DDD”,那么你就无法真正创新。为了使DDD保持长久性,它必须允许创新和发展。

Evans认为DDD还是有一些主要指导原则:关注核心领域,领域专家和程序员需要创造性合作,探索模型设计,在明确有边界的上下文下说一种统一语言,需要不断从怀疑角度看问题(banq注:我思故我在,只有怀疑性思考才能证明自己存在),经常反问:如果我们错了怎么办?如果我们没有看到DDD提供预期的结果,那么,作为专业人士,我们需要重新审视我们的原则。

可惜的是,一些团队实施DDD确实令人失望,原因很多,比如和文化有关(banq注:文化哲学背景,软件分析是一种逻辑分析哲学方法,是属于罗素、维根斯坦代表的逻辑主义,这属于英美流派,但是国内哲学基本是德国欧洲大陆派,是属于黑格尔马克思之流派,大部分学生在学校没有接受有关形式逻辑的启蒙教育)。

除了文化,团队缺少成功的技能,也有运气不好原因,Evans试图对原因进行分类,认为DDD技术薄弱或DDD原则存在缺陷是主要原因。如果技术薄弱,可以在不改变DDD基本原则的情况下解决。例如,事件风暴是一种强大的技术,可以帮助开始协作。但是,如果是DDD原则本身确实存在缺陷,我们是否能够在不完全放弃DDD的情况下对它们进行一些修改?这是一个需要考虑的未决问题。

微服务的发展也得益于DDD本身价值,Evans认为这是积极的,但也强调了需要谨慎点。尽管如果不是微服务,Explore DDD会议今天可能不会举行,但是诸如“每个微服务就是一个有界的上下文”的规范性指导有些极端,好像过于现实的菜谱一样,偏离了DDD重点。

Evans把大型软件系统和社区花园比较,在花园共享空间内,人们有着自己的私人花园空间(有界的上下文),那些遗留系统就好比成熟的果实,花园在夏末初秋最有价值,因为最有生产力,收获的季节,在早春阶段你可以修剪改变花园,这时你的花园是最具有潜力的(banq注:弱者道之用),同样,软件最具发展性的阶段并不是最具生产力的阶段。

最后一点是,推进DDD的秘诀在于合作。他认为会议是最有效的机会,可以将专家聚集在一起,讨论各种想法并互相学习,而不仅仅是广播和讲座形式。他主张DDD专家进行实验,并在DDD社区内分享这些实验和结果。引入其他领域的专家和意见同样重要,例如库包和语言的作者。他总结道,“DDD在过去的15年里已经被震撼了几次。我认为现在是时候进行另一次重大改组了。”

banq观点:国内应该让产品经理掌握DDD,这样产品经理和程序员才会有统一语言,前段时间,某保险公司发生程序员动手打产品经理的事件,人们只看到问题表面,其实深层次因为产品经理和程序员之间没有共同语言,如果夫妻之间没有共同语言,这容易造成压力焦虑。产品经理提了一个客户需求,手机App背景需要根据手机护套颜色变化,且不论客户这个需求是否合理,但是产品经理不应该原封不动将这个需求像踢球一样踢给程序猿,而应该使用领域语言解析客户的需求,下图形象展示了用户需求和DDD以及事件风暴的关系:

Eric Evans Says DDD Isn't Done
[该贴被banq于2018-09-16 09:14修改过]

维根斯坦提供两个方法: 从房子外面分析房子,就是分析房子环境 上下文,这是概念分析。走到房子内部,分析这栋房子内部构造,解构,分析由哪些构件组成,这是逻辑分析。维根斯坦的逻辑分析和概念分析成为各大领域的唯一武器。

有界上下文等于房子模型所在的背景环境,模型对象内部的字段、实体和值对象属于房子自身的组件构造。DDD分析也基于这套逻辑方法论,罗素维根斯坦都认为根据逻辑可以推导出数学。