千家信息网

领域驱动设计是怎样的

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家介绍领域驱动设计是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。领域驱动设计领域驱动设计是Eric Evans 定义的一种发展理念,软件中的复杂性:包含"某种
千家信息网最后更新 2025年02月02日领域驱动设计是怎样的

这篇文章给大家介绍领域驱动设计是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

领域驱动设计

领域驱动设计是Eric Evans 定义的一种发展理念,

  • 软件中的复杂性:包含"某种程度上确实有用但无法解释如何运行但代码"。软件变得复杂及难以管理但一个主要原因在于,领域复杂性和技术复杂性混合在来一起。

复杂问题域产生的原因(泥球模式)

软件复杂性:偶发性技术复杂性和领域逻辑复杂性。

  • 1.未使用通用语言创建的代码:对于公共语言和问题域知识缺乏重视会导致代码库可用但无法揭示业务目的,这会使得代码库难以阅读和维护,因为分析模型与代码模型之间的转译将会代价高昂且容易出错。备注:分析模型:分析模型用于描述一个软件应用程序的逻辑设计与结构。它可以由示意图或使用UML这样的建模语言来表示。它是软件的一种表现形式,让非技术人员能够概念化以便理解软件是如何构造的。

  • 2.组织结构的缺乏:一个系统的最初体现是快速制作且通常能获得面面俱到的成功,但由于缺乏基于围绕问题域模型的应用程序设计的重视,后续的功能扩展就会变得很棘手。


泥球模式的危害

  • 1.泥球模式将扼杀开发:开发团队会不断抱怨在如此一团混乱的情况下难以开展工作。开发速度的增长水平也无法满足业务需求。

  • 2.缺乏对问题域的关注:当不能充分理解正在处理的业务领域时,软件项目就会失败。编码不应该是困难的哪一环,维持一个能够满足业务用例的有用软件模型才是难点所在。

什么是问题域

问题域涉及你当前正在构建软件的主题领域。DDD强调的是在致力于为大型复杂业务系统创建软件时专注领域要高于其他的一切的需求。

领域驱动设计模式如何管理复杂性

DDD 能同时应对理解问题域以及创建有助于解决其内在的问题的可维护解决方案的挑战。

DDD 的战略模式

  • 1.提炼问题域已揭示重要之处是什么。

    开发团队与领域专家会使用分析模式和知识处理来将大的问题域提炼成更具管理性的子域。核心领域是出于开发过程的产品背后的驱动力;它是构造产品的根本原因。

    探索核心领域有助于团队理解他们制作软件的原因以及软件对业务达成的成就意味着什么。对业务目标的鉴定将使得开发团队能够确定系统的重要部分并为之投入精力。随着业务的发展,软件也必须相应发展;它需要具备可修改能力,对应用程序关键区域的代码质量进行投入将有助于应用程序跟上业务的变化节奏。

  • 2.创建一个模型以解决领域问题 在解空间中,会为每一个子域构建一个软件模型以处理领域问题并让软件与业务保持一致。该模型并非现实世界的模型,而更多的是构建来满足业务用例需求的一个抽象体,同时仍保持业务领域的规则和逻辑。

  • 3.使用公共语言开启建模协作 模型使用公共语言构建(UML),以便快捷高效地将软件模型和概念分析模型连接在一起。编码时的术语会被映射到公共语言中,在业务分析时隐藏的概念也会被反馈到代码中。这正是领域专家和开发团队能够在协作中逐步发展模型的关键。

  • 4.将模型与歧义和损坏隔离 模型位于有界上下文内,定义了模型的适用性并确保保留其完整性。有界上下文用于形成一个围绕模型的防护边界,这是通过允许总体解决方案的不同模型在良好定义的业务上下文内部逐步发展来达成的,这样就不会带来对系统其他的负面连锁影响。

模型是与基础架构代码隔离的,以避免技术与业务概念融合的偶发复杂性。通过将模型完整性与第三方代码隔离,有界上下文还能阻止模型完整性被损坏。

  • 5.理解上下文之间的关系

DDD 理解确保团队和业务在独立模型和上下文如何共同工作以便解决跨越子域的领域问题方面要非常清楚的需求。

DDD的战术模式

DDD的战术模式是一个帮助创建用于复杂有界上下文的有效模型的模式集合。(企业应用架构模式 ,设计模式)

问题空间与解空间

领域驱动设计的实践与原则

  • 专注于核心领域

  • 通过协作进行学习

  • 通过探索和实验来创建模型

  • 通信

  • 理解模型的适用性

  • 让模型持续发展


领域驱动设计的常见误区

  • 战术模式是DDD的关键 对于开发人员来说,在开发人员不关心或不理解的领域方面,发现在代码中实现的DDD战术模式远比发现业务用户和团队之间的会话要容易多。这就是DDD会被误认为不过是由实体,值对象和存储库构成的一种模式语言。

  • DDD是一套框架

  • DDD是银弹


关于领域驱动设计是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

模型 领域 业务 软件 模式 问题 复杂 设计 代码 开发 驱动 复杂性 上下 上下文 语言 团队 分析 发展 应用 原因 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 黑客网络安全之密码学基础 数据库中添加的数据不合理会怎样 软件开发经验 简述PDB数据库的使用方式 数据库管理员是工程技术人员吗 软件开发是不是寿命要短 我的世界永不关服的生存服务器 服务器启动时间 手机app软件开发学班 家用服务器需要hdmi接口吗 软件开发社招45岁 无线网络安全决策 江阴测试软件开发定做价格 手机群控服务器怎么初始化 曰本网络安全思考 苏州0基础软件开发培训 软件开发能力一览 阿里达摩院数据库技术 数据库出版收入模式 云收易网络技术有限公司电话 松江区技术软件开发机构整顿 李一俊在中国的科技互联网行业 网络安全与数通 计算机网络技术专业分析报告 抖快多网络技术服务有限公司 衢州网络安全准入控制系统售价 我国网络安全宣传周是 网络安全运行包括什么意思 大酒店无线网一般用什么服务器 高淇软件开发常用词汇密码
0