结构化详细设计_第1页
结构化详细设计_第2页
结构化详细设计_第3页
结构化详细设计_第4页
结构化详细设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-5-9曲阜师范大学计算机科学学院1 第第8章章 结构化详细设计结构化详细设计 2021-5-9曲阜师范大学计算机科学学院2 第8章 结构化详细设计 本章的主要目标是基于总体设计结果,进行结构化的软件 模块详细设计。读完本章,你将了解以下基本内容: p结构化程序设计的理念。 p人机界面设计原理及注意问题。 p详细设计工具。 p面向数据结构的设计方法。 p程序复杂程度定量度量标准。 详细设计的根本目标是确定怎样具体地实现所要求的 系统。即经过这个阶段的设计工作,应该得出对目标系统 的精确描述,从而在编码阶段可以把这个描述直接翻译成 用某种程序设计语言书写的程序。 详细设计阶段的任务还不是

2、具体地编写程序代码,而 是设计出程序的“蓝图”,程序员则根据蓝图写出实际的 程序代码。 2021-5-9曲阜师范大学计算机科学学院3 contents 8.1 结构化程序设计基础结构化程序设计基础 8.2 人机界面设计人机界面设计 8.3 过程设计的工具过程设计的工具 8.4 面向数据结构的设计方法面向数据结构的设计方法 8.5 程序复杂程度的定量度量程序复杂程度的定量度量 2021-5-9曲阜师范大学计算机科学学院4 8.1 结构化程序设计基础结构化程序设计基础 结构化程序设计的概念最早由e.w. dijkstra提出。 1966年bohm和jacopini证明了,只用3种基本的控制结构 就

3、能实现任何单入口单出口的程序。 2021-5-9曲阜师范大学计算机科学学院5 1968年dijkstra再次建议从一切高级语言中取消goto语 句,只使用3种基本控制结构写程序。 1971年ibm公司在纽约时报信息库管理系统设计中成功地 使用了结构化程序设计技术,随后在美国宇航局空间实验 室飞行模拟系统的设计中,结构化程序设计技术再次获得 圆满成功。 1972年ibm公司的mills进一步提出,程序应该只有一个入 口和一个出口,从而补充了结构程序设计的规则。 6 三种基本的控制结构三种基本的控制结构 顺序结构,先执行顺序结构,先执行a再执行再执行b if_then_else型选择(分支)结构型

4、选择(分支)结构 do_while型循环结构:型循环结构: 在循环控制条件成立时,重复执行特定的加工。在循环控制条件成立时,重复执行特定的加工。 实际上用顺序结构和循环结构(又称实际上用顺序结构和循环结构(又称do_while结结 构)完全可以实现选择结构(又称构)完全可以实现选择结构(又称if_then_else 结构),因此,理论上最基本的控制结构只有两种。结构),因此,理论上最基本的控制结构只有两种。 7 三种基本的控制结构三种基本的控制结构 8 结构程序设计的定义结构程序设计的定义 结构程序设计是一种设计程序的技术,它采用自顶结构程序设计是一种设计程序的技术,它采用自顶 向下逐步求精的

5、设计方法和单入口单出口的控制结向下逐步求精的设计方法和单入口单出口的控制结 构。构。 在总体设计阶段采用自顶向下逐步求精的方法:把一个复在总体设计阶段采用自顶向下逐步求精的方法:把一个复 杂问题的解法分解和细化成一个由许多模块组成的层次结杂问题的解法分解和细化成一个由许多模块组成的层次结 构的软件系统。构的软件系统。 详细设计或编码阶段采用自顶向下逐步求精的方法:可以详细设计或编码阶段采用自顶向下逐步求精的方法:可以 把一个模块的功能逐步分解细化为一系列具体的处理步骤把一个模块的功能逐步分解细化为一系列具体的处理步骤 或某种高级语言的语句。或某种高级语言的语句。 9 结构程序设计的优点结构程序

6、设计的优点 1.可以显著提高软件开发工程的成功率和生产率可以显著提高软件开发工程的成功率和生产率 。 2.程序有清晰的层次结构,因此容易阅读和理解。程序有清晰的层次结构,因此容易阅读和理解。 3.开发时比较容易保证程序的正确性,即使出现错开发时比较容易保证程序的正确性,即使出现错 误也比较容易诊断和纠正。误也比较容易诊断和纠正。 4.源程序清晰流畅,易读易懂而且容易测试。源程序清晰流畅,易读易懂而且容易测试。 5.程序清晰和模块化使得在修改和重新设计一个软程序清晰和模块化使得在修改和重新设计一个软 件时可以重用的代码量最大。件时可以重用的代码量最大。 6.程序的逻辑结构清晰,有利于程序正确性证

7、明。程序的逻辑结构清晰,有利于程序正确性证明。 10 扩充的控制结构扩充的控制结构 为了实际使用方便起见,常常还允许使用为了实际使用方便起见,常常还允许使用 do_case型多分支结构和型多分支结构和do_until型循环结型循环结 构。构。 有时需要立即从循环(甚至嵌套的循环)中转移有时需要立即从循环(甚至嵌套的循环)中转移 出来,如果允许使用出来,如果允许使用leave(或(或break)结构,)结构, 则不仅方便而且会使效率提高很多。则不仅方便而且会使效率提高很多。 11 扩充的控制结构扩充的控制结构 12 结构程序设计结构程序设计 经典的结构程序设计:经典的结构程序设计: 只允许使用顺

