




已阅读5页,还剩176页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章传统的设计方法,5.1概述5.2结构化设计方法5.3过程设计5.4Jackson方法,教学内容:,软件设计的基本概念和原则,软件设计的重要作用:软件设计处于软件工程过程中的技术核心位置,它将完成待建造软件的有意义的工程表示。,软件设计阶段的目标:使用很多设计方法,产生数据设计、体系结构设计、接口设计和构件设计。为软件的编程阶段提供依据。,软件设计的依据:系统分析系统设计,数据字典,实体关系图,数据流图,状态变迁图,数据对象描述,加工规约,控制规约,构件设计,接口设计,体系结构设计,数据设计,软件设计原则,设计视点不要局限在局部范围设计是来源于分析模型的,是分析模型可跟踪的设计应该尽量使用已有的模式,不应该总是从头开始设计应尽可能模拟问题域的结构,缩短与现实问题的距离设计应表现风格一致,应该有统一的规则和接口形式设计应考虑可构造性设计应考虑最恶略情况下的适应性,即健壮性设计应避免考虑程序实现细节,因为它毕竟不是编码应该根据质量度量标准来考虑设计设计应注意对概念错误的评审,而避免过早注意细节,5.1概述,1.面向数据流设计和面向数据(或数据结构)设计,面向数据流的设计方法,这是一种概要设计技术,根据需求阶段对数据流的分析设计软件的总体结构。数据流中的每个转换代表了系统功能的某个部分,应该被映射成软件的一部分模块。面向数据流设计方法的步骤:确定信息流的类型划定流界将数据流映射为软件结构提取层次控制结构通过设计复审和使用启发式策略精化软件结构。,面向数据或数据结构的设计,面向数据的设计(datastructured-orienteddesign)方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的程序结构。而面向数据结构的设计,则侧重于问题的数据结构,把程序结构设计成与问题的数据结构一致,不强调模块定义。模块只是设计过程的副产品,对于模块独立性原则也未过分强调。这种程序结构容易理解,也易于修改。面向数据设计方法一般都包括下列任务:1确定数据结构特征;2用顺序、选择和重复三种基本形式表示数据;3把数据结构表示映射为软件的控制结构;4用与具体方法配套的设计指南进一步精化控制结构;5开发软件的过程性描述。,比较面向数据流和面向数据结构两类设计方法的异同,相同点:(1)遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础;(2)均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。不同点:(1)面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。(2)面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。,数据设计:将分析信息模型转换成数据结构,来自于实体关系图和数据字典,体系结构设计:定义软件的主要结构元素、设计模式及应用约束(子系统的交互),接口设计:描述软件内部、软件和协作系统之间的通信,数据流或控制流的特定行为,构件设计:结构元素变换为软件过程的描述,来自于处理说明以及状态变换图,软件设计的4个活动,2.从分析模型导出设计模型,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描述,象,数据设计,体系结构设计,接口设计,过程设计,分析模型,设计模型,5.2结构化设计方法,结构化设计方法,模块设计体系结构设计,软件设计的任务-确定系统怎么做,结构化设计活动划分为两个阶段:确定系统的整体体系结构-总体设计确定各模块的具体实现-详细设计,界面设计构件级程序设计,表示工具:总体设计详细设计,层次图(Hierarchy)IPO图(Input-Process-Output)模块说明,程序框图盒图(N-S图)决策表PDL语言,结构化设计的适用范围,尤其适用于采用结构化程序设计实现的系统;结构化设计并不是一种广泛适用的系统设计技术;结构化设计的结果。,SA与SD的关系,SD来源于SA,来源:结构化分析,来源:结构化分析,来源:结构化分析,数据流图字典项伪码实体关系图事务框图,环境的限制,质量的标准,转化分析,细化设计,进入实现阶段,初始结构框图,1.SC图(StructureChart),(1)SC中的组成符号SD方法在概要设计中的主要表达工具约定:用矩形框表示模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。,(2)SD方法在概要设计中的主要表达工具约定:,不加区分的数据,数据信息,控制信息,SC中的四种模块,在系统结构图中的模块,传入模块从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。变换模块它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块对所有下属模块进行协调和管理的模块。,酒店管理信息系统功能结构图,客人登记,预定登记,客房处理,历史记录,客房查询,预定查询,餐桌安排,菜单作业,营业结帐,汇总打印,各类查询,初始设置,客帐处理,退房处理,夜审处理,客帐查询,报表打印,HIMS,客房管理子系统,收银管理子系统,餐饮管理子系统,大型零售商场管理信息系统功能结构图,2.SC图中的模块调用,X,Y,Z,Z,1,2,(1)简单调用,(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,GetC,b,a,c,ReadD,d,e,c,e,BtoC,b,c,d,e,a,b,GetE,GetB,DtoE,AtoB,ReadD,传出分支的分解,ME,W,WriteV,u,u,w,u,v,v,v,PutU,UtoV,ME,U,WriteW,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,T2,T1,Ti,A2,D2,A1,D1,A3,Aj,Dk,事务层,操作层,细节层,处理层,主模块,操作模块,细节模块,事务加工模块,事务流设计举例,取A,总控,A,L,M,N,G,D,B,C,F,E,动作1,动作n,.,细节模块1,细节模块2,.,(操作模块),(细节模块),事务型数据流图举例,E,事务流设计举例(另一种画法),输入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,深度,宽度,扇出,扇入,设计的基本概念和方法,结构划分:,在设计阶段,要用到的另一程序结构划分方式,水平划分:将系统功能分为独立的几部分(输入、处理、输出)当系统维护时,问题清晰,互无干扰。,输入,输出,变换,垂直划分:上层为控制,中层为分别控制,下层为各独立的处理。当系统的维护时,引发的副作用小。,垂直划分,水平划分,改进软件结构设计的指导原则(软件结构设计的启发式规则),模块功能的完善化消除重复功能将模块的影响限制在模块的控制范围内深度、宽度、扇出和扇入适中模块大小适中模块功能可预测避免模块的病态连接应该尽量降低模块接口的复杂性尽量将相同功能的模块提取为公共模块分解模块可以减少控制信息传递合并模块可以减少全局数据的引用,应该尽量降低模块接口的复杂性,例如:,接口表示复杂是软件发生错误的一个主要原因!,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,改进前Q1、Q2功能相似,X,Y,Q,X,Y,X,Y,重复部分,改进方法1:将Q1、Q2合并为Q不可取,改进方法2:将Q1、Q2的公共部分分离出来,模块的作用域应该在控制域之内,设计好的系统,受判断影响的模块应该从属于做出判断的模块,最好局限在做出判断的那个模块本身或在它的直属下级模块。,M,A,B,C,例如:,G,D,E,F,M,A,B,C,G,D,E,F,如果A做出的判断,要影响G,就需要加标记到M。这样就出现控制耦合。,解决的方法:A的判断上移,或G下移到A的控制域内,C,H,D,E,G,X,F,将模块的影响限制在模块的控制范围内,A,I,L,J,K,B,模块C的控制范围:C、D、E、F、G、H,如果模块C作出的决策影响了模块L,L超出了C的控制范围,减少高扇出争取高扇入,高扇出的模块结构举例:,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,避免平铺结构,增加中间层降低扇出,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,计时工人实发工资,计薪工人实发工资,编外人员实发工资,模块过大:可理解程度下降模块过小:开销大于有效操作,系统接口复杂,模块大小适中,模块功能可预测,模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。,防止模块功能过分局限,功能单一的模块具有高内聚。但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。,避免模块的病态连接,防止指向模块中间的分支或引用(针对内容耦合)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组装软件的技术,5.3详细设计(过程设计、模块设计),1.目的与任务目的:为软件结构图中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述。,目的与任务,主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导,2.结构化程序设计(SP)方法,传统的设计技术和旧观念:强调设计的随意性,具有浓厚的个人色彩追求程序效率和个人设计技巧新的设计思想和风格:清晰第一使用标准的、规范的控制结构逐步细化,3.常用的表达工具,程序流程图盒图(N-S图)问题分析图(PAD)伪代码和过程设计语言(PDL)判定表,程序流程图,程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:,示例,程序流程图的标准符号,循环的标准符号注解的使用,多出口判断,盒图(N-S图),用方框图代替传统的流程图五种基本控制结构由五种图形构件表示。(1)顺序型,A,B,C,(2)选择型(Ifthenelse)IfthenelseIfthen,A,B,F,条件,T,A,F,T,条件,Else-部分,Then-部分,Then-部分,(3)多分支选择型(CASE型),A1,值1,A2,An,.,.,条件,值2,值n,(4)WHILE重复型(5)UNTIL重复型,S(循环体),DO-WHILEP,S(循环体),REPEATUNTILP,(先测试循环),(后测试循环),(循环条件),示例,N-S图的嵌套定义形式,问题分析图(PAD),(ProblemAnalysisDiagram)基本控制结构:(1)顺序结构(2)选择结构,A,B,C,A,B,T,F,条件,(3)重复结构,WHILEC,S,UNTILC,S,(先测试循环),(后测试循环),等价的PASCAL语言:REPEATCUNTILS,等价的PASCAL语言:WHILECDOS,(4)多分支选择型(CASE型),A1,值1,值2,值n,A2,An,.,.,.,.,条件,问题分析图(PAD),PAD描述的示例,对应于增量型循环结构fori:=n1ton2stepn3do在PAD中有相应的循环控制结构,PAD的扩充控制结构,PDL(ProgramDesignLanguage),PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。,伪代码和PDL语言,示例:拼词检查程序,PROCEDUREspellcheckISBEGINsplitdocumentintosinglewordsloodupwordsindictionarydisplaywordswhicharenotindictionarycreateanewdictionaryENDspellcheck,PDL的特点,提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。,内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。有子程序定义与调用机制,用以表达各种方式的接口说明。,使用PDL语言,逐步求精:,PROCEDUREspellcheckBEGIN-*splitdocumentintosinglewordsLOOPgetnextwordaddwordtowordlistinsortorderEXITWHENallwordsprocessedENDLOOP-*lookupwordsindictionaryLOOPgetwordfromwordlist,IFwordnotindictionaryTHEN-*displaywordsnotindictionarydisplaywordpromptonuserterminalIFuserresponsesayswordOKTHENaddwordtogoodwordlistELSEaddwordtobadwordlistENDIFENDIFEXITWHENallwordsprocessedENDLOOP,-*createanewwordsdictionarydictionary:mergedictionaryandgoodwordlistENDspellcheck,判定表,判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理要求将程序流程图中的多分支判断都改成两分支判断,无多分支判断结构,例:某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30元,副教授25元,讲师20元,助教15元。,建立判定表的步骤,列出与一个具体过程(或模块)有关的所有处理。列出过程执行期间的所有条件(或所有判断)。将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。,判定树,教师课时津贴判定树,4.过程设计示例,层次图和HIPO图,IBM公司发明的HIPO图:层次图+输入/处理/输出图(H图)+(IPO图)(HierachyInputProcessOutput),层次图(H图),表示软件的层次结构,正文加工系统,输入,输出,编辑,加标题,存储,检索,编目录,添加,删除,插入,修改,合并,列表,带编号的层次图(H图),正文加工系统,输入1.0,输出2.0,编辑3.0,加标题4.0,存储5.0,检索6.0,编目录7.0,添加3.1,删除3.2,插入3.3,修改3.4,合并3.5,列表3.6,HIPO图,H图中每一方框(模块)均有一张IPO图对应。,传统的IPO图举例,输入,处理,输出,读口令请求,口令文件,1取得输入,2口令确认,3请求确认,请求记录,权限文件,4更新处理,权限记录,状态报告,响应,命令监控器(1.0)的IPO图,改进的IPO图格式,IPO图,系统:,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,处理:,局部数据元素:,注释:,命令监控器,输入,1.0,方华,1999-3-2,命令监控器主控菜单模块,命令监控器主控模块,取得输入、口令确认、请求确认、口令更新处理。输出正确性判断标志。,接收键盘口令,口令正确性判断标志,口令、标志,请求记录权限记录,改进的IPO图格式,HIPO图,系统:,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,处理:,局部数据元素:,注释:,人事档案管理系统,打印,2.1,方华,1999-3-2,人事档案管理模块,“打印全体人员”模块,“打印部分人员”模块,“打印个人:模块,将全体、按部门、个人的档案数据加工成要求的表格形式,进行输出、现示,人事档案数据和打印选择,打印全体人员、部分人员、个人的档案,HIPO图续,人事管理系统2.1,打印2.1.1,“打印部分人员”2.1.1.2,“打印全体人员”2.1.1.1,“打印个人:模块”2.1.1.3,5.4面向数据结构的设计方法,1.Jackson表示法,Jackson图表示方法,Jackson图的优点:,(1)Jackson图不仅便于表示层次结构,而且也有利于对结构自顶向下分解;,(2)Jackson图形象直观,可读性好;,(3)Jackson图不仅能表示数据结构,也能表示程序结构(因为程序结构也可以由上述3种基本结构组成)。,Jackson图的缺点:,在选择结构和重复结构中,选择条件或循环结束条件不能直接在Jackson图中表示出来。这样就影响了图形的表达能力,也不利于直接把图翻译成程序。,改进的Jackson图,例:高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。Jackson程序设计方法由五个步骤组成:,2.Jackson程序设计方法示例,第一步数据结构表示,对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构。,第二步找出输入数据结构和输出数据结构的对应关系,找出输入数据结构和输出数据结构中有对应关系的数据单元,即有直接因果关系、在程序中可以同时处理的数据单元。需要注意的是,对于重复的数据单元,必须是重复的次序、次数都相同才有可能有对应关系。,第三步确定程序结构图,根据下述三规则,由Jackson图导出相应的程序结构图:,(1)为每对有对应关系的数据单元,按照它们在数据结构图中所处的层次,在程序结构图中的相应层次画一个处理框。如果这对数据单元在输入数据结构图和输出数据结构图中所处的层次不同,那么应以它们在输入数据结构图和输出数据结构图中层次较低的那个层次作为它们在程序结构图中的处理框所处的层次;,(2)对于输入数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框;,(3)对于输出数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框。,实际上,这一步是一个综合的过程:每对有对应关系的数据单元合画一个处理框,没有对应关系的数据单元则各画一个处理框。,第四步列出并分配所有操作和条件,列出所有操作和条件(包括分支
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年房产中介与房地产开发商合作开发协议范本
- 2025二手汽车二手买卖合同协议书1
- 2025版企业危机公关与媒体应对内训服务合同模板
- 2025版石灰石行业节能减排技术改造合同
- 2025版高科技企业实习生创新项目合作合同
- 2025年度物联网设备软件测试与功能实现合同范本
- 2025年沙发企业品牌形象设计合同下载
- 2025年度生鲜产品市场推广与销售渠道建设合同
- 贵州省思南县2025年上半年事业单位公开遴选试题含答案分析
- 医疗健康产业市场前瞻报告
- 【艾瑞咨询】2024年中国健康管理行业研究报告494mb
- 2025-2030年中国连续性肾脏替代治疗(CRRT)行业市场现状供需分析及投资评估规划分析研究报告
- 现场员工计件管理制度
- 健康养老课件模板
- 2025java中高级面试题及答案
- 偷盗自愿赔偿协议书
- 民航飞行员招飞心理测试题及答案
- 《物业管理条例》教学课件
- 篮球课件介绍
- 2024艺考乐理试题及答案
- 资产回收合同协议模板
评论
0/150
提交评论