软件工程详细设计

上传人:s9****2 文档编号:579364341 上传时间:2024-08-26 格式:PPT 页数:51 大小:539.50KB
返回 下载 相关 举报
软件工程详细设计_第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) 编写文档,参加复审。编

2、写文档,参加复审。 程序流程图又称为程序框图,它是历史最悠久、使程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而它也是用得最用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。混乱的一种方法。5.3 过程设计的工具过程设计的工具 5.3.1 程序流程图程序流程图图图5.15.1 程序流程图中的基本符号程序流程图中的基本符号(a) (a) 一般处理框;一般处理框;(b) (b) 输入输入/ /输出框;输出框;(c) (c) 判断框;判断框;(d) (d) 流程线;流程线;(e) (e) 起止框起止框开始输入10个整数到 a 结束j = i + 1i 9YN

3、输出:aj +i = 0 j ajYYNNi +N开始输入m,na = m ; b = na b ?结束b = b - aYa b ?Ya = a - bN输出:a “辗转相截(减)法” 原理: X X = Y GCD( X , Y ) = GCD ( X Y , Y ) X Y GCD ( X , Y X ) X Y示例: GCD ( 27 , 18 ) = GCD ( 9 , 18 ) = GCD ( 9 , 9 ) = 9 开始输入mfound = 1i = 2i 15 AND B=3返回X=X/ATA=30 OR X5FX=X+1TF开始输入mfound = 1i = 2i = (m+

4、1)/2结束found = 0Yi = i + 1m 能被 i 整除?NNfound = = 1 ?输出:是输出:不是NYY开始输入mfound = 1i = 2i = sqrt (m+1)结束found = 0Yi = i + 1m 能被 i 整除?NNfound = = 1 ?输出:是输出:不是NYY按钮指示灯电梯按钮楼层按钮电梯控制器m2m-211通信通信电梯门n1控制开始输入mfound = 1i = 2(i = sqrt (m+1) and (found=1)结束found = 0Yi = i + 1m 能被 i 整除?NNfound = = 1 ?输出:是输出:不是NYY开始输入m

5、i = 2i sqrt(m+1) 输出:是输出:不是NYY程序流程图的主要缺点如下:程序流程图的主要缺点如下:(1) 程序流程图本质上不是逐步求精的好工具,它诱程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构序的全局结构;(2) 程序流程图中用箭头代表控制流,因此程序员不程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随受任何约束,可以完全不顾结构程序设计的精神,随意转移控制意转移控制;(3) 程序流程图不易表示数据结构。程序流程图不易表示数据结构。 盒图是一

6、种不允许违背结构程序设计精神的图形工盒图是一种不允许违背结构程序设计精神的图形工具,又称为具,又称为N-S图图, 它有下述特点:它有下述特点:(1) 功能域功能域(即,一个特定控制结构的作用域即,一个特定控制结构的作用域)明确,明确,可以从盒图上一眼就看出来可以从盒图上一眼就看出来;(2) 不可能任意转移控制不可能任意转移控制;(3) 很容易确定局部和全程数据的作用域很容易确定局部和全程数据的作用域;(4) 很容易表现嵌套关系,也可以表示模块的层次结很容易表现嵌套关系,也可以表示模块的层次结构。构。5.3.2 盒图盒图(N-S图图)图图5.2 盒图的基本符号盒图的基本符号 优点:表达出的程序结

7、构必然符合结构化程序设计优点:表达出的程序结构必然符合结构化程序设计的思想,有利于培养软件设计人员的良好设计风格。的思想,有利于培养软件设计人员的良好设计风格。 缺点:程序嵌套层次较多时,缺点:程序嵌套层次较多时,NS图的内层方框会图的内层方框会越画越小,不仅影响可读性而且不易修改。越画越小,不仅影响可读性而且不易修改。 PAD是问题分析图是问题分析图(problem analysis diagram)的英的英文缩写,它用二维树形结构的图来表示程序的控制流,文缩写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。将这种图翻译成程序代码比较容易。PAD图的主要优图的主要优

8、点如下:点如下:(1) 使用表示结构化控制结构的使用表示结构化控制结构的PAD符号所设计出来符号所设计出来的程序必然是结构化程序。的程序必然是结构化程序。5.3.3 PAD图图图图5.3 PAD图的基本符号图的基本符号主要优点如下:主要优点如下:(1) 使用表示结构化控制结构的使用表示结构化控制结构的PAD符号所设计出来符号所设计出来的程序必然是结构化程序。的程序必然是结构化程序。(2) PAD图所描绘的程序结构十分清晰。图中最左面图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的竖线是程序的主线,即第一层结构。随着程序层次的增加,的增加,PAD图逐渐向右延

9、伸,每增加一个层次,图图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。形向右扩展一条竖线。PAD图中竖线的总条数就是程图中竖线的总条数就是程序的层次数。序的层次数。(3) 用用PAD图表现程序逻辑,易读、易懂、易记。图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。遍历所有结点。(4) 容易将容易将PAD图转换成高级语言源程序,这种转换图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码

10、的工作,可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。有利于提高软件可靠性和软件生产率。(5) 即可用于表示程序逻辑,也可用于描绘数据结构。即可用于表示程序逻辑,也可用于描绘数据结构。(6) PAD图的符号支持自顶向下、逐步求精方法的使图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用计工作的深入而使用def符号逐步增加细节,直至完符号逐步增加细节,直至完成详细设计。成详细设计。图图5.4 使用使用PAD图提供的定义功能图提供的定义功能来逐步求精的例子来逐步求精

11、的例子 本节先介绍本节先介绍Jackson方法的工具方法的工具Jackson图,图,然后介绍然后介绍Jackson程序设计方法的基本步骤。程序设计方法的基本步骤。5.4 面向数据结构的设计方法面向数据结构的设计方法(1) 顺序结构顺序结构 顺序结构的数据由一个或多个数据元素组成,每顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。图个元素按确定次序出现一次。图5.5是表示顺序结构是表示顺序结构的的Jackson图的一个例子。图的一个例子。5.4.1 Jackson图图图图5.5 A由由B、C、D 3个元素顺序组成个元素顺序组成(2) 选择结构选择结构 选择结构的数据包含两个或

12、多个数据元素,每次选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一使用这个数据时按一定条件从这些数据元素中选择一个。个。图图5.6 根据条件根据条件A是是B或或C或或D中的某一个中的某一个(3) 重复结构重复结构 重复结构的数据,根据使用时的条件由一个数据重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。图元素出现零次或多次构成。图5.7是表示重复结构的是表示重复结构的Jackson图。图。图图5.7 A由由B出现出现N次次(N0)组成组成图图5.8 改进的改进的Jackson图图5.4.2 改进的改进的Jackson图图 Jackson

13、结构程序设计方法基本上由下述结构程序设计方法基本上由下述5个步骤组个步骤组成:成:(1) 分析并确定输入数据和输出数据的逻辑结构,并分析并确定输入数据和输出数据的逻辑结构,并用用Jackson图描绘这些数据结构。图描绘这些数据结构。(2) 找出输入数据结构和输出数据结构中有对应关系找出输入数据结构和输出数据结构中有对应关系的数据单元。的数据单元。 (3) 用下述用下述3条规则从描绘数据结构的条规则从描绘数据结构的Jackson图导出图导出描绘程序结构的描绘程序结构的Jackson图:图:5.4.3 Jackson方法方法 第一,为每对有对应关系的数据单元,按照它们在第一,为每对有对应关系的数据

14、单元,按照它们在数据结构图中的层次在程序结构图的相应层次画数据结构图中的层次在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之应的处理框在程序结构图中所处的层次与它们之中的在数据结构图中层次低的那个对应);中的在数据结构图中层次低的那个对应);第二,根据输入数据结构中剩余的每个数据单元所第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们处的层次,在程序结构图的相应层次分别为它们