8、序、只允许使用顺序、if_then_else型分支和型分支和 do_while型循环这三种基本控制结构。型循环这三种基本控制结构。 扩展的结构程序设计:扩展的结构程序设计: 还允许使用还允许使用do_case型多分支结构和型多分支结构和do_until型循型循 环结构。环结构。 修正的结构程序设计:修正的结构程序设计: 再加上允许使用再加上允许使用leave(或(或break)结构。)结构。 2021-5-9曲阜师范大学计算机科学学院13 什么是结构化程序设计呢? 结构化程序设计的经典定义为:“如果一个程序的代 码块仅仅通过顺序、选择和循环这3种基本控制结构进行 连接,并且每个代码块只有一个入

9、口和一个出口,则称程 序是结构化的。” 常常还允许使用do_until和do_case两种控制结构 : 14 15 16 17 18 2021-5-9曲阜师范大学计算机科学学院19 8.2 人机界面设计人机界面设计 人机界面设计是系统接口设计的一个重要的 组成部分。 人机界面的设计质量,直接影响用户对软件 产品的评价,从而影响软件产品的竞争力和寿命。 20 21 22 23 2021-5-9曲阜师范大学计算机科学学院24 8.3 过程设计的工具过程设计的工具 8.3.1 程序流程图程序流程图 程序流程图又称为程序框图,它是历史最悠久、使用 最广泛的描述过程设计的方法,然而它也是用得最混乱的 一

10、种方法。 2021-5-9曲阜师范大学计算机科学学院25 从20世纪40年代末到70年代中期,程序流程 图一直是软件设计的主要工具。 程序流程图的主要缺点如下: 程序流程图本质上不是逐步求精的好工具。 程序流程图中用箭头代表控制流,因此程序员不受任 何约束 。 程序流程图不易表示数据结构。 2021-5-9曲阜师范大学计算机科学学院26 8.3.2 盒图盒图(n-s图图) nassi和shneiderman提出了盒图,又称为n-s图 : 2021-5-9曲阜师范大学计算机科学学院27 n-s图有下述特点: 功能域(即,一个特定控制结构的作用域)明确,可以从 盒图上一眼就看出来。 不可能任意转移

11、控制。 很容易确定局部和全局数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次结构。 2021-5-9曲阜师范大学计算机科学学院28 8.3.3 pad图图 pad是问题分析图(problem analysis diagram,pad)的英文缩 写,自1973年由日本日立公司发明以后,已得到一定程度的推广 。 2021-5-9曲阜师范大学计算机科学学院29 pad图的主要优点如下: u所设计出来的程序必然是结构化程序。 u所描绘的程序结构十分清晰。 u表现程序逻辑,易读、易懂、易记。 u容易将pad图转换成高级语言源程序 。 u既可用于表示程序逻辑,也可用于描绘数据结构。 upad图的符

12、号支持自顶向下、逐步求精方法的使用 。 2021-5-9曲阜师范大学计算机科学学院30 2021-5-9曲阜师范大学计算机科学学院31 8.3.4 判定表判定表 判定表能够清晰地表示复杂的条件组合与应做的动作 之间的对应关系。 一张判定表由4部分组成,左上部列出所有条件,左 下部是所有可能做的动作,右上部是表示各种条件组合的 一个矩阵,右下部是和每种条件组合相对应的动作。判定 表右半部的每一列实质上是一条规则,规定了与特定的条 件组合相对应的动作。 假设某航空公司规定,乘客可以免费托运重量不超过 30kg的行李。当行李重量超过30kg时,对头等舱的国内 乘客超重部分每公斤收费4元,对其他舱的国

13、内乘客超重 部分每公斤收费6元,对外国乘客超重部分每公斤收费比 国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。 2021-5-9曲阜师范大学计算机科学学院32 2021-5-9曲阜师范大学计算机科学学院33 8.3.5 判定树判定树 2021-5-9曲阜师范大学计算机科学学院34 8.3.6 过程设计语言过程设计语言 过程设计语言过程设计语言(pdl)也称为伪码也称为伪码 。 pdl应该具有下述特点: 关键字的固定语法,它提供了结构化控制结构、数据 说明和模块化的特点。 自然语言的自由语法,它描述处理特点。 数据说明的手段。 模块定义和调用的技术,应该提供各种接口描述模式。

14、2021-5-9曲阜师范大学计算机科学学院35 8.4 面向数据结构的设计方法面向数据结构的设计方法 面向数据结构的设计方法的最终目标是得出对程 序处理过程的描述。 jackson方法和warnier方法是最著名的两个面向 数据结构的设计方法 。 2021-5-9曲阜师范大学计算机科学学院36 8.4.1 jackson图图 数据元素彼此间的逻辑关系只有顺序、选择和重复3类 。 1.顺序结构 顺序结构的数据由一个或多个数据元素组成,每个数据元素按 确定的次序出现一次 。 2.选择结构 选择结构的数据包含两个或多个数据元素,每次使用这个数据 时按一定的条件从这些数据元素中选择一个 。 2021-

