📝 导读: 本章处于软件开发生命周期的“开发阶段”初期。 核心任务:解决“做什么”的问题(What to do),而不是“怎么做”(How to do)。 核心考点:结构化分析的三大模型(数据模型ERD、功能模型DFD、行为模型STD)及其绘制规则。

1. 软件开发阶段定位 (Context)

1.1 我们在哪里?

在软件开发的“3阶段7环节”中,需求分析处于开发阶段的第一步,连接了“策划阶段”与“系统设计”。

  • 问题定义 & 可行性分析:解决“我们要解决什么问题?值得做吗?”(宏观层面)。
  • 需求分析 (本章重点):解决**“系统具体提供什么功能/流程?”**(详细层面)。
  • 系统设计:解决“如何实现系统?”(技术层面,如架构、数据库设计)。

1.2 为什么需求分析至关重要?

  • 成本放大效应:需求阶段的错误如果在运行阶段才发现,修正成本是需求阶段的几十倍甚至上百倍。
  • 沟通桥梁:它是连接非技术人员(用户/客户)与技术人员(开发者)的桥梁。

2. 核心分析方法:结构化分析 (SA)

结构化分析 (Structured Analysis, SA) 是一种自顶向下、逐步求精的分析方法。它主张将一个复杂的系统分解为若干个子系统,直到每个子系统都能被清晰理解。

SA 的三大视角(考试重点)

SA 方法通过三个维度来描述一个系统,构成了结构化分析的“三棱镜”:

  1. 数据模型:系统涉及哪些数据对象? $\rightarrow$ ER图
  2. 功能模型:数据如何在系统中流动和处理? $\rightarrow$ DFD (核心)
  3. 行为模型:系统状态如何变化? $\rightarrow$ 状态图

3. 实体关系图 (ERD) —— 数据模型

核心概念:用于描述系统中的静态数据结构。不涉及数据如何处理,只关心数据本身及其关系。

3.1 三大要素

  1. 实体 (Entity)
    • 解释:现实世界中可以区分的对象(如:学生、课程)。
    • 图示:矩形框。
  2. 属性 (Attribute)
    • 解释:描述实体的特征(如:学生的学号、姓名)。
    • 图示:椭圆。
  3. 关系 (Relationship)
    • 解释:实体之间的联系(如:学生“选修”课程)。
    • 图示:菱形框。

3.2 关系的基数 (Cardinality) [高频考点]

描述两个实体集之间数量上的对应关系:

  • 1:1 (一对一):如“系主任”与“系”。
  • 1:N (一对多):如“班级”与“学生”。
  • M:N (多对多):如“学生”与“课程”。
    • 助教提示:在数据库设计(后续章节)中,M:N关系通常需要转化为中间表,但在需求分析画ER图时,直接画出M:N即可。

4. 数据流图 (DFD) —— 功能模型 [核心重点]

核心概念:描绘数据在系统中如何流动、被处理以及存储的图形化技术。它是结构化分析最重要的工具。

4.1 DFD 四大基本符号

  1. 数据流 (Data Flow)
    • 解释:数据的流向,可以是数据项或文件。
    • 图示:带箭头的线。
  2. 加工/处理 (Process)
    • 解释:对数据进行变换的逻辑(输入数据 $\rightarrow$ 变换 $\rightarrow$ 输出数据)。
    • 图示:圆形或圆角矩形。
  3. 数据存储 (Data Store)
    • 解释:数据的静态停留处(如数据库表、文件)。
    • 图示:双平行线或开口矩形。
  4. 外部实体 (External Entity)
    • 解释:系统之外的人、组织或其他系统(数据的源头或终点)。
    • 图示:矩形框。

4.2 DFD 的分层结构

为了降低复杂度,DFD 采用自顶向下的画法:

  1. 顶层图 (Context Diagram):只有一个加工(代表整个系统),展示系统与外部环境的交互。
  2. 0层图 (Level-0 DFD):将顶层加工分解为几个主要功能模块。
  3. 1层图及以下:继续细化,直到加工足够简单(称之为“原子加工”)。

4.3 绘图核心规则

  • 守恒原理:父图的输入/输出数据流必须与子图保持一致(父图子图平衡)。
  • 加工必有进出:每个加工(Process)必须既有输入数据流,也有输出数据流(黑洞/奇迹主要错误)。
  • 数据流向限制
    • 错误:外部实体 $\leftrightarrow$ 外部实体(系统管不着)。
    • 错误:数据存储 $\leftrightarrow$ 数据存储(数据不会自己跑)。
    • 错误:外部实体 $\leftrightarrow$ 数据存储(必须经过“加工”来存取)。

5. 状态转换图 (STD) —— 行为模型

核心概念:描述系统如何响应外部事件,从一个状态变为另一个状态。主要用于实时系统控制逻辑复杂的系统(如自动售票机、电梯控制)。

5.1 主要元素

  • 状态 (State):系统所处的被动状况(如:空闲、等待输入、处理中)。
  • 事件 (Event):触发状态转换的外部刺激。
  • 转换 (Transition):从一个状态变迁到另一个状态的路径。

6. 数据字典 (DD)

核心概念:图形通常只能描述结构,数据字典则是对图中所有元素(数据流、数据项、存储、加工)进行精确定义的文本集合。

  • 作用:它是分析模型的“元数据”,确保所有人在看到“用户信息”这个词时,理解是一致的(例如:用户信息 = 姓名 + 学号 + 年龄)。
  • 常用符号= (定义为), + (连接/与), [] (或), {} (重复/迭代), () (可选)。

💡 章节总结

  1. 定位明确:本章不仅是画图,更是为了理清业务逻辑。需求分析的核心是将模糊的用户需求转化为清晰的逻辑模型
  2. 三维视图:结构化分析通过ER图看数据(静态),通过DFD看流程(动态),通过STD看状态(行为),三者互为补充。
  3. DFD是王道:在考试和实际应用中,数据流图 (DFD) 通常是考察的重中之重,务必掌握其分层绘制方法和数据平衡原则。
  4. 产出物:本阶段的最终产出通常是《软件需求规格说明书》(SRS),它构成了后续设计和测试的基准。