15、画上对应的处理框;画上对应的处理框;第三,根据输出数据结构中剩余的每个数据单元所第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。画上对应的处理框。(4) 列出所有操作和条件列出所有操作和条件(包括分支条件和循环结束条包括分支条件和循环结束条件件),并且把它们分配到程序结构图的适当位置。,并且把它们分配到程序结构图的适当位置。(5) 用伪码表示程序。用伪码表示程序。Jackson方法中使用的伪码和方法中使用的伪码和Jackson图是完全对应的,图是完全对应的,下面是和下面是和3种基本结构对应的伪码。

16、种基本结构对应的伪码。和图和图5.8(a)所示的顺序结构对应的伪码,其中所示的顺序结构对应的伪码,其中seq和和end是关键字:是关键字:A seqBCDAend和图和图5.8(b)所示的选择结构对应的伪码,其中所示的选择结构对应的伪码,其中select、or和和end是关键字,是关键字,cond1、cond2和和cond3分别是分别是执行执行B、C或或D的条件:的条件:A select cond1BA or cond2CA or cond3DA end和图和图5.8(d)所示重复结构对应的伪码,其中所示重复结构对应的伪码,其中iter、until、while和和end是关键字,是关键字,co

17、nd是是条件:条件:A iter until(或或while) condBA end例一个正文文件由若干个记录组成,每个记录是例一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。字符串中的空格数,最后印出文件中空格的总个数。图图5.9 表示输入输出数据结构的表示输入输出数据结构的Jack

