在领域驱动设计欧洲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

Paul Rayner认为DDD和敏捷可以共存相关推荐

  1. 敏捷开发般若敏捷系列之七:重新认识敏捷与CMMI

    这是敏捷开发般若敏捷系列的第七篇.(之一,之二,之三,之四,之五,之六,之七,之八,之九) 重新认识CMMI CMMI其实是一种敏捷开发方法,何以见得? CMMI是由美国军方的甲乙双方密切配合产生的国 ...

  2. Coolblue的持续部署

    Coolblue 的技术开拓者Paul de Raaij提出,持续部署会得到更强的责任感和更好的部署质量.代码规范预防代码库混乱,自动化检查很合适完成冗长而无聊的检查,人工检查很合适去检查代码的逻辑和 ...

  3. 取sql数据乱码_不基于备份和表,生产系统数据误删就能完全恢复

    MySQL解决方案工程师 由MySQL解决方案工程师来介绍您所关心的MySQL 作者介绍 刘宝珍,架构师,目前就职于大型资产管理公司的科技子公司,拥有多年的大型私有云的规划和设计工作经验,熟悉软件的开 ...

  4. macbook不能进系统 备份数据_不基于备份和表,生产系统数据误删就能完全恢复?!...

    作者介绍 刘宝珍,架构师,目前就职于大型资产管理公司的科技子公司,拥有多年的大型私有云的规划和设计工作经验,熟悉软件的开发流程,目前醉心于研究基于DDD和敏捷的软件的开发模式,对分布式架构有深入的理解 ...

  5. .NET领域驱动设计—初尝(原则、工具、过程、框架)

    阅读目录: 1.原则 1.1.精简聚合 1.2.分离用例与接口功能(设计模式的用武之地) 2.工具.框架.组件 3.过程 1]原则 原则对于任何一项技术实现来说都是至关重要的,在设计某一个系统功能的时 ...

  6. 用大家的力量来总结一个目录(众人拾柴火焰高)

    希望各位能够在"评论"里面无私的"推荐"或者"自荐"比较好的系列型博客,本来是想自己总结的,但我觉得既然是博客园,就要借助园子的力量,把自己 ...

  7. 博客园技术系列文章目录

    目录1.5版-2015 05 05 如果大家觉得不全,或者有更好的可以评论里面留言啊,后续还会有2.0  3.0  n.0版本 关于大型网站的思考--夏森 http://www.cnblogs.com ...

  8. 如果我比别人走得更远些,那是因为我站在巨人的肩上。

    注意:本文内容全部来自各路大神不是本人原创,我会在每段转载开始注明作者,如有问题请及时联系我! 阅读体系: 1.NET学习方法 2.NET知识体系 3.NET系列笔记 4.NET源码研究 5.NET职 ...

  9. 孙向晖-《领域驱动设计》读书心得交流会-UMLChina讲座-实录

    时间 北京时间2006年3月30日(周四)晚上19:00-21:00 主持人 孙向晖.负责<领域驱动设计>中译本的技术审校工作.他的blog"豆豆他爹的生活随笔". 聊 ...

最新文章

  1. 遍历列表python_python列表的遍历与循环
  2. python3 gzip 压缩/解压
  3. FileZilla Server : FTP and FTPS Server
  4. java输入一个数字输出_java 输入一个数字,反转输出这个数字的值(实现方法)
  5. QT 调用 DLL 的三种方法
  6. JList的基本操作
  7. 基金学习201907301
  8. watson语音识别下载
  9. css3美话网页元素
  10. SQL语句批量替换某个指定的字符串
  11. 计算机用户原始密码是多少,administrator初始密码是多少
  12. Jpeg怎么变成jpg格式?教你三步快速转换格式
  13. 也曾青春年少,小虎队
  14. 飞机打扭来扭去的靶子
  15. 从零开始学 Web 之 移动Web(九)微金所案例
  16. [R] R语言for循环机制
  17. 平均26.8万!浙江大学软件学院专硕毕业生年薪!
  18. Blockly编程教程-Google Blockly入门与介绍
  19. 基于xml的数据交换技术
  20. python培训班 北京-终于知道北京python基础培训机构

热门文章

  1. 学科实践活动感悟50字_中学生学科实践活动50字
  2. 2020黑群晖最稳定版本_80%用户的选择!win10最稳定好用的版本更新,你敢升级吗?...
  3. 目标函数、损失函数、代价函数
  4. 【AI不惑境】残差网络的前世今生与原理
  5. 【完结】AI1000问以后知识星球和B站见啦
  6. 【模型解读】“不正经”的卷积神经网络
  7. 全球与中国聚硫聚合物市场发展前景与投资可行性分析报告2021年版
  8. 通用后台管理系统(ExtJS 4.2 + Spring MVC 3.2 + Hibernate)
  9. 成立阿里大农业兄弟连-万祥军:农民丰收节交易会乡村脱贫
  10. openresty开发系列21--lua的模块