软件导论第二章复习:需求分析

需求分析是软件工程中承上启下的关键阶段------ 它衔接可行性研究与系统设计,决定了 "软件应该做什么",是后续开发、测试、维护的核心依据。本文结合《软件工程 ------ 理论与实践》习题,系统梳理需求分析的核心概念、工具与实战方法。

一、需求分析:定义与核心任务

1. 需求分析的本质

需求分析是在可行性研究基础上,明确用户真实需求、界定系统功能边界的过程,核心是回答 "系统必须做什么",最终产出《需求规格说明书》(后续开发的唯一依据)。

2. 需求分析的 5 大基本任务

结合习题中的问答题,需求分析的任务可拆解为 5 个核心环节:

  • ① 抽取需求:通过问卷、面谈、用例法、情景实例法等方式,收集用户的业务痛点与需求,获取领域知识;
  • ② 建模与分析:将抽象需求转化为可视化模型(如 DFD、E-R 图),模型需独立于具体技术实现,仅描述 "业务逻辑";
  • ③ 传递需求:编写《需求规格说明书》,将需求准确传递给开发、测试、运维团队;
  • ④ 认可需求:协调用户与开发团队的需求分歧,通过协商、仲裁等方式达成共识;
  • ⑤ 进化需求:管理需求的动态变更(如用户新增功能),常用 "软件配置管理、变更审查小组" 等方式控制变更风险。

二、需求分析的主流方法

习题中覆盖了需求分析的核心方法,其特点与适用场景如下:

方法类型 核心特点 适用场景
结构化分析(SA) 面向数据流,通过 "DFD + 数据字典 + 加工说明" 描述系统流程 数据处理密集型系统(如 MIS)
面向对象分析(OOA) 面向对象,建立 "对象模型 + 动态模型 + 功能模型" 三类模型 交互复杂、需求易变的系统(如 APP)
HIPO 法 兼具分析与设计属性:既描述系统层次结构,也支持后续模块划分 中小型系统的分析 - 设计衔接
信息建模法(E-R) 聚焦数据关系,描述 "实体 - 联系 - 属性" 的关联 数据结构复杂的业务系统

三、结构化分析(SA):面向数据流的核心工具

结构化分析(SA)是传统需求分析的经典方法,核心工具包括数据流图(DFD)、数据字典、加工说明,三者共同构成 "面向数据流的分析体系"。

1. 数据流图(DFD):可视化业务流程

DFD 是 SA 的核心载体,通过 4 类元素描述数据在系统中的 "输入 - 处理 - 存储 - 输出" 全流程

  • 外部实体:系统外的交互对象(如 "储户""客户");
  • 加工:对数据的处理操作(如 "检验取款单""登录账户");
  • 数据流:数据的传递路径(如 "取款单→检验加工");
  • 数据存储:数据的持久化载体(如 "账户数据库")。
(1)DFD 的绘制规则

DFD 遵循自顶向下、逐层分解的原则,核心规则包括:

  • 分层分解:顶层 DFD 描述系统与外部实体的交互;中间层将顶层 "总加工" 拆分为子加工;底层为不可再分的 "基本加工";
  • 子父图平衡:子图的输入 / 输出数据流,必须与父图中对应加工的输入 / 输出一致(允许数据流细化,如 "订单 = 客户 + 账号 + 数量");
  • 数据流封闭:每个加工的输入必须足以支撑其输出(即 "加工有足够数据完成处理");
  • 数据守恒:数据流必须有明确来源 / 去向,不能凭空产生或消失。
(2)DFD 实战:银行取款流程

习题中给出了银行取款的 DFD 示例,核心流程为:

  1. 储户(外部实体)提交存折 + 取款单 → 加工 1(检验)验证信息;
  2. 检验通过后,加工 2(登录)从 "账户数据库"(数据存储)读取信息,修改数据并更新 "账卡";
  3. 加工 3(付款)根据 "付款通知" 向储户支付现金。

2. 数据字典:系统数据的 "百科全书"

数据字典是 DFD 的补充,用于定义系统中所有数据元素的详细信息,避免歧义。其核心条目包括:

  • 数据流条目:描述数据流的组成(如 "订单 = 客户 ID + 账号 + 交易金额");
  • 数据处理条目:描述加工的逻辑(如 "检验:验证取款单与存折的账户信息一致性");
  • 数据文件条目:描述数据存储的结构(如 "账户数据库 = 账号 + 姓名 + 余额 + 开户日期")。

3. 加工说明:描述加工的逻辑细节

加工说明用于明确 DFD 中 "加工" 的具体处理逻辑,常用描述方法包括:

  • 结构化语言:介于自然语言与形式语言之间,用 "顺序、选择、循环" 描述逻辑;
  • 判定表:适合多条件组合的逻辑(如 "当取款金额≤余额且密码正确时,允许取款");
  • 判定树:图形化的判定表,更直观易读(适合非技术人员理解)。

四、E-R 模型:信息建模的经典工具

E-R 模型(实体 - 联系模型)是描述数据关系的核心工具,其核心组成元素为:

  • 实体:现实中的业务对象(如 "客户""订单");
  • 联系:实体之间的关联关系(如 "客户→下→订单");
  • 属性:实体的特征(如 "客户" 的属性包括 "姓名、手机号、身份证号")。

E-R 模型是数据库设计的基础,后续可直接转化为关系型数据库的表结构(实体→表,属性→字段,联系→外键)。

五、原型法:应对实验型软件的需求利器

结合习题中 M 公司的案例:当开发实验型、探索型软件时,快速原型法比瀑布模型更适配 ------

  • 瀑布模型的局限:线性流程、需求前置,无法应对实验型软件的 "需求不确定性";
  • 快速原型法的优势:快速构建可运行的原型,验证需求后迭代优化,能高效适配探索型项目的模糊需求。

(习题中要求给副总裁的报告可聚焦 "瀑布模型不适配实验型软件 + 原型法的快速验证优势",控制在 1 页内)

六、常见考点辨析

  1. 需求分析解决 "做什么",设计阶段解决 "怎么做";
  2. SA 方法的核心描述手段是:DFD 图、数据字典、加工说明;
  3. 面向对象分析的三类模型是:对象模型、动态模型、功能模型;
  4. E-R 模型的组成是:实体、联系、属性;
  5. DFD 子父图平衡:子图的输入 / 输出与父图对应加工一致(允许数据流细化)。
相关推荐
持梦远方3 天前
软件导论第一章复习:从基础概念到开发模型
软件导论