第3章 需求分析(续) 学习目标 什么是需求建模? 需求分析建模方法 掌握实体—关系图(E—R图); 掌握状态转换图; 掌握层次方框图、IPO图或改进的IPO表;
3.3 需求建模
需求分析与设计 需求分析与设计的界限:存在、模糊、迭代 需求分析:系统需要做什么 设计:系统如何做 (对问题的调查与描述) (逻辑解决方案) 当前的需求使我们考虑选择某种设计选项 选择设计选项可能引发新的需求
需求的类型 需求类型 软件需求 设计约束 功能性需求 非功能性需求 父需求 例:父需求:系统安全性使用行业标准 子需求1:数据安全性采用事务日志 镜象方法。 子需求2:数据保密性根据身份等级 分配相应数据库存取权限 子需求3:…… 子需求1 子需求2 子需求3
计算机科学与技术学科的方法论 学科的3个形态 抽象(模型化) 重复出现的概念 理论 抽象(模型化) 设计 重复出现的概念 绑定(binding) 概念与形式模型 一致性和完备性 抽象层次 重用 …… 典型的学科方法: 数学方法 系统科学方法 计算中抽象的本质和使用。在处理复杂事务、构造系统、隐藏细节和获取重复模式方面使用抽象,通过具有不同层次的细节和指标的抽象,能够表达一个实体和系统
抽象(模型化) 源于实验科学,主要要素为数据采集方法和假设的形式说明,模型的构造与预测实验分析结果分析. 在为可能的算法数据结构和系统结构等构造模型时使用此过程. 抽象的结果是概念符号模型
模型(model) 是对系统的模型是现实世界某些重要方面的表示。 模型一种抽象,从某个视点、在某种抽象 层次上详细说明被建模的系统。 有时我们使用术语“抽象”来表示模型,因为我们从现实世界中抽象出对我们特别有用的东西。
模型(model) 模型一般分为具体模型和抽象模型两大类。具体模型有直观模型、物理模型等,抽象模型有思维模型、符号模型、数学模型等。
软件开发的四个要素: 人员、项目、产品和过程 过程 模板 自动化 人员 项目 工具 参与者 结果 产品
系统包含一组模型,每个参与软件系统 开发的人员都需要有一个独特的系统视角。 系统 构架工程师 项目经理 设计人员 测试人员 用户
模型的类型 数学模型 描述模型 图形模型
需求分析的过程 学 生 (1) 通过对现实环境的调查, 获得当前系统的物理模型 学生购买教材的实际处理流程—当前系统物理模型 购 书 申 请 (1) 通过对现实环境的调查, 获得当前系统的物理模型 学 生 购 书 申 请 购书 单 发 票 领 信北107 张 教务科 信北206 王 会计室 李 出纳员 (二实南) 赵 教材科 学生购买教材的实际处理流程—当前系统物理模型
需求分析的过程 (2) 去掉具体模型中的非本质因素, 抽取现实系统的实质,抽象出当前系统 的逻辑模型。 学 生 学生购买教材的逻辑模型 购 书 申 请 购书 单 发 票 领 审查 有效性 开发票 开领 书单 发书 学生购买教材的逻辑模型
需求分析的过程 (3) 分析当前系统与目标系统的差别, 建立目标系统的逻辑模型 计算机教材管理系统的逻辑模型 领书单 发票 开领 学 学 无效书单 购书单 领书单 发票 开领 书单 学 生 审查并 开发票 学 生 计算机教材管理系统的逻辑模型
需求分析过程示意 (4) 对目标系统的逻辑模型进行改进与优化 (5) 需求分析的验证
需求分析的步骤 怎 么 做 做 什 么 当前 系统 模型化 抽象化 物理 模型 逻辑 模型 需 求 定 义 实例化 具体化 物理 模型 逻辑 目标 系统 目标 系统
逻辑模型和物理模型 模型是对对象系统的形式化的特征 构造模型的过程是一个抽象、分 析的过程。 对象 系统 模型 系统 模型构造的过程 抽象,概括性或近似地表示; 构造模型的过程是一个抽象、分 析的过程。 抽象(映射) 对象 系统 模型 系统 模型应用 模型构造的过程
(本质模型、概念模型) (实施模型、技术模型) 逻辑模型 物理模型 (本质模型、概念模型) (实施模型、技术模型) 描述重要的业务功能,无论系统是如何实施的。 现 行 系 统 描述现实系统是如何在物理上实现的。 描述新系统的主要业务功能和用户新的需求,无论系统应如何实施。 描述新系统是如何实施的(包括技术)。 目 标 系 统
分析阶段中常用的模型(逻辑模型) 数据流图(DFD) 实体―联系图( ERD ) 类图 实例图 时序图 状态图 协作图 事件列表 数据流定义 数据元素定义 ……
需求建模实例:酒店管理系统的局部DFD 预订 财务 系统 时钟 预订请求 客人信息 预订确认信息 预订 确认 客人数据 结算 信息 夜审 已预订的 入住请求 结算 信息 已预订 的入住 财务 系统 夜审 客房数据 未预订的 入住请求 未预订 的入住 时钟
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为,此外还指明了作为特定事件的结果系统将做哪些动作。
状态转换图 状态 在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。 事件 事件就是引起系统做动作或(和)转换状态的控制信息。
状态转换图 实心圆表示初态,一对同心圆(内圆为实心圆)表示终态,圆角矩形表示中间状态,两条水平横线把它分成上、中、下3个部分。 上面部分为状态的名称,这部分必须有;中间部分为状态变量的名字和值,这部分可选;下面部分是活动表,这部分可选。 活动表的语法格式如下: 事件名(参数表)/动作表达式
状态转换图 状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。 事件表达式的语法如下: 事件说明[守卫条件]/动作表达式 其中, 事件说明的语法为:事件名(参数表)。
图3.3 状态图中使用的主要符号
例子 为了具体说明怎样用状态图建立系统的行为模型,下面举一个例子。图3.4(见书57页)是人们非常熟悉的电话系统的状态图。 图中表明,没有人打电话时电话处于闲置状态;有人拿起听筒则进入拨号音状态,到达这个状态后,电话的行为是响起拨号音并计时;这时如果拿起听筒的人改变主意不想打了,他把听筒放下(挂断),电话重又回到闲置状态;如果拿起听筒很长时间不拨号(超时),则进入超时状态;……。
例:电话的 状态图 闲 置 拨号音 do:响拨号音 超 时 do:响蜂鸣音 存储的信息 do:播放信息 拨 号 忙 音 do:响忙音 接通中 挂断电话 挂断电话 拿起听筒 例:电话的 状态图 拨号音 do:响拨号音 超 时 do:响蜂鸣音 超 时 超时 数字 数字 无效号码 存储的信息 do:播放信息 拨 号 有效号码 信息播完 忙 音 do:响忙音 接通中 do:试接通 占 线 已接通 振 铃 do:振 铃 受话人回话 通 话 受话人挂断电话 断 线
需求建模实例:描述客房状态的状态图 创建 取消 空闲 已预订 预定 维修 入住 退房 换房 入住 换房 完成 占用 维修 事件 ?
需求建模实例:某金融贸易系统用例图(UML) 酒店系统 风险分析 交易估计 财务系统 接待员 进行交易 进行交易
模型的作用 在建模过程中了解系统 通过抽象降低复杂性 有助于回忆所有的细节 有助于开发小组间的交流 有助于与用户的交流 为系统的维护提供文档
模型化或模型方法是通过抽象、概括和一般化,把研究的对象或问题转化为本质(关系或结构)相同的另一对象或问题,从而加以解决的方法。模型化方法要求所建立的模型能真实反映所研究对象的整体结构、关系或某一过程、某一局部、某一侧面的本质特征和变化规律。
§3.4 需求分析建模方法 分析建模方法 结构化分析(传统建模方法) 面向对象分析
影射 现实世界 计算机世界
传统的开发模型不能完全适应具体的应用领域开发 软件开发过程实际是:人通过抽象、归纳把客观系统变换到软件系统,并保证软件系统的解等价客观系统的解。 客观系统 变换 软件系统 解的等价 客观系统的解 软件系统的解 由于客观系统与软件系统差异很大,所以变换过程必须通过一个中间过渡系统。不同的软件开发模型采用不同的过度系统完成变换过程。
结 构 化 开 面 发 向 方 对 法 OOA 象 开 发 方 法 OOD OOP 现实世界 结构化 分析 结构化 设计 结构化 编程 计算机世界 OOP
结构化分析模型的组成结构 加 数 工 据 数据流图 E-R图 (DFD) 说 对 数据字典 象 (DD) 明 说 明 状态变迁图 (STD图) 控制说明
面向对象分析模型的组成结构 操作、 属性、 协作者 对象-关 系模型 类/对象 模型 使用实例 (Use Case) 对象-行为模型
§3.4.1 结构化分析方法 (Structured Analisys, SA) 基于数据流技术的分析方法 需求获取应遵循的三条基本原则: 分解 抽象 投影
分析模型的主要目标 描述用户需要 建立创建软件设计的基础 定义软件完成后可被确认的一组需求
分析模型的构成 数据字典(DD):模型核心(中心库) E-R图(ERD): 数据流图(DFD) 状态变迁图(STD) 指明数据在系统中移动时如何被变换; 描述对数据流进行变换的功能; DFD中每个功能的描述包含在加工规约 (小说明)。 状态变迁图(STD) 指明作为外部事件的结果,系统将如何 动作。
3.4.2 数据建模 E-R图是数据建模的基础
3.4 实体-联系图 数据对象 数据对象是由一组属性来定义的实体,可以是外部实体、事物、行为、事件、角色、单位、地点或结构等;数据对象彼此间是有关联;数据对象只封装了数据。 属性 属性定义了数据对象的性质。 联系 数据对象彼此之间相互连接的方式称为联系,可分为以下3种类型:一对一联系(1∶1),一对多联系(1∶N),多对多联系(M∶N)
将分析模型转换为软件设计 分析模型 设计模型 数据 接口设计 字典 体系结构设计 数 据 设 计 数 据 过程设计 E-R图 数据 对 流图 加 据 工 过程设计 E-R图 数据 流图 规 对 象 数据 字典 约 接口设计 描 述 体系结构设计 状态变迁图 控制规约 数 据 设 计 分析模型 设计模型