版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 详细设计阶段的根本目的是确定应该怎样详细地实现所要求的系统。 详细设计的结果根本上决议了最终的程序代码的质量。5.1 构造程序设计构造程序设计 早在1965年,E.W.Dijkstra就提出构造程序设计的概念。 1966年,Bohm和Jacopini证明了只用三种根本的控制构培育能实现任何单人口单出口的程序。 这三种根本的控制构造是“顺序、“选择和“循环。上图中的a、b和c就分别是顺序、选择和循环的流程图。什么是构造程序设计呢? 构造程序设计是一个设计程序的技术,它采用自顶向下逐渐求精的设计方法和单入口单出口的控制构造。 有人以为构造程序设计的定义中还应包括采用“主程序员组这种人员组织方式。
2、 运用构造程序设计也存在一些益处和一些缺陷。 从实际上说只用那三种根本控制构培育可以实现任何单入口单出口的程序。 但是为了实践运用方便,还经常允许运用DO-UNTIL和DO-CASE两种控制构造。它们的流程图如上图所示。5.2 详细设计的工具详细设计的工具 描画程序处置过程的工具称为详细设计的工具,它们可以分为图形、表格和言语三类。 不论是哪类工具,对它们的根本要求都是能提供对设计的无歧义的描画,也就是应该能指明控制流程、处置功能、数据组织以及其他方面的实现细节,从而在编码阶段能把对设计的描画直接翻译成程序代码。5.2.1 程序流程图程序流程图 程序流程图又称为程序框图,它是历史最悠久运用最广
3、泛的描画软件设计的方法。它运用了一些系统流程图中没有的符号。如以下图所示: 程序流程图不断是软件设计的主要工具。 它的主要优点是:对控制流程的描画很直观,便于初学者掌握。 它的主要缺陷是: 1. 程序流程图本质上不是逐渐求精的好工具。它诱使程序员过早的思索程序的控制流,而不去思索程序的全局构造。 2. 程序流程图中用箭头代表控制流,因此程序员可以不受任何约束,可以完全不顾构造程序设计的精神,随意转移控制。 3. 程序流程图不易表示数据构造。 5.2.2 盒图盒图N_S图图 这种盒图是不允许违背构造程序设计精神的图形工具。它有下述特点: 1. 功能域明确,可以从盒图上看出来。 2. 不能够恣意转
4、移控制。 3. 很容易确定部分和全程数据的作用域。 4. 很容易表现嵌套关系,也可以表示模块的层次构造。 上图给出了构造化控制构造和调用子程序的盒图表示方法。5.2.3 PAD图图 PAD是问题分析图Problem Analysis Diagram)的英文缩写。它用二维树形构造的图来表示程序的控制流。以下图给出了PAD图的根本符号:其中: a顺序先执行P1后执行P2 b选择IF C THEN P1 ELSE P2 cCASE型对分支 dWHILE型循环WHILE C DO P eUNTIL型循环REPEAT P UNTIL C f语句标号 g定义PAD图的主要优点如下: (1)运用表示构造化控
5、制构造的PAD符号所设计出来的程序必然是构造化程序。 (2)PAD图所描画的程序构造非常明晰。上图最左边的竖线是程序的主线,PAD图中竖线的总条数就是程序的层次数。 (3)用PAD图表现程序逻辑,易读,易懂,易记。 (4)容易将PAD图转换成高级言语源程序。 (5)即可用于表示程序逻辑,也可用于描画数据构造。 (6)PAD图的符号支持自顶向下、逐渐求精方法的运用。 运用PAD图,开场时设计者可以定义一个笼统的程序,随着设计任务的深化而运用def符号逐渐添加细节,直到完成详细设计,如以下图所示:5.2.4 断定表断定表 断定表可以明晰地表示复杂的条件组合与应做的动作之间的对应关系。一张断定表由四
6、部分组成: 左上部列出一切条件。 左下部是一切能够做的动作。 右上部是表示各种条件组合的一个矩阵。 右下部是和每种条件组合相对应的动作。 断定表右半部的每一列本质上是一条规那么,规定了与特定的条件组合相对应的动作。 下面以行李托运费的算法为例阐明断定表的组织方式。 假设某航空公司规定,乘客可以免费托运分量不超越30公斤的行李。当行李分量超越30公斤时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对国外乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤比正常乘客少一半。 用断定表可以清楚的表示与上述每种条件组合相对应的动作(算法),如下页图所
7、示: 其中“T表示条件成立,“F表示条件不成立,空白表示这个条件的成立与否并不影响对动作的选择。 画“表示做它左边的那项动作,空白表示不做这项动作。5.2.5 断定树断定树 断定树是断定表的变种,也能明晰地表示复杂的条件组合与应做的动作之间的对应关系,是一种比较常用的系统分析和设计工具。 与上表断定表对应的断定树如下:5.2.6 过程设计言语过程设计言语(PDL) PDL也称为伪码,它是用正文方式表示数据和处置过程的设计工具。 PDL具有严厉的关键字外部语法,用于定义控制构造和数据构造,然而,PDL表示实践操作和条件的内部语法通常又是灵敏自在的,以便可以顺应各种工程工程的需求,它运用一种言语的
8、词汇,却运用另一种言语的语法。 它具有以下特点: 1. 关键字的固定语法,它提供了构造化控制构造、数听阐明和模块化的特点。 2. 自然言语的自在语法,它描画处置特点。 3. 数听阐明的手段既包括简单的数据构造,又包括复杂的数据构造。 4. 模块定义和调用的技术,应该提供各种接口描画方式。 PDL作为一种设计工具还有如下一些优点: 1.可以作为注释直接插在源程序中间。 2.可以运用普通的正文编辑程序或文字处置系统,很方便地完成PDL的书写和编辑任务。 3.曾经有自动处置程序存在,而且可以自动由PDL生成程序代码。5.2.7 模块开发文件夹模块开发文件夹 模块开发文件夹是组织和保管在软件开发过程种
9、不断产生出来的文档资料的一种有效方法,用这种方法保管和管理文档既方便又容易查阅。 文件夹的封面上列出工程工程的称号、模块名字、程序员姓名、完成日期、修正日期、源程序行数、目的代码长度、对模块的简要描画、以及设计、编码、单元测试和集成测试等阶段的起止时间等等。 文件夹内应该保管对模块详细设计结果的描画、源程序清单、测试时间、修正的源程序清单、最终的源程序清单、测试方案、测试软件和测试结果等等。5.3 Jackson程序设计方法程序设计方法 Jackson程序设计方法是面向数据构造的设计方法,也就是用数据构造作为程序设计的根底。 它的最终目的是得出对程序处置过程的描画,因此,这种方法最适宜于在详细
10、设计阶段运用,也就是在完成了软件构造设计之后,可以运用面向数据构造的方法来设计每个模块的处置过程。5.3.1 Jackson图图 它的逻辑数据构造只需三种:顺序、选择和反复。 顺序构造:它的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。构造图如以下图所示: 选择构造:它的数据包括两个或多个数据元素,每次运用这个数据时按一定条件从这些数据元素中选择一个。以下图所示的是三个中选一个构造的Jackson图: 反复构造:它的数据,根据运用时的条件由一个数据元素出现零次或多次构成。以下图表示反复构造的Jackson图:Jackson图有下述优点: 便于表示层次构造,而且是对构造进展自顶向下分
11、解的有力工具。 笼统直观可读性好。 既能表示数据构造也能表示程序构造。 5.3.2 改良的改良的Jackson图图 上面引见的Jackson图的缺陷是,用这种图形工具表示选择或反复构造时,选择条件或循环终了条件不能直接在图上表示出来,影响了图的表达才干,也不易直接把图翻译成程序,此外,框间连线为斜线,不易在行式打印机上输出。 为理处理上述问题,建议运用改良的Jackson图。如下页图所示:5.3.3 Jackson方法方法 Jackson构造程序设计方法根本上由下述五个步骤组成: 1. 分析并确认输入数据和输出数据的逻辑构造,并用Jackson图描画这些数据构造。 2. 找出输入数据构造和输出
12、数据构造中有对应关系的数据单元。 3. 从描画数据构造的Jackson图导出描画程序构造的Jackson图。 4. 列出一切操作和条件,并且把它们分配到程序构造图的适当位置。 5. 用伪代码表示程序。 其中第三条需求根据以下规那么: 第一,为每对有对应关系的数据单元,按照它们在数据构造图中的层次在程序构造图的相应层次画一个处置框。 第二,根据输入数据构造中剩余的每个数据单元所处的层次,在程序构造图的相应层次分别为它们画上对应的处置框。 第三,根据输出数据构造中剩余的每个数据单元所处的层次,在程序构造图的相应层次分别为它们画上对应的处置框。 Jackson方法中运用的伪码和Jackson图是完全
13、对应的,下面是和三种根本构造对应的伪码。 和图5.11a所示的顺序构造对应的伪码:其中seq和end是关键字。 A seq B C D A end 和图5.11b所示的选择构造对应的伪码,其中select、 or和end示关键字,cond1、cond2和cond3分别是执行B、C和D的条件: A select cond1 B A or cond2 C A or cond3 D A end 和图5.11d所示反复构造对应的伪码,其中iter、 until、 while和end是关键字反复构造有until和while两种方式,cond是条件: A iter until (或while) cond
14、B A end举例: 一个正文文件由假设干记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。解析: 对于这个简单的例子而言。 第一步:确定输入和输出数据的构造。以下图是用Jackson图描画的输入/输出数据构造。 第二步:在确定了输入/输出数据构造之后,下一步是分析确定在输入数据构造和输出数据构造中由有对应关系的数据单元。 第三步:从数据构造中导出程序构造图。如下: 第四步:列出一切操作和条件,并且把它们分配到程序构造图的适当位置。 首先,列
15、出统计空格个数需求的全部操作和条件如下:1停顿 2翻开文件3封锁文件 4印出字符串5印出空格数目 6印出空格总数7sum : =sum+1 8totalsum : =totalsum+sum9读入字符串 10sum : = 011totalsum : = 0 12pointer : = 113pointer : =pointer+1 I1文件终了 I2字符串终了 S3字符是空格 其中,sum是保管空格个数的变量,totalsum是保管空格总数的变量,pionter是指示当前分析的字符的在字符串中的位置的变量。 得到如以下图形: 第五步:用伪码表示程序处置过程。从图5.14可以得出以下代码:统计
16、空格 seq 翻开文件 读入字符串 totalsum : = 0 程序体 iter until文件终了 处置字符串 seq 印字符串 seq 印出字符串 印出字符串 end sum := 0 pointer := 1 分析字符串 iter until 字符串终了 分析字符 select 字符是空格 处置空格 seq sum :=sum+1 pointer :=pointer+1 处置空格 end 分析字符 or 字符不是空格 处置非空格 seq pointer :=pointer+1 处置非空格 end 分析字符 end 分析字符串 end 印空格数 seq 印出空格数目 印空格数 end t
17、otalsum :=totalsum+sum 读入字符串 处置字符串 end 程序体 end 印总数 seq 印出空格总数 印总数 end 封锁文件 停顿 统计空格 end5.5 程序复杂程度程序复杂程度的定量度量的定量度量 定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中缺点的数量以及软件开发需求用的任务量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的准确限制。 这里着重引见运用比较广泛的McCabe方法和Halstead方法。5.5.1 McCabe方法方法 运用McCabe方法首先需求画出程序图。 所
18、谓程序图可以看成是“退化了的程序流程图,也就是把程序程序流程图中每个处置符号都退化成一个点,原来衔接不同处置符号的箭头变成衔接不同点的有向弧,这样的有向图就称为程序图。 用McCabe方法度量得出的结果称为程序的环形复杂度,它等于强连通的程序图中线性无关的有向环的个数。 通常称程序图中开场点后面的那个节点为入口点,称停顿点前面的那个节点为出口点。 从程序流程图导出程序图如下页所示:1.环形复杂度的计算方法 根据图论,在一个强连通的有向图中线形无关环的个数由下面的公式给出:V(G) = m- n +p 其中V(G)是有向图G中的环数, m是有向图G中的弧数; n 是有向图G中的节点数; p 是有
19、向图G中分别部分的数目。 对于一个正常的程序来说,应该可以从程序图内的入口点到达图中任何一个节点,因此,程序图总是连通的,也就是说,p=1。 强连通图是指从图中任一个节点出发都可以到达一切其他节点。 程序图通常不是强连通的,由于从图中较低的即较接近出口点的节点往往不能到达较高的节点。然而,假设从出口到入口点画一条虚弧,那么程序图必然成为强连通的。做出这个结论有下述三点理由: (1) 从入口点总能到达图中任何一点; (2) 从图中任何一点总能到达出口点; (3) 经过从出口点到入口点的弧,可以从出口点到达入口点。 图5.24(b)不是强连通的,必需添加一条从出口点j到入口点b的虚弧,结果如以下图
20、所示:2. 环形复杂度的用途 程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序构造的复杂程度。 当程序内分支或循环个数添加时,环形复杂度也随之添加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。 McCabe研讨大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。 实验阐明,模块规模以V(G)10为宜,也就是说, V(G)=10是规模的一个更科学更准确的上限。5.5.2 Halstead方法方法 Halstead方法是另一个著名的方法,它是根据程序运算中运算符和操作符的总数来度量程序的复杂程度。 令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N= N1 +N2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年风管绝热施工专用合同条款
- 2025学校安保人员聘用合同
- 2024版山皮石运输合同
- 2024年行政事业性收费项目合作协议中优益权实施合同3篇
- 2025年度淘宝店铺新品研发及上市合作框架3篇
- 2025年家庭服务员雇佣合同3篇
- 2025农民田地租赁合同
- 2025版新能源电动汽车租赁与二手车置换合作协议3篇
- 2024年物业共享空间运营管理合同3篇
- 甲亢围手术期护理
- 2024年度软件开发分包合同技术要求与交底2篇
- 居家养老人员培训管理制度
- 抗菌药物的合理应用培训
- 初三数学老师家长会发言稿
- 湖北第二师范学院《操作系统》2023-2024学年期末试卷
- 2021-2022学年河北省唐山市高一上学期期末语文试题
- 舒适化医疗麻醉
- 南宁二中、柳州高中2025届高一上数学期末联考试题含解析
- 吃动平衡健康体重 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 高效能人士的七个习惯(课件)
- 2024年秋季学期新鲁教版(54制)6年级上册英语课件 Unit6 Section A (3a-3c)(第3课时)
评论
0/150
提交评论