软件需求分析
需求分析任务和步骤
需求分析的任务
需求分析的任务还不是确定系统怎样完成它的工作。
需求分析的任务仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰而且具体的需求。
需求分析实际上是一个对用户意图不断进行揭示和判断的过程,它并不考虑系统的具体实现,而是完整地、严密地描述应当“做什么”的一种过程。
需求分析具体任务
- 确定对系统的综合需求。
包括功能需求、性能需求、环境需求、接口需求、用户界面需求 - 分析系统的数据需求;
建立数据模型-----实体联系图(ER图);
描述数据结构-----层次方框图和Warnier图。 - 建立软件的逻辑模型;
综合上述两项分析的结果可以确定系统的逻辑模型,通常用数据流图、数据字典、实体-联系图和主要的处理算法等描述目标系统的逻辑模型。 - 编写软件需求规格说明书(SRS);
需求说明相当于用户与开发者之间的一份技术合同,是测试验收阶段对软件进行确认和验收的基准。准确性和一致性;清晰性和唯一性;完整性和可检验性;运行维护阶段可利用性;直观易读和可修改性。 - 需求分析评审。
评审的目的是发现需求分析的错误和缺陷,然后修改开发计划。对软件需求定义、软件功能等进行全面检查,以确认如软件需求规格说明。
需求分析步骤
- 需求获取:调查研究;
- 需求提炼:分析建模;
- 需求描述:编写SRS;
- 需求验证。
需求获取的常用方法
需求获取的常用方法
- 客户访谈:分为正式的和非正式的两种基本形式
- 建立联合分析小组
- 问题分析与确认
简易的应用规格说明技术是一种面向团队的需求获得方法。
这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并制定基本需求。
快速建立软件原型模型来获取需求
在实际的软件开发中,快速原型法常常被用作一种有效的需求获取方法;
第四代开发技术(4GT)是常用的快速原型工具;
另外一种快速构件原型的方法是使用一组已有的正确的软件构件组装的方法来装配原型系统。
需求分析的常用方法
功能分解方法
该方法将一个系统看成是由若干功能构成的一个集合,每个功能又可划分若干个子功能(加工),一个子功能又进一步分解成若干个子功能(即加工步骤)。这样,功能分解方法有功能、子功能和功能接口三个组成要素。该方法难以适应用户的需求变化。
结构化分析方法
结构化分析方法是一种从问题空间到某种表示的映射方法,软件功能由数据流图表示,是结构化方法中重要的,被普遍采用的方法,它由数据流图和数据字典构成系统的逻辑模型。
信息建模方法
从数据的角度来对现实世界建立模型的。该方法基本工具是实体联系图,由实体、属性和联系构成。在信息模型中,实体是一个对象或一组对象。实体把信息收集在其中,关系是实体之间的联系或交互作用。
面向对象方法
面向对象分析的关键是识别、定义问题域内的类与对象(实体) ,并分析它们之间的关系,根据问题域中的操作规则和内存性质建立模型。
数据流图和数据字典
数据流图
数据流图(Data Flow Diagram,DFD)是一种图形化技术,用于表示系统逻辑模型,它以直观的图形清晰地描述了系统数据的流动和处理过程。是分析员与用户之间极好的通信工具。
DFD图中没有任何具体的物理元素,它只是描述数据在软件中流动和被处理的逻辑过程。
数据流图基本图形符号
->箭头,表示数据流
○圆或椭圆,表示变换数据的处理
□方框,表示数据的原点或终点
=双杠或单杠,表示数据存储(文件)
附加符号:
星号(*)表示“与”, 加号(+)表示“或”,异或表示互斥
源点或者终点:通常是系统之外的实体,可以是人、物或其他软件系统 ;一般只出现在数据流图的顶层图中.
加工:是对数据进行处理的单元,一个处理框可以代表一系列程序、单个程序或程序的一个模块
数据流:是数据在系统内传播的路径,由一组固定的数据项组成。
数据存储:用来存储数据,可以表示一个文件、文件的一部分、数据库的元素或者记录的一部分等 。
画数据流图的基本原则:
- 数据流图中所有的符号必须是前面所述的四种基本符号和附加符号;
- 数据流图的主图(顶层)必须含有前面所述的四种符号,缺一不可;
- 数据流图主图上数据流必须封闭在外部实体之间。(外部实体可以是一个,也可以是多个);
- 加工(变换数据处理)至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果;
- 任何一个数据流子图必须与他父图上的一个加工相对应,父图中有几个加工,就可能有几张子图,两者的输入数据流和输出数据流必须一致,即所谓“平衡”;
- 图上的每个元素都必须有名字(流向数据存储或从数据存储流出的数据流除外)。
画数据流图的步骤 :
第一步,先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了;
第二步,找出外部实体的输入和输出数据流;
第三步,在图的边上画出系统的外部实体;
第四步,从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭;
第五步,按照上述原则进行检查和修改。
最后按照上述步骤画出所有子图。
分层的DFD图,一般分为顶层、中间层、底层。层次编号是按顶层、1层、2层……次序编排的。而顶层、1层图只有一张
子图的编号就是父图中相应加工的编号
子图的所有输入数据流必须是父图中相应加工的输入,子图的所有输出数据流必须是父图中相应加工的输出。
例:高考录取统分子系统
功能如下:(1)计算标准分——根据考生原始分计算考生标准分,存入考生分数文件 ;(2)计算录取线分——根据标准分和招生计划文件中的招生人数,计算录取线分,存入录取线文件。
- 源点或者终点:学生。
- 处理:计算标准分、计算录取线分
- 数据存储:考生分数文件、招生计划文件、录取线文件
- 数据流:原始分、标准分、招生人数、录取线分
数据流图作用:作为交流信息工具、分析和设计物理系统工具
数据字典
数据字典(Data Dictionary,DD)是关于数据的信息的集合,也就是对数据流图中所包含元素的定义的集合。
数据流图和数据字典共同构成系统的逻辑模型。
主要作用是供人查阅,以一种精确的、无二义性的说明为系统的分析、设计与维护提供有关元素的一致的定义和详细的描述。数据流图和数据字典共同构成了系统的逻辑模型。数据字典是为了分析人员查找数据流图中有关名字的详细定义而服务的。把所有条目按一定次序排列起来。
数据字典的内容:
一般来说,数据字典的内容应有4类条目的定义组成:数据流、数据流分量(数据基本项)、数据存储(文件)、加工(处理)
其中:数据流分量是组成数据流和数据存储的最小单位项;
数据字典的使用符号:
= 表示被定义为或等价于 或由……组成。
+ 表示“与”(和),用来连接两个数据元素;
例:X=a+b 表示X被定义为a和b组成。
[…|…] 表示“或”,对[ ]中列举的数据元素可任选其中某一项;
例:X=[a|d] 表示X由a或d组成。
{…} 表示“重复”,对{…}中内容可以重复使用;
例:X={a} 表示X由零个或n个a组成。
m{…|…}n 或者{…}或者{…} 表示{…}中内容至少出现m次,最多出现n次。其中m,n为重复次数的上、下限。
例:X=2{B}6 或者X={B} 或者X={B} 表示X中至少出现2次B,最多出现6次B。
(…) 表示“可选”,对(…)中的内容可选、可不选;
1)数据项也称数据流分量,具有独立逻辑含义的最小数据单位。在数据字典中对其定义包括:
数据项的名称、编号、别名、简述;数据项的取值范围;数据项的长度。
例:数据项定义
数据项编号:A03-04
数据项名称:库存量
别 名:数量
简 述:某种配件的库存数量
长 度:6个字节
取 值 范围:0-999999
2)数据流表明系统中数据的逻辑流向,可以是数据项或数据结构。
包括:数据流的名称及编号;简述;数据流的来源;数据流的去向;数据流的组成;数据流的流通量;高峰期流通量。
例:数据流定义
编 号:D03-08
数据流名称:发货单
简 述:销售科为用户开出的发货单
数据流来源: “开发货单”处理功能
数据流去向: 数据存储“订货单存档”
数据流组成:发货单数据结构
流 通 量:150份/天
高峰流通量:70份/每天上午9:00-11:00
3)处理逻辑(加工):仅对数据流程图(DFD)中最底层的处理逻辑加以说明。
包括:处理逻辑名称及编号;简述;输入 ; 处理过程;输出;处理频率。
例:处理逻辑定义
处理逻辑编号:P03-01;
处理逻辑名称:验收订货单
简述:确定用户的订货单是否填写正确
输入的数据流:订货单,来源:外部实体“用户”;
处理:检验定货单数据,查明是否符合供货范围
输出的数据流:合格的订货单,去向:处理逻辑
“确定发货量”;不合格的订货单,去向:外部项“用户”
处理频率:50次/天
4)数据存储:数据流的暂停或永久保存的地方
包括:数据存储的编号;名称;简述;组成;关键字,相关的处理
例:数据存储定义
数据存储编号:F03—08
数据存储名称:库存账
简 述:存放配件的历年库存和单价
数据存储组成:配件编号 + 配件名称 + 单价+
库存量 + 备注
关 键 字:配件编号
相关联的处理:P2(“确定发货量”), P3(“开发货单、修改库存”)
加工逻辑的描述
加工逻辑也称为“小说明”,是对数据流图中每个加工所作的说明。
描述加工逻辑一般用结构化语言、判定表和判定树。
- 结构化语言介于自然语言与程序设计语言之间的语言;
例3-5 某数据流图中有“下岗职工重新分配工作”的加工,指的是重新分配工作时,要根据下岗职工的年龄,文化程度,性别等情况分配不同的工作。如果年龄在25岁以下者,初中文化程度脱产学习,高中文化程度当电工;年龄在25岁至40岁之间者,中学文化程度男性当钳工,女性当车工,大学文化程度的当技术员。年龄在40岁至50岁之间者,中学文化程度当交通协管员,大学文化程度当技术员。用结构化语言编写该加工的逻辑说明。
If 年龄〈=25 then
if 文化程度=初中 then 脱产学习 endif
if 文化程度=高中 then 电工 endif
endif
if 25〈年龄〈=40 then
if 文化程度=中学 then
if 性别=男 then 钳工
else 车工
endif
endif
if 文化程度=大学 then 技术员 endif
endif
if 40〈年龄〈=50 then
if 文化程度=中学 then 交通协管员 endif
if 文化程度=大学 then 技术员 endif
endif
- 一张判定表由4部分组成:
左上部列出所有条件;
左下部是所有可能做的动作;
右上部是表示各种条件组合的一个矩阵;
右下部是和每种条件组合相对应的动作。
例:若年交易额4万元以上,且最近3个月无欠款的顾客,可享受10%的折扣;若近3个月有欠款,是本公司5年以上老顾客,可享受5%的折扣;若不是老顾客,只有2%的折扣;年订货量不足4万元者无折扣。
3. 判定树
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系;
多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。
判定树的左边为树根,从左向右依次排列各条件,左边的条件比右边的优先考虑。根据每个条件的取值不同,树可以产生很多分支,各分支的最右端(即树梢)为不同的条件取值状态下采取的行动。
需求分析图形工具
层次方框图、Warnier图和IPO图
例:层次方框图
例:Warnier图:
例:IPO图
需求规格说明书的撰写
需求规格说明书的主要内容应该包括以下几项:
1.引言:编写目的、项目背景、定义、参考资料;
2.任务概述:目标、运行环境、条件与约束;
3.数据描述:静态数据、动态数据、数据库描述、数据字典等
4.功能需求:功能划分、功能描述;
5.性能需求:数据精确度、时间特性、适应性;
6.运行需求:用户界面、硬件接口、软件接口、故障处理;
7.其它需求:包括可使用性、安全保密性、可维护性和可移植性等;