整理一个精简的DDD领域建模基本流程,供大家在DDD领域建模实践中进行参考。

  1. 搜集用户故事(用户的原始需求)
  2. 整理用户故事,抽出用例(用例表达了用户对系统的需求,定义了系统的边界以及系统外部角色和系统的交互场景)
  3. 分析系统需求,将领域拆分为多个子域(领域是问题空间,本质上就是大问题拆分为小问题)
  4. 抽取每个子域的领域概念,得到概念模型(概念模型存在于问题空间)
  5. 将子域的概念模型抽象并转化为领域模型(领域模型存在于解决方案空间,这一步是难点,考验抽象能力,如对关系的建模,如促销系统中抽象出促销产品,权限系统中抽象出授权)
  6. 找出领域模型中的聚合,以及每个聚合的聚合根
  7. 梳理聚合之间的关系
  8. 场景走查,检查领域模型如何满足用例需求

在以上过程中,还有两点也是非常重要的:

  • 逐步积累一个统一语言(UL)的领域术语表,方便各方人员沟通;
  • 除了领域建模外,针对每个用例场景,尝试画一下系统顺序图也很有用,系统顺序图定义了系统外部角色和系统之间在某个场景下的具体交互流程;

最新文章

  1. intellij idea 注释行如何自动缩进?
  2. hdu 3544 Alice's Game 博弈论
  3. MVC 5 第三章 HTML Helper
  4. Asp.Net静态资源动态压缩之WebOptimization
  5. 用于ARM上的FFT与IFFT源代码(C语言,不依赖特定平台)(转)
  6. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
  7. VS2017编译SFML SDK配制环境详解
  8. Leetcode 4——Partition List
  9. leetcode647
  10. ABP框架系列之二十七:(Feature-Management-特征管理)
  11. Intellij IDEA搭建vue-cli项目
  12. Python基础【day01】:PyChram使用技巧总结(六)
  13. 2018.10.23 NOIP模拟 战争(并查集)
  14. 12:计算2的N次方
  15. 共享锁&排它锁 || 乐观锁&悲观索
  16. ant批量运行Jmeter脚本遇到 Content is not allowed in prolog.问题及解决方案
  17. 【Java面试题】26 多线程有几种实现方法?同步有几种实现方法? 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
  18. webpack——html-webpack-plugin
  19. grunt-init 默认模板目录更正
  20. js学习笔记知识点

热门文章

  1. 【容斥】HDU 4135 Co-prime
  2. bzoj 1818 Cqoi2010 内部白点 扫描线
  3. 洛谷 P1756 最小花费
  4. 【BZOJ2049】洞穴勘测(LCT)
  5. iscroll API
  6. Elixir与编辑器安装
  7. CODEVS_1034 家园 网络流 最大流
  8. luogu P2296 寻找道路
  9. 洛谷P1865 A % B Problem
  10. Linux索引节点(Inode:no space for device)用满导致的一次故障