第 4章 需求分析
软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,
并且分配给各个软件元素 。 需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整,准确,
清晰,具体的要求 。
在本章首先我们介绍需求分析的基础,然后介绍结构化需求分析方法,最后介绍其它分析方法与图形工具分析方法 。
第 4章 需求分析
4.1 需求分析基础
4.4 实体 —— 关系图
4.6 本章小结
4.5 需求规格说明与评审
4.3 其它分析方法与图形工具
4.2 结构化分析方法
4.1 需求分析基础
4.1.1 分析的任务与原则
4.1.2 初步需求获取技术
4.1.3 需求建模
4.1.4 开发原型系统
4.1.1 分析的任务与原则
软件需求分析的任务是:深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统,做什么,的问题 。
需求分析任务与其实现步骤如图 4.1所示 。
需求分析可分为 需求提出,需求分析描述及需求评审 三个阶段 。
图 4.1 需求提出和分析的结果需求提出分析系统规格说明,
模型分析模型,
模型需求提出需求提出主要集中于描述系统目的 。 需求提出和分析仅仅集中在使用者对系统的观点上 。 用户,
开发人员和用户确定一个问题领域,并定义一个描述该问题的系统 。 这样的定义称作系统规格说明,并且它在用户和开发人员之间充当合同 。
需求分析描述
在问题分析阶段分析人员的主要任务是:对用户的需求进行鉴别,综合和建模,清除用户需求的模糊性,歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型 。
分析人员的主要做法是:要将对原始问题的理解与软件开发经验结合起来,以便发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求。
需求评审
在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。
4.1.2 初步需求获取技术
为了完成软件需求任务,分析人员必须掌握一些基本技术,主要有:
初步需求获取技术,需求建模,以及用于需求分析的快速原型技术;一些公共的技术包括:
采访,观察,先前的系统版本的测试和系统分析 。
作为一个好的需求获取技术的显著特征是:
方便通信 ( 可以通过易于理解的语言 ) 。
提供定义系统模块的方法 。
鼓励分析员用问题空间的术语而不是软件术语去思考问题和编制文档 。
允许并提醒分析员有多种可供选择的设计方案 。
适应需求的变化 。
4.1.3 需求建模
由于用户群体的各个用户往往会从不同的角度,
不同的抽象级别上阐述他们对原始问题的理解和对目标软件的需求,因此,有必要为原始问题及目标软件解建立模型 。 这种模型一方面用于精确地记录用户从各个视点,不同抽象级别上对原始问题及目标软件的描述;另一方面,
它也将帮助分析人员去伪存真,由此及彼,由表及里挖掘用户需求 。
建模的步骤是:
( 1)获得当前系统的物理模型
( 2)抽象出当前系统的逻辑模型。
( 3)建立目标系统的逻辑模型。
做什么抽象化导出怎么做实例化
,
当前系统目标系统物理模型物理模型逻辑模型逻辑模型模型化化具体化化图 4.2 软件需求建模的任务
4.1.4 开发原型系统快速原型方法 核心思想是:在软件开发的早期快速建立目标软件的原型,让用户对原型进行评估并提出修改意见,当原型几经改进最终确定后,它将由软件设计和编码阶段进化成软件产品;或者设计和编码人员遵循原型所确立的外部特征实现软件产品 。
把建立原型系统作为一种可能采取的策略的主要理由如下:
( 1) 由于用户与软件设计人员认识上的局限,
不能预先指定所有要求,因此在开发过程中重复和反复是必要的和不可避免的;
( 2) 在用户和系统分析员之间存在固有的通信鸿沟,用户需要一个,活的,系统模型,以便获得实践经验,以便沟通;
( 3) 目前有快速建立原型系统的工具可供选用 。
4.2 结构化分析方法
此方法基于模块化的思想,采用,自顶向下,逐步求精,的技术对系统进行划分 。
结构化方法是结构化分析,结构化设计和结构化编程的总称 。
结构化方法由于具有简单易懂,使用方便的特点,且出现较早,所以获得了广泛的应用 。
4.2 结构化分析方法
4.2.1 结构化分析的策略
4.2.2 数据流图
4.2.3 数据字典
4.2.4 小说明
4.2.5 结构化分析实施步骤
4.2.1 结构化分析的策略
一旦基于计算机系统的功能被分配到各个系统元素,系统分析员就能够据此建立起一个模型,
用以表达系统元素之间的相互关系,并为今后的需求分析和设计奠定基础。为了开发系统模型,使用一个,结构模板,。
处理与控制功能维护和自测试用户界面处理输入处理输出处理图 4.3 结构模板的格式下图给出传送带在线货物分类系统的总体结构关系图系统卡片机传送线 分类机制分类操作员主机分类操作员线速卡片代码要求查询报告分流命令数据诊断数据
4.2.2 数据流图
数据流图 描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况 。
数据流图的 特点 是:它是逻辑系统的图形表示,
容易理解,是极好的通信工具,设计数据流图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何实现这些功能,是软件设计很好的出发点 。
1.符号
数据源点或终点:正方形 ( 或立方体 ) 。
变换数据处理:圆角矩形 ( 或圆形 ) 。
数据存储:开口矩形
( 或两条平行横线 ) 。
数据流:箭头表示,即信息与数据的流动方向。
或 数据源点或终点或 变换数据或处理或 数据存储数据流数据流图有四种基本符号。
2.例子
假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件 。 对于每个再次定货的零件应该列出下述数据:
零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者 。
零件入库或出库被称为事务,通过放在仓库中的 CRT
终端把事务报告给定货系统 。 当某种零件的库存数量少于库存量临界值时就应该再次定货 。
定货系统的数据流图的成份源点 /终点 处理采购员仓库管理员产生报表处理事务数据流 数据存储定货报表零件编号零件名称定货数量目前价格主要供应者次要供应者定货信息
(定货报表)
库存清单 *
零件编号 *
库存量库存量临界值事务零件编号 *
事务类型数量 *
定货系统基本系统模型仓库管理员定货系统采购员 事务发货报表把处理事务功能进一步分解后的数据流图仓 库管理员
1,1
接收事务
1,2
更新库存清单
1,3
处理定货
D1 库存清单
D2 定货信息事务 事务 库存信息定货信息报表
2
产生报表定货采购员
3.命名
数据流图中每个成份的命名是否恰当,直接影响数据流图的可理解性。
为数据流命名:
( 1) 名字应代表整个数据流 ( 或数据存储 ) 的内容,而不是仅仅反映它的某些成份 。
( 2) 不要使用空洞的,缺乏具体含义的名字 ( 如,数据,,,信息,,,输入,之类 ) 。
( 3) 如果在为某个数据流 ( 或数据存储 ) 起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难 。
为处理命名:
( 1)通常先为数据流命名,然后再为与之相关联的处理命名
( 2)名字应该反映整个处理的功能,而不是它的一部分功能。
( 3)名字最好由一个具体的及物动词,加上一个具体的宾语组成。
( 4)通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把它再分解成两个处理可能更恰当些。
( 5)如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。
4.用途
画数据流图的基本目的是利用它作为 交流信息的工具 。
数据流图的另一个主要用途是作为 分析和设计的工具 。
4.2.3 数据字典
1,数据字典的内容
( 1) 数据流
( 2) 数据流分量 ( 即数据元素 )
( 3) 数据存储
( 4)处理
2.定义数据的方法由数据元素组成数据的方式有下述几种基本类型:
( 1) 顺序:即以确定次序连接两个或多个分量 。
( 2) 选择:即从两个或多个可能的元素中选取一个 。
( 3) 重复:即把指定的分量重复零次或多次 。
3.实例
( 1) 数据流条目一个完整的数据流条目应该包括以下内容:
名称描述频率和数据量数据结构例如,,图书管理系统,中的,入库单,是一个数据流,对它的说明如下:
入库单 =分类目录号 +数量 +书名 +作者 +内容摘要
+价格 +购书日期
( 2)数据存储条目名称描述数据存储方式关键码频率和数据量安全性要求数据结构例如,同样图书管理系统中的,目录文件,是个数据存储,对它的说明如下:
文件名:目录文件组成,{分类目录号 +书名 +作者 +内容摘要 +价格 +入库日期 +总数 +库存数 +{图书流水号 }}
4.2.4 小说明
小说明是用来描述加工的。集中描述一个加工
,做什么,,即加工逻辑,也包括其他一些和加工有关的信息,如执行条件、优先级、执行频率、出错处理等。
目前小说明一般用自然语言,结构化自然语言,
判定表和判定树等来描述 。 在描绘复杂的关系时,图形比文字叙述优越得多,它形象直观,
一目了然 。
4.2.5 结构化分析实施步骤第一步,确定系统边界,画出系统环境图。
第二步,自顶向下,画出各层数据流图。
分层数据流图和图中的加工进行 编号规则
( 1) 顶层图不参与数据流图编号,顶层图中的惟一加工也不编号 。
( 2) 从 0层图开始的所有子图和加工均需编号,子图的编号为分解的父图中相应加工编号 。
( 3) 加工的编号由相应的子图号,小数点,加工在子图中的顺序号组成 。
第三步,定义数据字典。
第四步,定义小说明。
第五步,汇总前面各步骤的结果。
注意事项:
( 1) 模型平衡规则
数据流图中所有的图形元素必须根据它们的用法规则正确使用。
数据字典中的定义使用合法的逻辑构造符号 。
数据流图中最底层的加工必须在小说明中有定义 。
父图和子图必须平衡。
小说明和数据流图的图形表示必须一致。
( 2)控制复杂性的一些规则
上层数据流可以打包(打包的数据流作特殊标记),上、下层数据流的对应关系用数据字典描述(编号对应),同层的数据流也可编号对应,避免形成复杂的连线;只有一点限制,数据流的性质(输入、输出)必须一致。
4.3 其它分析方法与图形工具
1.结构化自然语言结构化自然语言的语法通常分为内外两层,
外层语法描述操作的控制结构,如顺序,
选择,循环等,这些控制结构将加工中的各个操作连接起来 。 内层语法一般没有什么限制,就用自然语言描述 。
2.层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素
(不能再分割的元素)。
例如,描绘一家计算机公司全部产品的数据结构可以用图中的层次方框图表示。这家公司的产品由硬件、软件和服务三类产品组成,软件产品又分为系统软件和应用软件,
系统软件又进一步分为操作系统、编译程序和软件工具 …… 。
产品硬件 软件 服务处理机 存储器外部设备设备系统软件应用软件软件服务硬件维修培训编译程序操作系统软件工具
3,Warnier图
用 Warnier图可以表明信息的逻辑组织软件产品系统软件应用软件操作系统 ( P1)
编译程序 ( P2)
软件工具编译程序 ( P3)
测试驱动程序 ( P4)
设计辅助工具 ( P5)
4,IPO图
IPO图是输入/处理/输出图的简称,它的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。
旧主文件事务文件
1,校验主记录
2,校验事务记录
3,更新主记录有效的主记录有效的事务记录更新后的主文件
I PO 表系统,_______ 作者,______
模块,_______ 日期,______
编号,_______
注释,
被调用,调用,
输入,输出,
处理,
局部数据元素,
输入 处理 输出图 4.11 IPO图的一个例子 图 4.12 改进的 IPO图
5.判定表
判定表常用来描述一些不易用语言表达清楚或需要很大篇幅才能用语言表达清楚的加工 。
旅游时间
7~9,12月 l~6,10,11月定票量 ≤20 >20 ≤20 >20
折扣量 5% 15% 20% 30%
表 4.2 旅游价格表在表 4.2中,I区的条件类别有两个:旅游时间和订票量,Ⅱ 区内列出所有四种条件组合,Ⅲ 区内只有一个操作,Ⅳ 区标明在某种条件组合下操作的执行情况 。
I 条件类别 Ⅱ 条件组合
III 操作 Ⅳ 操作的执行表 4.3 判定表
4.4 实体 —— 关系图
4.4.1 数据对象、属性与关系
4.4.2 E-R方法和实体模型
4.4.3 数据结构的规范化
4.4.1 数据对象、属性与关系
对象可以是人,是物,还可以是实际的东西或概念的东西,例如,大学,城市等 。 对象还可以指事物与事物间的联系 。
属性则是指事物的性质或特征,数据对象由其属性刻画 。
例如,学生文件就由多个记录组成,这些记录放在一起构成一个二维表。表中每一横排叫做一个记录或元组,每一纵列叫做一个属性,参看表 4.4。
表 4.4 学生文件学号 姓名 性别 年龄 专业
951136 郑枫 女 19 计算机科学与技术
951137 雷昊 男 18 计算机科学与技术
951138 李博达 男 18 机械工程为确保模型的一致性并消除数据冗余,分析人员要掌握以下 规范化规则,
( 1) 数据对象的任何实例对每个属性必须有且仅有一个属性值 。
( 2) 属性是原子数据项,不能包含内部数据结构 。
( 3) 如果数据对象的关键属性多于一个,那么其他的非关键属性必须表示整个数据对象而不是部分关键属性的特征 。
( 4) 所有的非关键属性必须表示整个对象而不是部分属性的特征 。
4.4.2 E-R方法和实体模型实体 —— 关系图是表示数据对象及其关的图形语言机制。
方框 —— 表示实体型 。 在框内写上实体名,如,学生,实体型 。
椭圆框 —— 表示实体有关的属性 。 椭圆内标记属性的名字 。
箭头 —— 表示实体与属性之间的联系 。
菱形框 —— 表示实体之间的联系 。
一对一的联系 ( 1,1) —— 即一个实体在此种联系下只能对应一个实体;
一对多的联系 ( 1,n) —— 即一个实体在此种联系下可对应其他一个以上的实体;
多对多的联系 ( m,n) —— 即一个实体类型中的多个实体与另一个实体类型中的多个实体相联系 。
通常实体联系有三种类型:
例如,在教学管理中,学校开设若干门课程,一个教师可以教授其中的一门或多门课程,每位学生也需要学习其中的几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。用 E-R图描述它们之间的联系,如图所示。其中,学生与课程是多对多的联系,而教师与课程的联系是一对多。
教师 学生课程教 学
1
1 1 1
1 N
1 1 1
1
M
1
N
1 1 1
1
教学管理 E-R图
4.4.3 数据结构的规范化下面用图所示的教学管理的例子说明如何进行规范化 。
有三个实体类型,即,课程,学生和教师,用三个关系分别保存它们的有关信息:
职 称性别 专业姓名教工号姓名 系学号 性别 专业课程号 课名 学时 学分教师 学生课程教 学
1
N M
N
教师 ( 职工号,姓名,年龄,职称,工资级别,
工资 )
课程 ( 课程号,课程名,学分,学时,课程类型 )
选课 ( 学号,课程号,听课出勤率,作业完成率,分数 )
教课( 职工号,课程号 )
( 1) 关系中所有属性都是,单纯域,,
即 不 出 现,表 中 有表,。
( 2) 非主属性完全函数依赖于关键字 。
( 3) 非主属性相互独立,即任何非主属性间不存在函数依赖