15、5-9曲阜师范大学计算机科学学院37 3.重复结构 根据使用时的条件由一个数据元素出现零次或多次是表示重复结构 。 2021-5-9曲阜师范大学计算机科学学院38 8.4.2 改进的改进的jackson图图 2021-5-9曲阜师范大学计算机科学学院39 8.4.3 jackson方法方法 jackson结构程序设计方法基本上由下述5个步骤组成: p分析并确定输入数据和输出数据的逻辑结构,并用jackson图描绘这 些数据结构。 p找出输入数据结构和输出数据结构中有对应关系的数据单元。 p用下述3条规则从描绘数据结构的jackson图导出描绘程序结构的 jackson图: 第一,为每对有对应关

16、系的数据单元,按照它们在数据结构图中 的层次在程序构图的相应层次画一个处理框 ; 第二,根据输入数据结构中剩余的每个数据单元所处的层次,在 程序结构图的对应层次分别为它们画上对应的处理框; 第三,根据输出数据结构中剩余的每个数据单元所处的层次,在 程序结构图的对应层次分别为它们画上对应的处理框。 2021-5-9曲阜师范大学计算机科学学院40 p列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分 配到程序结构图的适当位置。 p用伪码表示程序。 下面结合一个具体例子进一步说明jackson结构程序设计方法。 例 一个正文文件由若干个记录组成,每个记录是一个字符串。要求 统计每个记录中

17、空格字符的个数,以及文件中空格字符的总个数。要 求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这 个字符串中的空格数,最后印出文件中空格的总个数。 2021-5-9曲阜师范大学计算机科学学院41 最后得到的程序结构图为图8.13 : 2021-5-9曲阜师范大学计算机科学学院42 jackson程序设计方法的第四步是列出所有的操作和条件,并且 把它们分配到程序结构图的适当位置。首先,列出统计空格个数需要 的全部操作和条件如下: (1)停止 (2)打开文件 (3)关闭文件 (4)印出字符串 (5)印出空格数目 (6)印出空格总数 (7)sum:sum+1 (8)totalsum:to

18、talsum+sum (9)读入字符串 (10)sum:0 (11) totalsum:0 (12)pointer:1 (13) pointer:pointer+1 i(1)文件结束 i(2)字符串结束 s(3)字符是空格 2021-5-9曲阜师范大学计算机科学学院43 经过简单分析不难把这些操作和条件分配到程序结构图的适当位置 。 2021-5-9曲阜师范大学计算机科学学院44 8.5 程序复杂程度的定量度量程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价值:把程序的复 杂程度乘以适当常数即可估算出软件中错误的数量以及软 件开发需要用的工作量 。 2021-5-9曲阜师范大学计算机科

19、学学院45 8.5.1 mccabe方法方法 1. 流图流图 流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控 制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。 把程序流程图映射成流图的方法。 2021-5-9曲阜师范大学计算机科学学院46 用pdl表示的处理过程及与之对应的流图。 2021-5-9曲阜师范大学计算机科学学院47 当过程设计中包含复合条件时,生成流图的方法稍微 复杂一些。 2021-5-9曲阜师范大学计算机科学学院48 2. 计算环形复杂度的方法计算环形复杂度的方法 l流图中的区域数等于环形复杂度。 l流图g的环形复杂度v(g)en+2,其中,e是流图 中边的

20、条数,n是结点数。 l流图g的环形复杂度v(g)p+1,其中,p是流图中判 定结点的数目。 3. 环形复杂度的用途环形复杂度的用途 实践表明,模块规模以v(g)10为宜,也就是说, v(g)10是模块规模的一个更科学更精确的上限。 2021-5-9曲阜师范大学计算机科学学院49 8.5.2 halstead方法方法 令为程序中运算符出现的总次数,为操作数出现的总 次数, 程序长度定义为: halstead给出预测程序长度的公式如下: 多次验证都表明,预测的长度与实际长度非常接近。 halstead还给出了预测程序中包含错误的个数的公式 如下: 2021-5-9曲阜师范大学计算机科学学院50 习

21、题习题 8 1. 假设只允许使用sequence和if_then_else两种控 制结构,怎样利用它们完成do_while操作? 2. 画出下列伪码程序的程序流程图和盒图: start if p then while q do f end do else block g n end block end if stop 2021-5-9曲阜师范大学计算机科学学院51 3.图8.18给出的程序流程图代表一个非结构化的程序,请 问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中你使用附加的标志变量flag了吗?若没用,请 再设计一个使用flag的程序;若

22、用了,再设计一个不用flag的 程序。 2021-5-9曲阜师范大学计算机科学学院52 4.研究下面的伪码程序: loop:set i to(start+finish)2 if table(i)=item goto found if table(i)item set finish to(i-1) if(finish-start)1 goto loop if table(start)=item goto found if table(flnish)=item goto found set flag to 0 goto done found:set flag to 1 done:exit 要求: (1)画出程序流程图。 (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论