版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、详细设计PPT课件详细设计PPT课件5.1 构造程序设计 早在1965年,E.W.Dijkstra就提出构造程序设计的概念。 1966年,Bohm和Jacopini证明了只用三种根本的控制构造就能实现任何单人口单出口的程序。 这三种根本的控制构造是“顺序、“选择和“循环。5.1 构造程序设计 早在1965年,E.W.D上图中的a、b和c就分别是顺序、选择和循环的流程图。上图中的a、b和c就分别是顺序、选择和循环的流程什么是构造程序设计呢? 构造程序设计是一个设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构造。 有人认为构造程序设计的定义中还应包括采用“主程序员组这种人员组
2、织形式。 使用构造程序设计也存在一些好处和一些缺点。 什么是构造程序设计呢? 从理论上说只用那三种根本控制构造就可以实现任何单入口单出口的程序。 但是为了实际使用方便,还常常允许使用DO-UNTIL和DO-CASE两种控制构造。它们的流程图如上图所示。 从理论上说只用那三种根本控制构造就可以实现任何单入5.2 详细设计的工具 描述程序处理过程的工具称为详细设计的工具,它们可以分为图形、表格和语言三类。 不管是哪类工具,对它们的根本要求都是能提供对设计的无歧义的描述,也就是应该能指明控制流程、处理功能、数据组织以及其他方面的实现细节,从而在编码阶段能把对设计的描述直接翻译成程序代码。5.2 详细
3、设计的工具 描述程序处理过程的工具称5.2.1 程序流程图 程序流程图又称为程序框图,它是历史最悠久使用最广泛的描述软件设计的方法。它使用了一些系统流程图中没有的符号。如以下图所示:5.2.1 程序流程图 程序流程图又称为 程序流程图一直是软件设计的主要工具。 它的主要优点是:对控制流程的描绘很直观,便于初学者掌握。 它的主要缺点是: 1. 程序流程图本质上不是逐步求精的好工具。它诱使程序员过早的考虑程序的控制流,而不去考虑程序的全局构造。 2. 程序流程图中用箭头代表控制流,因此程序员可以不受任何约束,可以完全不顾构造程序设计的精神,随意转移控制。 3. 程序流程图不易表示数据构造。 程序流
4、程图一直是软件设计的主要工具。5.2.2 盒图N_S图 这种盒图是不允许违背构造程序设计精神的图形工具。它有下述特点: 1. 功能域明确,可以从盒图上看出来。 2. 不可能任意转移控制。 3. 很容易确定局部和全程数据的作用域。 4. 很容易表现嵌套关系,也可以表示模块的层次构造。5.2.2 盒图N_S图 上图给出了构造化控制构造和调用子程序的盒图表示方法。 上图给出了构造化控制构造和调用子程序的盒图表5.2.3 PAD图 PAD是问题分析图Problem Analysis Diagram)的英文缩写。它用二维树形构造的图来表示程序的控制流。以下图给出了PAD图的根本符号:其中: a顺序先执行
5、P1后执行P2 b选择IF C THEN P1 ELSE P2 cCASE型对分支 dWHILE型循环WHILE C DO P eUNTIL型循环REPEAT P UNTIL C f语句标号 g定义5.2.3 PAD图 PAD是问题分析图PAD图的主要优点如下: (1)使用表示构造化控制构造的PAD符号所设计出来的程序必然是构造化程序。 (2)PAD图所描绘的程序构造十分清晰。上图最左边的竖线是程序的主线,PAD图中竖线的总条数就是程序的层次数。 (3)用PAD图表现程序逻辑,易读,易懂,易记。 (4)容易将PAD图转换成高级语言源程序。 (5)即可用于表示程序逻辑,也可用于描绘数据构造。 (
6、6)PAD图的符号支持自顶向下、逐步求精方法的使用。PAD图的主要优点如下: 使用PAD图,开场时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直到完成详细设计,如以下图所示: 使用PAD图,开场时设计者可以定义一个抽象的程5.2.4 判定表 判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。一张判定表由四局部组成: 左上部列出所有条件。 左下部是所有可能做的动作。 右上部是表示各种条件组合的一个矩阵。 右下部是和每种条件组合相对应的动作。 判定表右半部的每一列实质上是一条规那么,规定了与特定的条件组合相对应的动作。5.2.4 判定表 判定表能够清晰
7、地表示 下面以行李托运费的算法为例说明判定表的组织方式。 假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量超过30公斤时,对头等舱的国内乘客超重局部每公斤收费4元,对其他舱的国内乘客超重局部每公斤收费6元,对国外乘客超重局部每公斤收费比国内乘客多一倍,对残疾乘客超重局部每公斤比正常乘客少一半。 用判定表可以清楚的表示与上述每种条件组合相对应的动作(算法),如下页图所示: 其中“T表示条件成立,“F表示条件不成立,空白表示这个条件的成立与否并不影响对动作的选择。 画“表示做它左边的那项动作,空白表示不做这项动作。 下面以行李托运费的算法为例说明判定表的组织方式详细设计PP
8、T课件5.2.5 判定树 判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系,是一种比较常用的系统分析和设计工具。 与上表判定表对应的判定树如下:5.2.5 判定树 判定树是判定表的变种,5.2.6 过程设计语言(PDL) PDL也称为伪码,它是用正文形式表示数据和处理过程的设计工具。 PDL具有严格的关键字外部语法,用于定义控制构造和数据构造,然而,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程工程的需要,它使用一种语言的词汇,却使用另一种语言的语法。 它具有以下特点: 1. 关键字的固定语法,它提供了构造化控制构造、数据说明和模块化的特
9、点。 2. 自然语言的自由语法,它描述处理特点。 5.2.6 过程设计语言(PDL) PD 3. 数据说明的手段既包括简单的数据构造,又包括复杂的数据构造。 4. 模块定义和调用的技术,应该提供各种接口描述模式。 PDL作为一种设计工具还有如下一些优点: 1.可以作为注释直接插在源程序中间。 2.可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。 3.已经有自动处理程序存在,而且可以自动由PDL生成程序代码。 3. 数据说明的手段既包括简单的数据构造,又5.2.7 模块开发文件夹 模块开发文件夹是组织和保存在软件开发过程种不断产生出来的文档资料的一种有效方法,用这种
10、方法保存和管理文档既方便又容易查阅。 文件夹的封面上列出工程工程的名称、模块名字、程序员姓名、完成日期、修改日期、源程序行数、目标代码长度、对模块的简要描述、以及设计、编码、单元测试和集成测试等阶段的起止时间等等。 文件夹内应该保存对模块详细设计结果的描述、源程序清单、测试时间、修改的源程序清单、最终的源程序清单、测试方案、测试软件和测试结果等等。5.2.7 模块开发文件夹 模块开发文件5.3 Jackson程序设计方法 Jackson程序设计方法是面向数据构造的设计方法,也就是用数据构造作为程序设计的根底。 它的最终目的是得出对程序处理过程的描述,因此,这种方法最适合于在详细设计阶段使用,也
11、就是在完成了软件构造设计之后,可以使用面向数据构造的方法来设计每个模块的处理过程。5.3 Jackson程序设计方法 Jac5.3.1 Jackson图 它的逻辑数据构造只有三种:顺序、选择和重复。 顺序构造:它的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。构造图如以下图所示: 5.3.1 Jackson图 它的逻辑数据构 选择构造:它的数据包括两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。以下图所示的是三个中选一个构造的Jackson图: 选择构造:它的数据包括两个或多个数据元素,每次使 重复构造:它的数据,根据使用时的条件由一个数据元素出现零次或屡
12、次构成。以下图表示重复构造的Jackson图: 重复构造:它的数据,根据使用时的条件由一个数据元Jackson图有下述优点: 便于表示层次构造,而且是对构造进展自顶向下分解的有力工具。 形象直观可读性好。 既能表示数据构造也能表示程序构造。 Jackson图有下述优点:5.3.2 改进的Jackson图 上面介绍的Jackson图的缺点是,用这种图形工具表示选择或重复构造时,选择条件或循环完毕条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序,此外,框间连线为斜线,不易在行式打印机上输出。 为了解决上述问题,建议使用改进的Jackson图。如下页图所示:5.3.2 改进的
13、Jackson图 详细设计PPT课件5.3.3 Jackson方法 Jackson构造程序设计方法根本上由下述五个步骤组成: 1. 分析并确认输入数据和输出数据的逻辑构造,并用Jackson图描述这些数据构造。 2. 找出输入数据构造和输出数据构造中有对应关系的数据单元。 3. 从描述数据构造的Jackson图导出描绘程序构造的Jackson图。 4. 列出所有操作和条件,并且把它们分配到程序构造图的适当位置。 5. 用伪代码表示程序。 5.3.3 Jackson方法 Jack其中第三条需要根据以下规那么: 第一,为每对有对应关系的数据单元,按照它们在数据构造图中的层次在程序构造图的相应层次画
14、一个处理框。 第二,根据输入数据构造中剩余的每个数据单元所处的层次,在程序构造图的相应层次分别为它们画上对应的处理框。 第三,根据输出数据构造中剩余的每个数据单元所处的层次,在程序构造图的相应层次分别为它们画上对应的处理框。其中第三条需要根据以下规那么: Jackson方法中使用的伪码和Jackson图是完全对应的,下面是和三种根本构造对应的伪码。 和图5.11a所示的顺序构造对应的伪码:其中seq和end是关键字。 A seq B C D A end Jackson方法中使用的伪码和Jackso 和图5.11b所示的选择构造对应的伪码,其中select、 or和end示关键字,cond1、c
15、ond2和cond3分别是执行B、C和D的条件: A select cond1 B A or cond2 C A or cond3 D A end 和图5.11b所示的选择构造对应的伪码,其中 和图5.11d所示重复构造对应的伪码,其中iter、 until、 while和end是关键字重复构造有until和while两种形式,cond是条件: A iter until (或while) cond B A end 和图5.11d所示重复构造对应的伪码,其中举例: 一个正文文件由假设干记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式
16、是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。解析: 对于这个简单的例子而言。 第一步:确定输入和输出数据的构造。以下图是用Jackson图描绘的输入/输出数据构造。举例: 一个正文文件由假设干记录组成,每个记录详细设计PPT课件 第二步:在确定了输入/输出数据构造之后,下一步是分析确定在输入数据构造和输出数据构造中由有对应关系的数据单元。 第三步:从数据构造中导出程序构造图。如下: 第二步:在确定了输入/输出数据构造之后,下一 第四步:列出所有操作和条件,并且把它们分配到程序构造图的适当位置。 首先,列出统计空格个数需要的全部操作和条件如下:1停
17、顿 2翻开文件3关闭文件 4印出字符串5印出空格数目 6印出空格总数7sum : =sum+1 8totalsum : =totalsum+sum9读入字符串 10sum : = 011totalsum : = 0 12pointer : = 113pointer : =pointer+1 I1文件完毕 I2字符串完毕 S3字符是空格 其中,sum是保存空格个数的变量,totalsum是保存空格总数的变量,pionter是指示当前分析的字符的在字符串中的位置的变量。 得到如以下图形: 第四步:列出所有操作和条件,并且把它们分配到详细设计PPT课件 第五步:用伪码表示程序处理过程。从图5.14可
18、以得出以下代码:统计空格 seq 翻开文件 读入字符串 totalsum : = 0 程序体 iter until文件完毕 处理字符串 seq 印字符串 seq 印出字符串 印出字符串 end sum := 0 pointer := 1 分析字符串 iter until 字符串完毕 分析字符 select 字符是空格 处理空格 seq sum :=sum+1 pointer :=pointer+1 处理空格 end 第五步:用伪码表示程序处理过程。从图5.14 分析字符 or 字符不是空格 处理非空格 seq pointer :=pointer+1 处理非空格 end 分析字符 end 分析字
19、符串 end 印空格数 seq 印出空格数目 印空格数 end totalsum :=totalsum+sum 读入字符串 处理字符串 end 程序体 end 印总数 seq 印出空格总数 印总数 end 关闭文件 停顿 统计空格 end 分析字符 or 字符不5.5 程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中故障的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的准确限度。 这里着重介绍使用比较广泛的McCabe方法和Halstead方法。5.5 程
20、序复杂程度 定量度量程序复杂程度5.5.1 McCabe方法 使用McCabe方法首先需要画出程序图。 所谓程序图可以看成是“退化了的程序流程图,也就是把程序程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样的有向图就称为程序图。 用McCabe方法度量得出的结果称为程序的环形复杂度,它等于强连通的程序图中线性无关的有向环的个数。 通常称程序图中开场点后面的那个节点为入口点,称停顿点前面的那个节点为出口点。 从程序流程图导出程序图如下页所示:5.5.1 McCabe方法 使用McC详细设计PPT课件1.环形复杂度的计算方法 根据图论,在一个强连通的有
21、向图中线形无关环的个数由下面的公式给出:V(G) = m- n +p 其中V(G)是有向图G中的环数, m是有向图G中的弧数; n 是有向图G中的节点数; p 是有向图G中别离局部的数目。 对于一个正常的程序来说,应该能够从程序图内的入口点到达图中任何一个节点,因此,程序图总是连通的,也就是说,p=1。1.环形复杂度的计算方法 根据图论,在一个强连 强连通图是指从图中任一个节点出发都可以到达所有其他节点。 程序图通常不是强连通的,因为从图中较低的即较靠近出口点的节点往往不能到达较高的节点。然而,如果从出口到入口点画一条虚弧,那么程序图必然成为强连通的。做出这个结论有下述三点理由: (1) 从入
22、口点总能到达图中任何一点; (2) 从图中任何一点总能到达出口点; (3) 经过从出口点到入口点的弧,可以从出口点到达入口点。 强连通图是指从图中任一个节点出发都可以到达所 图5.24(b)不是强连通的,必须增加一条从出口点j到入口点b的虚弧,结果如以下图所示: 图5.24(b)不是强连通的,必须增加一条从2. 环形复杂度的用途 程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序构造的复杂程度。 当程序内分支或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。 McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。 实验说明,模块规模以V(G)10为宜,也就是说, V(G)=10是规模的一个更科学更准确的上限。2. 环形复杂度的用途 程序的环形复杂度取决于5.5.2 Halstead方法 Halstead方法是另一个著名的方法,它是根据程序运算中运算符和操作符的总数来度量程序的复杂程度。 令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N= N1 +N25.5.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年老年护理需求评估考核标准课件
- 医学26年:神经科人才培养要点 查房课件
- 2025年执业兽医资格考试综合应用科目真题与答案
- 评审工作方案及质量保证措施
- 监控员考试试题及答案
- 妇产科护士个人述职报告
- 大数据在毒品犯罪案件侦查中的具体应用
- 2026年四川省安全员B证考试题库(附答案)
- 农产品合格证春节采购查验
- 2026年智能婴儿床智能音乐创新报告
- 兰州体育中考试卷及答案
- 脑卒中后肩痛的发病机制和治疗
- 搬迁设备安全培训课件
- 天然气贸易流程规范
- 宗教事务条例课件
- 乒乓球反手推挡教学课件
- 医院门诊量统计分析报告
- 膀胱结石的护理查房
- 上海市杨浦区2024-2025学年(五四学制)七年级下学期期末语文试题(含答案)
- 生产掉落品管理办法
- 风电场整定计算书
评论
0/150
提交评论