如果一个关系连条件 ( 1) 都不满足,则这个关系是非规范化的 。
如果一个关系仅满足条件 ( 1
),则这个关系满足第一范式
( 1NF) 。
如果一个关系满足条件 ( 1)
,( 2),但不满足 ( 3),则这个关系满足第二范式 ( 2NF)

如果一个关系同时满足条件(
1)、( 2)和( 3),则这个关系满足第三范式( 3NF)
判断 规范化程度 的条件是:
4.5 需求规格说明与评审
4.5.1 需求规格说明书的目标与内容
4.5.2 需求评审
4.5.1 需求规格说明书的目标与内容需求规格说明书主要起以下作用:
( 1) 软件开发机构和用户之间一份事实上的技术合同书 。
( 2) 软件开发机构下一步进行设计和编码的基础 。
( 3) 测试和验收目标系统的依据 。
需求规格说明书的主要作用:
( 1) 软件开发机构和用户之间一份事实上的技术合同书 。
( 2) 软件开发机构下一步进行设计和编码的基础 。
( 3) 测试和验收目标系统的依据 。
4.5.2 需求评审
正确性
无二义性
完整性
可验证性
一致性
可理解性
可修改性
可跟踪性
4.6 本章小结需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整,准确,清晰,具体的要求 。 需求分析活动可按照需求提出,需求分析与描述及需求评审三个子阶段进行 。 需求分析的结果是系统开发的基础,必须用行之有效的方法对软件需求进行严格的审查验证 。