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