软件工程软件工程软件工程 (3)
22/9/2922/9/29 1 1 第 3 章 需求分析 3.1 需求分析的基本概念 3.2 分析建模 3.3 验证软件需求 22/9/2922/9/29 2 2 软件需求分析是软件生命期中重要的一步,也是决定性的一步。软件需求分析是软件生命期中重要的一步,也是决定性的一步。 2 软 件 生 命 周 期 软 件 生 命 周 期 软 件 定 义 软 件 定 义 开 发 时 期 开 发 时 期 维 护 时 期 维 护 时 期 问题定义问题定义 可行性研究可行性研究 需求分析需求分析 总体设计总体设计 详细设计详细设计 编码和单元测试编码和单元测试 综合测试综合测试 系统设计系统设计 系统实现系统实现 22/9/2922/9/29 3 3 3.1 软件需求分析的基本概念 对系统应该提供的服务和所受到的约束进行理解、分 析、建立文档、检验的过程————需求工程需求工程 1.1. 什么是软件需求工程?什么是软件需求工程? 2.2. 软件需求分析的任务是什么?软件需求分析的任务是什么? 3.3. 需求工程过程需求工程过程 4.4. 软件需求分析方法软件需求分析方法 22/9/2922/9/29 4 4 需求分析的任务就是借助于当前系统的逻需求分析的任务就是借助于当前系统的逻 辑模型导出目标系统的逻辑模型,解决目辑模型导出目标系统的逻辑模型,解决目 标系统的标系统的 ““做什么做什么” 的问题。” 的问题。 22/9/2922/9/29 5 5 需求分析阶段的任务: 需求分析阶段的任务: 需求分析阶段的任务: 需求分析阶段的任务: 在可行性分析的基础上,进一步了解确定用户需求。准确地回答 在可行性分析的基础上,进一步了解确定用户需求。准确地回答 在可行性分析的基础上,进一步了解确定用户需求。准确地回答 在可行性分析的基础上,进一步了解确定用户需求。准确地回答 ““““系统必须做什么?系统必须做什么?系统必须做什么?系统必须做什么?”””” 的问题。获得需求规格说明书。 的问题。获得需求规格说明书。 的问题。获得需求规格说明书。 的问题。获得需求规格说明书。 BoehmBoehm 对软件需求的定义:对软件需求的定义:对软件需求的定义:对软件需求的定义: 研究一种无二义性的表达工具,它能为用户和软件人员双方都接受 研究一种无二义性的表达工具,它能为用户和软件人员双方都接受 研究一种无二义性的表达工具,它能为用户和软件人员双方都接受 研究一种无二义性的表达工具,它能为用户和软件人员双方都接受 并能够把“需求”严格地、形式地表达出来。并能够把“需求”严格地、形式地表达出来。并能够把“需求”严格地、形式地表达出来。并能够把“需求”严格地、形式地表达出来。 由于需求分析方法不同,描述形式不同。其实现步骤如下图所示: 由于需求分析方法不同,描述形式不同。其实现步骤如下图所示: 当前系统当前系统 模型化 目标系统目标系统 物理模型物理模型 具体化 物理模型物理模型 抽象化 逻辑模型逻辑模型 实例化 逻辑模型逻辑模型 做什么 导 出 理 解 需 求 表 达 需 求 3.1.1 软件需求分析的任务 22/9/2922/9/29 6 6 软 件需 求 用 户需 求系 统需 求 功能 需求 非功能 需求 领域 需求 3.1.1 软件需求分析的任务 22/9/2922/9/29 7 7 问题识别问题识别 分析与综合分析与综合 编写文档编写文档 分析评审分析评审 3.1.2 需求分析过程 可行性研究可行性研究 需求导出需求导出 和分析和分析 需求描述需求描述 需求有效性需求有效性 验证验证 可行性报告可行性报告 系统模型系统模型 用户需求和用户需求和 系统需求系统需求 需求文挡需求文挡 22/9/2922/9/29 8 8 近几年来已提出许多软件需求分析与说明的方法,每一种分析近几年来已提出许多软件需求分析与说明的方法,每一种分析 方法都有独特的观点和表示方法,但都适用下面的基本原则。方法都有独特的观点和表示方法,但都适用下面的基本原则。 3.1.3 需求分析的原则 1 1 、能够表达和理解问题的信息域和功能域(功能模型)、能够表达和理解问题的信息域和功能域(功能模型) 对于计算机程序处理的数据,其信息域包括信息流(如下图, 对于计算机程序处理的数据,其信息域包括信息流(如下图, 即数据通过一个系统时的变化方式即数据通过一个系统时的变化方式 ) ) 、信息内容和信息结构,而功、信息内容和信息结构,而功 能域反映上述三方面的控制信息。能域反映上述三方面的控制信息。 数据存储数据存储 转换转换 1 1 转换转换 2 2 附加 数据 输入数据 中间数据 结果数据 22/9/2922/9/29 9 9 3.1.3 需求分析的原则 2 2 、必须理解并描述问题的信息域,根据这条准则应该、必须理解并描述问题的信息域,根据这条准则应该 建立数据模型。建立数据模型。 3 3 、必须描述作为外部事件结果的软件行为,这条准则、必须描述作为外部事件结果的软件行为,这条准则 要求建立行为模型。要求建立行为模型。 4 4 、必须对描述信息、功能和行为的模型进行分解和不断、必须对描述信息、功能和行为的模型进行分解和不断 细化,建立问题的层次结构。细化,建立问题的层次结构。 22/9/2922/9/291010 不同的开发方法,需求分析的方法也有所不同,常见的分析方法有:不同的开发方法,需求分析的方法也有所不同,常见的分析方法有:不同的开发方法,需求分析的方法也有所不同,常见的分析方法有:不同的开发方法,需求分析的方法也有所不同,常见的分析方法有: 3.1.4 需求分析方法 功能分析方法功能分析方法 将系统看作若干功能模块的集合,每个功能又可以分解为若干子将系统看作若干功能模块的集合,每个功能又可以分解为若干子 功能功能 , , 子功能还可继续分解子功能还可继续分解 , , 分解的结果已经是系统的雏形。分解的结果已经是系统的雏形。 面向对象的分析方法面向对象的分析方法 面向对象的分析方法(面向对象的分析方法( OOA )的关键是识别问题域内的对象,分析)的关键是识别问题域内的对象,分析 它们之间的关系,并建立起三类模型。它们之间的关系,并建立起三类模型。 信息建模法信息建模法 是从数据的角度对现实世界建立模型的是从数据的角度对现实世界建立模型的 , , 基本工具是基本工具是 ERER 图。图。 结构化分析方法结构化分析方法 是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映 射方法,由数据流图(射方法,由数据流图( DFD 图)表示。图)表示。 22/9/2922/9/291111 结构化分析 方法 面向对象分 析方法 面向数据的方法,以数据流为中心 。其核 心概念包括:进程、数据流、数据存储、 外部实体、数据组和数据元素。其具有代 表性的需求分析工具有:数据流图、数据 字典、 E-R 图、状态变迁图 (STD) 等。 面向对象分析以对象及其服务作为建模标准 ,比较自然,对象也具有相对的稳定性。主 要模拟的元素有:对象、类、属性、关系、 方法、消息传递、用例等。其主要原理