“亲切照料”下的领域驱动设计

发布于:2018 年 9 月 5 日 18:24

前阿里 P9 技术专家 李运华,正在传授十几年架构实战心法,超过 46000 人跟随学习,点击查看 >>

关键要点

  • 在将 DDD 引入新团队时,请从有界的上下文开始——将大问题分解为可管理、可解决的小问题。撇开繁文缛节,动手去做。
  • 了解团队成员的能力,以便能够成功地指导他们,这与本能和同理心有很大关系。仔细聆听、尊重、不评判、和善,这些都是非常重要的。
  • 人们抵制 DDD,是因为他们认为 DDD 的内容太多了,或者会对他们当前的流程造成太大破坏。解决小问题是可以帮助人们获得对 DDD 信任的一种很好的方式。
  • 领域建模是一门艺术,而不是一门科学,因此,出现碰壁或突然改变方向的情况并不罕见。团队需要一个熟悉建模的教练,让你在整个过程中无需担心视角的变化。

在 2017 年探索 DDD 会议上,Serial DDD 倡导者 Julie Lerman 谈到了如何通过“亲切照料”进行领域驱动设计。InfoQ 采访了 Lerman,谈论了她如何向新客户介绍 DDD 并帮助他们取得成功。

InfoQ:大多数 DDD 从业者都记得他们是如何首次引入域驱动设计的。你的 DDD 起源故事是怎样的?

Julie Lerman:不管你信不信,我必须感谢 Jimmy Nilsson!多年前,当微软发布 LINQ 和 Entity Framework 时,发生了一些争议。我和 Jimmy Nilsson 在 InfoQ 上接受了一次采访,他被问到他对 LINQ 和 Entity Framework 的看法——这是我非常感兴趣的一个观点。在采访结束时,Jimmy 被问到一个问题:“你最喜欢的书是什么?”他回答是 Eric Evans 的《领域驱动设计》,Jimmy 说它读起来就像诗歌一样。那时我正在为 O’Reilly Press 写一本关于 Entity Framework 的书。这是我的第一本书,我真的很想知道让一本科技图书读起来像诗歌的意味着什么。所以我拿起了 Eric 的书,书中涉及的第一个讨论话题是关于领域专家参与度的重要性——这对我在客户方面取得的成功来说至关重要。我喜欢了解他们的业务,并与我的很多客户建立了长期稳固的关系。

InfoQ:DDD 涵盖了很多主题。当你开始与新团队合作时,你是如何引入 DDD 的,以及如何避免向其他人灌输太多新概念?在这方面是否存在一些教学技巧?

Lerman:我通常是在他们正在重构或更换遗留应用程序或正在开发应用程序时加入他们的,而且我只在那里短暂停留,所以我会尽可能快尽可能多地让他们接受 DDD。我从有界的上下文开始——将他们的大问题分解为可管理可解决的小问题。我甚至在一开始都没有使用术语。然后我从松散的有界上下文中选择一个简单的目标,并分析它,然后识别出领域模型的不同部分——一次一个,而不是一次性完成。我在一开始就使用新概念,不担心术语问题。从我个人的经验来看,大脑会被术语锁定。所以,我找到了更简单的方法引入新主题——更加明显的类比方式。最后,我再把术语添加进去……聚合、聚合根等,并向他们解释使用这些术语的重要性,这样每个人都可以达成共识。对于无所不在的语言来说,这也是一个很好的选择!

InfoQ:Evan 那本书的副标题是“解决软件核心的复杂性”。康威定律意味着复杂的应用程序通常需要复杂的组织和团队来支持它们。DDD 的概念,例如有界上下文,是否有助于理解和指导团队?

Lerman:了解团队成员的能力,以便能够成功地指导他们,这与本能和同理心有很大关系。仔细聆听、尊重、不评判、和善,这些都是非常重要的。但是,我也很依赖直觉和经验来“读取房间”。我的星座是天秤座,所以我的性格主要关于平衡和调解。当我与团队合作,并且需要以积极的方式继续前进时,对我的客户有很大的帮助。我认为这与 DDD 人性的一面很有关系——与客户密切合作以了解他们的业务,识别他们的问题并获得他们对你的信任,最后解决所有的问题。这就是最初 Eric 的书吸引我的原因。DDD 的技术或战术设计部分只是锦上添花!

InfoQ:你有听到哪些反对采用 DDD 的争论?你是如何回应他们的?

Lerman:有一些观点认为 DDD 需要学习的东西太多了,这会对我们的流程造成太大破坏,因为需要太多的重新思考、重构和时间。

我回到了“解决小问题”的方法——寻找机会通过小投入获得大利益。

InfoQ:如果你只有两三天的时间来引入 DDD 和指导团队,你会怎么做?你的目标是什么,以及如何优化时间以最大化实现这些目标?

