软件工程详细设计

上传人:宝路 文档编号:47211600 上传时间:2018-06-30 格式:PPT 页数:51 大小:540.60KB
返回 下载 相关 举报
软件工程详细设计_第1页
第1页 / 共51页
软件工程详细设计_第2页
第2页 / 共51页
软件工程详细设计_第3页
第3页 / 共51页
软件工程详细设计_第4页
第4页 / 共51页
软件工程详细设计_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《软件工程详细设计》由会员分享,可在线阅读,更多相关《软件工程详细设计(51页珍藏版)》请在金锄头文库上搜索。

1、第5章 详细设计5.1 结构程序设计 5.2 人机界面设计 5.3 过程设计的工具 5.4 面向数据结构的设计方法 5.5 程序复杂程度的定量度量 5.6 小结 习题详细设计的任务(1) 确定每个模块的具体算法;(2) 确定每个模块的内部数据结构及数据库的物理结 构; (3) 确定模块接口的具体细节;(4) 为每个模块设计一组测试用例;(5) 编写文档,参加复审。程序流程图又称为程序框图,它是历史最悠久、 使用最广泛的描述过程设计的方法,然而它也是用得 最混乱的一种方法。5.3 过程设计的工具5.3.1 程序流程图图5.1 程序流程图中的基本符号 (a) 一般处理框;(b) 输入/输出框;(c

2、) 判断框;(d) 流程线;(e) 起止框开始输入10个整数到 a 结束j = i + 1i ajYYNNi +N开始输入m,n a = m ; b = na b ? Ya = a - bN输出:a“辗转相截(减)法” 原理:X X = YGCD( X , Y ) = GCD ( X Y , Y ) X YGCD ( X , Y X ) X 15 AND B=3返回X=X/ATA=30 OR X5FX=X+1TF开始输入m found = 1 i = 2i sqrt(m+1) 输出:是输出:不是NYY程序流程图的主要缺点如下: (1) 程序流程图本质上不是逐步求精的好工具,它 诱使程序员过早地

3、考虑程序的控制流程,而不去考虑 程序的全局结构; (2) 程序流程图中用箭头代表控制流,因此程序员 不受任何约束,可以完全不顾结构程序设计的精神, 随意转移控制; (3) 程序流程图不易表示数据结构。盒图是一种不允许违背结构程序设计精神的图形 工具,又称为N-S图, 它有下述特点: (1) 功能域(即,一个特定控制结构的作用域)明确, 可以从盒图上一眼就看出来; (2) 不可能任意转移控制; (3) 很容易确定局部和全程数据的作用域; (4) 很容易表现嵌套关系,也可以表示模块的层次 结构。5.3.2 盒图(N-S图)图5.2 盒图的基本符号优点:表达出的程序结构必然符合结构化程序设计 的思想

4、,有利于培养软件设计人员的良好设计风格。缺点:程序嵌套层次较多时,NS图的内层方框会 越画越小,不仅影响可读性而且不易修改。PAD是问题分析图(problem analysis diagram)的 英文缩写,它用二维树形结构的图来表示程序的控制 流,将这种图翻译成程序代码比较容易。PAD图的 主要优点如下: (1) 使用表示结构化控制结构的PAD符号所设计出 来的程序必然是结构化程序。5.3.3 PAD图图5.3 PAD图的基本符号主要优点如下: (1) 使用表示结构化控制结构的PAD符号所设计出 来的程序必然是结构化程序。 (2) PAD图所描绘的程序结构十分清晰。图中最左 面的竖线是程序的

5、主线,即第一层结构。随着程序层 次的增加,PAD图逐渐向右延伸,每增加一个层次 ,图形向右扩展一条竖线。PAD图中竖线的总条数 就是程序的层次数。 (3) 用PAD图表现程序逻辑,易读、易懂、易记。 PAD图是二维树形结构的图形,程序从图中最左竖 线上端的结点开始执行,自上而下,从左向右顺序执 行,遍历所有结点。(4) 容易将PAD图转换成高级语言源程序,这种转 换可用软件工具自动完成,从而可省去人工编码的工 作,有利于提高软件可靠性和软件生产率。 (5) 即可用于表示程序逻辑,也可用于描绘数据结 构。 (6) PAD图的符号支持自顶向下、逐步求精方法的 使用。开始时设计者可以定义一个抽象的程

6、序,随着 设计工作的深入而使用def符号逐步增加细节,直至 完成详细设计。图5.4 使用PAD图提供的定义功能来逐步求精的例子本节先介绍Jackson方法的工具Jackson图, 然后介绍Jackson程序设计方法的基本步骤。5.4 面向数据结构的设计方法(1) 顺序结构顺序结构的数据由一个或多个数据元素组成,每 个元素按确定次序出现一次。图5.5是表示顺序结构 的Jackson图的一个例子。5.4.1 Jackson图图5.5 A由B、C、D 3个元素顺序组成(2) 选择结构选择结构的数据包含两个或多个数据元素,每次 使用这个数据时按一定条件从这些数据元素中选择一 个。图5.6 根据条件A是

