数据结构来自其他设计:一条独立的设计来源

前三条线是功能分析链:需求 → 业务流程 → 功能点 → 功能流程 + 算法。数据结构不在这条链上——它不是从功能流程里分析出来的,而是来自另一条独立的设计链:领域对象分析 → 领域模型 → 数据结构。这一条线说明:数据结构为什么来自其他设计,以及那条独立设计链是什么。


一、功能分析链产生不了数据结构

功能分析链的产物是「做什么、怎么执行」:

1
2
需求 → 业务流程 → 功能点 → 功能流程 → 算法
做什么 怎么完成 提供什么 怎么执行 怎么计算

这条链上每一步回答的都是行为(做什么、怎么做),不是数据(有什么、怎么组织)。从头到尾走完这条链,得到的是一组功能和流程,而不是一份数据结构设计。

例如「结束进程」功能点,功能流程能推出「调用结束进程的接口」,但推不出「进程对象有哪些字段、进程列表用什么结构存」——后者来自对问题世界里事物本身的分析。


二、数据结构的真正来源:领域对象分析 → 领域模型

数据结构来自对「问题世界里有什么」的分析:

1
2
3
4
5
6
7
现实问题

领域对象分析(问题世界里有哪些对象)

领域模型(对象、属性、关系、规则)

数据结构(在程序里怎么存储和组织)

以进程管理器为例:

1
2
3
4
5
6
7
8
9
领域对象分析:从业务名词/数据流里挖对象
→ 进程、PID、内存区域、权限、句柄

领域模型:对象的关系和规则
→ 进程拥有多个内存区域;进程有 PID、状态、优先级

数据结构:在程序里怎么存
→ struct Process { pid, name, state, priority };
→ 进程列表用什么存(数组/哈希表)、按 PID 怎么查

功能分析链回答「程序做什么」,领域对象分析链回答「程序里有什么」——数据结构是后者的产物。


三、两条链是平行的,在功能函数处汇合

功能分析链和数据结构链各自独立,最后在功能函数/模块处汇合:

1
2
3
4
5
6
功能分析链:需求 → 业务流程 → 功能点 → 功能流程 → 算法

功能函数
(数据 + 算法 + 接口)

数据结构链:问题 → 领域对象分析 → 领域模型 → 数据结构

功能函数 = 数据结构 + 算法 + 接口(单一职责线的组合层模型)——它的数据部分来自数据结构链,算法部分来自功能分析链:

1
2
3
4
功能函数:
数据 ← 领域对象分析 → 领域模型 → 数据结构(独立链)
算法 ← 功能点 → 功能流程 → 算法设计(功能分析链)
接口 ← 库提供的原子接口 / 封装的对外接口(接口线)

所以「数据结构来自其他设计」不是说数据结构不重要,而是说它的来源不在功能分析链上——强行从功能流程推数据结构,会得到一堆「够用但不像」的临时结构。


四、数据结构链是已有的独立线

数据结构链在知识库里已经成线,不需要重复:

1
2
3
4
5
6
7
8
9
10
11
12
领域对象分析(一般软件)
从业务名词 / 用户操作目标 / 数据流挖出对象,对象来自业务流程

领域对象分析(游戏/建模)
从世界规则 / 实体挖出对象(玩家/敌人/道具/关卡)

领域模型
业务世界在程序里的压缩描述:对象 → 属性 → 关系 → 规则 + 状态

数据结构
从现实问题分析抽象而来:领域数据(Domain)/ 通用结构(Core)/
平台数据(Infrastructure)三类

本线只是把「数据结构来自其他设计」这个来源关系点明——让功能分析链的读者知道:算完功能流程,数据结构要去领域对象分析那条线找,而不是在这条链里硬造。


五、和其他线的关系

1
2
3
4
5
6
7
8
9
10
11
12
数据结构来自其他设计 ←→ 领域对象分析
数据结构链的起点:从业务名词/数据流挖对象

数据结构来自其他设计 ←→ 领域模型
对象 → 属性 → 关系 → 规则 = 数据结构的模型侧

数据结构来自其他设计 ←→ 数据结构(从现实问题到数据结构)
领域数据/通用结构/平台数据的分类 = 数据结构的具体设计

数据结构来自其他设计 ←→ 业务分析 01~03(功能分析链)
功能分析链产生算法和流程,数据结构链产生数据,
两者在功能函数处汇合

收束

1
2
3
4
5
6
7
8
9
10
功能分析链:需求 → 业务流程 → 功能点 → 功能流程 → 算法
(回答:做什么、怎么执行)→ 产生流程和算法

数据结构链:问题 → 领域对象分析 → 领域模型 → 数据结构
(回答:有什么、怎么组织)→ 产生数据

两条链平行,在功能函数处汇合:
功能函数 = 数据结构(独立链)+ 算法(功能链)+ 接口

所以:数据结构来自其他设计——不在功能分析链上

四条分析线完整了:① 需求 → 业务流程 ② 业务流程 → 功能点 ③ 功能点 → 功能流程 + 算法 ④ 数据结构来自其他设计。前三条是功能分析链,第四条是独立的数据来源链。