📝 导读: 本章处于软件开发生命周期的“开发阶段”初期。 核心任务:解决“做什么”的问题(What to do),而不是“怎么做”(How to do)。 核心考点:结构化分析的三大模型(数据模型ERD、功能模型DFD、行为模型STD)及其绘制规则。
1. 软件开发阶段定位 (Context)
1.1 我们在哪里?
在软件开发的“3阶段7环节”中,需求分析处于开发阶段的第一步,连接了“策划阶段”与“系统设计”。
- 问题定义 & 可行性分析:解决“我们要解决什么问题?值得做吗?”(宏观层面)。
- 需求分析 (本章重点):解决**“系统具体提供什么功能/流程?”**(详细层面)。
- 系统设计:解决“如何实现系统?”(技术层面,如架构、数据库设计)。
1.2 为什么需求分析至关重要?
- 成本放大效应:需求阶段的错误如果在运行阶段才发现,修正成本是需求阶段的几十倍甚至上百倍。
- 沟通桥梁:它是连接非技术人员(用户/客户)与技术人员(开发者)的桥梁。
2. 核心分析方法:结构化分析 (SA)
结构化分析 (Structured Analysis, SA) 是一种自顶向下、逐步求精的分析方法。它主张将一个复杂的系统分解为若干个子系统,直到每个子系统都能被清晰理解。
SA 的三大视角(考试重点)
SA 方法通过三个维度来描述一个系统,构成了结构化分析的“三棱镜”:
- 数据模型:系统涉及哪些数据对象? $\rightarrow$ ER图
- 功能模型:数据如何在系统中流动和处理? $\rightarrow$ DFD (核心)
- 行为模型:系统状态如何变化? $\rightarrow$ 状态图
3. 实体关系图 (ERD) —— 数据模型
核心概念:用于描述系统中的静态数据结构。不涉及数据如何处理,只关心数据本身及其关系。
3.1 三大要素
- 实体 (Entity):
- 解释:现实世界中可以区分的对象(如:学生、课程)。
- 图示:矩形框。
- 属性 (Attribute):
- 解释:描述实体的特征(如:学生的学号、姓名)。
- 图示:椭圆。
- 关系 (Relationship):
- 解释:实体之间的联系(如:学生“选修”课程)。
- 图示:菱形框。
3.2 关系的基数 (Cardinality) [高频考点]
描述两个实体集之间数量上的对应关系:
- 1:1 (一对一):如“系主任”与“系”。
- 1:N (一对多):如“班级”与“学生”。
- M:N (多对多):如“学生”与“课程”。
- 助教提示:在数据库设计(后续章节)中,M:N关系通常需要转化为中间表,但在需求分析画ER图时,直接画出M:N即可。
4. 数据流图 (DFD) —— 功能模型 [核心重点]
核心概念:描绘数据在系统中如何流动、被处理以及存储的图形化技术。它是结构化分析最重要的工具。
4.1 DFD 四大基本符号
- 数据流 (Data Flow):
- 解释:数据的流向,可以是数据项或文件。
- 图示:带箭头的线。
- 加工/处理 (Process):
- 解释:对数据进行变换的逻辑(输入数据 $\rightarrow$ 变换 $\rightarrow$ 输出数据)。
- 图示:圆形或圆角矩形。
- 数据存储 (Data Store):
- 解释:数据的静态停留处(如数据库表、文件)。
- 图示:双平行线或开口矩形。
- 外部实体 (External Entity):
- 解释:系统之外的人、组织或其他系统(数据的源头或终点)。
- 图示:矩形框。
4.2 DFD 的分层结构
为了降低复杂度,DFD 采用自顶向下的画法:
- 顶层图 (Context Diagram):只有一个加工(代表整个系统),展示系统与外部环境的交互。
- 0层图 (Level-0 DFD):将顶层加工分解为几个主要功能模块。
- 1层图及以下:继续细化,直到加工足够简单(称之为“原子加工”)。
4.3 绘图核心规则
- 守恒原理:父图的输入/输出数据流必须与子图保持一致(父图子图平衡)。
- 加工必有进出:每个加工(Process)必须既有输入数据流,也有输出数据流(黑洞/奇迹主要错误)。
- 数据流向限制:
- 错误:外部实体 $\leftrightarrow$ 外部实体(系统管不着)。
- 错误:数据存储 $\leftrightarrow$ 数据存储(数据不会自己跑)。
- 错误:外部实体 $\leftrightarrow$ 数据存储(必须经过“加工”来存取)。
5. 状态转换图 (STD) —— 行为模型
核心概念:描述系统如何响应外部事件,从一个状态变为另一个状态。主要用于实时系统或控制逻辑复杂的系统(如自动售票机、电梯控制)。
5.1 主要元素
- 状态 (State):系统所处的被动状况(如:空闲、等待输入、处理中)。
- 事件 (Event):触发状态转换的外部刺激。
- 转换 (Transition):从一个状态变迁到另一个状态的路径。
6. 数据字典 (DD)
核心概念:图形通常只能描述结构,数据字典则是对图中所有元素(数据流、数据项、存储、加工)进行精确定义的文本集合。
- 作用:它是分析模型的“元数据”,确保所有人在看到“用户信息”这个词时,理解是一致的(例如:用户信息 = 姓名 + 学号 + 年龄)。
- 常用符号:
=(定义为),+(连接/与),[](或),{}(重复/迭代),()(可选)。
💡 章节总结
- 定位明确:本章不仅是画图,更是为了理清业务逻辑。需求分析的核心是将模糊的用户需求转化为清晰的逻辑模型。
- 三维视图:结构化分析通过ER图看数据(静态),通过DFD看流程(动态),通过STD看状态(行为),三者互为补充。
- DFD是王道:在考试和实际应用中,数据流图 (DFD) 通常是考察的重中之重,务必掌握其分层绘制方法和数据平衡原则。
- 产出物:本阶段的最终产出通常是《软件需求规格说明书》(SRS),它构成了后续设计和测试的基准。