资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,讲 课 人:,刘 伟,电子邮件:,电 话:,办 公 室:,教二南楼,328,室,软件工程,面向数据流的分析与设计方法,结构化的软件分析与设计方法,面向数据流的分析与设计方法,etc.,面向对象的软件分析与设计方法,面向数据流的分析方法dataflow-oriented analysis method与面向对象的分析方法,都是需求建模方法。它们均有一组标准的语言表达机制,用于需求分析人员表达用户需求、构造软件系统模型。,面向数据流的分析方法是结构化分析方法系列中的一支,具有明显的结构化特征。,结构化开发方法分为如下几个步骤:,结构化分析软件分析SA,结构化设计总体设计、概要设计SD,详细设计,面向过程的编码,结构化分析方法是一种基于功能分解的需求分析方法。,结构化分析方法是一种建模技术,模型的核心是,数据词典,,它描述了所有的在目标系统中使用的和生成的数据对象。并用,数据流图,表达需求。,方法特点,核心思想:自顶向下和逐步求精。,根本手段:分解和抽象。,分解:把大问题分割成假设干小问题,然后分别解决。,抽象:略去细节,先考虑问题最本质的属性。,使用了描述需求说明书的几个标准工具。即数据流图、数据词典、小说明加工逻辑的描述等,使文档标准化。,自顶向下,逐步求精方法的优点,符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率,用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解,程序自顶向下,逐步细化,分解成一个树形结构。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成,每一步工作仅在上层节点的根底上做不多的设计扩展,便于检查,有利于设计的分工和组织工作。,数据流图与数据字典,一个基于计算机的信息处理系统由数据流和一系列的转换构成,而这些转换将,输入数据流,变换为,输出数据流,。,数据流图是一种图形化技术,,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,。,在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的,逻辑过程,。,在需求分析阶段,数据流(也称信息流)是系统分析的根底。所谓数据流,形象地说就是系统中“流动的数据结构。数据流图(DFD,Data Flow Diagram)是描述软件系统中数据处理过程的一种有力的图形工具。,是用来描述系统逻辑模型的一种图形工具。,数据流图从数据传递和加工的角度,以图形的方式,刻画数据流从输入到输出的移动变换过程。,DFD,数据流图的图形记号,外部实体,位于软件系统边界之外的信息生产者或消费者,转换,转换数据流的处理过程,又称泡bubble,数据流,为一个或多个转换提供数据源或数据存储效劳的缓冲区、文件或数据库,数据源,在转换之间有向流动的数据项或数据项集合,“与,即同时输入/出;,+ “或,即至少一项输入/出;, “异或,即非同时输入/出。,*,“家庭保安系统顶级数据流图,传感器,警报类别,显示信息,电话拨号音频,传感数据,用户命令,家庭保,安系统,控制面板,显示器,电话机,警报器,数据流图中的根本符号另外的表示方法,或,或,或,符 号,含 义,数据的源点或终点,数据流,数据存储,加工,1. 数据的源点或终点,数据的源点或终点用于反映数据流图与外部实体之间的联系,表示图中的输入数据来自哪里或处理结果送向何处。如以下图中的人事部门、后勤部门是工资系统中数据的源点,而职工和银行那么是工资系统中数据的终点。,工资计算系统的,顶层,(0,层,),数据流图,2.,数据流,数据流是数据在系统中,(,包括数据处理之间、数据处理和数据存储之间以及数据处理和数据的源点或终点之间,),的,传送通道,,数据流符号的箭头指明了数据的流动方向。如上图中的出勤表、业绩表、水电扣款表、工资条及工资存款清单等均为数据流。,3. 加工,加工也称为数据处理,是对系统中的数据流进行的某些操作或变换。图中每个加工都要有对应的名称,最常见的名称是由一个说明具体动作的动词和一个说明处理对象的名词构成的,如计算应发工资、打印工资清单等。,4. 数据存储,在数据流图中用于保存数据的数据文件被称为数据存储,它可以是数据库文件或任何其他形式的数据组织。流向数据存储的数据流可理解为向文件写入数据或对文件进行查询,流出数据存储的数据流可理解为从文件中读取数据或得到查询结果。,在数据流图中,可以有两个以上的数据流进入同一个加工,也可以有两个以上的数据流从同一个加工中流出,这样的,多个数据流之间往往存在一定的关系,。为了表示这些数据流之间的关系,需要在数据流图中给这些数据流对应的加工加上一定的标记符号。在下表中列出了加工中常见的几种关系的表示方法。,(,表中以从加工流入或流出两个数据流为例,),。,数据流与加工之间的关系,表,加工中常见关系的符号表示,符 号,含 义,由数据,A,和,B,共同变换为数据,C,由数据,A,变换为数据,B,和数据,C,由数据,A,或,B,,或者数据,A,和,B,共同变换为数据,C,由数据,A,变换为数据,B,或,C,,或者同时变换为数据,B,和,C,由数据,A,或,B,其中之一变换为数据,C,由数据,A,变换为数据,B,或,C,其中之一,数据流与加工之间的关系,按照结构化分析方法中“自顶向下,逐步分解的思想,可以先将整个系统看作是一个加工,它的输入数据和输出数据说明了系统和外部环境的接口,从而首先画出系统的顶层数据流图。为了能够清楚地说明系统加工的详细过程,接着从顶层数据流图出发,逐层地对系统进行分解。每分解一次,系统中加工的数量就随之增加,每个加工的功能描述也越来越具体。重复这种分解,直至得到系统的底层数据流图。底层数据流图中的所有加工都应是不可再分解的、最简单的“原子加工。,数据流模型的建立方法,数据流图,数据流图提供了层次结构,让分析人员能够方便地表示任意抽象级别上的信息系统或其子系统,并支持问题分解、逐步求精的分析方法。,初始时,整个信息处理系统可以用以下图所示的顶级第0级数据流图表示。,“家庭保安系统顶级数据流图1,传感器,警报类别,显示信息,电话拨号音频,传感数据,用户命令,家庭保,安系统,控制面板,显示器,电话机,警报器,随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列相互关联的数据流和子转换,如以下图所示。在数据流方法中,对数据数据流的精化是伴随着对转换的逐步精化而同步进行的。,A0,Z2,Y2,X2,N1,M1,D1,D1,C1,C1,E1,E1,B0,A0,F1,F3,F,F2,F4,F5,F41,F42,F43,F44,B0,第,0,级,第,1,级,第,2,级,数据流图的精化与层间平衡,下面以某单位工资管理系统为例,来介绍一下分层数据流模型的建立方法。,1. 建立顶层数据流图,任何系统的顶层数据流图都只有一个,用于反映目标系统所要实现的功能及与外部环境的接口。顶层数据流图中只有一个代表整个系统的加工,数据的源点和终点对应着系统的外部实体,说明了系统输入数据的来源和输出数据的去向。工资管理系统的顶层数据流图如以下图所示。,图,工资计算系统的顶层,(0,层,),数据流图,按照系统的功能,对顶层数据流图进行分解,生成第一层数据流图。如例子中的工资计算系统可划分为计算工资、打印工资清单和工资转存三个加工。其中,计算工资完成单位职工工资计算,生成工资清单的功能;打印工资清单完成工资条的打印功能;工资转存完成生成职工工资存款清单并将其发送到银行的功能。对划分得到的加工应进行编号,如以下图。,2.,数据流图的分层细化,工资计算系统,第一层,数据流图,对第一层数据流图中的加工继续分解,那么可得到第二层数据流图,如图 A 所示。对分解得到的加工进行编号,以反映出它与上层数据流图之间的关系,如对第一层数据流图中的计算工资分解得到的数据流图中的加工的编号分别为。假设数据流图中的加工还可继续细化,那么重复以上分解过程,直到获得系统的底层数据流图。工资计算系统的第三层数据流图如图 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),能够准确地定义数据流图中各组成成分的具体含义,,二者共同构成了系统的逻辑模型,。,数据字典中的根本符号及其含义,符 号,含 义,说 明,=,表示定义为,用于对,=,左边的条目进行确切的定义,+,表示与关系,X=a+b,表示,X,由,a,和,b,共同构成, | , , ,表示或关系,X=a|b,与,X=a,b,等价,表示,X,由,a,或,b,组成,( ),表示可选项,X=(a),表示,a,可以在,X,中出现,也可以不出现, ,表示重复,大括号中的内容重复,0,到多次,m n,表示规定次数的重复,重复的次数最少,m,次,最多,n,次,“ ”,表示基本数据元素,“ ”中的内容是基本数据元素,不可再分,.,连接符,month=1.12,表示,month,可取,1,12,中的任意值,* *,表示注释,两个星号之间的内容为注释信息,例如, ,12,(),(),任何长度为3的数字串,444552,=任何长度为4的数字串,数据字典是关于数据流图中各种成分详细定义的信息集合,可将其按照说明对象的类型划分为四类条目,分别为,数据流条目、数据项条目、数据文件条目和数据加工条目,。,数据字典中的条目及说明格式,数据字典的任务是,:,对于数据流图中出现的所有被,命名的图形元素在字典中作为一个词条加以定义,使得,每一个图形元素的名字都有一个确切的解释。,DD,1. 数据流条目,数据流在数据流图中主要用于说明数据结构在系统中的作用和流动方向,因此数据流也被称作“流动的数据结构。数据字典中数据流条目应包括以下几项主要内容:数据流名称、数据流别名、说明、数据流来源、数据流流向、数据流组成和数据流量等。,数据流名:,数据流别名:,说明:简要介绍作用即它产生的原因和结果。,数据流来源:即该数据流来自何方。,数据流去向:去向何处。,数据流组成:数据结构。,数据量流量:数据量、流通量。,数据流词条的描述例如:,数据流名:发票,说明:用作学生已付书款的依据,数据流来源:来自加工“审查并开发票,数据流去向:流向加工“开领书单。,数据流组成:学号+姓名+书号+单价总价+书费合计,审查并,开发票,发票,购书单,数据流名称:出勤表,数据流别名:无,说明:由人事部门每月月底上报的职工考勤统计数字,数据流来源:人事部门,数据流流向:加工,1.1.1(,统计出勤、请假及旷工时数,),数据流组成:出勤表,=,年份,+,月份,+,职工号,+,出勤时数,+,病假时数,+,事假时数,+,旷工时数,数据流量:,1,份,/,月,工资系统中的,出勤表数据流,在数据字典中的条目描述为,数据流词条的描述例如2:,2. 数据项条目,数据流图中每个数据结构都是由假设干个数据项构成的,数据项是加工中的最小单位,不可再分。数据字典的数据项条目中应包含的主要内容有:数据项名称、数据项别名、说明、类型、长度、取值范围及含义等。,例如:出勤表中的职工号数据项在数据字典中的条目描述为,数据项名称:职工号,数据项别名:employee_no,说明:本单位职工的惟一标识,类型:字符串,长度:6,取值范围及含义:12位(00.99)为部门编号:36位(XX0001.XX9999)为人员编号,3. 数据文件条目,数据文件是数据流图中数据结构的载体。数据字典的数据文件条目中应包含的主要内容有:数据文件名称、说明、数据文件组成、组织方式、存取方式、存取频率等。,例如:工资系统中的职工工资档案文件在数据字典中的条目描述为,数据文件名称:工资档案,说明:单位职工的根本工资、各项津贴及补贴信息,数据文件组成:职工号+国家工资+国家津贴+职务津贴+职龄津贴+交通补贴+部门补贴+其他补贴,组织方式:按职工号从小到大排列,存取方式:顺序,存取频率:1次/月,4. 数据加工条目,在数据流图中只简单给出了每个加工的名称,在数据字典中通过数据加工条目主要是要说明每个加工是用来“做什么的。数据字典的数据加工条目中应包含的主要内容有:,数据加工名称、加工编号、说明、输入数据流、输出数据流、加工逻辑等。,例如:工资系统中的计算应发工资这个加工在数据字典中的条目描述为,数据加工名称:计算应发工资,加工编号:,说明:根据职工的工资档案及本月奖金发放表数据计算每个职工的应发工资,输入数据流:奖金发放表及工资档案,输出数据流:应发工资表,加工逻辑: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,位,:,进口,/,国产,第,2,4,位:类别,第,5,7,位:规格,第,8,11,位: 源机场编号,第,12,15,位: 目的机场编号,订票员,订票员,预定,机票,准备,机票,记帐,订票单,航班目录,航班号,航班,费用,帐单,机票,记帐数据库,帐目,数据字典例子,: (,数据存储,),数据存储名称:,航班目录,别名,:,无,来源,:,无,去向,:,定票,组成,:,航班号飞行日期载客量出发,地目的地票价,-,组织方式:,索引文件,以航班号为关键字,订票员,订票员,预定,机票,准备,机票,记帐,订票单,航班目录,航班号,航班,费用,帐单,机票,记帐数据库,帐目,数据字典例子,: (,处理逻辑,),数据加工名称:,定票,别名,:,无,输入,:,订票单,输出,:,航班、费用,激发条件:,接受到订票单,处理逻辑:,if,单据订票单,then if,单据是否过期,then,是否有该航班,是否有机票,订票员,订票员,预定,机票,准备,机票,记帐,订票单,航班目录,航班号,航班,费用,帐单,机票,记帐数据库,帐目,实例,医院病房监护系统,监视病情,产生,病情报告,更新病历,经过初步的需求分析,得到系统功能要求:,1,、监视病员的病症(血压、体温、脉搏等),2,、定时更新病历,3,、病员出现异常情况时报警。,4,、产生某一病员的病情报告。,医院病房监护系统分层,DFD,图,顶级,DFD,病员,护士,病员,监护,系统,病症,需求报告,病症报告,报警,采用通常的功能分解方法,按照“强内聚、松耦合的原那么逐个对处理功能进行精化;与此同时逐步完成对数据流的精化,并针对被精化的处理功能生成下一级数据流图。,医院病房监护系统分层,DFD,图,一级,DFD,生理信号极限值,护士,3,生成报告,4,更新日志,病员,2,中央监视,1,局部监视,病症信号,病员极限,病员日志,报警,病员数据,格式化病员数据,日志数据,日志数据,病症报告,需求报告,医院病房监护系统分层,DFD,图,二级DFD:对加工“中央监视进行分解,病员数据,2.1,开解信号,2.2,计算超过,极限值否,2.4,格式化,病员数据,2.3,产生报,警信息,病员极限,体温,脉搏,血压,超过极限值,血压、体温、脉搏,生理信号极限值,报警,格式化病员数据,精化过程中必须维持各级数据流图之间的数据流平衡。,精化过程应适可而止,防止涉及软件设计细节。一般说来,如果某子功能可以用一段简洁、精确的文字描述清楚,就无需进一步分解。,创立用户需求的数据流模型应遵循以下五条规那么:,对于数据流图中不再分解的处理功能,分析人员要借助结构化自然语言对其功能进行精确、简洁的描述。,图中“中央监视子功能分解出来的“计算超过极限值否子功能可描述如下页:,过程规格说明举例“计算超过极限值否子功能,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),1SC中的组成符号,SD方法在概要设计中的主要表达工具约定:,用矩形框表示模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。,SD,方法在概要设计中的主要表达工具约定:,编辑学生记录,读学生记录,学生数据,无此学生,学号,不加区分的数据,数据信息,控制信息,SC,中的四种模块,在系统结构图中的模块,传入模块, 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。,传出模块, 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。,变换模块, 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。,协调模块, 对所有下属模块进行协调和管理的模块。,酒店管理信息系统功能结构图,客人登记,预定登记,客房处理,历史记录,客房查询,预定查询,餐桌安排,菜单作业,营业结帐,汇总打印,各类查询,初始设置,客帐处理,退房处理,夜审处理,客帐查询,报表打印,HIMS,客房管理子系统,收银管理子系统,餐饮管理子系统,大型零售商场管理信息系统功能结构图,TM M I S,系统维护,POS,系统,零售实时系统,商品进货管理,商品批发管理,商品库存管理,商品及商品帐管理,顾客管理,连锁店管理,财务管理,人事工资管理,方案统计管理,经理查询,图中的模块调用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,框架,),设计顶层和第一层模块,变换映射方法,输出,输入,变换,控制模块,输入处理模块,输出处理模块,主要处理模块,第一级分解的方法,M,C,M,T,M,A,M,E,第一级分解后的,SC,M,C,M,T,M,A,M,E,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变,换模块,第一级分解后的,SC,(,另一种画法,),M,C,M,A1,c,e,u,w,c,p,Q,P,R,e,p,r,r,w,u,w,传入分,支模块,中心加工分支模块,传出分,支模块,M,A2,M,E1,M,E2,变换分析设计方法步骤,(3),第二级分解,(,分解,SC,各分支,),自顶向下分解,设计出每个分支的中、下层模块,传入分支的分解,(1),M,A,C,B,A,b,a,c,E,D,d,e,c,e,传入分支的分解,(2),M,A,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,传出分支的分解,M,E,W,Write,V,u,u,w,u,v,v,v,Put,U,U to V,M,E,U,Write,W,w,w,u,w,u,V,(1),(2),中心加工分支的分解,M,T,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,T,1,变换中心,传入,传出,T,2,T,3,a,b,b,1,b,2,b,3,c,1,c,2,c,3,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,深度,宽度,扇出,扇入,设计的根本概念和方法,结构划分:,在设计阶段,要用到的另一程序结构划分方式,水平划分:,将系统功能分为独立的几局部(输入、处理、输出)当系统维护时,问题清晰,互无干扰。,输入,输出,变换,垂直划分:,上层为控制,中层为分别控制,下层为各独立的处理。当系统的维护时,引发的副作用小。,垂直划分,水平划分,改进软件结构设计的指导原那么 (软件结构设计的启发式规那么),模块功能的完善化,消除重复功能,将模块的影响限制在模块的控制范围内,深度、宽度、扇出和扇入适中,模块大小适中,模块功能可预测,防止模块的病态连接,应该尽量降低模块接口的复杂性,尽量将相同功能的模块提取为公共模块,分解模块可以减少控制信息传递,合并模块可以减少全局数据的引用,应该尽量降低模块接口的复杂性,例如:,接口表示复杂是软件发生错误的一个主要原因!,Quad-Root ( TBL,,,X ),;求一元二次方程的根,TBL,:数组,传送方程的系数,X,:数组,回送求出的根,Quad-Root ( A,,,B,,,C,,,root1,,,root2 ),;,A,,,B,,,C,:方程的系数,root1,,,root2,:求出的两个根,模块功能应该可以预测,模块功能不可预测:,带有内部状态的模块,那么功能不可预测,因为,它的输出可能由于状态的不同,而导致相同的输入有不同的输出。,产生的原因:,不可预测的模块往往是非单一功能成分的组合,或者是内部多分支情况处理。,不可预测功能的模块,不易于理解和维护!,解决方法:,注意高内聚的模块设计,拆分多种情况的功能。但也不要使功能过分局限。,分解模块可以减少控制信息传递,例如:,控制功能模块,A,功能,(,根据,k,决定执行,C ),.,A,子功能,K=1,或,k=0,B,功能,控制功能模块,A,功能,B,功能,C功能,A子功能,合并,合并模块可以减少全局数据的引用,A,功能,B,功能,例如:,全局数据,修改,修改,分解,A,功能,.,B,功能,数据,K,功能,模块功能的完善化,完整的模块应包括三局部:,(1)执行规定功能局部,(2)出错处理局部,(3)需返回给调用者数据时,返回是否正确结束标志。,消除重复功能,Q1,C,Q2,C,Q1,Q2,C,
展开阅读全文