04-数据结构来自其他设计
数据结构来自其他设计:一条独立的设计来源
前三条线是功能分析链:需求 → 业务流程 → 功能点 → 功能流程 + 算法。数据结构不在这条链上——它不是从功能流程里分析出来的,而是来自另一条独立的设计链:领域对象分析 → 领域模型 → 数据结构。这一条线说明:数据结构为什么来自其他设计,以及那条独立设计链是什么。
一、功能分析链产生不了数据结构
功能分析链的产物是「做什么、怎么执行」:
1 | 需求 → 业务流程 → 功能点 → 功能流程 → 算法 |
这条链上每一步回答的都是行为(做什么、怎么做),不是数据(有什么、怎么组织)。从头到尾走完这条链,得到的是一组功能和流程,而不是一份数据结构设计。
例如「结束进程」功能点,功能流程能推出「调用结束进程的接口」,但推不出「进程对象有哪些字段、进程列表用什么结构存」——后者来自对问题世界里事物本身的分析。
二、数据结构的真正来源:领域对象分析 → 领域模型
数据结构来自对「问题世界里有什么」的分析:
1 | 现实问题 |
以进程管理器为例:
1 | 领域对象分析:从业务名词/数据流里挖对象 |
功能分析链回答「程序做什么」,领域对象分析链回答「程序里有什么」——数据结构是后者的产物。
三、两条链是平行的,在功能函数处汇合
功能分析链和数据结构链各自独立,最后在功能函数/模块处汇合:
1 | 功能分析链:需求 → 业务流程 → 功能点 → 功能流程 → 算法 |
功能函数 = 数据结构 + 算法 + 接口(单一职责线的组合层模型)——它的数据部分来自数据结构链,算法部分来自功能分析链:
1 | 功能函数: |
所以「数据结构来自其他设计」不是说数据结构不重要,而是说它的来源不在功能分析链上——强行从功能流程推数据结构,会得到一堆「够用但不像」的临时结构。
四、数据结构链是已有的独立线
数据结构链在知识库里已经成线,不需要重复:
1 | 领域对象分析(一般软件) |
本线只是把「数据结构来自其他设计」这个来源关系点明——让功能分析链的读者知道:算完功能流程,数据结构要去领域对象分析那条线找,而不是在这条链里硬造。
五、和其他线的关系
1 | 数据结构来自其他设计 ←→ 领域对象分析 |
收束
1 | 功能分析链:需求 → 业务流程 → 功能点 → 功能流程 → 算法 |
四条分析线完整了:① 需求 → 业务流程 ② 业务流程 → 功能点 ③ 功能点 → 功能流程 + 算法 ④ 数据结构来自其他设计。前三条是功能分析链,第四条是独立的数据来源链。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
