【文档说明】软件工程详细设计课件.ppt,共(51)页,539.526 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45070.html
以下为本文档部分文字说明:
第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)判断框;(d)流程线;(e)
起止框(a)(b)(c)(d)(e)开始输入10个整数到a结束j=i+1i<9YN输出:aj++i=0j<10a[i]a[j]a[i]>a[j]YYNNi++N开始输入m,na=m;b=na<b?结束b=b-aYa<>b?Ya=a-bN输出:a“辗转相截(
减)法”原理:XX=YGCD(X,Y)=GCD(X–Y,Y)X>YGCD(X,Y–X)X<Y示例:GCD(27,18)=GCD(9,18)=GCD(9,9)=9开始输入mfound=1i=2i<m结束found=0Yi=i+1m能被i整除?NNfou
nd==1?输出:是输出:不是NYY入口A>15ANDB=3返回X=X/ATA=30ORX>5FX=X+1TF开始输入mfound=1i=2i<=(m+1)/2结束found=0Yi=i+1m能被i整除?NNfound==1?输出:是输出:不是NYY开始输入mfound=1i=2i<=s
qrt(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开始输入mi=2i<=sqrt(m+1)结束Yi=i+1m能被i整除?NNi>sqrt(m+1)输出:是输出:不是NYY程序流程图的主要缺点如下:(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考
虑程序的控制流程,而不去考虑程序的全局结构;(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;(3)程序流程图不易表示数据结构。盒图是一种不允许违背结构程序设计精神的图形工具,又称为N-S
图,它有下述特点:(1)功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来;(2)不可能任意转移控制;(3)很容易确定局部和全程数据的作用域;(4)很容易表现嵌套关系,也可以表示模块的层次结构。5.3.2盒图(N-S图)图5.2盒图的基本符号优点:表达出的程序结构必然符
合结构化程序设计的思想,有利于培养软件设计人员的良好设计风格。缺点:程序嵌套层次较多时,N-S图的内层方框会越画越小,不仅影响可读性而且不易修改。PAD是问题分析图(problemanalysisdiagram
)的英文缩写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。PAD图的主要优点如下:(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。5.3.3PAD图图5.3PAD图的基本符号主
要优点如下:(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。(2)PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展
一条竖线。PAD图中竖线的总条数就是程序的层次数。(3)用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自
动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。(5)即可用于表示程序逻辑,也可用于描绘数据结构。(6)PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的
程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。图5.4使用PAD图提供的定义功能来逐步求精的例子本节先介绍Jackson方法的工具——Jackson图,然后介绍Jackson程序设计方法的基本步骤。5.4面向数据结构
的设计方法(1)顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。图5.5是表示顺序结构的Jackson图的一个例子。5.4.1Jackson图图5.5A由B、C、D3个元素顺序组成(2)选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这
些数据元素中选择一个。图5.6根据条件A是B或C或D中的某一个(3)重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。图5.7是表示重复结构的Jackson图。图5.7A由B出现N次
(N≥0)组成图5.8改进的Jackson图5.4.2改进的Jackson图Jackson结构程序设计方法基本上由下述5个步骤组成:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数
据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。(3)用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:5.4.3Jackson方法第一,为每对有对应关系的数据单元,按照它们在数据结
构图中的层次在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中的在数据结构图中层次低的那个对应);第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们
画上对应的处理框;第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。Jackson方法中使用的伪码和Jackson图是完全对应的
,下面是和3种基本结构对应的伪码。和图5.8(a)所示的顺序结构对应的伪码,其中‘seq’和‘end’是关键字:AseqBCDAend和图5.8(b)所示的选择结构对应的伪码,其中‘select’、‘or’和‘end’是关键字,cond1、cond2和cond3分别是执行B、C或D的条件:Ase
lectcond1BAorcond2CAorcond3DAend和图5.8(d)所示重复结构对应的伪码,其中‘iter’、‘until’、‘while’和‘end’是关键字,cond是条件:Aiteruntil(或while)condBAend[例]一个
正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个
数。图5.9表示输入输出数据结构的Jackson图图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)字符串结束;S(3)字符是空格。图5.11把操作和条件分配到程序
结构图的适当位置统计空格seq打开文件读入字符串totalsum∶=0程序体iteruntil文件结束处理字符串seq印字符串seq印出字符串印字符串endsum∶=0pointer∶=1分析字符串iteruntil字符串结束分析字符select字符是空格处理空格seqsum∶=su
m+1pointer∶=pointer+1处理空格end分析字符or字符不是空格处理非空格seqpointer∶=pointer+1处理非空格end分析字符end分析字符串end印空格数seq印出空格数目印空格数endtotalsum∶=totalsum+sum读入字
符串处理字符串end程序体end印总数seq印出空格总数印总数end关闭文件停止统计空格end着重介绍使用得比较广泛的McCabe方法和Halstead方法。5.5程序复杂程度的定量度量(1)流图McCabe方法根据程序控
制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完
全不表现对数据的具体操作以及分支或循环的具体条件。5.5.1McCabe方法图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=n1log2n1+n2log2n2多次验证都表明,预测的长度H与实际长度N非常接近。5.5.2Halstead方法Halstead还给出了预测程序中包含错误的个数的公式如下:E=Nlog2(n1
+n2)/3000有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内。