? 2008 BUPT TSEG
软件工程模型与方法
Models & Methods of SE
第五章 结构化需求分析肖丁 dxiao@bupt.edu.cn
2? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心本章内容
5.1 结构化需求分析的由来
5.2 结构化分析模型的组成
5.3 数据建模
5.4 功能建模
5.5 行为建模
5.6 数据词典
5.7 软件需求规格说明书
3? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.1 结构化需求分析的由来
分析建模的开始于 20世纪 60-70年代,但结构化分析方法的第一次出现是作为另一个重要课题 —“结构化设计”的附属品 。
其目的是需要一种图形符号体系来表示数据和对数据进行变换的处理,这些处理最终能被映射到软件体系结构的设计中。
结构化分析这个词汇最初由 Douglas Ross提出,由 DeMarco进行了推广。
4? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.2 分析模型的结构
需求分析的分析模型必须达到三个主要目标:
描述客户的需求;
建立创建软件设计的基础;
定义在软件完成后可以被确认的一组需求。
数 据词 典数据流图实体关系图状 态 迁 移 图控 制 规 格 说 明数据对象描述加工规格说明
5? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3 数据建模
概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。其表示方法称为实体 -关系法,也称为实体关系模型。
它描述了从用户角度看到的数据,反映了用户的现实环境
,但与在软件系统中的实现方法无关。
软件系统本质上是信息处理系统,即对数据进行处理的系统,因此在开发过程中必须考虑以下两方面的问题:
,数据”
需要有哪些数据?
数据之间有什么联系?
数据本身有什么性质?
数据结构等
对数据的“处理”
对数据进行哪些处理?
每个处理的逻辑功能是什么?
6? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.1 数据建模的作用
数据建模反映了与任何数据处理应用相关的一组特定问题:
系统处理哪些主要的数据对象?
每个数据对象的组成如何?
而且哪些属性描述了这些数据对象?
这些数据对象当前位于何处?
每个数据对象与其他数据对象有哪些关系?
数据对象和变换它们的处理之间有哪些关系?
7? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.2 数据对象
数据对象描述包括了数据对象的名称及其所有属性。通常将数据对象简称为“实体”,其具体表现可以是:
外部实体:产生或使用消息的任何事物;
事物:例如建筑物、汽车等物体;
事件:例如警报;
角色:例如老师、学生、销售等;
组织单位:例如学校教务处、财务处等;
地点:例如仓库、停车场等;
结构:例如文件、档案等。
8? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.3 数据对象的属性和关系
每个数据对象都具有一些区别于其他数据对象的特征和性质,这些特征称为数据对象的属性。它可用于:
命名数据对象;
描述数据对象实例;
建立与其它数据对象的联系;
数据对象之间可以存在某种特定的连接,
称之为数据对象的关系。
关系是由被分析问题的语境定义的。
9? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.4 数据对象的基数
数据建模的基本元素:数据对象、属性和关系提供了理解问题信息域的基础,但还必须了解数据对象之间出现的次数有无必然的联系,即实体 -关系对的基数。
基数通常简单地表达为“一”或“多”。
考虑到“一”和“多”的所有组合,两个实体可能的关联如下:
一对一:例如人和身份证件的关系;
一对多:例如父母与孩子的关系;
多对多:例如学生和老师的关系;
10? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.5 实体关系图
ER图的主要目的是以图形的形式表示实体与实体之间的关系。
ER图最初是由 Peter Chen为关系数据库系统的设计提出的,标识了一组基本的构件:
实体、属性、关系。
例如,教学管理系统中的教师、学生和课程之间的关系上课 授课学生学号姓名年龄性别专业班级号课程课程号课程名学分学时数成绩上课时间上课教室教师职工号姓名职称年龄单位性别
11? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.6 数据结构规范化
数据对象之间的基数关系,在关系型数据库中就会造成数据存储的冗余现象。为了消除数据冗余,就需要对实体 -关系图中的数据进行规范化处理,即数据范式。
数据结构的规范化有以下好处:
消除多义性:使关系中的属性含义清楚、单一;
关系单纯化:让每个数据项只是简单的数或字符串
,方便操作。使数据的插入、删除与修改操作可行且方便;
使关系模式更灵活:易于实现接近自然语言的查询方式。
12? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.7 范式简介
通常来说第一范式的数据冗余程度最大,随着范式提高数据冗余会随之变小。
然而范式级别越高,存储同样数据就需要分解成越多张表,因此“存储自身”的过程也就越复杂

