版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 传统的设计方法,5.1 概述 5.2 结构化设计方法 5.3 过程设计 5.4 Jackson方法,教学内容:,软件设计的基本概念和原则,软件设计的重要作用: 软件设计处于软件工程过程中的技术核心位置,它将完成待建造软件的有意义的工程表示。,软件设计阶段的目标: 使用很多设计方法,产生数据设计、体系结构设计、接口设计和构件设计。为软件的编程阶段提供依据。,软件设计的依据: 系统分析 系统设计,数据 字典,实体 关系图,数据流图,状态变迁图,数据 对象 描述,加工规约,控制规约,构件设计,接口设计,体系结构设计,数据设计,软件设计原则, 设计视点不要局限在局部范围 设计是来源于分析模型的
2、,是分析模型可跟踪的 设计应该尽量使用已有的模式,不应该总是从头开始 设计应尽可能模拟问题域的结构,缩短与现实问题的距离 设计应表现风格一致,应该有统一的规则和接口形式 设计应考虑可构造性 设计应考虑最恶略情况下的适应性,即健壮性 设计应避免考虑程序实现细节,因为它毕竟不是编码 应该根据质量度量标准来考虑设计 设计应注意对概念错误的评审,而避免过早注意细节,5.1概述,1.面向数据流设计和面向数据(或数据结构)设计,面向数据流的设计方法,这是一种概要设计技术,根据需求阶段对数据流的分析设计软件的总体结构。 数据流中的每个转换代表了系统功能的某个部分,应该被映射成软件的一部分模块。 面向数据流设
3、计方法的步骤: 确定信息流的类型 划定流界 将数据流映射为软件结构 提取层次控制结构 通过设计复审和使用启发式策略精化软件结构。,面向数据或数据结构的设计,面向数据的设计(data structured-oriented design)方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的程序结构。 而面向数据结构的设计,则侧重于问题的数据结构,把程序结构设计成与问题的数据结构一致,不强调模块定义。模块只是设计过程的副产品,对于模块独立性原则也未过分强调。这种程序结构容易理解,也易于修改。 面向数据设计方法一般都包括下列任务: 1确定数据结构特征; 2用顺序、选择和重复三种基本
4、形式表示数据; 3把数据结构表示映射为软件的控制结构; 4用与具体方法配套的设计指南进一步精化控制结构; 5开发软件的过程性描述。,比较面向数据流和面向数据结构两类设计方法的异同,相同点: (1) 遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础; (2) 均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。 不同点: (1) 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。 (
5、2) 面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。,数据设计: 将分析信息模型转换成数据结构,来自于 实体关系图和数据字典,体系结构设计: 定义软件的主要结构元素、设计模式及应用约束(子系统的交互),接口设计: 描述软件内部、软件和协作系统之间的通信,数据流或控制流的特定行为,构件设计: 结构元素变换为软件过程的描述,来自于处理说明以及状态变换图,软件设计的4个活动,2.从分析模型导出设计模型,数据 字典,数据 流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模
6、型,设计模型,5.2 结构化设计方法,结构化设计方法,模块设计 体系结构设计,软件设计的任务-确定系统怎么做, 结构化设计活动划分为两个阶段: 确定系统的整体体系结构-总体设计 确定各模块的具体实现-详细设计,界面设计 构件级程序设计, 表示工具: 总体设计 详细设计,层次图 (Hierarchy) IPO图(Input-Process-Output) 模块说明,程序框图 盒图(N-S图) 决策表 PDL语言,结构化设计的适用范围,尤其适用于采用结构化程序设计实现的系统; 结构化设计并不是一种广泛适用的系统设计技术; 结构化设计的结果。,SA与SD的关系,SD来源于SA,来源:结构化分析,来源
7、:结构化分析,来源:结构化分析,数据流图 字典项 伪码 实体关系图 事务框图,环境的限制,质量的标准,转化分析,细化设计,进入实现阶段,初始结构框图,1. SC图(Structure Chart),(1)SC中的组成符号 SD方法在概要设计中的主要表达工具约定: 用矩形框表示模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。,(2)SD方法在概要设计中的主要表达工具约定:,不加区分的数据,数据信息,控制信息,SC中的四种模块,在系统结构图中的模块,传入模块 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。 传出模块
8、 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。 变换模块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。 协调模块 对所有下属模块进行协调和管理的模块。,酒店管理信息系统功能结构图,客人登记,预定登记,客房处理,历史记录,客房查询,预定查询,餐桌安排,菜单作业,营业结帐,汇总打印,各类查询,初始设置,客帐处理,退房处理,夜审处理,客帐查询,报表打印,HIMS,客房管理子系统,收银管理子系统,餐饮管理子系统,大型零售商场管理信息系统功能结构图,2.SC图中的模块调用,X,Y,Z,Z,1,2,(1
9、)简单调用,(2)选择调用,A,C,B,D,A根据内 部判断决定是否调用B,A按另一判定结果选择调用C或D,(3)SC中的循环调用,A,B,C,A根据内在的循环重 复调用B、C等模块,2 .数据流图的类型与结构化设计方法(SD),面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法,DFD(问题结构),软件系统的结构 (程序结构),映射,系统结构特征可归纳为两种典型形式:,变换型结构 事务型结构 数据流图可分为两种类型: 变换型数据流 事务型数据流,(1)数据流图的类型,变换 中心,输入,输出,变换型 结构,事务 中心,接受 路径,动 作 路 径,基
10、本模型 特征,事务型结构,由输入、变换中心和输出三部分组成,具有在多种事务中选择执行某类事务的能力,变换流示意图,信息,时间,输入流,输出流,交换流,变换型 数据流 结构,传入,变换,传出,变换 中心,传入 部分,传出 部分,事务 分析,事务 中心,动作 1,动作 2,动作 3,接受,接受 部分,事务型 数据流 结构,变换型数据流举例,输入 信息,物理 输入,格式 检查,处理,显示,正确 信息,结果,物理 输出,数据,变换中心,逻辑 输入,逻辑 输出,传入部分,传出部分,特点:具有明确的传入、变换(或称主加工) 和传出界面的DFD,变换型系统结构图,变换型数据处理问题的工作过程大致分为三步,即
11、取得数据,变换数据和给出数据。 相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。,事务型系统结构图,它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。 在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。,事务型数据流图举例,A,B,E,H,O,M,I,D,C,N,L,F,G,确定DFD中是否含有事务流,T,事务,.,.,.,事务流: 沿多条路径之一触发的数据流,事务中心,动作路径,在一个大系统
12、的DFD中,变换流和事务流可能是同时出现的,事务映射方法,事务映射方法,接收路径,C路径,B路径,A路径,C1,C2,C3,调度,事务控制,大型系统DFD中,变换型和事务型 结构往往共存:,T,事务中心,传入,变换,传出,(2) 面向数据流设计方法的设计步骤,精化DFD 确定DFD类型 把DFD映射到系统模块结构设计 出模块结构的上层 基于DFD逐步分解高层模块设计 出下层模块 根据模块独立性原理,精化模 块结构,面向数据流方法的设计过程,精化数据流图,区分事务中心 和数据接收路径,映射成变换结构,区分输入和 输出分支,映射成事务结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,
13、详细设计,事务分析,变换分析,复查,事务,变换,流类型,SD方法的两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,初始的SC,主模块,输入模块,主加工模块,输入模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,变换分析方法由以下四步组成: 重画数据流图; 区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分; 进行一级分解,设计上层模块; 进行二级分解,设计输入、输出和中心变换部分的中、下层模块。,3. 变换分析设计方法,步骤: (1)区分传入、变换中心、传出部分,在 DFD 上标明分界线,变换
14、分析设计方法步骤,确定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,传入模块,传出模块,中心变换模块,第一级分解后的
15、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
16、,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设置,读 传感器,获得回应信息,证实警告条件,选择 电话号,连接
17、电话网 设置,产生拨号脉冲,格式化 显示,产生 显示,产生警告信号,监控 传感器执行,传感器 输入控制,警告 输出控制,警告 条件控制,传感器ID 类型位置,格式化 ID 类型位置,警告数据,警告类型,传感器 信息,电话号音,语音读 电话号,电话号,号码表,警告条件码 传感器ID 时间信息,一级因子化,监控 传感器执行,传感器 输入控制,警告 输出控制,警告 条件控制,获得 回应信息,读 传感器,证实 警告条件,选择 电话号,格式化 显示,产生 警告信号,连接电话网设置,产生 显示,产生 拨号脉冲,二级因子化,变换映射方法例子, 在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完
18、成 之后,才 能转向另 一个模块 的下层模 块的设计。, 在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。 使用“黑箱”技术: 在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。, 在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过10个,可设立中间层次。 如果出现了以下情况,就停止模块的功能分解:当模块不能再细分为明显的子任务时;当分解成用户提供的模块或程序
19、库的子程序时;当模块的界面是输入输出设备传送的信息时;当模块不宜再分解得过小时。,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时 (有一个明显的事务中心),以采用事务分析方法为宜。,4.事务分析设计方法,事务分析,在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。 与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统结构图。,事务分析过程, 识别事务源利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必
20、须区别系统的输入、中心加工和输出中产生的事务。, 规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。 识别各种事务和它们定义的操作。从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。, 注意利用公用模块在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。 对每一事务,或对联系密切的一组事务,建立一个事务处理模块如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。, 对事务处理模块规定它们全部的下层操作模块
21、 对操作模块规定它们的全部细节模块变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。,事务分析设计方法步骤:,(1)在DFD上确定事务中心、接收部分和发送部分。 (2)画出SC框架,把DFD上的三部分分别映射为事务 控制模块、接收模块和动作发送模块。 (3)分解细化接收分支和发送分支,完成初始SC。,结构图(SC)举例,医院管理系统,门诊 管理,药房 管理,药库 管理,病房 管理,财务 管理,处,方,挂号 处理,挂,号,费,总,计,挂 号 单,挂 号 费 总 计,出库 处理,进
22、药 管理,病历 管理,处方 管理,常规 处理,用户命令交互子系统初始的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户 命令,读系统 数据,配置信息,显示信息 和状态,命令 分析处理,命令类型,建立配 置文件,原配置 数据,格式化 配置数据,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置 数据,格式化 配置数据,密码命令,开/关 命令,配置命令,用户命令交互子系统的SC,用户执行模块,读用户命令,命令处理,用户命令交互子系统,密码,显示信息,系统参数数据,用户 命令,读系统 数据,配置信息,显示信息 和状态,命令 分析处理,命令类
23、型,建立配 置文件,原配置 数据,格式化 配置数据,重试信息,四位数字,检验信息,检验信息,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,事务层,操作层,细节层,处理层,主模块,操作 模块,细节 模块,事务加工 模块,事务流设计举例
24、,取 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(第一层),控制面板,传感器,用户 交互 子系统,控制面板 显示,警告,电话线,用户命令 和数据,传感器 状态,显示信息,警告
25、类型,电话号信号,配置 系统,监控 传感器,处理 口令,激活或失效 系统,显示 信息和 状态,传感器信息,配置信息,正确的ID信息,配置数据,配置数据,配置请求,启动停止,口令,激活/失效信息,事务映射方法例子,用交互子系统DFD(第二层),读用户命令,请求命令处理,读系统数据,建立配置文件,激活或失效 系统,读 口令,用文件比较 口令,产生 无效的 信息,显示 信息和状态,配置信息,用户命令,命令类型,启动停止,A/D信息,配置数据,配置,系统参数 和数据,配置数据,口令,输入口令,4位数字,无效的 口令,有效口令,配置数据,显示信息,“再试”提示,呈现典型的变换流形式,用户交互 执行,事务
26、映射方法例子,用交互子系统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,
27、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,深度,宽度,扇出,扇入,设计的基本概念和方法,结构划分:,在设计阶段,要用到的另一程序结构划分方式,水平划分: 将系统
28、功能分为独立的几部分(输入、处理、输出)当系统维护时,问题清晰,互无干扰。,输入,输出,变换,垂直划分: 上层为控制,中层为分别控制,下层为各独立的处理。当系统的维护时,引发的副作用小。,垂直划分,水平划分,改进软件结构设计的指导原则 (软件结构设计的启发式规则),模块功能的完善化 消除重复功能 将模块的影响限制在模块的控制范围内 深度、宽度、扇出和扇入适中 模块大小适中 模块功能可预测 避免模块的病态连接 应该尽量降低模块接口的复杂性 尽量将相同功能的模块提取为公共模块 分解模块可以减少控制信息传递 合并模块可以减少全局数据的引用,应该尽量降低模块接口的复杂性,例如:,接口表示复杂是软件发生
29、错误的一个主要原因!,Quad-Root ( TBL ,X );求一元二次方程的根 TBL:数组,传送方程的系数 X:数组,回送求出的根,Quad-Root ( A , B,C,root1, root2 ) ; A ,B,C :方程的系数 root1, root2 :求出的两个根,模块功能应该可以预测,模块功能不可预测: 带有内部状态的模块,则功能不可预测,因为,它的输出可能由于状态的不同,而导致相同的输入有不同的输出。,产生的原因: 不可预测的模块往往是非单一功能成分的组合,或者是内部多分支情况处理。,不可预测功能的模块,不易于理解和维护!,解决方法: 注意高内聚的模块设计,拆分多种情况的功
30、能。但也不要使功能过分局限。,分解模块可以减少控制信息传递,例如:,控制功能模块,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:
31、 将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
32、的控制范围,减少高扇出争取高扇入,高扇出的模块结构举例:,编外 人员 工资,取得 工资 数据,计时 制工 资额,薪金 制工 资额,编外 人员 税款,编外 人员 扣款,常规 扣款,税收 扣款,计算实发工资,避免平铺结构,增加中间层降低扇出,编外 人员 工资,取得工资数据,计时 制工 资额,薪金 制工 资额,编外 人员 税款,编外 人员 扣款,常规 扣款,税收 扣款,计算实发工资,计时工人实发工资,计薪工人实发工资,编外人员实发工资,模块过大:可理解程度下降 模块过小:开销大于有效操作,系统接口复杂,模块大小适中,模块功能可预测,模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部
33、状态其功能可能是不可预测的。难理解、难测试、难维护。,防止模块功能过分局限,功能单一的模块具有高内聚。 但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。,避免模块的病态连接,防止指向模块中间的分支或引用(针对内容耦合) 根据设计约束和可移植性需求对软件打包 打包指用来为特定环境组装软件的技术,5.3 详细设计(过程设计、模块设计),1.目的与任务 目的:为软件结构图中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述。,目的与任务,主要任务:编写详细设计说明书为此,设计人员应: (
34、1)确定每个模块的算法,用工具表达算法的过程,写 出模块的详细过程性描述。 (2)确定每一模块的数据结构。 (3)确定模块接口细节。 详细设计是编码的先导,2. 结构化程序设计(SP)方法,传统的设计技术和旧观念: 强调设计的随意性,具有浓厚的个人色彩 追求程序效率和个人设计技巧 新的设计思想和风格: 清晰第一 使用标准的、规范的控制结构 逐步细化,3. 常用的表达工具,程序流程图 盒图(N-S图) 问题分析图(PAD) 伪代码和过程设计语言(PDL) 判定表,程序流程图,程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:,示例,程序流程图的标准符号,循环的标准符号 注解的使用,多出
35、口判断,盒图(N-S图),用方框图代替传统的流程图 五种基本控制结构由五种图形构件表示。 (1) 顺序型,A,B,C,(2) 选择型(If then else) If then else If then,A,B,F,条件,T,A,F,T,条件,Else-部分,Then-部分,Then-部分,(3)多分支选择型(CASE型),A1,值1,A2,An,.,.,条件,值2,值n,(4) WHILE重复型 (5) UNTIL重复型,S (循环体),DO-WHILE P,S (循环体),REPEAT UNTIL P,(先测试循环),(后测试循环),(循环条件),示例,N-S图的嵌套定义形式,问题分析图(
36、PAD),(Problem Analysis Diagram) 基本控制结构: (1)顺序结构 (2)选择结构,A,B,C,A,B,T,F,条件,(3)重复结构,WHILE C,S,UNTIL C,S,(先测试循环),(后测试循环),等价的PASCAL语言: REPEAT C UNTIL S,等价的PASCAL语言: WHILE C DO S,(4) 多分支选择型(CASE型),A1,值1,值2,值n,A2,An,. . .,.,.,.,条件,问题分析图(PAD),PAD描述的示例,对应于增量型循环结构 for i := n1 to n2 step n3 do在PAD中有相应的循环控制结构,P
37、AD的扩充控制结构,PDL (Program Design Language),PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。 伪码的语法规则分为“外语法”和“内语法”。 PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。,伪代码和PDL语言,示例: 拼词检查程序,PROCEDURE spellcheck IS BEGIN split document into single words lood up words in dictionary display words which ar
38、e not in dictionary create a new dictionary END spellcheck,PDL的特点,提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。 为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。,内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。 有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。 有子程序定义与调用机制,用以表达各种方式的接口说明。,使用P
39、DL语言,逐步求精:,PROCEDURE spellcheck BEGIN-* split document into single wordsLOOP get next word add word to word list in sortorder EXIT WHEN all words processedEND LOOP -* look up words in dictionaryLOOP get word from word list,IF word not in dictionary THEN -* display words not in dictionary display wor
40、d prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processedEND LOOP,-* create a new words dictionary dictionary : merge dictionary and good word list END spellcheck,判定表,判定表用于表示程序的静态逻辑 在判定表中的条件部分给出所有的
41、两分支判断的列表,动作部分给出相应的处理 要求将程序流程图中的多分支判断都改成两分支判断,无多分支判断结构,例:某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30元,副教授25元,讲师20元,助教15元。,建立判定表的步骤,列出与一个具体过程(或模块)有关的所有处理。 列出过程执行期间的所有条件(或所有判断)。 将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。 将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。,判定树,教师课时津贴判定树,4.
42、过程设计示例,层次图和HIPO图,IBM公司发明的HIPO图: 层次图 + 输入 / 处理 /输出图 (H图) + (IPO图) ( Hierachy Input Process Output ),层次图(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图中每一方框(模块)均有一张IP
43、O图对应。,传统的IPO图举例,输入,处理,输出,读口令请求,口令文件,1取得输入,2口令确认,3请求确认,请求记录,权限文件,4更新处理,权限记录,状态报告,响应,命令监控器(1.0)的IPO图,改进的IPO图格式,IPO图,系统:,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,处理:,局部数据元素:,注释:,命令监控器,输入,1.0,方华,1999-3-2,命令监控器主控菜单模块,命令监控器主控模块,取得输入、口令确认、请求确认、口令更新处理。输出正确性判断标志。,接收键盘口令,口令正确性判断标志,口令、标志,请求记录 权限记录,改进的IPO图格式,HIPO图,系统:,
44、模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,处理:,局部数据元素:,注释:,人事档案管理系统,打印,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图表示方
45、法,Jackson图的优点:,(1)Jackson图不仅便于表示层次结构,而且也有利于对结构自顶向下分解;,(2)Jackson图形象直观,可读性好;,(3)Jackson图不仅能表示数据结构,也能表示程序结构(因为程序结构也可以由上述3种基本结构组成)。,Jackson图的缺点:,在选择结构和重复结构中,选择条件或循环结束条件不能直接在Jackson图中表示出来。这样就影响了图形的表达能力,也不利于直接把图翻译成程序。,改进的Jackson图,例:高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件
46、都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。 Jackson程序设计方法由五个步骤组成:,2. Jackson程序设计方法示例,第一步 数据结构表示,对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构。,第二步 找出输入数据结构和输出数据结构的对应关系,找出输入数据结构和输出数据结构中有对应关系的数据单元,即有直接因果关系、在程序中可以同时处理的数据单元。需
47、要注意的是,对于重复的数据单元,必须是重复的次序、次数都相同才有可能有对应关系。,第三步 确定程序结构图,根据下述三规则,由Jackson图导出相应的程序结构图:,(1)为每对有对应关系的数据单元,按照它们在数据结构图中所处的层次,在程序结构图中的相应层次画一个处理框。如果这对数据单元在输入数据结构图和输出数据结构图中所处的层次不同,那么应以它们在输入数据结构图和输出数据结构图中层次较低的那个层次作为它们在程序结构图中的处理框所处的层次;,(2)对于输入数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框;,(3)对于输出数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框。,实际上,这一步是一个综合的过程:每对有对应关系的数据单元合画一个处理框,没有对应关系的数据单元则各画一个处理框。,第四步 列出并分配所有操作和条件,列出所有操作和条件(包括分支条件和循环结束条件),并把它们分配到程序结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 为保证制度得到为人本管理创造更有力制度
- 小学英语作业奖惩制度
- 物流公司临时工奖惩制度
- 酒店保安人员奖惩制度
- 幼儿园家庭规则奖惩制度
- 编办信息报送奖惩制度
- 学校节水管理奖惩制度
- 涉军信访奖惩制度汇编
- 羽毛球馆员工奖惩制度
- 公务用车司机奖惩制度
- 2025年山东省中考道德与法治试卷真题(含答案)
- 村委会党员春训活动方案
- 征兵心理测试题目及答案
- 十堰市茅箭区教育局所属学校招聘考试真题2024
- 保密警示教育典型泄密案例教育学习
- 《大学生职业生涯规划与就业指导(实践版)》全套教学课件
- 8.2重力 力的示意图(原卷版)-八年级物理下册同步-课堂(苏科版)
- 2025年磨工职业技能竞赛参考试指导题库500题(含答案)
- 高速公路服务区物业服务方案
- 毕业设计(论文)-辣椒采摘装置结构设计
- 部编人教版五年级下册小学道德与法治教案
评论
0/150
提交评论