Lerman:我首先会想知道他们在做什么,他们的目标是什么以及他们担心什么——显然是某种东西,否则他们就不需要我加入。然后我就开始进行神奇的“把大问题分解成小问题“,从这些问题中挑选一些解决方案,然后对其进行建模。我最常帮助他们进行遗留系统的替换,我们在白板上进行建模。建模是一门艺术,而不是一门科学,因此,因此,出现碰壁或突然改变方向的情况并不罕见。对于那些熟悉建模并且在整个过程中不担心视角变化的人来说,体验这一点对他们有好处。我出于同样的原因在那里做一些群体编程。我很清楚我们可能会遇到哪些技术问题,因此我可以指导他们完成。

InfoQ:对于试图开始使用 DDD 的人,你有什么建议吗?

Lerman:很多人通过专注于技术软件实现(称为战术设计)开始他们的 DDD 之旅,战略设计对于 DDD 来说至关重要,并且当你与领域专家合作,了解他们的领域和计划你的系统的时候,战略设计应该是放在第一位的。确保自己至少对 DDD 的广度、目标、它的用武之地以及在哪些场景中会用力过猛多需要有一定的了解。

关于受访者

“亲切照料”下的领域驱动设计Julie Lerman 是微软区域总监和微软 MVP。她主要从事全球软件团队的软件教练和顾问方面的工作。你可以在世界各地的用户组和大会上看到 Lerman 呈现的有关 Entity Framework、域驱动设计和其他有趣的主题。Lerman 在 thedatafarm.com/blog 上发表博文,是备受好评的“Programming Entity Framework”一书的作者、MSDN 杂志 Data Points 专栏作者和 Pluralsight.com 热门视频的作者。

查看英文原文 DDD With TLC

阅读数:1163 发布于:2018 年 9 月 5 日 18:24

更多 敏捷、语言 & 开发、架构 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • 来龙去脉:中台为什么这么火?

    今天我想就带你回到10年前,一起重新走一遍中台的诞生和发展之路,来看看中台究竟从哪里来,又将走向何处?

    2019 年 9 月 25 日

  • Bas Vodde 谈新书“Scaling Lean and Agile"及敏捷与 CMMI 的冲突

    在9月20日举办的ScrumChina Gathering Event上,InfoQ中文站的记者有幸邀请到Bas Vodde接受采访,采访的话题包括他与Craig Larman合作撰写的两本重量级图书,还有敏捷和CMMI的冲突。

    2008 年 9 月 27 日

  • 使用乐高讲授技术实践

    要把工艺技术讲清楚是很难的,特别是在向高级管理者和执行官们解释的时候。因为通常关键是要理解思维转换和技术实践是开发高品质软件的方法,所以对它们的解释就极为重要了。在第7次敏捷运动大会上, Mike Bowler召开了一个如何将乐高用于技术实践的研讨会。

    2016 年 6 月 11 日

  • 领域建模:如何用事件风暴构建领域模型?

    事件风暴是DDD战略设计中经常使用的一种方法,它可以快速分析和分解复杂的业务领域,完成领域建模。

    2019 年 11 月 11 日

  • 先做好 DDD 再谈微服务吧,那只是一种部署形式

    想要做好微服务,关键在于服务的划分,而划分服务,最好先学习 DDD。

    2019 年 4 月 5 日

  • 答疑篇(上) | 你问我答,关于中台还有哪些困惑?

    中台与微服务、中间件、数据仓库到底有什么区别?中台和后台的区别具体在哪里?

    2019 年 11 月 5 日

  • 我的领域中有一位牛仔! - Implementing Domain Driven Design 书评及采访

    Implementing Domain Driven Design一书,使得软件设计中非常重要,却很少为人理解的一面变得清晰。作为对软件设计文化的一次评测,Vaughn的工作既有意义又很有趣。IDDD一书包含了真实世界中的代码示例及明智的建议,它指导读者趟过DDD中那些泥潭,并帮助他们获得足够的洞察力,使他们能够展开一次他们自己的DDD之旅。

    2013 年 10 月 1 日

  • 面向敏捷作者及评论员的语音访谈

    The Human Side of Agile的作者Gil Baroza,在去年五月公布了一系列面向敏捷作者和评论员的语音访谈,这些访谈主要涉及“个体与交互”的话题。这一系列访谈的主题“采用了已经证实的策略、方法、活动让敏捷达成目标”。

    2013 年 6 月 13 日

  • InfoQ 编辑 2018 年推荐阅读清单(第二部分)

    鉴于分享知识是 InfoQ 的核心价值之一,InfoQ 编辑们致力于收集并分享2018年可推荐给读者的著作和文章,使他人可从中受益。在本系列文章的第二部分,我们将分享最后一批推荐阅读清单。

    2018 年 12 月 25 日

  • 与 DDD 领域专家共事

    在2016年年初举行的领域驱动设计欧洲大会上,Cyrille Martraire在演讲中分享了他在DDD驱动的环境中与领域专家共事的经验。他指出,在领域驱动设计中,与领域专家对话及所使用的语言是关键,这通常会因为所说的语言不同而出现困难。

    2016 年 6 月 6 日