SOA、ESB、中台、微服务、分布式架构等一系列名词,都无法解决业务需求不断变化的及时响应,领域驱动设计的概念又重新流行了起来。没有领域模型,只是靠代码编写完成一个又一个功能,复杂的领域需求会使得他们无法交流讨论,使工作陷入泥沼。有少许领域模型,但是没有维护好模型与代码直接的联系,两者产生差异,无法实现。

分析设计发展的三个阶段:

第一阶段:围绕数据库的驱动设计,新项目总是从设计数据库及其字段开始。

第二阶段:面向对象的分析设计方法诞生后,有了专门的分析和设计阶段之分,分析阶段和设计阶段是断裂的。

第三阶段:融合了分析阶段和设计阶段的领域驱动设计。

领域驱动设计(DDD,Domain-Driven Design),软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前,通常需要进行大量的业务知识梳理,然后才到软件设计的层面,最后才是开发。而在业务知识梳理的过程中,我们必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计的基本概念。

项目领域知识零散地分散在很多人和文档中,其中夹杂着其他一些无关信息,因此我们甚至不知道哪些知识是直接需要的知识。看起来没什么技术难度的领域很可能是一种错觉--我们并没有意识到不知道的东西究竟有多少。这种无知往往会导致我们做出错误的假设。

同时,所有项目都会丢失知识。已经学到了一些知识的人可能干别的事去了。团队可能由于重组而被拆散,这导致知识又重新分散开。被外包出去的关键子系统可能只交回了代码,而不会将知识传递回来。而且当使用传统的设计方法时,代码和文档不会以一种有用的形式表示出这些来之不易的知识,因此一但由于某种原因人们没有口头传递知识,那么知识就丢失了。

高效率的团队需要有意识地积累知识,并持续学习。对于开发人员来说,这意味着即要完善技术知识,也要培养一般的领域建模技巧。但这也包括认真学习他们正在从事的特定领域的知识。

那些善于自学的团队成员会成为团队的中坚力量,涉及最关键领域的开发任务要靠他们来攻克。这个核心团队头脑中积累的知识使他们成为更高效的知识消化者。

软件开发中,需求是解决“系统怎样好卖”的问题,设计是解决“降低开发成本”的问题。经过多年的积累,软件公司往往会从单一的产品,变成围绕核心领域的一系列产品线,其中的各款产品都存在很多相同的机制,但又有许多不同。目前大多数软件公司的复用往往只局限于基础平台级别的复用,很难做到对本公司所处核心域的组件作复用,如果能够在这方面做一些努力,对降低维护成本,改善利润 会有很大帮助。

领域驱动设计的重要性相关推荐

  1. 走向卓越,领域驱动设计的思维方式

    作者:程序之心丁仪 来源:https://chengxuzhixin.com/blog/post/ling_yu_qu_dong_she_ji_de_si_wei_fang_shi.html 软件系统 ...

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

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

  3. 【吐血推荐】领域驱动设计学习输出

    一.Hello DDD 刚开始接触学习「DDD - 领域驱动」的时候,我被各种新颖的概念所吸引:「领域」.「领域驱动」.「子域」.「聚合」.「聚合根」.「值对象」.「通用语言」.....总之一大堆有关 ...

  4. 领域驱动设计在互联网业务开发中的实践

    前言 至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD).在互联网开 ...

  5. 领域驱动设计(2)怎么使用沟通

    领域驱动设计(2)怎么使用沟通 废话 沟通的重要性:沟通很重要,不论在生活中,还是工作中沟通处理不好,我想为人处事这块肯定有问题.LZ接触社会比较早,做过焊工.销售.跑过业务...,一路走来在沟通上同 ...

  6. 为何要领域驱动设计?

    前言 领域驱动设计最近貌似开始火起来了,越来越多的人开始认识到领域设计的重要性,从我做过的项目来看,似乎欧洲已经有很多的公司开始实施领域驱动设计了,我看领域驱动设计也有些时间了,但是网上不管是文章还是 ...

  7. 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

    系列文章 基于ABP落地领域驱动设计-01.全景图 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则 基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则 基于ABP落地领域驱动设 ...

  8. 我的领域驱动设计运用实例 - 领域啊领域

    一.前言 断断续续的也有在闲余时间接触领域驱动设计的相关知识,因为目前在工作中更多的还只是一名 crud boy,因此目前也只是对其中的某些知识点有知晓,实际使用的比较少,仅此而已.因此,趁着这个春节 ...

  9. 领域驱动设计学习之路—DDD的原则与实践

    本文是我学习Scott Millett & Nick Tune编著的<领域驱动设计模式.原理与实践>一书的学习笔记,一共会分为4个部分如下,此文为第1部分: 领域驱动设计的原则与实 ...

最新文章

  1. 2021北京智源大会圆满闭幕,现场8千人,参会7万人,发布「悟道2.0」全球最大万亿级模型...
  2. 虚拟机无法上网/连接失败原因及解决方法
  3. 关于类模板怎么用的简单介绍
  4. 自定义TabHost,TabWidget样式 .
  5. 【总结】SAP 供应商寄售/客户寄售
  6. java创建对象过七夕,想 new 个对象过七夕,她却抛了异常
  7. python 视频人脸替换_Python基于OpenCV实现视频的人脸检测
  8. c语言计算n天之后为星期几,计算任何一天是星期几的C语言源代码.
  9. 关于web开发的评论思考
  10. linux的free会擦出磁盘吗,如何在 Linux 上检查可用的磁盘空间 | Linux 中国
  11. 嵌入式操作系统内核原理和开发(信号量)
  12. 人工与计算机解决问题的异同,1.1计算机解决问题的过程ppt课件 .ppt
  13. Centos查看已经安装的软件或者包
  14. 【cocos2d-x】对CCSprite进行高斯模糊
  15. jquery文档就绪函数
  16. java对字符串集合按字符串长度排序
  17. html三角形下拉列表,select自定义小三角样式代码(实用总结)
  18. sphinxapi.php 详解,【转】Sphinx PHP api全文检索的例子
  19. CSS3中rotate的作用
  20. 网易163邮箱配置-iOS、OS X邮箱客户端

热门文章

  1. 关于 HTTP 常用 Method
  2. UltraISO 绿色多国语言版
  3. 计算机知识和应用技能,计算机实用技能及应用
  4. 利用python处理dna序列_Python + 生物信息 02 :Biopython 分析序列
  5. 计算机科学与技术优劣,计算机科学与技术专业优势多多
  6. LoadLibrary下错误返回126错误码排查过程
  7. 万豪国际集团旗下24家餐厅入围2022黑珍珠餐厅指南
  8. c#期末考试知识点_c#期末考试复习题
  9. 重庆公需科目快速看视频方法自动学习 python
  10. 面试必问的8个CSS响应式单位,你知道几个?