面向数据流的分析方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
外部
实体 位于软件系统边界之外的信息生产者或消费者
转换
变换数据流的处理过程,又称泡(bubble ) 为一个或多个转换提供数据源或数据存储服务的缓冲区、文件或数据库 数据存储
在转换之间定向流动的数据项或数据项集合 第5章 面向数据流的分析方法
面向数据流的分析方法(dataflow-oriented analysis method )与面向对象、面向数据的分析方法,都是需求建模方法。它们均有一组规范的语言表达机制,需求分析人员用来表达用户需求、构造软件系统模型。此外,它们还含有一些规则和经验知识,指导分析人员提取需求信息,促进用户需求精确化、完全化和一致化。
面向数据流的分析方法是结构化分析方法系列中的一支,具有明显的结构化特征。结构化分析方法的雏形出现于20世纪60年代后期。但是,直到1979年才由DeMarco 将其作为一种需求分析方法正式提出。由此,结构化分析方法得到了迅速发展和广泛应用。 本章主要介绍广为使用的面向数据流的分析方法及其需求分析CASE 工具。
5.1 数据流图与数据字典
一个基于计算机的信息处理系统就是对数据流进行一系列加工的处理过程,而这些加工将输入数据流变换为输出数据流。数据流图就是用来刻画数据流和加工的信息系统建模技术。数据字典是与数据流图配套使用的,用来定义系统中数据元素的有机集合体。
5.1.1 数据流图
数据流图(Data Flow Diagram ,DFD )描述输入数据流到输出数据流的转换(即加工),用于对系统的功能建模。
1.数据流图的基本图形元素
数据流图中的基本图形元素包括:数据流、转换、数据存储以及外部实体,如图5-1所示。数据流、转换、数据存储用于构建软件系统内部的数据处理模型;外部实体表示存在于系统边界之外的对象,用来帮助我们理解软件系统数据的来源和去向。
图5-1 数据流图的基本图形元素 需要说明的是,DFD 图形元素还可以用其他描述符号来表示,如用圆角矩形表示转换,用开放箭头表示数据流等。
软件工程
84
(1)外部实体。外部实体通常是指存在于软件系统之外的人员或组织,表示软件系统数据的来源和去向。例如,在考务处理系统中,考生向系统提供报名单,所以考生是考务处理系统的一个外部实体;而系统要将考试成绩的统计分析传递给考试中心,考试中心也是一个外部实体。
(2)转换。转换描述了输入数据流到输出数据流的变换,也就是将输入数据流加工成输出数据流。每个转换用一个定义明确的名字标识。一个转换可以有多个输入或输出数据流,但至少要有一个输入数据流和一个输出数据流。例如。考务处理系统中有审定合格者、编制准考证和统计成绩等转换。
一个转换可以代表一系列程序、单个程序或者程序的一个模块;它甚至可以代表目视检查数据正确性等人工处理过程。
(3)数据流。数据流由一组固定成分的数据组成。例如,考务处理系统向考生送出的准考证由姓名、考场、考号、考试时间和考试科目等数据组成。
DFD中的每个数据流用一个定义明确的名字标识。对于流入或流出数据存储的数据流,由于代表了数据存储的一个有效内容,所以不必为其命名。
注意,数据流与程序流程图中用箭头表示的控制流有着本质不同,千万不要混淆。熟悉程序流程图的初学者在画数据流图时,往往试图在数据流图中表现分支条件或循环,殊不知这样做将造成混乱,导致画不出正确的数据流图。在数据流图中应该描绘所有可能的数据流向,而不是描绘出现某个数据流的条件。
(4)数据存储。在软件系统中常常把某些信息保存起来供以后使用,这在DFD中用数据存储来表示。例如,在考务处理系统中,考生名册要随着报名的过程不断补充。因此,考生名册可以作为一个数据存储。
DFD中的每个数据存储用一个定义明确的名字标识。可以有流入数据流,代表写操作;也可以有流出数据流,代表读操作。
一个数据存储可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等;数据可以存储在磁盘、主存及其他任何介质上(包括人脑)。
数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流则是处于运动中的数据。
2.绘制数据流图
(1)顶级DFD。顶级数据流图只有一个转换,代表整个软件系统,主要描述了软件系统与外界(外部实体)之间的数据流。例如,图5-2是“家庭保安系统”的顶级数据流图。Array
图5-2 “家庭保安系统”顶级数据流图
第5章 面向数据流的分析方法 85
(2)逐层分解。数据流图提供了层次结构,让分析人员能够方便地表示任意抽象级别上的信息系统或其子系统,并支持问题分解、逐步求精的分析方法,充分体现了分解和抽象的原则。
初始时,整个信息处理系统可以用图5-2所示的顶级(第0级)数据流图表示。随着需求分析活动的逐渐深入,较高抽象级别上的复杂加工可以精化为一系列相互关联的数据流和子加工,如图5-3所示。这种自上向下、逐层分解的过程一直进行到所有的加工都可以清晰、明确的定义为止,从而构成了整套分层数据流图。
图5-3 数据流图的精化与层间平衡 在数据流方法中,对数据(数据流)的精化是伴随着对加工的逐步精化而同步进行的。
(3)原则。建立数据流模型要遵循以下原则。
1)每个加工至少应有一个输入数据流(反映被处理数据的来源)和一个输出数据流(反映加工的结果)。
2)数据流图中各构成元素的名称必须具有明确的含义且能够代表对应元素的内容或功能。
3)对数据流图中某个加工进行细化生成的下层数据流图,称为其上层图的子图。应保证分层数据流图中任意对应的父图和子图的输入/输出数据流的一致性,如图5-3所示。
4)在数据流图中,应按照层次给每个加工编号,用于表明该加工所处的层次及上下层的父图与子图的关系。编号的规则为:顶层加工不用编号;第一层加工的编号为1,2,…,n 。第二层加工的编号为11,12,…,21,22,…,n1,n2,…,等,依此类推。
5)在父图中不要出现子图中涉及的局部数据存储文件。通常除底层数据流图中需表明所有数据存储外,为保持画面整洁,各中间层数据流图只需显示处于加工之间的接口文件即可。
6)数据流图只能由4种基本符号组成,是实际业务流程的客观映像,用于说明系统应该“做什么”,而不需要指明系统“如何做”。
7)数据流图的分解速度应保持适中。通常一个加工每次可分解为2~4个子加工,最多不要超过7个,否则会增加用户理解的难度。同时要注意,逐层精化必须适可而止。
8)为了便于数据流图在计算机上的输入和输出,应避免使用斜线、弧线、圆等符号。 0级 1级 2级