《《软件工程》-曹哲-电子教案 第05章》由会员分享,可在线阅读,更多相关《《软件工程》-曹哲-电子教案 第05章(40页珍藏版)》请在金锄头文库上搜索。
1、软件工程,主编 曹哲 高诚 中国水利水电出版社,ZLL,,第5章 面向数据流的分析方法,面向数据流的分析方法(dataflow-oriented analysis method)与面向数据、面向对象的分析方法,都是需求建模方法。它们均有一组规范的语言表达机制,用于需求分析人员表达用户需求、构造软件系统模型。此外,它们还含有一些规则和经验知识,指导分析人员提取需求信息,促进用户需求精确化、全面化和一致化。 面向数据流的分析方法是结构化分析方法系列中的一支,具有明显的结构化特征。结构化分析方法的雏形出现于20世纪60年代后期。但是,直到1979年才由DeMarco将其作为一种需求分析方法正式提出。
2、由此,结构化分析方法得到了迅速发展和广泛应用。 本章主要介绍广为使用的数据流方法,以及需求分析CASE工具。,ZLL,,5.1 数据流图与数据字典,一个基于计算机的信息处理系统由数据流和一系列的转换构成,而这些转换将输入数据流变换为输出数据流。 数据流图就是用来刻画数据流和转换的信息系统建模技术。它用简单的图形记号分别表示数据流、转换、数据源以及外部实体,如下图所示。,ZLL,,数据流图的图形记号,外部实体,位于软件系统边界之外 的信息生产者或消费者,转换,转换数据流的处理过程, 又称泡(bubble),数据源,数据流,为一个或多个转换提供数据源或数据 存储服务的缓冲区、文件或数据库,在转换之
3、间有向流动的 数据项或数据项集合,“与”,即同时输入/出; + “或”,即至少一项输入/出; “异或”,即非同时输入/出,*,ZLL,,数据流图,数据流图提供了层次结构,让分析人员能够方便地表示任意抽象级别上的信息系统或其子系统,并支持问题分解、逐步求精的分析方法。 初始时,整个信息处理系统可以用图5-1-2所示的顶级(第0级)数据流图表示。,ZLL,,“家庭保安系统”顶级数据流图,警报类别,显示信息,电话拨号音频,传感数据,用户命令,家庭保 安系统,控制面板,传感器,显示器,电话机,警报器,ZLL,,随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列相互关联的数据流和子转换
4、,如图5-1-3所示。在数据流方法中,对数据(数据流)的精化是伴随着对转换的逐步精化而同步进行的。,Z2,Y2,X2,N1,M1,D1,D1,C1,C1,E1,E1,B0,A0,A0,F1,F3,F,F2,F4,F5,F41,F42,F43,F44,B0,第0级,第1级,第2级,数据流图的精化与层间平衡,ZLL,,建立数据流模型要遵循以下的原则,1每个加工至少应有一个输入数据流(反映被处理数据的来源)和一个输出数据流(反映加工的结果)。 2数据流图中各构成元素的名称必须具有明确的含义且能够代表对应元素的内容或功能。 3对某个加工进行细化生成的下层数据流图,称为其上层图的子图。应保证分层数据流图
5、中任意对应的父图和子图的输入/输出数据流保持一致。 4应按照层次给每个加工编号,用于表明该加工所处的层次及上、下层的父图与子图的关系。编号的规则为:顶层加工不用编号;第一层加工的编号为1,2,n。第二层加工的编号为11,12,21,22,n1,n2,等,以此类推。,ZLL,,建立数据流模型要遵循以下的原则,5在父图中不要出现子图中涉及的局部数据存储文件。通常除底层数据流图中需表明所有数据存储外,为保持画面整洁,各中间层数据流图只需显示处于加工之间的接口文件即可。 6数据流图只能由四种基本符号组成,是实际业务流程的客观映象,用于说明系统应该“做什么”,而不需要指明系统“如何做”。 7数据流图的分
6、解速度应保持适中。通常一个加工每次可分解为24个子加工,最多不要超过七个,否则会增加用户的理解难度。同时要注意,逐层精化必须适可而止。 8 如果为了便于数据流图在计算机上的输入和输出,应免除斜线、弧线、圆等符号。,ZLL,,数据字典,数据流图机制没有描述数据流的内容。数据流图必须与描述并组织数据条目的数据字典配套使用。 数据字典中的基本符号及其含义,ZLL,,数据字典中每一数据条目包含的内容,1数据流图中标识数据流、数据源或外部实体的名称与别名; 2数据类型; 3所有以它作为输入流或输出流的转换的列表; 4如何使用该数据条目的简要说明; 5数据条目的解释性说明; 6其他补充说明,例如取值范围与
7、缺省值有关的设计约束等。,ZLL,,支持数据流分析的CASE工具具备数据字典管理功能包括:,1一般性检查。例如:自动进行重名检查,可避免数据流图中不一致的数据定义。 2可根据已有的数据流图生成相关转换的列表。并且,随着数据流图的进化,可自动修改该列表,以便数据字典和数据流图在任何时刻都保持一致。 3自动完成有关数据条目的各种查询。例如:该数据条目在何处使用?修改某一部分数据流图将会影响哪些数据条目?修改某数据条目又会造成哪些影响?这将有助于分析人员在需求模型的进化过程中维持模型的一致性。,ZLL,,数据字典,数据条目的定义必须遵循以下原则: 精确、 简洁, 能为用户方和软件开发方共同理解。 例
8、如,可以使用形式语言中的语法定义机制 描述数 据条目的内容。原子语法成 分则用简单明了的自然语言予以描述。,ZLL,,数据字典举例,家庭保安系统中的“电话号码”数据条目可以定义如下: 电话号码分机号|外线号码 分机号1816 | 1817 | | 1858 外线号码9 +(市话号码|长话号码) 长话号码0 +(区号+市话号码) 区号* 任何长度为3的数字串* 市话号码局号+分局号 局号395 | 396 | 397 | 303 | 304 | 305 分局号* 任何长度为4的数字串*,ZLL,,数据流图与数据字典,利用数据字典可以对数据流图中的数据流、数据源以及外部实体进行描述、组织和管理。
9、对于转换,也需要一种比图形记号更为详尽的表示机制,这就是结构化的文字描述。分析人员可以在数据流图的任一转换上附加一段文字,用以说明转换的功能、性能要求及设计约束等,这种说明应尽可能简洁、清晰、易于理解。,ZLL,,5.2 实体-关系图,在数据密集型应用问题中,对复杂数据及数据之间复杂关系的分析和建模将成为需求分析的重要任务。 实体-关系图在数据流分析方法中适合于复杂数据建模的工具。 5.2.1 数据对象、属性与关系 数据对象:是现实世界中实体的数据表现; 是省略了功能和行为的实体。 数据源 ; 数据对象包括: 外部实体的数据部分 ; 数据流的内容。,ZLL,,5.2.1 数据对象、属性与关系,
10、数据对象由其属性刻画。通常属性包括: 1命名性属性:对数据对象的实例命名,必含有一个或一组关键属性,以便唯一标识数据对象的实例。 2描述性属性:对数据对象实例的性质进行刻画。 3引用性属性:将自身与其他数据对象的实例关联起来。 一般而言,现实世界中任何给定实体都具有许多属性,分析人员应当并且只能考虑与应用问题有关的属性。例如,在汽车销售管理问题中,汽车的属性可能有:制造商、型号、标识码、车体类型、颜色和买主。,ZLL,,5.2.1 数据对象、属性与关系,应用问题中的任何数据对象都不是孤立的,它们与其他数据对象一定存在各种形式的关联。 例如,在汽车销售管理问题中,“制造商”与“汽车”之间存在“生
11、产”关系,“购车者”与“汽车”之间存在“购买”关系。 当然,关系的命名及内涵因具体问题而异。分析人员必须善于剔除与应用问题无关的关系。 基于数据对象、属性与关系,分析人员可以为应用问题建立数据模型。,ZLL,,5.2.1 数据对象、属性与关系,建立数据模型的规范化规则:确保一致性并消除冗余 1数据对象的任何实例对每个属性必须有且仅有 一个属性值。 2属性是原子数据项,不能包含内部数据结构。 3如果数据对象的关键属性多于一个,那么其他 的非关键属性必须表示整个数据对象而不是部 分关键属性的特征。 4所有的非关键属性必须表示整个对象而不是部 分属性的特征。 例如,在“汽车”数据对象中增加“经销商”
12、属性并将其与标识码一起作为关键属性。如再添加“经销商地址”属性就违背了规则3。因其仅仅是“经销商”的特征,它与汽车的“标识码”无关。 例如,在“汽车”数据对象中,增加“油漆名称”属性,就违背了规则4,因为它仅仅与“颜色”有关,而不是整个“汽车”的特征。,ZLL,,5.2.2 实体-关系图,实体-关系(Entity-Relation)图简称E-R图,是表示数据对象及其之间关系的图形语言机制。 数据对象(实体)用长方形、关系用菱形、属性用椭圆表示。数据对象之间数量上的对应关系的表示如下图所示:,0 : 1 1 : 1 0 : 多 1 : 多 为了便于区分,在E-R模型中的实体、关系和属 性都应在对
13、应的框中写上各自的名字。,ZLL,,如图所示,实体“教师”旁有两条竖线,靠近实体“教师”的竖线代表了“1位教师”; 另一条竖线代表了“必须”由教师来教课程。另一个实体“课程”旁有多分支线和圆圈, 多分支线代表了“多”门课程,圆圈代表了“可以教也可以不教”课程。 也就是说一个教师可以教多门课程,也可以不教课程;但是,课程必须由教师来教。,5.2.2 实体-关系图,ZLL,,实体-关系图实例,制造商,生产,经销商,汽车,经销,存储,标识码,颜色,型号,制造商,车体类型,买主,5.2.2 实体-关系图,ZLL,,5.3 基于数据流的分析方法 5.3.1 创建数据流模型,数据流图是目标软件系统中各个处
14、理子功能以及它们之间的数据流动的图形表示。数据流图的精化过程实际上是处理子功能和数据流的细化过程。随着这一过程的进行,用户需求逐步精确化、一致化和完备化。 创建用户需求的数据流模型应遵循以下5条规则: 1)首先建立顶级数据流图,其中只含有一个代表目标软件系统整体处理功能的转换。 根据软件系统与外部环境的关系确定顶级数据流图中的外部实体以及它们与软件系统之间的数据流。,ZLL,,“家庭保安系统”顶级数据流图,ZLL,,创建数据流模型的5条规则,2)对用户需求的文字描述进行语法分析,其中的名词和名词短语构成潜在的外部实体、数据源或数据流,动词构成潜在的处理功能。 结合分析人员对问题域和用户需求的理解,确定软件系统的主要功能以及它们之间的数据流,产生“家庭保安系统”1级数据流图如图5-3-1所示。,ZLL,,“家庭保安系统”1级数据流图,警报类别,电话拨 号音频,传感信息,配置数据,传感数据,配置数据,原口令,口令有效/ 口令无效,口令,配置数据