18、son图图图图5.10 描绘统计空格程序结构的描绘统计空格程序结构的Jackson图图基本操作:基本操作: (1) 停止;停止;(2) 打开文件;打开文件; (3) 关闭文件;关闭文件; (4) 打印字符串;打印字符串;(5) 打印行空格数打印行空格数; (6) 打印空格总数;打印空格总数; (7) sum:=sum+1; (8) totalsum=totalsum+sum; (9) 读入字符串读入字符串 (10) sum:=0; (11) totalsum=0;(12) pointer=1; (13) pointer=pointer+1。条件:条件:I(1) 文件结束;文件结束;I(2) 字

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

20、空格处理空格end 分析字符分析字符or字符不是空格字符不是空格处理非空格处理非空格seq pointer =pointer+1处理非空格处理非空格end 分析字符分析字符end分析字符串分析字符串end印空格数印空格数seq印出空格数目印出空格数目印空格数印空格数endtotalsum =totalsum+sum读入字符串读入字符串 处理字符串处理字符串end程序体程序体end印总数印总数seq 印出空格总数印出空格总数印总数印总数end关闭文件关闭文件停止停止统计空格统计空格end 着重介绍使用得比较广泛的着重介绍使用得比较广泛的McCabe方法和方法和Halstead方法。方法。5.5

21、程序复杂程度的定量度量程序复杂程度的定量度量(1) 流图流图 McCabe方法根据程序控制流的复杂程度定量度量方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形程序的复杂程度,这样度量出的结果称为程序的环形复杂度。复杂度。 为了突出表示程序的控制流,人们通常使用流图为了突出表示程序的控制流,人们通常使用流图(也称为程序图也称为程序图)。所谓流图实质上是。所谓流图实质上是“退化了的退化了的”程程序流程图,它仅仅描绘程序的控制流程,完全不表现序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。对数据的具体操作以及分支或循环的具体条

22、件。5.5.1 McCabe方法方法图图5.16 由由PDL翻译成的流图翻译成的流图(2) 计算环形复杂度的方法计算环形复杂度的方法流图中的区域数等于环形复杂度。流图中的区域数等于环形复杂度。流图流图G的环形复杂度的环形复杂度V(G)=E-N+2,其中,其中,E是流图是流图中边的条数,中边的条数,N是结点数。是结点数。流图流图G的环形复杂度的环形复杂度V(G)=P+1,其中,其中,P是流图中是流图中判定结点的数目。判定结点的数目。 Halstead方法是另一个著名的方法,它根据程序中方法是另一个著名的方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度。令运算符和操作数的总数来度量程序的

23、复杂程度。令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号