分析是系统化使用信息,对一个问题的估算。结构化分析方法是进行这一估算的思维工具。
软件系统/产品的需求工作中,通常面临三大挑战:
(1)问题空间理解
(2)人与人之间的通信
(3)需求的变化性
为了应对以上三大挑战,支持需求工作目标的实现,一种好的需求技术应具有以下基本特征:
(1)提供方便通信的机制
(2)鼓励需求分析人员使用问题空间的术语思考问题,编写文档;
(3)提供定义系统边界的方法;
(4)提供支持抽象的基本机制;
(5)为需求分析人员提供多种可供选择的方案;
(6)提供特定的技术,适应需求的变化等。
结构化方法:结构化分析方法、结构化设计方法、结构化程序设计方法
一般意义上来说,分析是针对一个问题,系统化地使用信息对该问题的一个估算。可见,就软件需求分析而言,其目标是给出“系统必须做什么”的一个估算,即需求规格说明-以一种系统化的形式,准确地表达用户的需求,其中应不存在二义性和不一致性等问题。
4.1 基本术语
数据:计算机领域中,可以把数据定义为客观事物的一种表示。
数据流:在结构化分析方法中,数据流是数据的流动。
——>
加工:对数据进行变换的单元,即它接受输入的数据,对其进行处理,并产生输出。
O
数据存储:数据的静态结构
=
数据源:数据流的起点
数据潭:数据流的归宿地
均用矩形表示
4.2 模型表示
需求分析的首要任务是建立系统功能模型,为此机构化分析方法给出一种表达功能模型的工具,即数据流图(dataflow diagram),简称DFD图
DFD图是一种描述数据变换的图形化工具,其中包含的元素可以是数据流、数据存储、加工、数据源和数据潭等。
4.3 建模过程
1. 第一步:建立系统环境图,确定系统语境
2.第二步,自顶向下,逐步求精,建立系统的层次数据流图
除了顶层数据流图外,其它各层数据流图都是某一父图的子图,这些数据流图统称为数据流子图统称为数据流子图或简称为子图。
(1)顶层数据流图以及其中唯一加工均不必编号
(2)由于0层通常只有一个子图,因此该子图的层号为0,而其中每一加工的编号分别为:0.1,0.2,0.3,...
由“父图”生成“子图”的一般步骤如下:
a. 将“父图”的每一加工按功能分解为若干个子加工——子功能。
b. 将“父图”的输入流和输出流“分派”到相关的子加工。
c. 在各加工之间建立合理的关联,必要时引入数据存储,使之形成一个“有机的”整体,如图:
需求建模的步骤还包括:定义数据字典,用于表达系统中数据结构;给出加工小说明,用于表达每个加工输入与输出之间的逻辑关系。
3. 第三步:定义数据字典
依据系统的数据流图,定义其中包含的所有数据流和数据存储的结构,直到给出构成以上数据的各数据项的基本数据类型。
所有的客体均可用三种基本结构表示:顺序、选择和重复
结构化分析方法引入了三个结构符:+、|、{}
4. 第四步:描述加工
依据系统的数据流图,给出其中每一加工的小说明。
(1)结构化自然语言
虽然没有形式语言那样严格,但具有自然语言简单易懂的特点,同时又避免了自然语言结构松散的缺点。
结构化自然语言的语法通常分为内外两层,外层语法描述操作的控制结构,如顺序、选择、循环等,这些控制结构将加工中的个操作连接起来。
(2)判定表
判定表是用以描述加工的一种工具,通常用例描述一些不易用自然语言表达清楚或需要很大篇幅才能表达清楚的加工。
(3)判定树
判定树也是一种描述加工的工具。
4.4 实例研究
1. 图书管理系统的需求陈述
图书管理系统旨在用计算机对图形进行管理,主要涉及5个方面:新书入库、读者借书、图书注销以及查询某位读者的借书情况、某种图书和整个图书的库存情况
2. 系统功能模型的建立
(1)顶层数据流图的建立
(2)自顶向下,逐层分解
3. 建立系统的数据字典
4. 给出加工小说明
4.5 应用中应注意的问题
(1)模型平衡问题
a. 系统DFD中每个数据流和数据存储都要在数据字典中予以定义,并且数据名一致;
b. 系统DFD中最底层的加工必须在小说明中予以描述,并且加工名一致;
c. 父图中某加工的输入输出(数据流)和分解这个加工的子图的输入输出(数据流)必须完全一致,特别是保持顶层输入数据流和输出数据流在这个数上、在标识上均是一样的
d. 在加工小说明中,所使用的数据流必须是在数据字典中定义的,并且名字一致
(2)信息复杂性控制问题
a. 上层数据流可以打包
b. 为了便于人的理解,把一副图中的图元个数尽量控制在7+-2个以内
c.检查与每个加工相关的数据流,是否有着太多的输入/输出数据流,并寻找可降低该加工接口复杂性的、对数据流进行划分的方法。
d.分析数据内容,确定是否所有的输入信息都用于产出输出信息;相应地,由一个加工产生的所有信息是否都能由进入该加工的信息导出。
根据以上关于结构化分析方法的介绍和实例研究,可以得出:
a.该方法看待客观世界的基本观点是:信息系统是由一些信息流构成的,其功能表现为信息在不断的流动,并经过一系列的变换,最终产生人们需要的结果。
b. 为了支持系统分析员描述系统的组成成分,规约系统功能,结构化方法基于“抽象”这一软件设计基本原理,通过给出数据流概念,支持进行数据抽象;通过给出数据存储概念,支持对系统中数据结构的抽象;通过给出加工概念,支持系统功能的抽象。
c.为了使系统分析员能够清晰地定义系统边界,同样基于抽象这一原理,给出了数据源和数据潭这两个概念,支持系统语境的定义。
d. 为了控制系统建模的复杂性,基于逐步求精这一软件设计基本原理,给出了建模步骤,即在建立系统环境图的基础上,自顶向下逐层分解。
e.为了支持准确表达系统功能模型,给出了相应一组模型表达工具
4.6 需求分析的输出
一旦得到了系统功能模型,就可以基于该模型所表达的系统功能需求来进一步规约其他需求,例如性能需求、外部接口需求、设计约束和质量属性需求等,形成如下结构的系统需求规格说明书。
需求规格说明书是需求分析阶段产生的一份最重要的文档,它以一种一致的、无二义的方式准确表达用户的需求。
4.7需求验证
需求中发现的错误类型
验证需求规格说明是否满足四个性质,即重要性和稳定性程度、可修改性、完整性和一致性
在软件整个开发过程中,发现错误的方法如