BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Paul Rayner认为DDD和敏捷可以共存

| 作者 Matt Fletcher 关注 0 他的粉丝 ,译者 谢丽 关注 10 他的粉丝 发布于 2016年6月24日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在领域驱动设计欧洲2016大会上,Paul Rayner在演讲中提出将领域驱动设计(DDD)引入敏捷软件交付过程。他将敏捷视为一种组织工作的方法,而不是一种界定工作方式的规定。他认为敏捷参与者经常不够重视设计,建议使用DDD概念作为一种克服这些缺点的方式。更进一步,Rayner认为,敏捷与DDD的结合可以加速软件交付。

在从事顾问工作的过程中,Rayner见过许多践行敏捷的团队强调MVP(最小可行产品)的重要性以致损害了设计。他引用了Douglas Martin关于设计必然性的观点:“好设计的替代品是坏设计,而不是完全无设计。”避免瀑布方法中的“大量提前设计”,只做最低限度的工作,这些团队最终获得了坏设计。实际上,敏捷宣言宣称,“不断关注优秀的技能和好的设计会增强敏捷能力”。敏捷的目的不只是速度,而是敏捷性。好的设计可以实现敏捷性。这实际上就是设计的目的,Rayner援引Venkat Subramaniam的话对此进行了佐证:“好的设计不是正确地预测了未来的设计,而是让适应未来的成本不那么高昂的设计。”

他指出,设计基本上是迭代的,这样一来就很容易包含到敏捷中。设计是一个发现未知并简洁地表达复杂观点的过程。由于你永远无法提前知道所有的一切,所以设计必然会随着时间变化。花些时间用来发现,并在交付的代码中表达新知识,这样会节省后续过程的时间,因为代码本身变得更加敏捷了。一种方法是“旋涡模式探索过程(whirlpool process of model exploration)”。在这个过程中,你反复使用新场景挑战已有的领域模型,提出新模型,并编写代码实现它。

Rayner还列出了其他一些敏捷团队使用过的、从DDD的视角来看经常失败的方法。一个是认为不断地重构为好的设计已经够了。这可能会实现清理代码的效果,但DDD强调引入新概念。这些新概念不是从代码中出现的,因此无法仅仅通过重构创建出来,而是要在业务建模中形成。它们会增加业务价值,而重构,根据定义,并不改变软件的功能。

Rayner提到,在Scrum中,一个定义好的“产品经理”角色很容易让团队中的其他人将其视为所有业务需求/知识的唯一中转。DDD倡导,每个人都了解领域。这就是复杂之处,不是在问题的技术层面上。因此,为了实现一个好的设计,提高敏捷性和价值,交付团队中的每个人都需要了解领域。

查看英文原文Paul Rayner Says DDD and Agile Can Coexist

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT