当前位置: 首页 > ops >正文

DDD领域驱动开发

1. 现象:

       软件设计质量最高的时候是第一次设计的那个版本。当第一个版本设计上线以后就开始各种需求变更,这常常又会打乱原有的设计。

2. 原因:

        软件的本质就是对真实世界的模拟。软件中业务逻辑正确与否的唯一标准就是是否与真实世界 一致。

      软件要做成什么样,既不由我们来决定,也不由用户来决定,而是由客观世界决定。

3.项目代码发展过程(0到1):

     最初只能认识真实世界中那些简单、清晰、易于理解的业务逻辑,把它们做到我们的软件里,还有很多不简单、不明了、不易于理解的业务逻辑没做到软件里。(项目刚上线时,先写最主要和常见的场景逻辑)

    后续变化:软件的业务逻辑会越来越接近真实世界,使得我们的软件越来越专业,同时业务逻辑就会变得越来越复杂,软件规模也越来越庞大。(项目上线后,可能增加多渠道,多场景的使用,要兼容复杂/少见/异常等场景)

小结:软件退化的根源不是软件变更,软件变更只是一个诱因。

4.如何解决:

要保持软件设计质量不退化,必须在每次需求变更的时候,对原有的程序结构适当地进行调整。

5.关键:

每次需求变更的设计,只有保证每次需求变更时做出正确的设计(由于时间人员资源等限制,通常很难完美实现),才能保证软件以一种良性循环的方式不断维护下去

6.常有的事:经历了多次变更,这些事情就想不清楚了,设计开始迷失方向

7.设计的原则

理想的逻辑:

总结:
软件发展的规律就是逐步由简单软件向复杂软件转变
DDD给了我们的思路: 
在每次变更的时候,先回到领域模型,基于业务进行领域模型的变更

http://www.xdnf.cn/news/5514.html

相关文章:

  • 基于 51 单片机的 PWM 电机调速系统实现
  • https的发展历程
  • 区块链钱包开发全解析:从架构设计到安全生态构建
  • 【c++】异常详解
  • 计网学习笔记———通信知识(计算机网络通信单独讲)
  • Python 处理图像并生成 JSONL 元数据文件 - 灵活text版本
  • 亚川科技YCS-7000 建筑设备一体化监控系统选型说明与配置原理
  • NVIDIA Isaac™ AI 机器人开发平台笔记
  • 从经典力扣题发掘DFS与记忆化搜索的本质 -从矩阵最长递增路径入手 一步步探究dfs思维优化与编程深度思考
  • 木马查杀篇—Opcode提取
  • Ubuntu中配置【Rust 镜像源】
  • Arduino快速入门
  • Chrome更新到136以后selenium等自动化浏览器失效
  • CSS-PureCss样式开发
  • 浅谈大语言模型原理
  • DHCP自动分配IP
  • 01-centos离线升级至almalinux
  • Meilisearch 安装
  • 【番外】02:Windows 编译带 DNN_CUDA 功能的 OpenCV 动态链接库
  • Node.js中那些常用的进程通信方式
  • bazel迁移cmake要点及具体迁移工程示例(apollo radar)
  • SDK does not contain ‘libarclite‘ at the path
  • 【前端】骨架屏
  • 深度解析LLM参数:Top-K、Top-p和温度如何影响输出随机性?
  • 循环语句:for、range -《Go语言实战指南》
  • 矩阵键盘模块
  • Spark(25)在shell中运行Spark程序
  • mapbox进阶,使用mapbox-plugins插件加载饼状图
  • 《AI大模型应知应会100篇》第60篇:Pinecone 与 Milvus,向量数据库在大模型应用中的作用
  • iOS safari和android chrome开启网页调试与检查器的方法