1、面向数据流的设计方法面向数据流的设计方法 面向数据流的设计方法,又称结构化设计即面向数据流的设计方法,又称结构化设计即SD(Structured Design)。结结构构化化设设计计的的目目标标:将将软软件件设设计计为为多多个个结结构构合合理理、功功能能单单一一的的模模块块,建建立立系系统统的的模模块块结结构构图图。它它的的主主要要表表示示方方法法是是一种分层次的结构图。一种分层次的结构图。面向数据流的设计方法面向数据流的设计方法SD设计方法的设计方法的主要思想主要思想:认认为为一一个个程程序序、一一组组程程序序或或一一个个系系统统,是是由由一一组组功能模块来构成的。功能模块来构成的。软软件件
2、设设计计者者首首先先必必须须无无视视程程序序、模模块块或或过过程程的的内内部部情情况况,而而只只对对它它们们之之间间的的关关系系进进行行分分析析。将将系系统统看看作是逻辑功能的抽象集合作是逻辑功能的抽象集合功能模块的集合功能模块的集合。面向数据流的设计方法面向数据流的设计方法结构化设计的结构化设计的优点优点:(1 1)减减少少设设计计复复杂杂性性。将将对对大大目目标标的的实实现现转转化化为为一一些些小小目目标标来来实实现现。结结构构化化设设计计是是一一种种减减少少设设计计复复杂杂性性的的技技术。术。(2)结构独立结构独立。结构化设计将功能性程序划分成多个。结构化设计将功能性程序划分成多个相对独
3、立的程序模块。相对独立的程序模块。(3)单一的功能模块单一的功能模块,易于进行软件修改,易于开发,易于进行软件修改,易于开发和维护。和维护。(4)加强了代码的)加强了代码的可重用性可重用性。面向数据流的设计方法面向数据流的设计方法描述工具:描述工具:结构化设计方法提出了一种图形工具结构化设计方法提出了一种图形工具结构图结构图。结结构构图图是是精精确确表表达达程程序序结结构构的的图图形形表表示示方方法法。它它作作为为软软件件文文档档的的一一部部分分,清清楚楚地地反反映映出出程程序序中中模模块块之之间间的的层层次次调调用用关关系系和和联联系系。它它不不仅仅严严格格地地定定义义了了各各个个模模块块的
4、的名字、功能和接口,而且还集中反映了设计思想。名字、功能和接口,而且还集中反映了设计思想。面向数据流的设计方法面向数据流的设计方法结构图的主要内容:结构图的主要内容:1、模块模块:方框表示,并用名字标识该模块。:方框表示,并用名字标识该模块。2、模块的调用关系模块的调用关系:用单向箭头或直线连接模:用单向箭头或直线连接模块间的控制关系。块间的控制关系。3、模块间的、模块间的信息传递信息传递:用带注释的短箭头表示:用带注释的短箭头表示模块间传递的信息。模块间传递的信息。4、两个、两个附加符号附加符号:弧形线表示循环调用,菱形:弧形线表示循环调用,菱形表示选择调用。表示选择调用。面向数据流的设计方
5、法面向数据流的设计方法查询成绩学生记录学号查询标志记录地址ABC模块间的控制关模块间的控制关系及信息传递系及信息传递模块间选择调用模块间选择调用模块间循环调用模块间循环调用MT1T3T2面向数据流的设计方法面向数据流的设计方法系统结构图中有系统结构图中有4种类型的模块:种类型的模块:1、传入模块、传入模块:从下属模块取得数据,经过某些处理,再将其从下属模块取得数据,经过某些处理,再将其送给上级模块。它传送的数据叫做逻辑输入数据流。送给上级模块。它传送的数据叫做逻辑输入数据流。2、传出模块、传出模块:从上级模块取得数据,进行某些处理后,传送从上级模块取得数据,进行某些处理后,传送给下属模块。它传
6、送的数据流叫做逻辑输出数据流。给下属模块。它传送的数据流叫做逻辑输出数据流。3、变换模块、变换模块:从上级模块取得数据,进行特定处理后,送回从上级模块取得数据,进行特定处理后,送回原上级模块。它加工的数据流叫做变换数据流。原上级模块。它加工的数据流叫做变换数据流。4、协调模块、协调模块:对其下属模块进行控制和管理的模块。在一个对其下属模块进行控制和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。好的系统结构图中,协调模块应在较高层出现。面向数据流的设计方法面向数据流的设计方法系统结构图中主要有系统结构图中主要有4种类型的模块:种类型的模块:传入模块传入模块AA传出模块传出模块DD变
7、换模块变换模块 BCY协调模块协调模块XXY面向数据流的设计方法面向数据流的设计方法数据流图的类型数据流图的类型 SD方方法法是是以以数数据据流流图图为为基基础础设设计计系系统统的的模模块块结结构构的的。不不同同类类型型的的数数据据流流图图设设计计的的过过程程以以及及所所导导出出的的初初始始的的软软件件结结构构不不同同。不不管管系系统统的的数数据据流流图图如如何何庞庞大大和和复复杂杂,一一般般均均可可分分为为变变换换型型、事事务务型型和和变变换换/事事务务混合型混合型。面向数据流的设计方法面向数据流的设计方法变换型(变换型(IPO型)型)变变换换型型的的数数据据流流图图是是一一个个线线性性结结
8、构构,由由输输入入、变变换换和和输输出出三三部部分分组组成成。信信息息沿沿输输入入通通路路进进入入系系统统,同同时时由由外外部部形形式式变变换换成成内内部部形形式式。进进入入系系统统的的信信息息通通过过变变换换中中心心,经经加加工工处处理理以以后后再再沿沿输输出出通通路路变变换换成外部形式离开软件系统。成外部形式离开软件系统。面向数据流的设计方法面向数据流的设计方法物理输物理输入入物理输出物理输出输入流输入流变换中心变换中心输出流输出流逻辑输出逻辑输出逻辑输入逻辑输入变换型变换型DFD图图面向数据流的设计方法面向数据流的设计方法 事务型事务型 事事务务型型的的数数据据流流图图中中,数数据据沿沿
9、输输入入通通路路到到达达一一个个加加工工处处理理(如如下下图图中中的的C),这这个个处处理理将将输输入入分分为为许许多多相相互互平平行行的的加加工工路路径径,并并根根据据输输入入数数据据的的类类型型,选选择择某某一一加加工工路路径径。其其中中C为为事事务务处处理理中中心心,其其任任务务是是得得到到输输入入数数据据(输输入入数数据据又又称称为为事事务务)、分分析析每每个个事事务务以确定它的类型、根据事务类型选取一条活动通路。以确定它的类型、根据事务类型选取一条活动通路。面向数据流的设计方法面向数据流的设计方法事务型事务型DFD图图面向数据流的设计方法面向数据流的设计方法C加工路径加工路径输入流输
10、入流事务处理中心事务处理中心加工路径加工路径加工路径加工路径面向数据流设计方法的过程面向数据流设计方法的过程:1、精化精化DFD。去除数据流图中的数据存储等信息,对数据流图去除数据流图中的数据存储等信息,对数据流图进行精化。进行精化。2、确定确定DFD类型类型,和逻辑输入、逻辑输出的界限,映射出变换,和逻辑输入、逻辑输出的界限,映射出变换结构的顶层合第一层;如果为事务型,确定事务中心和加工路径,结构的顶层合第一层;如果为事务型,确定事务中心和加工路径,映射出事务结构的顶层合第一层。映射出事务结构的顶层合第一层。3、分解上层模块,设计中下层模块结构分解上层模块,设计中下层模块结构。4、根据优化准
11、则、根据优化准则对软件结构求精对软件结构求精。5、描述模块功能、接口及全局数据结构。、描述模块功能、接口及全局数据结构。6、复查,如有错转向、复查,如有错转向2、修改完善,否则进入详细设计。、修改完善,否则进入详细设计。面向数据流的设计方法面向数据流的设计方法变换分析设计:变换分析设计:1、确定、确定DFD中的变换中心,逻辑输入、逻辑输出。中的变换中心,逻辑输入、逻辑输出。通常几股数据流的汇合处就是系统的加工中心,也可通常几股数据流的汇合处就是系统的加工中心,也可用以下方法确定加工中心:从物理输入(用以下方法确定加工中心:从物理输入(出出)端开始,沿)端开始,沿(逆逆)数据流方向向系统中心寻找
12、直到有这样的数据流,)数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看作是系统的输入(出)时,则它的前一数据它不能再被看作是系统的输入(出)时,则它的前一数据流就是系统的逻辑输入(出)。介于逻辑输入和逻辑输出流就是系统的逻辑输入(出)。介于逻辑输入和逻辑输出间的加工就是加工中心。间的加工就是加工中心。面向数据流的设计方法面向数据流的设计方法2、设计软件结构的顶层和第一层、设计软件结构的顶层和第一层变换结构。变换结构。顶层就是顶层就是主模块主模块的位置,其功能是完成对所有模块的的位置,其功能是完成对所有模块的控制,其名称就是系统名称;控制,其名称就是系统名称;第一层一般至少有第一层一
13、般至少有输入、变换、输出输入、变换、输出三种功能模块。三种功能模块。面向数据流的设计方法面向数据流的设计方法3、设计中、下层模块。对第一层模块自顶向下逐层分解。、设计中、下层模块。对第一层模块自顶向下逐层分解。输入模块下属模块的设计输入模块下属模块的设计:为每个输入模块设计两个下属:为每个输入模块设计两个下属模块,一个接受数据,一个将数据转换成调用模块所需的信模块,一个接受数据,一个将数据转换成调用模块所需的信息。用类似的方法一直分解下去,直至物理输入端。息。用类似的方法一直分解下去,直至物理输入端。输出模块下属模块的设计输出模块下属模块的设计:为每个输出模块设计两个下属:为每个输出模块设计两
14、个下属模块,一个将数据转换成下属模块所需的信息,一个发送数模块,一个将数据转换成下属模块所需的信息,一个发送数据。用类似的方法一直分解下去,直至物理输出端。据。用类似的方法一直分解下去,直至物理输出端。变换模块下属模块的设计变换模块下属模块的设计:根据变换中心的组成情况,按:根据变换中心的组成情况,按照模块独立性原则,为每个基本加工建立一个功能模块。照模块独立性原则,为每个基本加工建立一个功能模块。面向数据流的设计方法面向数据流的设计方法4、设计优化:根据优化准则对初始结构进行细化和改进。、设计优化:根据优化准则对初始结构进行细化和改进。根据设计准则,对模块进行合并和调整,为每个物理根据设计准
15、则,对模块进行合并和调整,为每个物理输入和物理输出设计专门模块,以体现系统的外部接口。输入和物理输出设计专门模块,以体现系统的外部接口。面向数据流的设计方法面向数据流的设计方法A物理输入物理输入BCD物理输出物理输出G变换中心变换中心逻辑输出逻辑输出逻辑输入逻辑输入f1f2f3EFHf4f5f6f7f8f9f10f11变换型分析设计变换型分析设计面向数据流的设计方法面向数据流的设计方法变换型分析设计变换型分析设计主模块主模块Get f3将将f3变换成变换成f7和和f8Put f7Put f8 f3 f3 f7 f8 f8 f7Get f2BGet f1AFPut f9GPut f8HPut f
16、8CDE f3 f5 f4 f4 f6 f7 f8 f5 f6 f2 f2 f1 f1 f2 f8 f10 f10 f11 f10 f11面向数据流的设计方法面向数据流的设计方法事务分析设计:事务分析设计:1、确定、确定DFD中的事物中心和加工路径。中的事物中心和加工路径。通常当通常当DFD中的某个加工具有明显的将一个输入数中的某个加工具有明显的将一个输入数据流分解成多个发散的输出数据流时,该加工就是系统据流分解成多个发散的输出数据流时,该加工就是系统的事务中心,从事务中心辐射出去的数据流就是各个加的事务中心,从事务中心辐射出去的数据流就是各个加工路径。工路径。面向数据流的设计方法面向数据流的
17、设计方法2、设计软件结构的顶层和第一层、设计软件结构的顶层和第一层事务结构。事务结构。顶层就是主模块的位置,有两个功能,一是接收数据,顶层就是主模块的位置,有两个功能,一是接收数据,二是根据事务类型调度相应的处理模块。因此事务型软件结二是根据事务类型调度相应的处理模块。因此事务型软件结构应包括两个部分,接收分支和发送分支。构应包括两个部分,接收分支和发送分支。接收分支:负责接收数据,其设计方法与变换型接收分支:负责接收数据,其设计方法与变换型DFD的输的输入部分相同。入部分相同。发送分支:通常包含一个调度模块,控制管理所有的下层发送分支:通常包含一个调度模块,控制管理所有的下层事务处理模块。事
18、务处理模块。3、设计中、下层模块并优化。设计中、下层模块并优化。具体过程同变换结构设计。具体过程同变换结构设计。面向数据流的设计方法面向数据流的设计方法AB加工路径加工路径输入流输入流事务处理中心事务处理中心事务分析设计事务分析设计CDf1面向数据流的设计方法面向数据流的设计方法事务分析设计事务分析设计主模块主模块Get f1调度调度 f1 f1BCD接接收收分分支支发发送送分分支支动作层动作层细节层细节层面向数据流的设计方法面向数据流的设计方法举举 例例事务分析事务分析 举例举例结构结构图的形态特征:图的形态特征:深度深度表示控制的层数。表示控制的层数。宽度宽度表示控制的总分布。表示控制的总
19、分布。扇出扇出是对由某一模块直接控制的模块数目的度量。是对由某一模块直接控制的模块数目的度量。扇入扇入指出有多少个模块直接控制一个给定的模块。指出有多少个模块直接控制一个给定的模块。如如果果一一模模块块控控制制另另一一个个模模块块便便称称前前者者“统统帅帅”后后者;者;反之,称后者反之,称后者“从属从属”于前者。于前者。面向数据流的设计方法面向数据流的设计方法画结构图应注意的事项:画结构图应注意的事项:1、同一名字的模块在结构图中仅、同一名字的模块在结构图中仅出现一次出现一次。2、调用关系调用关系只能从上到下。只能从上到下。3、结构图、结构图不严格表示模块的调用次序不严格表示模块的调用次序,习
20、惯上,习惯上从左到右。有时为了减少连线的交叉,适当地调整同从左到右。有时为了减少连线的交叉,适当地调整同一层模块的左右位置,以保持结构图的清晰。一层模块的左右位置,以保持结构图的清晰。面向数据流的设计方法面向数据流的设计方法例例1:高考录取统分子系统有如下功能:高考录取统分子系统有如下功能:1)计算标准分:根据考生原始分计算,得到标准分,存入考)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;生分数文件;2)计算录取线:根据标准分、招生计划文件中的招生人数,)计算录取线:根据标准分、招生计划文件中的招生人数,计算录取线存入录取线文件。计算录取线存入录取线文件。要求:要求:对以上问
21、题画出数据流图。对以上问题画出数据流图。画出该子系统的软件结构图画出该子系统的软件结构图面向数据流的设计方法面向数据流的设计方法例例2:某培训中心要研制一个计算机管理系统。它的业务是:将学某培训中心要研制一个计算机管理系统。它的业务是:将学员发来的信件收集分类后,按几种不同情况处理:员发来的信件收集分类后,按几种不同情况处理:1)如果是报名的,则将报名数据负责给报名事务的职员,他们将)如果是报名的,则将报名数据负责给报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记,并开出报名单交财务部门,财务人员开
22、出发票给学生。上登记,并开出报名单交财务部门,财务人员开出发票给学生。2)如果是想注销原来已选修的课程,则由注销人员在课程文件、)如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。学生文件和帐目文件上做相应的修改,并给学生注销单。3)如果是付款的,则由财务人员在帐目文件上登记,也给学生一)如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。张收费收据。要求:要求:对以上问题画出数据流图。对以上问题画出数据流图。画出该培训管理系统的软件结构图的主图。画出该培训管理系统的软件结构图的主图。面向数据流的设计方法面向数据流的设计方法
23、在实际的软件系统中,数据流图往往是变换型和事在实际的软件系统中,数据流图往往是变换型和事务型的混合体。务型的混合体。综合设计方法:综合设计方法:一般以一般以“变换分析变换分析”为主,为主,“事务分析事务分析”为辅为辅进行进行设计。即先找出子加工,设计出结构图的上层,然后根设计。即先找出子加工,设计出结构图的上层,然后根据数据流图的各个部分的结构特点适当地运用据数据流图的各个部分的结构特点适当地运用“变换分变换分析析”或或“事务分析事务分析”进行处理,可得到初始的结构图。进行处理,可得到初始的结构图。综合设计综合设计1、概要设计说明书、概要设计说明书(参考标准文档参考标准文档)2、详细设计说明书
24、详细设计说明书(参考标准文档参考标准文档)软件设计文档软件设计文档其他设计方法其他设计方法 面向数据结构面向数据结构的设计方法的设计方法是根据数据结构设计是根据数据结构设计程序处理过程的方法。程序处理过程的方法。目前比较成熟的有目前比较成熟的有 MAJackson提出的提出的Jackson系统开发方法(系统开发方法(JSD,Jackson System Development)和和JDwarnier提出的程序逻辑构造方法提出的程序逻辑构造方法LCP(Logical Construction of Programs)。Jackson方法方法(1)Jackson方法思想方法思想 (2)面面向向数
25、数据据结结构构的的设设计计是是根根据据某某些些过过程程,从从一一些些数数据据结结构构中中导导出出程程序序结结构构,着着重重于于问问题题域域数数据据结结构构到到问问题题解解的的程程序结构之间的转换,而不强调模块定义。序结构之间的转换,而不强调模块定义。(3)首首先先要要充充分分了了解解所所涉涉及及的的数数据据结结构构,而而且且用用工工具具清晰地描述数据结构清晰地描述数据结构;(4)然然后后按按一一定定的的步步骤骤根根据据数数据据结结构构,导导出出解解决决问问题题的程序结构,完成设计。的程序结构,完成设计。其他设计方法其他设计方法(2)Jackson图图 Jackson图图表表示示的的三三种种基基
26、本本结结构构,由由方方框框、连连线线和和一一些些附附加加标标记记组组成成。标标记记“o”代代表表选选择择,标标记记“*”代代表表重重复复。连连线可以理解为线可以理解为“包含包含”或或“由由组成组成”。ABCAB0C0AB*顺序顺序选择选择重复重复其他设计方法其他设计方法Jackson方法的步骤方法的步骤一般可以归纳为五个步骤:一般可以归纳为五个步骤:1)分分析析并并确确定定输输入入数数据据和和输输出出数数据据的的逻逻辑辑结结构构,并并用用Jackson结构图表示这些数据结构。结构图表示这些数据结构。2)找找出出输输入入数数据据结结构构和和输输出出数数据据结结构构中中有有对对应应关关系系的数据单元的数据单元。其他设计方法其他设计方法 3)按按照照一一定定的的映映射射规规则则由由输输入入、输输出出的的数数据据结结构构导导出用出用Jackson图表示的图表示的程序结构程序结构。4)列出程序中要用到的各个)列出程序中要用到的各个基本操作基本操作,并把它们分,并把它们分配到程序结构的适当位置。配到程序结构的适当位置。5)用)用伪码伪码表示程序。表示程序。其他设计方法其他设计方法P159 第第2题题作业作业