页数:88页文件大小:427.0 KB来源: 软件工程ppt课件
本课件系统讲解详细设计阶段的结构程序设计思想、人机界面设计中的四类问题与过程设计工具,包括程序流程图、盒图、PAD图、判定表与判定树,并给出程序复杂度的定量度量方法。
第6章 详细设计:第6章:详细设计目标:确定如何具体实现所要求的系统。不是具体编写程序,而是设计程序的“蓝图”。详细设计的结果决定最终程序代码的质量
结构程序设计的提出:E.W.Dijkstra最早提出结构程序设计:程序质量与程序中包含的Goto语句的数量成反比(1965)。1966,Bohm,Jacopini,证明了只用“顺序”、“选择”、“循环”控制结构就能实现任何单入口单出口程序
结构化程序设计的形成:理论上,最基本的控制结构只有两种:顺序、循环结构(选择结构可由其两者构造)。学界认识到,不是简单去掉Goto语句的问题,而是要创立一种新的程序设计方法。——结构化程序设计(IBM率先成功运用)
结构程序设计的定义:结构程序设计:一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构
结构程序设计的好处
结构程序设计的分类:经典的结构程序设计:只允许使用顺序、IF_THEN_ELSE选择和DO_WHILE循环;扩展的结构程序设计:除了三种基本控制结构,还使用DO_CASE和DO_UNTIL循环;修正的结构程序设计:除了三种基本控制结构和两种扩充结构,还使用BREAK等结构
函数结点:流程图通常由三种结点组成:1)函数结点如果一个结点有一个入口线和一个出口线,则称为函数结点。由于函数结点一般对应于赋值语句,所以F也表示了这一个结点对应的函数关系。F函数结点6.1.1结构化程序6.1.1.1控制结构
谓词结点:2)谓词结点如果一个结点有一个入口线和两个出口线,而且它不改变程序的数据项的值,则称为谓词结点。P是一个谓词,根据P的逻辑值(T或F),结点有不同的出口
汇点:3)汇点如果一个结点有两个或多个入口线和一个出口线,而且它不执行任何运算
顺序结构
选择结构:2)选择结构相当于“IfexpthenAelseBendif”ABexp(b)
循环结构:3)循环结构:相当于“WhileexpdoA”A(c)
多分支结构
UNTIL循环结构:2)UNTIL循环结构相当于“RepeatAUntilexp”A(e)
正规程序的定义:正规程序定义1:一个流程图程序如果满足下面两个条件
正规程序的抽象:由于正规程序有一个入口线和一个出口线,因而一个正规程序总可以抽象为一个函数结点。F函数结点
正规子程序:定义2:如果一个正规程序的某个部分仍然是正规程序,那么称它为该正规程序的正规子程序
封闭结构:先给出一个概念:封闭结构定义3:流程图中,两个结点之间所有没有重复结点的通路组成的结构称为封闭结构。6.1.1.3基本程序
封闭结构示例:如图:封闭结构为{a-[b1-b2-b3;c1-c2;d1-d2-d3;e]-f}ab1b2b3c2c1d1d2d3ef
基本程序的定义
基本程序的形式:基本程序形式有多种,前面提到的三种基本控制结构(顺序结构、选择结构、循环结构)和两个扩充控制结构(多分支结构、UNTIL循环结构)都是基本程序
基集合:定义5:用以构造程序的基本程序的集合称为基集合。如:{顺序,if-then-else,whiledo}{顺序,if-then-else,repeat-until}都是基集合
复合程序:定义6:如果一个基本程序的函数结点用另一个基本函数程序替换,产生的新的正规程序称为复合程序。A复合程序expBexpA:循环结构的A函数结点用另一循环结构代替,即嵌套循环,就产生了复合程序
好结构程序:由于复合程序是由一些基本程序组成,因此,无论从总体上看或是从每个组成部分看,都满足“一个入口,一个出口”的原则,这样的程序就是通常说的好结构程序,或者结构化程序
结构化程序的定义:定义7:由基本程序的一个固定的基集合构造出的复合程序,称为结构化程序
结构化定理:任一正规程序都可以函数等价于一个由基集合{顺序,If-else-then,While-do}产生的结构化程序。实际上,只要能证明可以将任一正规程序转换成等价的结
结构化定理证明步骤一:证明:(分三步进行结构化程序的转换)步骤一:从程序入口处开始给程序的函数结点和谓词结点编号:1,2,3,…,n,同时,将每个函数和谓词结点的出口线用它后面的结点的号码进行编号,如果出口线后面没有结点,也就是说该结点的出口线与程序的出口线相连时,出口线编号为0
证明步骤二:函数结点转换:步骤二:对原程序中每一个编号为i,出口线编号为j的函数结点H,构造一个新的序列程序Gi,如图:HGi=HL:=jiij
证明步骤二:谓词结点转换:类似地,对于每个编号为i,出口线分别为j和k的谓词结点,构造一个新的选择程序Gi,如图:PjkiGi=PiL:=jL:=k
证明步骤三:构造While循环:步骤三:利用已经得到的一些Gi程序(i=1,2,3,…,n),按下图的形式构造一个While-do循环。图中的循环体是一个对L从1到n的嵌套选择(if-then-else)程序,转换后的程序与原程序是等价的,是由基集合{顺序、选择、循环}所复合成的结构化程序。L:=1L>0L=1L=nL=2GnL:=0G2G1……TTTTFFFF
结构化转换方法的局限:这种方法并不是唯一的把程序转变为结构化程序的方法,所得的程序也不一定是最好的。它的目的是为了证明结构化定理
非结构化程序转换例题:例1:把图示的非结构化程序转换成结构化程序(用结构化定理证明过程提供的方法转换)6.1.3非结构化程序到结构化程序的转换P1P2
例题的结点与出口线编号:1)进行结点及其出口线的编号;1340202341P1P2AB非结构化程序例图
构造选择程序G1:P1321G1=P11L:=3L:=22)将图中的四个结点构造新的程序G1、G2、G3、G4
构造序列程序G2:BG2=BL:=0220
构造选择程序G3:P2403G3=P23L:=4L:=0
构造序列程序G4:AG4=AL:=1441
转换后的结构化程序:3)利用得到的G1、G2、G3、G4按介绍的方法构造一个While-do循环,最终结果如图:L:=1L>0L=1L=4L=2L:=0P1L:=3L:=2BL:=0L=3P2L:=4L:=0AL:=1转化后的结构化程序图FFFFFTTTTT
人机界面设计问题
人机界面设计过程与指南
程序流程图:过程设计的工具6.3.1程序流程图程序流程图:是一种描述程序的控制结构流程和指令执行情况的有向图。历史悠久、使用广泛、直观描绘控制流程、便于初学者掌握
ASP检索程序流程图:开始加载Include文件定义记数变量、作物变量创建数据库链接对象、记录集对象打开数据库用客户提交的值对作物变量赋值SQL查询语句赋值通过记录集对象打开SQL语句设定的记录记录集末端?记数变量加1,输出记录字段值及图像转跳下一记录关闭数据库链接对象、记录集对象,并释放资源输出记录数和提示结束YN
程序流程图的缺点
盒图的基本符号:盒图(N-S图)ABC条件FTElseBThenACase条件Case1ACase2B…CasenN循环条件循环条件Do-While部分Do-Until部分Aa.顺序结构b.选择结构c.多分支结构d.当型循环结构e.直到型循环结构f.调用子程序A图
盒图的特点:有
盒图:FTBCDACase1E2F3G4HA
PAD图的提出:PAD(ProblemAnalysisDiagram)是问题分析图。日立公司发明和推广(1973)
PAD图的基本符号:P1P2WHILECUNTILCPPP2P1CP1P2Pn…X=L1L2Lndefa.顺序结构b.当型循环结构c.直到型循环结构d.选择结构e.多分支结构f.语句标号g.定义图
PAD图:例子:P1P2UNTILC2P7P4P3Cdefa.初始的PAD图图6.6PAD图例子b.使用def符号细化处理框P2P5P2P8C1UNTILC2P9P10P6
PAD图的优点(上)
PAD图的优点(中):3)用PAD图表现程序,通俗易懂,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点
PAD图的优点(下)
判定表的组成:判定表由四部分组成:左上部列出所有条件左下部是所有可能做的动作右上部表示各种条件组合右下部是和每种条件组合相对应的动作
行李费判定表:123456789国内乘客TTTTFFFF头等舱TFTFTFTF残疾乘客FFTTFFTT行李重量W≤30TFFFFFFFF免费×(W-
行李费判定树:判定树判定树是判定表的变种。行李重量W>30行李重量W≤30国内乘客外国乘客头等舱其他舱头等舱其他舱残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客(W-
过程设计语言PDL:PDL也称为伪码。如:ifI>0then执行订单数据输入模块else报告出错信息endif6.3.6过程设计语言(PDL)
PDL的优缺点
Jackson图的顺序结构:面向数据结构的设计方法1)顺序结构ABCD图6.8A由B、C、D三个元素顺序组成
Jackson图的选择结构:2)选择结构AB°C°D°图6.9根据条件A选择B、C、D中的某一个
Jackson图的重复结构:3)重复结构AB*图6.10A由B出现N次组成
改进的Jackson图:ABCD图6.11改进的Jackson图ABºCºDºABº-ºAB*S(i)S(i)I(i)(a)(b)(c)(d)
Jackson方法的目标:是:得出对程序处理过程的详细描述
Jackson方法的步骤(上):Jackson结构程序设计方法由五个步骤组成
Jackson方法的步骤(中)
Jackson方法的步骤(中续)
Jackson方法的步骤(下)
顺序结构的伪码:顺序结构:AseqBCDAend与三种基本结构对应的伪码是
选择结构的伪码:选择结构Aselectcond1BAorcond2CAorcond3DAend
重复结构的伪码:重复结构Aiteruntil(或while)condBAend
正文文件统计空格例题:例:一个正文文件由若干记录组成,每个记录是一个字符串。如:Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?Record2:Afterenteringtheroom,walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.Record3:Whatareencapsulatedintoanobject?Record4:Whatdiagramisthefollowingdiagram?Simplydescribethemeaningofit.
例题的程序要求
输入输出数据结构分析:正文文件字符串*字符*空格º非空格º输出表格表格体空格总数串信息*字符串空格数IISI(a)输入数据结构(b)输出数据结构图6.12表示输入/输出数据结构的Jackson图分析输入、输出数据结构,用Jackson图描绘,并找出两者对应的数据单元
统计空格程序结构:统计空格程序体印总数处理字符串*分析字符串印空格数印字符串分析字符*处理空格º处理非空格ºIIS图6.13描绘统计空格程序结构的Jackson图导出描绘程序结构的Jackson图
操作与条件清单
最终分配好操作的Jackson图:统计空格程序体印总数处理字符串*分析字符串印空格数印字符串分析字符*处理空格º处理非空格ºI
程序复杂度的定量度量
流图的概念:流图“退化”的程序流程图,仅描绘程序的控制流程,不表现对数据的具体操作及循环、选择的条件。6.5.1McCabe方法
流图的结点映射:圆代表一条或多条语句;一个顺序结构可以合并成一个结点;汇点也是结点;一个顺序处理框序列和一个判断框可映射成一个结点
复合条件的分解:复合条件:包含了一个或多个布尔运算符(OR、AND、NOR等)。应把复合条件分解为简单条件,每个条件对应一个结点
环形复杂度的计算方法
环形复杂度计算例题:例:计算下列程序图的程序复杂度
例题的三种解法:解:方法一:程序图把平面分为4个区域,程序复杂度V(G)=4;方法二:边的条数E=11,结点数N=9,程序复杂度V(G)=E-N+2=4;方法三:判定结点为1、2、4点,数目为P=3个,所以V(G)=P+1=4
环形复杂度的用途:对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。实践表明,模块规模以V(G)≤10为宜
Halstead方法:根据程序中运算符和操作数的总数来度量程序复杂度。N=N1+N2其中:N定义为程序长度;N1为程序中运算符出现的总次数;N2为操作数出现的总次数
程序长度的预测公式:Halstead给出预测程序长度的公式为:H=n1log2n1+n2log2n2其中:H定义为程序预测长度;n1为程序中使用的不同运算符(包括关键字)的个数;n2为程序中使用的不同操作数(变量和常量)的个数
错误个数的预测公式:多次验证都表明,程序的预测长度H和实际程序长度N非常接近。Halstead还给出了预测程序中包含错误的个数的公式:E=Nlog2(n1+n2)/3000
第6章小结:◇详细设计说明书着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}