2.1 需求分析的任务与分类
需求分析 = 把"用户嘴里的想法"翻译成"开发能执行的说明书"。
| 需求类型 | 含义 | 例子 |
|---|---|---|
| 功能需求 | 系统"必须做什么" | 用户能注册、能下单、能导出报表 |
| 非功能需求 | 对"做到什么程度"的约束 | 响应时间 < 2 秒、支持 1000 人并发、可用性 99.9% |
| 设计约束 | 对实现方式的限制 | 必须用 Java、必须部署在内网、必须兼容 Chrome |
需求分析阶段的产出
- 需求规格说明书(SRS)——最重要的文档,是后续设计、测试验收的依据。
- 数据流图(DFD)与数据字典——结构化分析的"图 + 词典"。
- (面向对象方法里对应的是用例模型等,初级了解即可。)
课堂练习(2 题)
- "系统必须在 3 秒内返回查询结果"属于哪类需求? 答:非功能需求(性能需求)。
- 需求分析阶段最重要的交付物是什么? 答:需求规格说明书(SRS)。
2.2 数据流图(DFD):四要素画出来 ★
软考画图题的常客:给一段业务描述,识别四要素、补全数据流。
DFD 的四种元素(必背,含画法):
| 元素 | 含义 | 惯例画法 |
|---|---|---|
| 外部实体 | 数据的源头或终点(人、外部系统) | 矩形(或平行四边形) |
| 加工(处理) | 对数据做变换的动作 | 圆角矩形 / 圆 |
| 数据存储 | 数据停留的地方(表、文件) | 开口矩形(两条平行线) |
| 数据流 | 数据流动的管道(带箭头的线) | 箭头 + 名字 |
示例:学生选课系统的顶层 DFD
学生 ──选课请求──→ ( 选课系统 ) ──选课结果──→ 学生
↕ 读写
[ 课程表 / 选课表 ]
要点:
① 外部实体和加工之间才有数据流;外部实体不能"绕过加工"直接连数据存储;
② 数据流必须有名字(除了流向数据存储/从存储流出的可省略?——考试以规范为准,能命名就命名);
③ 每个加工至少要有一条输入流和一条输出流("黑洞"和"奇迹"都不允许)。
分层 DFD 与平衡原则
- 从顶层(一个加工 + 所有外部实体)逐层细化:0 层、1 层……
- 平衡原则:子图的输入输出数据流必须与父图中对应加工的输入输出一一对应——这是补画数据流题的核心判断依据。
易错
- 把"数据存储"当成"外部实体"(存储系统内部用,外部实体是系统边界外的角色)。
- 加工之间直接互连是允许的(一个加工的输出直接喂给下一个加工),但没有数据流经过的"空连接"不算。
课堂练习(3 题)
- DFD 的四种基本元素是什么? 答:外部实体、加工(处理)、数据存储、数据流。
- "图书馆管理系统"中,"读者"和"借书证信息表"分别属于哪种元素? 答:读者是外部实体;借书证信息表是数据存储。
- 平衡原则指什么? 答:子图与父图在同一加工处,输入、输出数据流必须一一对应、保持一致。
2.3 数据字典:DFD 的说明书
图 + 词典配套,才是一套完整的分析结果。
- 数据字典(DD)——对 DFD 中所有元素(数据流、数据项、数据存储、加工)的精确定义。
- 内容举例:
- 数据项:考生号 = 14 位数字字符;
- 数据流:成绩通知单 = 考生姓名 + 准考证号 + 各科成绩;
- 加工的说明:对该加工的输入输出、处理逻辑的文字描述(不用流程图)。
- 作用:保证分析、设计、编码各阶段对同一数据的理解完全一致。
课堂练习(2 题)
- 数据字典的作用是什么? 答:精确定义 DFD 中的每个数据项/数据流/存储/加工,是各方对数据理解的唯一依据。
- 数据字典和 DFD 是什么关系? 答:配套使用——DFD 描述"数据怎么流",数据字典描述"数据长什么样"。