随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,为此在需求发生变化时数据的稳定性随之下降。除此之外
,范式级别的提高则需要访问的表增多,因此性能或处理速度将下降。
13? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.3.8 三范式
第一范式( 1FN):关系中所有属性都是“单纯域”,即不出现“表中有表”;表的每一行只包含一个实例的信息。
第二范式( 2FN):非主属性完全函数依赖于关键字;
首先必须满足 1FN,然后要求表中的每个实例或行必须可以被唯一地区分。
需要添加一个实例的唯一标识列,称为主关键字或主键、主码。
第三范式( 3FN):在满足第二范式的基础上,
要求非主属性相互独立,即任何非主属性间不存在函数依赖。
14? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4 功能建模
当数据或信息“流”过计算机系统时将会被系统的功能所处理、加工或变换后再将处理或变换后的数据从系统输出。
基于计算机的系统可被表示为数据流图的基本结构:
外 部 实 体 加 工 1
外 部 实 体 加 工 2
加 工 3 加 工 4
外 部 实 体外 部 实 体数 据 存 储输 入数 据输 入数 据中 间 数 据中 间 数 据中 间数 据输 出 数 据输 出 数 据数 据 输 入 和 输 出
15? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.1 数据流图的结构
数据流图可以被用来抽象地表示系统或软件,既能提供功能建模的机制。
也可提供数据流建模的机制,并可以自顶向下的机制表示层级的功能细节和数据变换细节。
从数据流图中可知,数据流图有四种基本元素:
加 工外 部 实 体数 据 流数 据 存 储
16? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.2 数据流与加工的关系其中星号,*”表示相邻的一对数据流同时出现;,⊕,则表示相邻的两数据流只取其一。
17? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.3 分层的数据流图
为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。
顶层数据流图:顶层流图仅包含一个加工,它代表被开发系统,其作用在于表明被开发系统的范围,以及它和周围环境的数据交换关系。
中间层数据流图:表示对其上层父图的细化。
它的每一加工可以继续细化,形成子图。中间层次的多少视系统的复杂程度而定。
底层数据流图:是指其加工不须再做分解的数据流图,其加工称为“原子加工”。
18? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.4 分层数据流图的两种表示
F
A B
f
1
f
2
f
3
f
4
f
5
f
6
f
7
A
V
W
X
Y
Z
z
1
z
2
z
3
B
f
4 1
f
4 3
f
4 2
f
4 4
f 4 5
X
Y
x
1
y
1
x
2
y
2
Z
19? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.5 数据流图的绘制步骤
画数据流图的基本步骤概括地说,就是自外向内
,自顶向下,逐层细化,完善求精。具体步骤可按如下来做:
1,先找系统的数据源点与汇点。它们是外部实体,由它们确定系统与外界的接口。
2,找出外部实体的输出数据流与输入数据流。
3,在图的边上画出系统的外部实体。
4,从外部实体的输出数据流(即系统的源点)出发,按照系统的逻辑需要,逐步画出一系列逻辑加工,直到找到外部实体所需的输入数据流 (即系统的汇点 ),形成数据流的封闭。
5,按照下面所给的原则进行检查和修改。
6,按照上述步骤,再从各加工出发,画出所需的子图。
20? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.5.1 医院就诊管理系统例子
假设,该系统涉及医院的三个部门:挂号、问诊
、交费和取药。
挂号,挂号处的挂号人员接受病人的就诊请求,根据门诊科室各医生的病人的排队情况,分配合适科室和医生,记录并打印挂号凭据,收取挂号费完成挂号请求。
问诊,医生根据挂号的次序对病人进行病情诊断,根据挂号单据及病历号获取该病人的历史病历,然后将问诊结果记录在病历当中并开具相应的处方(处方中可根据系统提供的药品进行选择),打印处方交给病人完成一次问诊。
交费取药,病人在收费处根据挂号单据和处方所列出的药品种类和数量进行交费,取得相应的药品完成一次看病流程。
21? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.5.2 顶层的数据流图病 人医 院 就 诊管 理 系 统挂 号 请 求科 室 和 医 生 信 息队 列 信 息病 历挂 号 凭 据病 历 与 处 方交 费药 品 及 收 据病 历 号新 的 病 情 信 息病 历 信 息科 室,医 生 I D
添 加 病 人 挂 号 I D
挂 号 费挂 号 凭 据挂 号 信 息
22? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.5.3 第一层数据流图
1
挂 号 子 系 统
2
问 诊 子 系 统
3
交 费 取 药子 系 统病 人挂 号 请 求挂 号 凭 据挂 号 信 息病 历 与 处 方交 费药 品 及 收 据问 诊 结 果挂 号 费病 历科 室 和 医 生 信 息病 历 号新 的 病 情 信 息病 历 信 息科 室,医 生 I D
队 列 信 息添 加 病 人 挂 号 I D
挂 号 凭 据挂 号 信 息
23? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.5.4 第二层数据流图
1,1
确 定 病 历 号
1,2
选 择 科 室和 医 生
1,3
确 定 挂 号 费 用
1,4
记 录 并 打 印挂 号 凭 据病 人挂 号 请 求挂 号 费挂 号 凭 据病 历 号科 室 和 医 生 信 息挂 号 信 息病 历病 历 号病 历 信 息科 室 和 医 生 信 息队 列 信 息添 加 病 人 挂 号 I D 科 室,医 生 I D
问 诊 子 系 统挂 号 信 息挂 号 信 息挂 号 凭 据
24? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.6 检查和修改数据流图的原则
数据流图上所有图形符号只限于前述四种基本图形元素。
数据流图的主图必须包括前述四种基本元素,缺一不可。
数据流图的主图上的数据流必须封闭在外部实体之间,外部实体可以不只一个。
每个加工至少有一个输入数据流和一个输出数据流。
在数据流图中,需按层给加工框编号。编号表明该加工处在哪一层,
以及上下层的父图与子图的对应关系。
任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡。它表明了在细化过程中输入与输出不能有丢失和强加。
图上每个元素都必须有名字。表明数据流和数据文件是什么数据,加工做什么事情。
一般情况下,数据流图中不可夹带控制流。因为数据流图是实际业务流程的客观表现,说明系统,做什么,而不是要表明系统,如何做,
,因此不是系统的执行顺序,不是程序流程图。
25? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.4.7实时系统的数据流图
Ward & Mellor对实时系统的数据流图进行相应的扩展,引入了控制流及连续的数据流等符号。该扩展可适应实时系统提出的要求:
在时间连续的基础上接收或产生数据流;
贯穿系统的控制信息和相关的控制处理;
多任务的情况下可能会遇到同一个加工的多个实例;
系统状态以及导致系统状态迁移的机制。
控制项或事件 连续数据流控制加工控制存储一个加工的多个实例
26? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心温 度 检 测与 调 整温 度水 温 测 量 仪温 度 设 臵 范 围 温 度 校 正 值机 器 人 命 令 文 件部 件 状 态 缓 冲 器部 件 监 控 与操 作 界 面移 位 命 令处 理机 器 人 初始 化 控 制部 件 状 态位 串操 作 命 令操 作 设 臵启 动 / 停 止 信 号动 作 警 告处 理 激 活 信 号机 器 人 动 作 记 录定 位 命 令下图给出一个制造车间的数据和控制流的顶层流图。事件可以作为普通数据加工的输入数据流,控制也可以接收普通的输入数据流。
上图给出一个基于计算机的水温控制系统的处理。水温测量仪连续传送水温数据给温度监控加工模块,该加工将水温与允许波动范围进行比较,输出校正数据给温度调节装臵。
27? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.5 行为建模
为了直观地分析系统的动作,从特定的视角出发描述系统的行为,需要采用动态分析的方法。
其中最为常用的动态分析方法有:
状态迁移图
时序图
Petri网等。
28? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.5.1 状态迁移图
利用状态迁移图来描述系统或对象的状态,以及导致系统或对象的状态改变的事件,从而描述系统的行为。
状态迁移图指明系统的状态如何相应外部的事件进行推移

