学习笔记/南京大学生成式软件工程
AI 工程 / CHAPTER 4

需求和架构(一)

需求工程、软件架构与 Event Sourcing、CQRS、DDD。

#生成式软件工程#软件架构

整理自个人笔记仓库 · 查看原始笔记 ↗

概述

我们究竟要做什么?应该怎样组织这个系统,才能承受下一次需求变化?

需求、产品设计、架构

  • 需求、产品设计、架构成为撬动软件生产力的杠杆

需求工程

  • 需求爆炸
  • 客户说不清楚明确的需求
  • 说清楚了,也未必能达成一致
  • 软件增长,维护成本不断增加

软件架构

“跳出问题看问题”

  • 驾驭复杂性,应对变化
    • 简化问题、安放复杂性、减少依赖
    • 应对需求的变化、降低维护成本
    • 甚至再小的代码都有架构
  • 好的架构
    • 复杂性有归处、变化有边界
  • 中间表示 IR(Intermediate Representation)
    • 类似软件工程中的中间层
  • 事件溯源 Event Sourcing
    • 状态变化保存在事件序列里,并让状态能够由这些记录重建。
  • 命令与查询职责分离 CQRS(Command Query Responsibility Segregation)
    • 命令表达一个业务意图,查询则服务于不同使用者
    • 写模型集中维护业务约束,读模型可以为查询准备专门的数据结构,适当冗余或预计算。
    • 并发处理
      • 读模型通过异步处理时间更新,可能出现短暂的间隙。
  • 领域驱动设计 DDD(Domain-Driven Design)
    • 在一个明确边界内,同一个词应当具有一致的含义,这就是统一语言。
    • 边界之间传递信息时,也要明确含义。