为什么说领域驱动设计可以提升软件的质量水平?

领域驱动设计是一套方法论,指导我们将复杂问题进行拆分、拆分出各个子系统间的关联以及是如何运转的,帮助我们解决大型的复杂系统在落地中遇到的问题。

在学习领域驱动设计的过程中我越来越感觉到领域驱动设计可以提升软件的质量水平。这是基于以下2点认识:

1. 领域驱动设计可以是业务知识更早地融入到软件的分析和设计之中

软件是用来解决用户面临的问题,满足用户的需求。而如果软件开发人员不懂得业务知识,就不可能真正理解用户的需求。软件开发人员不能真正理解用户的需求,就不可能开发出让用户满意的软件。

大多数软件项目中,开发人员都没有足够时间收集需求,即使收集了,也会因为缺乏必要的业务知识,使得需求的描述带有“偏见”和逻辑漏洞。而这些“偏见”和“漏洞”往往会在验收测试阶段爆发出来各种Bug。

如果缺乏实际应用软件的业务上下文背景,需求文档就算描述清楚了功能、性能和接口需求,也只是通用业务的抽象表达,这样开发出来的软件即便能够运行,但对用户来说也是无法使用。

关键问题是:软件系统很难做到像建筑行业一样,程序员只要根据图样一步步实施就能完成项目。

领域驱动设计要求开发人员学习业务知识,使用和用户统一的语言,在收集、分析需求以及设计阶段与业务专家、用户一起交流和讨论需求,不断缩小双方的对需求理解的偏差。

领域驱动设计不同于以往的面向对象方法,它消除了建模和代码之间的落差,它将分析和设计完美结合起来,通过引入上下文的特殊性,将项目的真正业务背景和集成复杂性引入设计建模阶段,提高了设计的实用性,减少了软件的变更。

2. 领域驱动设计是复杂软件的解决之道

领域驱动设计是专门解决复杂性的方法论。

领域驱动设计会使用域、子域、界限上下文等工具将一个复杂的问题肢解、拆分成一个个可实现的目标。

大道至简。

领域驱动设计也是以往主流方法学的集大成者,它继承了传统面向对象分析设计方法,比如面向对象的那种更符合人类思考习惯的分析问题方式,划分边界和封装等,同时吸收了函数式编程的数学思维,而且还解决了面向对象分析和设计的割裂状态。

总之,领域驱动设计遵从单一职责、少即是多等设计原则,不断努力降低技术债务,提升软件质量。

这正是:

领域驱动好设计,统一语言先用起

复杂问题变简单,质量提升一定地

参考书目:复杂软件设计之道:领域驱动设计全面解析与实战,作者:彭晨阳,出版社:机械工业出版社

(0)

相关推荐

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

    软件系统是以特定的代码解决现实世界的复杂问题.软件开发的最大困难就是应对复杂度,复杂度可能来源于各个方面.领域驱动设计的概念是 2004 年 Evic Evans 提出的 Domain-Driven ...

  • 领域驱动设计适用于军用软件开发吗?

    领域驱动设计这个概念提出已经超过10年. 近些年来,国内已经有一些互联网公司开始试水领域驱动设计.作为军用软件开发来说,领域驱动设计适合吗? 领域驱动设计自其诞生之日起就是为了解决软件的复杂性的.领域 ...

  • 如何运用领域驱动设计 - 聚合

    目录 概述 何为聚合 演化案例 发现实体关系 开始划分边界吧 选取一个聚合根 通过聚合根保护你的内部对象 聚合的一些特性 通过ID引用 聚合真的是不变的吗 小的聚合 一致性 总结 概述 在前几篇的博文 ...

  • 如何运用领域驱动设计 - 工作单元

    新年伊始,祝大家喜乐如意,爱和幸福"鼠"不尽!♫. ♪♬.♩♫ 概述 在上一篇 <如何运用领域驱动设计 - 存储库> 的文章中,我们讲述了有关仓储的概念和使用规范.仓储 ...

  • DDD领域驱动设计真就一文不值?

    在互联网快速发展的这几年来,微服务.领域驱动设计等已经非常流行,并成为目前软件开发行业的主流趋势. 大家都知道,微服务划分的一个重要理论基础就是领域驱动设计.但由于 DDD 门槛高.概念多,体系庞大又 ...

  • 深入理解领域驱动设计中的聚合

    聚合模式是 DDD 的模式结构中较为难于理解的一个,也是 DDD 学习曲线中的一个关键障碍.合理地设计聚合,能清晰地表述业务一致性,也更容易带来清晰的实现,设计不合理的聚合,甚至在设计中没有聚合的概念 ...

  • 领域驱动设计(DDD)理论与方法

    DDD由来与优势 软件架构设计的真正目的是解决软件复杂度带来的问题,软件复杂度由来主要由三方面:高并发场景下的对软件高性能要求.业务场景对软件高可用要求.持续变化的业务以及业务扩张和增加需求对软件扩展 ...

  • 领域驱动设计(DDD)在爱奇艺打赏业务的实践

    领域驱动设计(Domain-Driven Design,以下简称DDD)思潮的形成要追述到30几年前,17年前,Eirc Evans定义了领域驱动设计的概念.DDD一直为传统行业的软件工程师提供软件设 ...

  • 领域驱动设计-从贫血模型到充血模型

    背景 领域模型对象只是用来存储应用的数据.业务逻辑位于服务层中,管理域对象的数据.在服务层中,应用的每个实体对应一个服务类.这种模式大家是不是很熟悉,尤其是在中小项目或者项目刚启动的时候,都是怎么方便 ...

  • 六 领域驱动设计-领域对象的生命周期

    每个对象都有生命周期,如图6-1所示.对象自创建后,可能会经历各种不同的状态,直至最终消亡--要么存档,要么删除.当然,很多对象是简单的临时对象,仅通过调用构造函数来创建,用来做一些计算,而后由垃圾收 ...