7、B或C或D中的某一个(3) 重复结构重复结构的数据,根据使用时的条件由一个数据 元素出现零次或多次构成。图5.7是表示重复结构的 Jackson图。图5.7 A由B出现N次(N0)组成图5.8 改进的Jackson图5.4.2 改进的Jackson图Jackson结构程序设计方法基本上由下述5个步骤 组成: (1) 分析并确定输入数据和输出数据的逻辑结构, 并用Jackson图描绘这些数据结构。 (2) 找出输入数据结构和输出数据结构中有对应关 系的数据单元。 (3) 用下述3条规则从描绘数据结构的Jackson图导 出描绘程序结构的Jackson图:5.4.3 Jackson方法第一,为每对

8、有对应关系的数据单元,按照它们在 数据结构图中的层次在程序结构图的相应层次画 一个处理框(如果这对数据单元在输入数据结构 和输出数据结构中所处的层次不同,则和它们对 应的处理框在程序结构图中所处的层次与它们之 中的在数据结构图中层次低的那个对应); 第二,根据输入数据结构中剩余的每个数据单元所 处的层次,在程序结构图的相应层次分别为它们 画上对应的处理框; 第三,根据输出数据结构中剩余的每个数据单元所 处的层次,在程序结构图的相应层次分别为它们 画上对应的处理框。(4) 列出所有操作和条件(包括分支条件和循环结束 条件),并且把它们分配到程序结构图的适当位置。 (5) 用伪码表示程序。 Jac

9、kson方法中使用的伪码和Jackson图是完全对应 的,下面是和3种基本结构对应的伪码。和图5.8(a)所示的顺序结构对应的伪码,其中seq 和end是关键字: A seq B C D Aend 和图5.8(b)所示的选择结构对应的伪码,其中 select、or和end是关键字,cond1、cond2和 cond3分别是执行B、C或D的条件:A select cond1 B A or cond2 C A or cond3 D A end 和图5.8(d)所示重复结构对应的伪码,其中iter、 until、while和end是关键字,cond是条件: A iter until(或while)

10、cond B A end例一个正文文件由若干个记录组成,每个记录 是一个字符串。要求统计每个记录中空格字符的个数 ,以及文件中空格字符的总个数。要求的输出数据格 式是,每复制一行输入字符串之后,另起一行印出这 个字符串中的空格数,最后印出文件中空格的总个数 。图5.9 表示输入输出数据结构的Jackson图图5.10 描绘统计空格程序结构的Jackson图基本操作:(1) 停止;(2) 打开文件; (3) 关闭文件; (4) 打印字符串;(5) 打印行空格数;(6) 打印空格总数; (7) sum:=sum+1;(8) totalsum=totalsum+sum;(9) 读入字符串 (10)

11、sum:=0;(11) totalsum=0;(12) pointer=1;(13) pointer=pointer+1。 条件:I(1) 文件结束;I(2) 字符串结束;S(3) 字符是空格。 图5.11 把操作和条件分配到程序结构图的适当位置统计空格seq 打开文件 读入字符串 totalsum=0 程序体iter until文件结束处理字符串seq 印字符串seq印出字符串 印字符串end sum=0 pointer=1 分析字符串iter until字符串结束分析字符select字符是空格处理空格seqsum=sum+1pointer=pointer+1 处理空格end分析字符or字符

12、不是空格 处理非空格seqpointer=pointer+1 处理非空格end分析字符end 分析字符串end 印空格数seq 印出空格数目 印空格数endtotalsum=totalsum+sum 读入字符串处理字符串end 程序体end 印总数seq印出空格总数 印总数end 关闭文件 停止 统计空格end着重介绍使用得比较广泛的McCabe方法和 Halstead方法。5.5 程序复杂程度的定量度量(1) 流图McCabe方法根据程序控制流的复杂程度定量度 量程序的复杂程度,这样度量出的结果称为程序的环 形复杂度。为了突出表示程序的控制流,人们通常使用流图( 也称为程序图)。所谓流图实质

13、上是“退化了的”程序 流程图,它仅仅描绘程序的控制流程,完全不表现对 数据的具体操作以及分支或循环的具体条件。5.5.1 McCabe方法图5.16 由PDL翻译成的流图(2) 计算环形复杂度的方法流图中的区域数等于环形复杂度。 流图G的环形复杂度V(G)=E-N+2,其中,E是流图 中边的条数,N是结点数。 流图G的环形复杂度V(G)=P+1,其中,P是流图 中判定结点的数目。Halstead方法是另一个著名的方法,它根据程序 中运算符和操作数的总数来度量程序的复杂程度。令 N1为程序中运算符出现的总次数,N2为操作数出现 的总次数,程序长度N定义为:N=N1+N2详细设计完成之后,可以知道程序中使用的不同 运算符(包括关键字)的个数n1,以及不同操作数(变 量和常数)的个数n2。Halstead给出预测程序长度的 公式如下:H=n1 log2 n1+n2 log2 n2多次验证都表明,预测的长度H与实际长度N非 常接近。5.5.2 Halstead方法Halstead还给出了预测程序中包含错误的个数的 公式如下:E=N log2 (n1+n2)/3000有人曾对从300条到12000条语句范围内的程序核 实了上述公式,发现预测的错误数与实际错误数相比 误差在8%之内。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号