《软件工程》-面向数据流的分析与设计方法.ppt_第1页
《软件工程》-面向数据流的分析与设计方法.ppt_第2页
《软件工程》-面向数据流的分析与设计方法.ppt_第3页
《软件工程》-面向数据流的分析与设计方法.ppt_第4页
《软件工程》-面向数据流的分析与设计方法.ppt_第5页
已阅读5页,还剩169页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

讲 课 人:刘 伟 电子邮件:bme_ 电 话办 公 室:教二南楼328室,软件工程,面向数据流的分析与设计方法,结构化的软件分析与设计方法 (面向数据流的分析与设计方法,etc.) 面向对象的软件分析与设计方法,面向数据流的分析方法(dataflow-oriented analysis method)与面向对象的分析方法,都是需求建模方法。它们均有一组规范的语言表达机制,用于需求分析人员表达用户需求、构造软件系统模型。 面向数据流的分析方法是结构化分析方法系列中的一支,具有明显的结构化特征。,结构化开发方法分为如下几个步骤: 结构化分析(软件分析)SA 结构化设计(总体设计、概要设计)SD 详细设计 面向过程的编码,结构化分析方法是一种基于功能分解的需求分析方法。 结构化分析方法是一种建模技术 模型的核心是数据词典,它描述了所有的在目标系统中使用的和生成的数据对象。并用数据流图表达需求。,方法特点,核心思想:自顶向下和逐步求精。 基本手段:分解和抽象。 分解:把大问题分割成若干小问题,然后分别解决。 抽象:略去细节,先考虑问题最本质的属性。 使用了描述需求说明书的几个规范工具。即数据流图、数据词典、小说明(加工逻辑的描述)等,使文档规范化。,自顶向下,逐步求精方法的优点,符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率 用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解 程序自顶向下,逐步细化,分解成一个树形结构。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成 每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查 有利于设计的分工和组织工作。,数据流图与数据字典,一个基于计算机的信息处理系统由数据流和一系列的转换构成,而这些转换将输入数据流变换为输出数据流。 数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。,在需求分析阶段,数据流(也称信息流)是系统分析的基础。所谓数据流,形象地说就是系统中“流动的数据结构”。数据流图(DFD,Data Flow Diagram)是描述软件系统中数据处理过程的一种有力的图形工具。,数据流图的图形记号,外部实体,位于软件系统边界之外的信息生产者或消费者,转换,转换数据流的处理过程,又称泡(bubble),为一个或多个转换提供数据源或数据存储服务的缓冲区、文件或数据库,在转换之间有向流动的数据项或数据项集合,“与”,即同时输入/出; + “或”,即至少一项输入/出; “异或”,即非同时输入/出。,*,“家庭保安系统”顶级数据流图,传感器,数据流图中的基本符号(另外的表示方法),1. 数据的源点或终点 数据的源点或终点用于反映数据流图与外部实体之间的联系,表示图中的输入数据来自哪里或处理结果送向何处。如下图中的人事部门、后勤部门是工资系统中数据的源点,而职工和银行则是工资系统中数据的终点。,工资计算系统的顶层(0层)数据流图,2. 数据流 数据流是数据在系统中(包括数据处理之间、数据处理和数据存储之间以及数据处理和数据的源点或终点之间)的传送通道,数据流符号的箭头指明了数据的流动方向。如上图中的出勤表、业绩表、水电扣款表、工资条及工资存款清单等均为数据流。,3. 加工 加工也称为数据处理,是对系统中的数据流进行的某些操作或变换。图中每个加工都要有对应的名称,最常见的名称是由一个表明具体动作的动词和一个表明处理对象的名词构成的,如计算应发工资、打印工资清单等。 4. 数据存储 在数据流图中用于保存数据的数据文件被称为数据存储,它可以是数据库文件或任何其他形式的数据组织。流向数据存储的数据流可理解为向文件写入数据或对文件进行查询,流出数据存储的数据流可理解为从文件中读取数据或得到查询结果。,在数据流图中,可以有两个以上的数据流进入同一个加工,也可以有两个以上的数据流从同一个加工中流出,这样的多个数据流之间往往存在一定的关系。为了表示这些数据流之间的关系,需要在数据流图中给这些数据流对应的加工加上一定的标记符号。在下表中列出了加工中常见的几种关系的表示方法。(表中以从加工流入或流出两个数据流为例)。,数据流与加工之间的关系,表 加工中常见关系的符号表示,数据流与加工之间的关系,按照结构化分析方法中“自顶向下,逐步分解”的思想,可以先将整个系统看作是一个加工,它的输入数据和输出数据表明了系统和外部环境的接口,从而首先画出系统的顶层数据流图。为了能够清楚地表明系统加工的详细过程,接着从顶层数据流图出发,逐层地对系统进行分解。每分解一次,系统中加工的数量就随之增加,每个加工的功能描述也越来越具体。重复这种分解,直至得到系统的底层数据流图。底层数据流图中的所有加工都应是不可再分解的、最简单的“原子加工”。,数据流模型的建立方法,数据流图,数据流图提供了层次结构,让分析人员能够方便地表示任意抽象级别上的信息系统或其子系统,并支持问题分解、逐步求精的分析方法。 初始时,整个信息处理系统可以用下图所示的顶级(第0级)数据流图表示。,“家庭保安系统”顶级数据流图1,传感器,随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列相互关联的数据流和子转换,如下图所示。在数据流方法中,对数据(数据流)的精化是伴随着对转换的逐步精化而同步进行的。,数据流图的精化与层间平衡,下面以某单位工资管理系统为例,来介绍一下分层数据流模型的建立方法。 1. 建立顶层数据流图 任何系统的顶层数据流图都只有一个,用于反映目标系统所要实现的功能及与外部环境的接口。顶层数据流图中只有一个代表整个系统的加工,数据的源点和终点对应着系统的外部实体,表明了系统输入数据的来源和输出数据的去向。工资管理系统的顶层数据流图如下图所示。,数据流图例子,图 工资计算系统的顶层(0层)数据流图,按照系统的功能,对顶层数据流图进行分解,生成第一层数据流图。如例子中的工资计算系统可划分为计算工资、打印工资清单和工资转存三个加工。其中,计算工资完成单位职工工资计算,生成工资清单的功能;打印工资清单完成工资条的打印功能;工资转存完成生成职工工资存款清单并将其发送到银行的功能。对划分得到的加工应进行编号,如下图。,2. 数据流图的分层细化,工资计算系统第一层数据流图,对第一层数据流图中的加工继续分解,则可得到第二层数据流图,如图 A 所示。对分解得到的加工进行编号,以反映出它与上层数据流图之间的关系,如对第一层数据流图中的计算工资分解得到的数据流图中的加工的编号分别为1.11.4。若数据流图中的加工还可继续细化,则重复以上分解过程,直到获得系统的底层数据流图。工资计算系统的第三层数据流图如图 B 所示。,图A 工资计算系统的第二层数据流图 (a) “计算工资”子数据流图;(b)“工资转存”子数据流图,图B 工资计算系统的第三层数据流图,建立数据流模型要遵循以下的原则,1每个加工至少应有一个输入数据流(反映被处理数据的来源)和一个输出数据流(反映加工的结果)。 2数据流图中各构成元素的名称必须具有明确的含义且能够代表对应元素的内容或功能。 3对某个加工进行细化生成的下层数据流图,称为其上层图的子图。应保证分层数据流图中任意对应的父图和子图的输入/输出数据流保持一致。 4应按照层次给每个加工编号,用于表明该加工所处的层次及上、下层的父图与子图的关系。编号的规则为:顶层加工不用编号;第一层加工的编号为1,2,n。第二层加工的编号为11,12,21,22,n1,n2,等,以此类推。,建立数据流模型要遵循以下的原则,5在父图中不要出现子图中涉及的局部数据存储文件。通常除底层数据流图中需表明所有数据存储外,为保持画面整洁,各中间层数据流图只需显示处于加工之间的接口文件即可。 6数据流图只能由四种基本符号组成,是实际业务流程的客观映象,用于说明系统应该“做什么”,而不需要指明系统“如何做”。 7数据流图的分解速度应保持适中。通常一个加工每次可分解为24个子加工,最多不要超过七个,否则会增加用户的理解难度。同时要注意,逐层精化必须适可而止。 8为了便于数据流图在计算机上的输入和输出,免去画斜线、弧线、圆等符号的麻烦,数据流图还有另一套表示符号,如下表所示。,表 数据流图的另一套表示符号,数据字典,面向数据流分析需要引进数据字典(DD),DD以一种准确、简洁的方式对DFD中数据流、外部实体、数据存储作说明,DD对DFD中的六类元素进行定义说明,按照元素不同,其中的数据条目内容也不相同,数据流 数据项(数据元素) 数据结构 数据存储 处理逻辑(基本加工) 外部实体,数据字典,数据字典的提出背景: 虽然数据流图能够形象、清晰地描述数据在系统中流动、加工、存储的情况,但数据流图中的许多构成元素,如数据流、数据存储、加工,仅依靠名称并不能反映其本质含义,因此必须对这些构成元素进行严格的定义。作为对数据流图的补充,数据字典(DD,Data Dictionary)能够准确地定义数据流图中各组成成分的具体含义,二者共同构成了系统的逻辑模型。,数据字典中的基本符号及其含义,示例, 12 () () 任何长度为3的数字串 444552 =任何长度为4的数字串,数据字典是关于数据流图中各种成分详细定义的信息集合,可将其按照说明对象的类型划分为四类条目,分别为数据流条目、数据项条目、数据文件条目和数据加工条目。,数据字典中的条目及说明格式,1. 数据流条目 数据流在数据流图中主要用于说明数据结构在系统中的作用和流动方向,因此数据流也被称作“流动的数据结构”。数据字典中数据流条目应包括以下几项主要内容:数据流名称、数据流别名、说明、数据流来源、数据流流向、数据流组成和数据流量等。,数据流名: 数据流别名: 说明:简要介绍作用即它产生的原因和结果。 数据流来源:即该数据流来自何方。 数据流去向:去向何处。 数据流组成:数据结构。 数据量流量:数据量、流通量。,数据流词条的描述示例:,数据流名:发票 说明:用作学生已付书款的依据 数据流来源:来自加工“审查并开发票” 数据流去向:流向加工“开领书单”。 数据流组成:学号+姓名+书号+单价总价+书费合计,数据流名称:出勤表 数据流别名:无 说明:由人事部门每月月底上报的职工考勤统计数字 数据流来源:人事部门 数据流流向:加工1.1.1(统计出勤、请假及旷工时数) 数据流组成:出勤表 = 年份+月份+职工号+出勤时数+病假时数+事假时数+旷工时数 数据流量:1份/月,工资系统中的出勤表数据流在数据字典中的条目描述为,数据流词条的描述示例2:,2. 数据项条目 数据流图中每个数据结构都是由若干个数据项构成的,数据项是加工中的最小单位,不可再分。数据字典的数据项条目中应包含的主要内容有:数据项名称、数据项别名、说明、类型、长度、取值范围及含义等。 例如:出勤表中的职工号数据项在数据字典中的条目描述为 数据项名称:职工号 数据项别名:employee_no 说明:本单位职工的惟一标识 类型:字符串 长度:6 取值范围及含义:12位(0099)为部门编号:36位(XX0001XX9999)为人员编号,3. 数据文件条目 数据文件是数据流图中数据结构的载体。数据字典的数据文件条目中应包含的主要内容有:数据文件名称、说明、数据文件组成、组织方式、存取方式、存取频率等。 例如:工资系统中的职工工资档案文件在数据字典中的条目描述为 数据文件名称:工资档案 说明:单位职工的基本工资、各项津贴及补贴信息 数据文件组成:职工号+国家工资+国家津贴+职务津贴+职龄津贴+交通补贴+部门补贴+其他补贴 组织方式:按职工号从小到大排列 存取方式:顺序 存取频率:1次/月,4. 数据加工条目 在数据流图中只简单给出了每个加工的名称,在数据字典中通过数据加工条目主要是要说明每个加工是用来“做什么”的。数据字典的数据加工条目中应包含的主要内容有: 数据加工名称、加工编号、说明、输入数据流、输出数据流、加工逻辑等。 例如:工资系统中的计算应发工资这个加工在数据字典中的条目描述为 数据加工名称:计算应发工资 加工编号:1.2,说明:根据职工的工资档案及本月奖金发放表数据计算每个职工的应发工资 输入数据流:奖金发放表及工资档案 输出数据流:应发工资表 加工逻辑:DO WHILE 工资档案文件指针未指向文件尾 从工资档案中取出当前职工工资的各项基本数据进行累加 在奖金发放表中按职工号查找到该职工的奖金数 对奖金数与工资基本数据的累加和进行求和得到该职工的应发工资数ENDDO,为了能够直观、明确地表达加工逻辑,经常采用结构化语言、判定树及判定表等三种描述方法。 1. 结构化语言 结构化语言是一种介于自然语言和形式化语言之间的半形式化语言,例如,上面对计算应发工资条目中加工逻辑的描述就是采用的结构化语言。它是在自然语言的基础上加入了一定的限制,通过使用有限的词汇和有限的语句来较为严格地描述加工逻辑。描述时可以使用的词汇包括:数据字典中定义的名字、基本控制结构中的关键词、自然语言中具有明确意义的动词和少量的自定义词汇等。尽量不使用形容词或副词,可以使用一些简单的算术或逻辑运算符。结构化语言中的三种基本结构的描述方法如下:,加工逻辑的描述,自然语言+结构化形式,结构化语言,例2: 请为下列DFD中的“审查并开发票”加工点写 加工说明,把学生学号和姓名写到发票上 按购书单上学生的年级和系、专业与班号 检索“各班学生用书表”文件,获得该生当年的书单 对 购书单上的每一书号 如果 书单上无此书号 则 把书号写到出错通知单上 否则 按书号检索 “教材存量表”文件, 从而获得该书的单价与库存量 如果 库存量 购书单的数量 则 将书号写到出错通知单上 否则 将书号、单价、数量、总价等项写入到发票上; 更新存书量,并写回“教材存量表” 文件; 累计书费合计 把书费合计写到发票上,对每张购书单,2. 判定表 提出背景:当某一加工的实现需要同时依赖多个逻辑条件的取值时,对加工逻辑的描述就会变得较为复杂,很难采用结构化语言清楚地将其描述出来,而采用判定表则能够完整且清晰地表达复杂的条件组合与由此产生的动作之间的对应关系。 通常把表中任意一个条件组合的特定取值及其相应要执行的动作称为规则。,判定表,下面以描述某单位工资档案管理系统中“职务津贴计算”加工逻辑为例说明判定表的写法。对应的判定表见下表。,“职务津贴计算”判定表,要生成上面的判定表,具体的步骤如下: (1) 确定规则的个数。例子中有两个条件,每个条件有三种取值, 条件1,职务:助工、工程师、高工 条件2,工龄: 20 故规则个数为 3 3 = 9。 (2) 列出所有的条件和动作。 (3) 列出所有的条件组合。 (4) 填写每种条件组合下对应的动作。 (5) 若表中存在不同规则对应相同动作且其条件组合存在某种关系时,需要对表进行必要的化简。,“基本奖金计算”判定树,3、判断树,判断树是判断表的图形形式,其适用场合与判断表相同,它与判定表的作用大致相同,但比判定表更加直观,更易于理解和掌握。,比较:判定树虽然形式上比判定表直观,但逻辑上没有判定表严格,用户在使用判定树时容易造成个别条件的遗漏。 实际工作中: 、对于顺序结构和循环结构采用结构化语言进行描述; 、对于存在多个条件组合的复杂判定问题采用判定表或判定树进行描述。,1. 建立数据字典的方法,数据字典的建立,数据字典的实现,2. 建立数据字典的原则 (1) 所有定义必须严密、精确,不能存在二义性。 (2) 书写格式应简洁且严格。 (3) 应可方便地实现对所需条目的按名查阅。 (4) 应便于修改和更新。,数据流图与数据字典,综上所述, 利用数据字典可以对数据流图中的数据流、数据源以及外部实体进行描述、组织和管理。 对于转换,也需要一种比图形记号更为详尽的表示机制,这就是结构化的文字描述。分析人员可以在数据流图的任一转换上附加一段文字,用以说明转换的功能、性能要求及设计约束等,这种说明应尽可能简洁、清晰、易于理解。,数据字典例子: (数据流),数据流名称:订票单 别名: 无 来源: 订票员 去向: 定票 数据流量: 200份/天 组成: 编号姓名+年龄身份证号电话 号码订票日期 目的地 ,数据字典例子: (数据项),数据项名称:航班号 别名: HBH 数据类型: 字符串 长度: 16位 取值范围及含义: 第1位: 进口/国产 第24位:类别 第57位:规格 第811位: 源机场编号 第1215位: 目的机场编号 ,数据字典例子: (数据存储),数据存储名称:航班目录 别名: 无 来源: 无 去向: 定票 组成: 航班号飞行日期载客量出发 地目的地票价 - 组织方式:索引文件,以航班号为关键字 ,数据字典例子: (处理逻辑),数据加工名称:定票 别名: 无 输入: 订票单 输出: 航班、费用 激发条件:接受到订票单 处理逻辑: if 单据订票单 then if 单据是否过期 then 是否有该航班,是否有机票 ,实例医院病房监护系统,监视病情,医院病房监护系统分层DFD图,顶级DFD,病员,护士,病员 监护 系统,病症,需求报告,病症报告,报警,采用通常的功能分解方法,按照“强内聚、松耦合”的原则逐个对处理功能进行精化;与此同时逐步完成对数据流的精化,并针对被精化的处理功能生成下一级数据流图。,医院病房监护系统分层DFD图,一级DFD,医院病房监护系统分层DFD图,二级DFD:对加工“中央监视”进行分解,精化过程中必须维持各级数据流图之间的数据流平衡。,精化过程应适可而止,避免涉及软件设计细节。一般说来,如果某子功能可以用一段简洁、精确的文字描述清楚,就无需进一步分解。,创建用户需求的数据流模型应遵循以下五条规则:,对于数据流图中不再分解的处理功能,分析人员要借助结构化自然语言对其功能进行精确、简洁的描述。 图中“中央监视”子功能分解出来的“计算超过极限值否”子功能可描述如下页:,过程规格说明举例 “计算超过极限值否”子功能,1参数:血压、体温、脉搏;类别:字符串 2处理步骤: 1)检查系统是否有参数值输入。若有,则验证输入值的有效性。如果有效,则从病员极限数据存储中取出相应的待比较值;否则无操作。 2)检查输入参数值与待比较值的大小。如果超过极限值,则产生报警信息,并且更新病员的记录;如果没有超过极限值,则只更新病员记录。 3约束条件:在上述1)、2)步骤中,通过时间控制参数的采集。,实体-关系图,为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,是按照用户观点对数据建立的模型。 数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。 数据对象、属性与关系 数据对象:是现实世界中实体的数据表现; 是省略了功能和行为的实体。 数据源 ; 数据对象包括: 外部实体的数据部分 ; 数据流的内容。,数据对象、属性与关系,数据对象由其属性刻画。一般而言,现实世界中任何给定实体都具有许多属性,分析人员应当并且只能考虑与应用问题有关的属性。例如,在汽车销售管理问题中,汽车的属性可能有:制造商、型号、标识码、车体类型、颜色和买主。,实体-关系图,实体-关系(Entity-Relation)图简称E-R图,是表示数据对象及其之间关系的图形语言机制。 数据对象(实体)用长方形、关系用菱形、属性用椭圆表示。数据对象之间数量上的对应关系的表示如下图所示:,0 : 1 1 : 1 0 : 多 1 : 多 为了便于区分,在E-R模型中的实体、关系和属 性都应在对应的框中写上各自的名字。,实体-关系图实例,制造商,生产,经销商,汽车,经销,存储,标识码,颜色,型号,制造商,车体类型,买主,面向数据流的设计方法,又称为结构化设计,即 SD 方法。该方法与结构化分析(SA)相衔接,构成完整的结构化分析与设计技术,是目前使用最广泛的方法之一。 SD 通常与 DFD 衔接起来使用。用 DFD 方法得到数据流图和数据字典描述的需求规格说明书。SD 方法则以数据流图为基础,按照一定的步骤将其映射为软件的模块结构。,软件设计的基本概念和原则,软件设计的重要作用: 软件设计处于软件工程过程中的技术核心位置,它将完成待建造软件的有意义的工程表示。,软件设计阶段的目标: 使用很多设计方法,产生数据设计、体系结构设计、接口设计和构件设计。为软件的编程阶段提供依据。,软件设计的依据: 系统分析 系统设计,数据 字典,实体 关系图,数据流图,状态变迁图,数据 对象 描述,加工规约,控制规约,构件设计,接口设计,体系结构设计,数据设计,软件设计原则, 设计视点不要局限在局部范围 设计是来源于分析模型的,是分析模型可跟踪的 设计应该尽量使用已有的模式,不应该总是从头开始 设计应尽可能模拟问题域的结构,缩短与现实问题的距离 设计应表现风格一致,应该有统一的规则和接口形式 设计应考虑可构造性 设计应考虑最恶略情况下的适应性,即健壮性 设计应避免考虑程序实现细节,因为它毕竟不是编码 应该根据质量度量标准来考虑设计 设计应注意对概念错误的评审,而避免过早注意细节,数据 字典,数据 流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,从分析模型导出设计模型,分析模型,设计模型,数据设计: 将分析信息模型转换成数据结构,来自于 实体关系图和数据字典,体系结构设计: 定义软件的主要结构元素、设计模式及应用约束(子系统的交互),接口设计: 描述软件内部、软件和协作系统之间的通信,数据流或控制流的特定行为,构件设计: 结构元素变换为软件过程的描述,来自于处理说明以及状态变换图,软件设计的4个活动,1. SC图(Structure Chart),(1)SC中的组成符号 SD方法在概要设计中的主要表达工具约定: 用矩形框表示模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。,SD方法在概要设计中的主要表达工具约定:,编辑学生记录,读学生记录,学生数据,无此学生,学号,不加区分的数据,数据信息,控制信息,SC中的四种模块,在系统结构图中的模块,传入模块 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。 传出模块 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。,变换模块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。 协调模块 对所有下属模块进行协调和管理的模块。,酒店管理信息系统功能结构图,客人登记,预定登记,客房处理,历史记录,客房查询,预定查询,餐桌安排,菜单作业,营业结帐,汇总打印,各类查询,初始设置,客帐处理,退房处理,夜审处理,客帐查询,报表打印,HIMS,客房管理子系统,收银管理子系统,餐饮管理子系统,大型零售商场管理信息系统功能结构图,TM M I S,系统维护,POS系统,零售实时系统,商品进货管理,商品批发管理,商品库存管理,商品及商品帐管理,顾客管理,连锁店管理,财务管理,人事工资管理,计划统计管理,经理查询,2.SC图中的模块调用 (1) 简单调用,A,C,B,X,Y,Z,Z,A,B,C,1,2,X,Y,Z,Z,1,2,(2)选择调用,A,C,B,D,A根据内 部判断决定是否调用B,A按另一判定结果选择调用C或D,(3)SC中的循环调用,A,B,C,A根据内在的循环重 复调用B、C等模块,2 .数据流图的类型与结构化设计方法(SD),面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法,映射,DFD (问题结构),软件系统的结构 (程序结构),系统结构特征可归纳为两种典型形式:,变换型结构 事务型结构 数据流图可分为两种类型: 变换型数据流 事务型数据流,(1)数据流图的类型,变换 中心,输入,输出,变换型 结构,事务 中心,接受 路径,动 作 路 径,基本模型 特征,事务型结构,由输入、变换中心和输出三部分组成,具有在多种事务中选择执行某类事务的能力,变换型 数据流 结构,传入,变换,传出,变换 中心,传入 部分,传出 部分,事务 分析,事务 中心,动作 1,动作 2,动作 3,接受,接受 部分,事务型 数据流 结构,变换型数据流举例,输入 信息,物理 输入,格式 检查,处理,显示,正确 信息,结果,物理 输出,数据,变换中心,逻辑 输入,逻辑 输出,传入部分,传出部分,特点:具有明确的传入、变换(或称主加 工) 和传出界面的DFD,变换型系统结构图,变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。 相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。,事务型系统结构图,它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。 在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。,事务型数据流图举例,A,B,E,H,O,M,I,D,C,N,L,F,G,确定DFD中是否含有事务流,T,事务,事务流: 沿多条路径之一触发的数据流,事务中心,动作路径,在一个大系统的DFD中,变换流和事务流可能是同时出现的,事务映射方法,事务映射方法,接收路径,C路径,B路径,A路径,C1,C2,C3,调度,事务控制,大型系统DFD中,变换型和事务型 结构往往共存:,T,事务中心,传入,变换,传出,(2) 面向数据流设计方法的设计步骤,精化DFD 确定DFD类型 把DFD映射到系统模块结构设计 出模块结构的上层 基于DFD逐步分解高层模块设计 出下层模块 根据模块独立性原理,精化模 块结构,面向数据流方法的设计过程,精化数据流图,区分事务中心 和数据接收路径,映射成变换结构,区分输入和 输出分支,映射成事务结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,详细设计,事务分析,变换分析,复查,事务,变换,流类型,SD方法的两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,初始的SC,主模块,输入模块,主加工模块,输入模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,变换分析方法由以下四步组成: 重画数据流图; 区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分; 进行一级分解,设计上层模块; 进行二级分解,设计输入、输出和中心变换部分的中、下层模块。,3. 变换分析设计方法,步骤: (1)区分传入、变换中心、传出部分,在 DFD 上标明分界线,变换分析设计方法步骤,确定DFD中是否含有变换流,输出,输入,变换,变换流: 具有明显的输入、变换(或加工)、输出分界的数据流图,变换映射方法,B,C,A,D,E,Q,P,R,W,U,V,a,b,c,e,d,r,p,u,w,v,变换中心,传入部分,传出部分,变换分析设计方法步骤,(2)第一级分解(建立初始SC框架) 设计顶层和第一层模块,变换映射方法,输出,输入,变换,控制模块,输入处理模块,输出处理模块,主要处理模块,第一级分解的方法,MC,MT,MA,ME,第一级分解后的SC,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变 换模块,第一级分解后的SC(另一种画法),MC,MA1,c,e,u,w,c,p,Q,P,R,e,p,r,r,w,u,w,传入分 支模块,中心加工分支模块,传出分 支模块,MA2,ME1,ME2,变换分析设计方法步骤,(3)第二级分解(分解SC各分支) 自顶向下分解,设计出每个分支的中、下层模块,传入分支的分解 (1),MA,C,B,A,b,a,c,E,D,d,e,c,e,传入分支的分解 (2),MA,Get C,b,a,c,Read D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read D,传出分支的分解,ME,W,Write V,u,u,w,u,v,v,v,Put U,U to V,ME,U,Write W,w,w,u,w,u,V,(1),(2),中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,评定 输出,配置信息,显示格式化,产生警告信号,读 传感器,拨打 电话,传感器状态,传感器ID类型,位置,传感器信息,警告类型,警告数据,电话号,配置数据,电话号信号,传感器ID类型,位置,SafeHome系统的监控传感器精化DFD(第二层),变换映射方法的例子,监控传感器精化DFD第三层向软件模块结构的映射,变换映射方法例子,配置信息,传感器 状态,传感器 ID设置,读 传感器,获得回应信息,证实警告条件,选择 电话号,连接 电话网 设置,产生拨号脉冲,格式化 显示,产生 显示,产生警告信号,监控 传感器执行,传感器 输入控制,警告 输出控制,警告 条件控制,传感器ID 类型位置,格式化 ID 类型位置,警告数据,警告类型,传感器 信息,电话号音,语音读 电话号,电话号,号码表,警告条件码 传感器ID 时间信息,一级因子化,监控 传感器执行,传感器 输入控制,警告 输出控制,警告 条件控制,获得 回应信息,读 传感器,证实 警告条件,选择 电话号,格式化 显示,产生 警告信号,连接电话网设置,产生 显示,产生 拨号脉冲,二级因子化,变换映射方法例子, 在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成 之后,才 能转向另 一个模块 的下层模 块的设计。, 在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。 使用“黑箱”技术: 在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。, 在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过10个,可设立中间层次。 如果出现了以下情况,就停止模块的功能分解: 当模块不能再细分为明显的子任务时; 当分解成用户提供的模块或程序库的子程序时; 当模块的界面是输入输出设备传送的信息时; 当模块不宜再分解得过小时。,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时 (有一个明显的事务中心),以采用事务分析方法为宜。,4.事务分析设计方法,事务分析,在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。 与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统结构图。,事务分析过程, 识别事务源 利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。, 规定适当的事务型结构 在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。 识别各种事务和它们定义的操作。 从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。, 注意利用公用模块 在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。 对每一事务,或对联系密切的一组事务,建立一个事务处理模块 如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。, 对事务处理模块规定它们全部的下层操作模块 对操作模块规定它们的全部细节模块 变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。,事务分析设计方法步骤:,(1)在DFD上确定事务中心、接收部分和发送部分。 (2)画出SC框架,把DFD上的三部分分别映射为事务 控制模块、接收模块和动作发送模块。 (3)分解细化接收分支和发送分支,完成初始SC。,结构图(SC)举例,医院管理系统,门诊 管理,药房 管理,药库 管理,病房 管理,财务 管理,处,方,挂号 处理,挂,号,费,总,计,挂 号 单,挂 号 费 总 计,出库 处理,进药 管理,病历 管理,处方 管理,常规 处理,用户命令交互子系统初始的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户 命令,读系统 数据,配置信息,显示信息 和状态,命令 分析处理,命令类型,建立配 置文件,原配置 数据,格式化 配置数据,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置 数据,格式化 配置数据,密码命令,开/关 命令,配置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户 命令,读系统 数据,配置信息,显示信息 和状态,命令 分析处理,命令类型,建立配 置文件,原配置 数据,格式化 配置数据,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置 数据,格式化 配置数据,密码命令,开/关 命令,配置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,事务流设计举例,I,M,L,N,A,B,C,D,F,E,G,事务中心,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,(主模块),事务加工模块,动作分支的典型结构,P,T 2,T 1,T i,A 2,D 2,A 1,D 1,A 3,A j,D k,事务层,操作层,细节层,处理层,主模块,操作 模块,细节 模块,事务加工 模块,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,动作1,动作n,.,细节模块1,细节模块2,.,(操作模块),(细节模块),事务型数据流图举例,I,M,L,N,O,A,B,C,D,F,E,G,H,事务流设计举例 (另一种画法),输入 A,XX系统,事务中心,A,L,M,A,G,D,B,C,F,E,输出 E、F、G,E、F、G,E、F、G,输出H,O,E、F、G,H,H,N,操作层,细节层,操作1,操作2,操作3,操作4,细节1,细节2,细节3,细节4,事务映射方法例子,SafeHome系统的用交互子系统DFD(第一层),控制面板,传感器,用户 交互 子系统,控制面板 显示,警告,电话线,用户命令 和数据,传感器 状态,显示信息,警告类型,电话号信号,配置 系统,监控 传感器,处理 口令,激活或失效 系统,显示 信息和 状态,传感器信息,配置信息,正确的ID信息,配置数据,配置数据,配置请求,启动停止,口令,激活/失效信息,事务映射方法例子,用交互子系统DFD(第二层),读用户命令,请求命令处理,读系统数据,建立配置文件,激活或失效 系统,读 口令,用文件比较 口令,产生 无效的 信息,显示 信息和状态,配置信息,用户命令,命令类型,启动停止,A/D信息,配置数据,配置,系统参数 和数据,配置数据,口令,输入口令,4位数字,无效的 口令,有效口令,配置数据,显示信息,“再试”提示,呈现典型的变换流形式,用户交互 执行,事务映射方法例子,用交互子系统DFD第二层向软件模块结构的映射,读 用户命令,请求用户命令处理,系统配置 控制,激活/失效 系统,口令处理 控制,读 系统数据,建立 配置文件,显示信息 和状态,读口令,用文件比较口令,口令输出 控制,产生 无效信息,一级因子化,因子化并精化,3,4,1,2,6,7,5,8,10,9,11,变换中心,传入,传出,事务型,(3) 混合流设计举例,混合流设计举例,T,事务 中心,传入,变换,传出,接收部分,发送 部 分,AB,T1,变换中心,传入,传出,T2,T3,a,b,b1,b2,b3,c1,c2,c3,d,e,g,f,j,m,事务流子系统,BC,CD,DE,EH,HK,FJ,KL,LM,h,混合流设计举例,K,5.结构设计的优化规则,将初始SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。,设计的基本概念和方法,控制层次:(程序结构),在设计阶段,要用到的程序结构划分方式,几个术语: 深度:层次的数量 宽度:每层的跨度 扇入:受控的数量 扇出:可控制的数量,M,a,b,c,d,e,k,l,m,f,g,h,i,j,n,o,p,q,r,深度,宽度,扇出,扇入,设计的基本概念和方法,结构划分:,在设计阶段,要用到的另一程序结构划分方式,水平划分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论