在状态迁移图中,用圆圈“○”表示可得到的系统状态,
用箭头,→,表示从一种状态向另一种状态的迁移。
状态迁移图指明了作为特定事件的结果(状态)。在状态中包含可能执行的行为(活动或加工)。
29? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.5.2 分层的状态迁移图
在状态迁移图中,由一个状态和一个事件所决定的下一状态可能会有多个。实际会迁移到哪一个是由更详细的内部状态和更详细的事件信息来决定的。
30? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.5.3 Petri Net基本概念
Petri网是由德国人 Carl Adam Petri于 1962年提出来
,主要用于处理并发系统当中的同步问题、资源竞争问题以及死锁问题等。
Petri网是一种有向图,包含四种基本元素,一组位置 P、一组转换 T、输入函数 I以及输出函数 O。
P
1
P
2
P
4
P
3
T
1
T
2
一组位臵 P为 {P1,P2,P3,P4}
一组转换 T{t1,t2}
两个输入函数,I(t1)= {P2,P4}; I(t2) =
{P2}
两个输出函数,O(t1)={P1}; O(t2)={P3}
31? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.5.3.1 带标记的 PNG
Petri网位置中如果加了一个黑点,称之为标记( token)。
标记在位置中的出现表明了处理要求的到来。
通常,当每个输入位置所拥有的标记数大于等于从该位置到转换的线数时,就允许转换。
P
1
P
4
P
3
T
1
T
2
P 2
标记向量表示为( 1,2,0,1)
P
1
P
4
P
3
T
1
T
2
标记向量表示为( 2,1,0,0)
标记向量表示为( 2,0,0,2)表示
P
1
P
4
P
3
T
1
T
2
32? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.5.3.2 PNG的实际例子
如图有一个环形铁路,在 A站与 B站之间是单轨,在某一时刻只能走一列火车。但 A站与 B站都是双向运行的。
由于在 A站和 B站之间有一段单轨线路,在某一时刻只允许有一列火车通过,因此只有当单线上没有列车通过时,火车才能进入单线运行,否则火车只能在 A站或者
B站等候,等待单线空出来使用。
33? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6 数据词典
数据词典:对于数据流图中出现的所有被命名的图形元素加以定义,使得每一个图形元素的名字都有一个确切的解释。
其定义应是严密的、精确的,不可有半点含混并消除二义性,它由以下内容组成:
数据流词条
数据元素词条
数据文件词条
加工词条
外部实体
34? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.1 数据流、数据元素词条
数据流是数据结构在系统内传播的路径。一个数据流词条应有以下几项内容:
数据流名称 唯一标识数据流的名称简要描述 简要介绍该数据流的作用,即它产生的原因和结果数据流来源 来源于何处数据流去向 流向何处数据流组成 描述该数据流的内部数据元素的组成备注 需要的情况下描述数据流量和流通量等信息数据元素名称 唯一标识数据元素的名称或编号简要描述 简要描述该数据元素的作用,以及位于哪一个数据结构内类型 数字、字符等类型长度 该数据类型规定的取值范围,例如姓名的长度为 60个字符取值范围 该姓名的取值范围必须大于 2个字符且小于 60个字符备注数据结构都是由数据元素构成的,数据元素是数据处理中的最小单元且不可再细分,
它直接反映事物的某一特征。
35? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.2 数据文件、外部实体词条
数据文件是数据结构保存的地方,一个数据文件词条应有以下几项内容:
数据文件名称 唯一标识数据文件的名称简要描述 简要描述该数据文件存放的是什么数据输入数据 写入该数据文件的数据内容或数据结构输出数据 从该数据文件读出的数据内容或数据结构数据文件组成 描述该数据文件的数据结构组成存储方式 数据文件的操作方式以及关键字备注外部实体名称 唯一标识外部实体的名称简要描述 指明该实体的性质以及与系统之间的关系有关数据流 指明该外部实体与系统之间交互的数据流有哪些备注
外部实体词条描述的结构:
36? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.3 加工逻辑词条
数据流图中的每一个加工除了要进行基本信息的描述之外,还须对加工的逻辑或规则进行描述,其方法有判定表、判定树或结构化英语等。
加工名称 唯一标识加工的名称简要描述 描述加工逻辑和规则以及功能简述加工编号 反映该加工的层次输入数据流 描述进入该加工的一个或多个数据流输出数据流 描述流出该加工的一个或多个数据流加工逻辑 简述该加工的逻辑或规则(参见加工逻辑说明一节)
备注
37? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.4 数据文件结构说明存折=户名+所号+帐号+开户日+性质+(印密)+ 1{存取行 }50
户名= 2{字母 }24
所号=,001”..“999”
帐号=,00000001”..“99999999”
开户日=年+月+日性质=,1”..“6”
印密=,0”
存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年=,00”..“99”
月=,01”..“12”
日=,01”..“3l”
摘要= 1{字母 }4
支出=金额金额=,0000000,01”..“9999999,99” 注:金额规定不超过 9999999.99元操作=,00001”..“99999” 注:表明该存取是存?是取?还是换?
38? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.5 加工逻辑说明
在写基本加工逻辑的说明时,应满足如下的要求:
对数据流图的每一个基本加工,必须有一个加工逻辑说明;
加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则;
加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。
39? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.5.1 结构化英语
结构化英语也称为 PDL,是一种介于自然语言和形式化语言之间的半形式化语言。
它是在自然语言基础上加了一些限制而得到的语言,是使用有限的词汇和有限的语句来描述加工逻辑。
其词汇表由英语命令动词、数据词典中定义的名字、有限的自定义词和控制结构关键词:
IF_THEN_ELSE
WHILE_DO
REPEAT_UNTIL
CASE_OF等组成。
其动词的含义要具体,尽可能少用或不用形容词和副词。
40? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心示例
商店业务处理系统中“检查发货票”功能使用结构化英语完成的加工逻辑描述
IF the invoice exceeds $500 THEN
IF the account has any invoice more than 60 days overdue THEN
The confirmation pending resolution of the debt
ELSE (account is in good standing)
Issue confirmation and invoice
ENDIF
ELSE (invoice equal $500 or less)
IF the account has any invoice more than 60 days overdue THEN
Issue confirmation,invoice and write message on credit
action report
ELSE (account is in good standing)
Issue confirmation and invoice
ENDIF
ENDIF
IF 发货单金额超过 $500 THEN
IF 欠款超过了 60天 THEN
在偿还欠款前不予批准
ELSE (欠款未超期)
发批准书,发货票
ENDIF
ELSE (发货票金额未超过 $500)
IF 欠款超过 60天 THEN
发批准书,发货票及赊欠报告
ELSE (欠款未超期)
发批准书,发货票
ENDIF
ENDIF
41? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.5.2 判定表
在某些数据处理问题中,某数据流图的加工需要依赖于多个逻辑条件的取值,即完成这一加工的一组动作是由某一组条件取值的组合而引发的。
条件桩 — 左上部分:列出了各种可能的条件。
条件项 — 右上部分:给出各个条件的条件取值的组合。
动作桩 — 左下部分:列出了可能采取的动作。
动作项 — 右下部分:是和条件项紧密相关的,
它指出了在条件项的各种取值的组合情况下应采取什么动作。
42? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
5.6.5.3 判定树
判定树也是用来表达加工逻辑的一种工具。有时候它比判定表更直观。用它来描述加工,很容易为用户接受。
在表达一个基本加工逻辑时,结构化英语、判定表和判定树常常交叉使用,互相补充。
总之,加工逻辑说明是结构化分析方法的一个组成部分,
对每一个加工都要加以说明。
应当以结构化英语为主,对存在判断问题的加工逻辑,可辅之以判定表和判定树。
43? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
44? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
1.5.2 软件工程知识体系知识域