在传统的瀑布方法中,业务专家与分析员进行讨论,分析员消化理解这些知识后,对其进行抽象并将结果传递给程序员,再由程序员编写软件代码。由于这种方法完全没有反馈,因此总是失败。分析员全权负责创建模型,但他们创建的模型只是基于业务专家的意见。他们既没有向程序员学习的机会,也得不到早期软件版本的经验。知识只是朝一个方向流动,而且不会累积。

有些项目使用了迭代过程,但由于没有对知识进行抽象而无法建立起知识体系。开发人员听专家们描述某项所需的特性,然后开始构建它。他们将结果展示给专家,并询问接下来做什么。 如果程序员愿意进行重构,则能够保持软件足够整洁,以便继续扩展它;但如果程序员对领域不感兴趣,则他们只会了解程序应该执行的功能,而不去了解它背后的原理。虽然这样也能开发出可用的软件,但项目永远也不会从原有特性中自然地扩展出强大的新特性。

好的程序员会自然而然地抽象并开发出一个可以完成更多工作的模型。但如果在建模时只是技术人员唱独角戏,而没有领域专家的协作,那么得到的概念将是很幼稚的。使用这些肤浅知识开发出来的软件只能做基本工作,而无法充分反映出领域专家的思考方式。

在团队所有成员一起消化理解模型的过程中,他们之间的交互也会发生变化。领域模型的不断精化迫使开发人员学习重要的业务原理,而不是机械地进行功能开发。领域专家被迫提炼自己已知道的重要知识的过程往往也是完善其自身理解的过程,而且他们会渐渐理解软件项目所必需的概念严谨性。

所有这些因素都促使团队成员成为更合格的知识消化者。他们对知识去粗取精。他们将模型重塑为更有用的形式。由于分析员和程序员将自己的知识输入到了模型中,因此模型的组织更严密,抽象也更为整洁,从而为实现提供了更大支持。同时,由于领域专家也将他们的知识 输入到了模型中,因此模型反映了业务的深层次知识,而且真正的业务原则得以抽象。

模型在不断改进的同时,也成为组织项目信息流的工具。模型聚焦于需求分析。它与编程和 设计紧密交互。它通过良性循环加深团队成员对领域的理解,使他们更透彻地理解模型,并对其 进一步精化。模型永远都不会是完美的,因为它是一个不断演化完善的过程。模型对理解领域必须是切实可用的。它们必须非常精确,以便使应用程序易于实现和理解。

团队成员、开发人员和领域专家等都学到了知识,他们开始使用一种公共的语言,而且形成了贯穿整个实现过程的反馈闭环。

知识消化是一种探索,它永无止境。

DDD落地方案QQ交流群:130950009,群里会不定期的推荐好的DDD文章,讨论DDD落地方案和xtoon-boot框架(开源地址:https://gitee.com/xtoon/xtoon-boot),期待您加入交流!

DDD领域驱动设计-知识消化相关推荐

  1. DDD专家张逸:构建领域驱动设计知识体系

    张逸 读完需要 5 分钟 速读仅需 2 分钟 领域驱动设计专家,曾就职于 ThoughtWorks,作为 Lead Consultant 为客户提供架构设计.大数据分析.持续交付.代码质量.敏捷管理等 ...

  2. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  3. DDD 领域驱动设计

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  4. DDD领域驱动设计 — 贫血模型与充血模型

    文章转载来源:https://juejin.cn/post/6917125801460629518 | 前言  要想深入掌握和了解 DDD 领域驱动设计的核心,那无论如何也绕不开两大较为抽象的概念-- ...

  5. DDD 领域驱动设计:贫血模型、充血模型的深入解读!

    作者:JavaEdge在掘金 链接:https://juejin.cn/post/6917125801460629518 -     前言     - 要想深入掌握和了解 DDD 领域驱动设计的核心, ...

  6. DDD 领域驱动设计:贫血模型、充血模型的深入解读

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 -     前言 ...

  7. [转]浅析DDD(领域驱动设计)

    最近在做一些微服务相关的设计,内容包括服务的划分,Restful API的设计等.其中比较棘手的就是Service的职责划分:如何抽象具有统一业务范畴的Model,使其模块化,又如何高度提炼并组合多模 ...

  8. 浅析DDD(领域驱动设计)

    最近在做一些微服务相关的设计,内容包括服务的划分,Restful API的设计等.其中比较棘手的就是Service的职责划分:如何抽象具有统一业务范畴的Model,使其模块化,又如何高度提炼并组合多模 ...

  9. DDD 领域驱动设计落地实践:六步拆解 DDD

    引言 相信通过前面几篇文章的介绍,大家对于 DDD 的相关理论以及实践的套路有了一定的理解,但是理解 DDD 理论和实践手段是一回事,能不能把这些理论知识实际应用到我们实际工作中又是另外一回事,因此本 ...

最新文章

  1. javascript的知识总结
  2. 数论 - SGU 105 DIV3
  3. cellpadding,cellspacing都是废弃的属性了,早已不推荐使用,最新的html5里已经彻底去掉了这些表现型的属性。
  4. java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
  5. python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue
  6. 游戏市场阴影下的手游厂商,和他们无法触碰的未来
  7. ThinkPHP5模型操作中的自动时间戳总结
  8. 下一次装mysql 试一下这个方法
  9. 阶段3 3.SpringMVC·_05.文件上传_3 文件上传之Springmvc方式上传原理分析
  10. Android应用层读写设备节点
  11. 基于支持向量机的新闻分类
  12. 利用黎曼几何分析EEG信号(四):集论初步与拓扑空间初步
  13. vue-cropper图片裁剪 结合 OSS 实现图片直传(后台)
  14. Android获取所有App信息
  15. 云主机安装redis
  16. 运维学习(二):Linux服务器永久修改系统时间和时区方法
  17. NO2/*学习记录*/--模仿百度首页(纯HTML+css)
  18. 技术改造奖补,湖北省技术改造项目奖励补贴标准和申报
  19. iTOP3568开发板Android 摄像头测试程序
  20. 搭建 yapi 接口管理平台

热门文章

  1. 根据excel字段信息动态生成建表语句sql
  2. 大疆智图软件(用于生产正射影像图和实景三维模型)
  3. Android项目--坦克大战
  4. SQL--盲注和宽字节注入
  5. AutoML-第八章-TPOT
  6. 玩转jpmml之tpot+sklearn2pmml自动化机器学习集成模型部署
  7. 洋酒的分类与大家分享
  8. [PHP]Reverse Proxy反向代理
  9. (六)51单片机基础——定时器
  10. QGraphicsScene Class