第3章 传统软件需求分析
46
• 步骤3.分析当前系统与目标系统的差别 ,建立目标系统的逻辑模型
软件学 院教务 员
教学 计划 排课表 排课表 排课 (时间) 排课 (时间+地点) 软件学 时间 院教务 地点 处理 员 处理
软件学院 的教师
时间 约束
学校设备 管理科
教室 约束
47
• 步骤4.对目标系统的逻辑模型进行改进 与优化。
•结构化设计(Structured Design,SD,70年代初期)
•结构化编程(Structured Programming, SP, 1965) 基本思想:把一个复杂问题的求解过程分阶段进行, 而且这种分解是自顶向下,逐层分解,使得每个阶段 处理的问题都控制在人们容易理解和处理的范围内。 (分而治之的思想) 基本要点:自顶向下、逐步求精;模块化设计;结构 化编程。
解决方案边 界
票据文员 运输员 生产工长
21
上下文图
顾客 注册从工资中 扣除餐费 食物订单 菜单管理人 食物订单 送餐请求 菜单内容 从工资中扣除餐费的请 求 从工资中扣除餐费的响 应 工资系统 付款要求 食物订单 可提供的食物 信息 自助餐厅在 线订餐系统 送餐请求 送餐人员 更新食物状态 付款请求 自助餐厅工作人员 食物订购信息
11
需求分析的过程
可行性 分析模型 需求描述
可行性报告
系统模型
需求规格说明书
12
3.2 需求工程
3.2.1 需求工程的定义
3.2.2 需求工程过程
13
3.2.1 需求工程
• 需求
– 构造任何人工制品之前,其意图(为什么需要 它?它将用于何处?)。
• 工程
– – – – 工程化的方法; 有效的技术; 规范化、标准化的生产过程; 规范化、标准化的产品,强调最终产品的实用 性和目的性。
38
39
3.3.2系统流程图
系统流程图,是一种描述系统内各单位、人员之间业务关系的 图表,用以描述物理系统的工具。
基本思想:用图形符号以黑盒子形式描绘系统里面的每个部件 (程序,文档,数据库,人工过程等) ,表达信息在各个部 件之间流动的情况,而不是表示对信息进行加工处理的控制过 程。 处理 信息流或物流 加工 的输入与输出 数据或 单据 文档
• 需求验证子活动
–执行验证 –问题修正
29
需求验证的子活动
修改后的软件需求规格说明文档
软件需求规格 说明文档
执行验证
问题、修 改建议
问题修正
30
需求管理
• 需求管理
–需求基线:项目经理、开发者、测试人员、 顾客、维护人员 –需求产生之后 ,需求的影响力贯穿于整个后 续的产品生命周期,而不是单纯地存在于需 求开发阶段
• 需求管理子活动
–建立和维护需求基线集 –建立需求跟踪信息 –进行变更控制
31
3.3 结构化分析
3.3.1 结构化方法概述
3.3.2 系统流程图 3.3.3 数据流图 3.3.4 数据字典 3.3.5 结构化语言
32
3.3.1 结构化方法概述
•结构化分析(Structured Analysis,SA,70年代中期)
库存数据
外部项
40
41
42
43
结构化分析过程
• 1、理解当前的现实环境,获得当前系统的具 体模型(物理模型) • 2、从当前系统的具体模型抽象出当前系统逻 辑模型 • 3、分析目标系统与当前系统逻辑上的差别, 建立目标系统的逻辑模型 • 4、为目标系统的逻辑模型作补充
44
例子:排课
• 步骤1. 通过对现实环境的调查,获得当 前系统的物理模型
19
需求获取的子活动
收集背景材料
定义项目前景 和范围
选择信息的来 选择获取方法, 源 执行获取
记录获取结果
项目前景和范围文档 用户需求文档(包括问题域特性)
20
定义系统的高层解决方案
新的解决方案
订单输入源 新的销售订单系统 结果订单 合格的销 售订单
订单输入员 检查
检查
检查
包含定价数据的 旧系统
用户需求
–执行实际工作的用户对系统所能完成的具体任 务的期望,描述了系统能够帮助用户做些什么。
系统(级)需求
–用户对系统行为的期望,一系列的系统行为联 系在一起可以帮助用户完成任务,满足用户需 求。
7
例子——业务需求
• 目标:云南大学进入全国50强 • 子目标:学科建设(一级博士点) • 子目标:国家级重点实验室建设 • 子目标:人才建设 • 子目标:学校信息化建设(教务管理系统 、选课系统、研究生系统„)
33
自顶向下、逐步求精
抽象和分解是控 顶层 制复杂性的两个 基本手段 抽象:在每个抽 象层次上忽略问 题的内部复杂性, 只关注整个问题 与外界的联系
底层
2 x
1
3
分解:将问题 不断分解为较 小的问题,直 到每个最底层 的问题都足够 简单为止
3.1
3.2
34
35
模块化设计
main
main
子模 块1 子模 块2 子模 块11 子模 块12 子模 块13
17
系
统
环
境
涉众
硬
数
据
需求获取 需求分析 需求描述 需求验证
需求开发
需求基线
需求管理
当前基线
修订的基 线
需求变化
变更控制
18
需求获取
• 需求获取
–需求获取是从人、文档、环境当中获取需 求的过程;
• 这个过程包括学习和认知的过程,而学习和认知 是递进的;
–需求工程师必须要利用各种方法和技术来 “发现”需求 ; –需求获取和需求分析是交织在一起的 ;
15
传统需求分析与需求工程的关系
需求工程
需求分析
16
3.2.2 需求工程过程
需求开发过程 需求管理过程
需求获取
需求分析
需求描述
需求验证
需求管理
经过分析和建模的需求,将被记录和文档化, 并作为正式的规格说明,再经验证后,传递给 软件组织的所有相关人员,形成对系统需求的 正确和一致的理解。
规格说明天 生就是不完 备的; 环境一直在 变;
软 件 学 院
国家精品课程
软 件 工 程
云南大学 软件学院 代飞博士 2013年· 秋
1
会泽百家
至公天下
第3章 传统软件需求分析
3.1 需求与需求分析 3.2 需求工程 3.3 结构化分析 技术
2
3.1 需求与需求分析
3.1.1 需求
3.1.2 需求分析
3
3.1.1 需求的定义
• IEEE关于需求的定义 (1)用户为了解决问题或达到目标所需 的条件或能力;(用户的角度 ) (2)系统或系统部件为了满足合同、标 准、规范或其它正式规定文档所需具有 的条件或能力。(开发者的角度) (3) 对(1)或(2)中的一个条件或 一种能力的文档化表述。
软件学 院教务 员
教学 计划 反馈 时间 约束 排课表 排课表 排课 (时间) 排课 (时间+地点) 软件学 时间 院教务 地点 处理 员 处理
软件学院 的教师
学校设备 管理科
教室 约束
排课表 (时间+地点)
48
3.3.3 数据流图
数据流图( Data Flow Diagram )是结构化系统分析 的主要工具,它表示了系统内部信息的流向,并表示 了系统的逻辑处理功能。
50
例子:飞机机票预订系统
订票单
旅行社
分类并 检查
有效订票单
订票 记账文件 机票文件
取票单
有效 取票 单
记账
旅客
账单
菜单
自助餐厅库存系统
22
23
需求分析
• 需求分析
–通过建模来整合各种信息,以使得人们更 好的理解问题; –检查需求当中存在的错误、遗漏、不一致 等各种缺陷,并加以修正 ; –为问题定义出一个需求集合,这个集合能 够为问题界定一个有效的解决方案;(需求 的基线集)
获取结果
· · 用户的理解 问题的描述
外部实体
加工
数据流
数据存储
49
1)外部实体:与系统进行交互,但系统不对其 进行加工和处理的实体,用带标记的矩形表示。
2)数据的加工:加工是对数据进行变换和处理 的单元,它接收一定的数据输入,对其进行处理,并 产生输出。
3)数据流:数据流由一组固定的数据组成,用 来指出数据在系统内传播的路径。
4)数据存储:表示信息的静态存储,可以代表文 件、文件的一部分、数据库的元素等,用带标记的双 实线表示。
接口、数据库接口等等。
约束
进行系统构造时需要遵守的约束,例如编程语言、硬件设施等。
5
功能需求——层次性
业务需求 目标 用户需求
任务
系统行为
系统需求
6
业务需求、用户需求、系统需求
业务需求
– 抽象层次最高的需求,是系统建立的战略出发 点,表现为高层次的目标(Objective),它描 述了组织为什么要开发系统 。
教学 计划 排课表 排课表(时 (时间) 学校教务 间+地点) 软件 软件学 学院 处(王) 院(代) (黄具体模型中的非本质因素, 抽取现实系统的实质,抽象出当前系统 的逻辑模型。
软件学 院教务 员
教学 计划
排课表 排课表 排课 (时间) 排课 (时间+地点) 软件学 时间 院教务 地点 处理 员 处理
36
子模 块3
非模块化设计 模块化设计
结构化编程
main
反对GOTO语句
函数a
顺序结构
函数b 函数c