首页计算机计算机软件软件工程 06 第六章 详细设计.pptx

06 第六章 详细设计.pptx

页数:88页文件大小:427.0 KB来源: 软件工程ppt课件

本课件系统讲解详细设计阶段的结构程序设计思想、人机界面设计中的四类问题与过程设计工具,包括程序流程图、盒图、PAD图、判定表与判定树,并给出程序复杂度的定量度量方法。

第6章详细设计章节页,说明目标是确定如何具体实现所要求的系统并设计程序蓝图
结构程序设计起源页,介绍Dijkstra关于Goto语句的观点与Bohm和Jacopini的证明
结构化程序设计说明页,指出应创立新的程序设计方法而不是简单去掉Goto语句
查看本课件的文字版(共 88 页,供检索与复制)

第1页:第6章 详细设计

第6章 详细设计:第6章:详细设计目标:确定如何具体实现所要求的系统。不是具体编写程序,而是设计程序的“蓝图”。详细设计的结果决定最终程序代码的质量

第2页:结构程序设计的提出

结构程序设计的提出:E.W.Dijkstra最早提出结构程序设计:程序质量与程序中包含的Goto语句的数量成反比(1965)。1966,Bohm,Jacopini,证明了只用“顺序”、“选择”、“循环”控制结构就能实现任何单入口单出口程序

第3页:结构化程序设计的形成

结构化程序设计的形成:理论上,最基本的控制结构只有两种:顺序、循环结构(选择结构可由其两者构造)。学界认识到,不是简单去掉Goto语句的问题,而是要创立一种新的程序设计方法。——结构化程序设计(IBM率先成功运用)

第4页:结构程序设计的定义

结构程序设计的定义:结构程序设计:一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构

第5页:结构程序设计的好处

结构程序设计的好处

  • 提高软件开发工程的成功率和生产率
  • 系统有清晰的层次结构,容易阅读理解
  • 单入口单出口的控制结构,容易诊断纠正
  • 模块化可以使得软件可以重用
  • 程序逻辑结构清晰,有利于程序正确性证明

第6页:结构程序设计的分类

结构程序设计的分类:经典的结构程序设计:只允许使用顺序、IF_THEN_ELSE选择和DO_WHILE循环;扩展的结构程序设计:除了三种基本控制结构,还使用DO_CASE和DO_UNTIL循环;修正的结构程序设计:除了三种基本控制结构和两种扩充结构,还使用BREAK等结构

第7页:函数结点

函数结点:流程图通常由三种结点组成:1)函数结点如果一个结点有一个入口线和一个出口线,则称为函数结点。由于函数结点一般对应于赋值语句,所以F也表示了这一个结点对应的函数关系。F函数结点6.1.1结构化程序6.1.1.1控制结构

第8页:谓词结点

谓词结点:2)谓词结点如果一个结点有一个入口线和两个出口线,而且它不改变程序的数据项的值,则称为谓词结点。P是一个谓词,根据P的逻辑值(T或F),结点有不同的出口

第9页:汇点

汇点:3)汇点如果一个结点有两个或多个入口线和一个出口线,而且它不执行任何运算

第10页:顺序结构

顺序结构

  • 顺序结构:相当于“A、B”
  • 2.三种基本控制结构AB(a)

第11页:选择结构

选择结构:2)选择结构相当于“IfexpthenAelseBendif”ABexp(b)

第12页:循环结构

循环结构:3)循环结构:相当于“WhileexpdoA”A(c)

第13页:多分支结构

多分支结构

  • 多分支结构相当于“Case I of I=1:C1; I=2:C2; I=3:C3; … ;I=n:Cn”
  • 3.扩充两种控制结构CnC3C1C2(d)多分支结构I=?…

第14页:UNTIL循环结构

UNTIL循环结构:2)UNTIL循环结构相当于“RepeatAUntilexp”A(e)

第15页:正规程序的定义

正规程序的定义:正规程序定义1:一个流程图程序如果满足下面两个条件

  • 具有一个入口线和一个出口线
  • 对每一个结点,都有一条从入口线到出口线的通路通过该结点

第16页:正规程序的抽象

正规程序的抽象:由于正规程序有一个入口线和一个出口线,因而一个正规程序总可以抽象为一个函数结点。F函数结点

第17页:正规子程序

正规子程序:定义2:如果一个正规程序的某个部分仍然是正规程序,那么称它为该正规程序的正规子程序

第18页:封闭结构

封闭结构:先给出一个概念:封闭结构定义3:流程图中,两个结点之间所有没有重复结点的通路组成的结构称为封闭结构。6.1.1.3基本程序

第19页:封闭结构示例

封闭结构示例:如图:封闭结构为{a-[b1-b2-b3;c1-c2;d1-d2-d3;e]-f}ab1b2b3c2c1d1d2d3ef

第20页:基本程序的定义

基本程序的定义

  • 不包括多于一个结点的正规子程序,即它是一种不可再分解的正规程序;(程序自身不可视为正规子程序)
  • 如果存在封闭结构,封闭结构都是正规程序。6.1.1.3基本程序定义4:一个正规程序,如果满足以下两个条件,则称之为基本程序

第21页:基本程序的形式

基本程序的形式:基本程序形式有多种,前面提到的三种基本控制结构(顺序结构、选择结构、循环结构)和两个扩充控制结构(多分支结构、UNTIL循环结构)都是基本程序

第22页:基集合

基集合:定义5:用以构造程序的基本程序的集合称为基集合。如:{顺序,if-then-else,whiledo}{顺序,if-then-else,repeat-until}都是基集合

第23页:复合程序

复合程序:定义6:如果一个基本程序的函数结点用另一个基本函数程序替换,产生的新的正规程序称为复合程序。A复合程序expBexpA:循环结构的A函数结点用另一循环结构代替,即嵌套循环,就产生了复合程序

第24页:好结构程序

好结构程序:由于复合程序是由一些基本程序组成,因此,无论从总体上看或是从每个组成部分看,都满足“一个入口,一个出口”的原则,这样的程序就是通常说的好结构程序,或者结构化程序

第25页:结构化程序的定义

结构化程序的定义:定义7:由基本程序的一个固定的基集合构造出的复合程序,称为结构化程序

第26页:结构化定理

结构化定理:任一正规程序都可以函数等价于一个由基集合{顺序,If-else-then,While-do}产生的结构化程序。实际上,只要能证明可以将任一正规程序转换成等价的结

第27页:结构化定理证明步骤一

结构化定理证明步骤一:证明:(分三步进行结构化程序的转换)步骤一:从程序入口处开始给程序的函数结点和谓词结点编号:1,2,3,…,n,同时,将每个函数和谓词结点的出口线用它后面的结点的号码进行编号,如果出口线后面没有结点,也就是说该结点的出口线与程序的出口线相连时,出口线编号为0

第28页:证明步骤二:函数结点转换

证明步骤二:函数结点转换:步骤二:对原程序中每一个编号为i,出口线编号为j的函数结点H,构造一个新的序列程序Gi,如图:HGi=HL:=jiij

第29页:证明步骤二:谓词结点转换

证明步骤二:谓词结点转换:类似地,对于每个编号为i,出口线分别为j和k的谓词结点,构造一个新的选择程序Gi,如图:PjkiGi=PiL:=jL:=k

第30页:证明步骤三:构造While循环

证明步骤三:构造While循环:步骤三:利用已经得到的一些Gi程序(i=1,2,3,…,n),按下图的形式构造一个While-do循环。图中的循环体是一个对L从1到n的嵌套选择(if-then-else)程序,转换后的程序与原程序是等价的,是由基集合{顺序、选择、循环}所复合成的结构化程序。L:=1L>0L=1L=nL=2GnL:=0G2G1……TTTTFFFF

第31页:结构化转换方法的局限

结构化转换方法的局限:这种方法并不是唯一的把程序转变为结构化程序的方法,所得的程序也不一定是最好的。它的目的是为了证明结构化定理

第32页:非结构化程序转换例题

非结构化程序转换例题:例1:把图示的非结构化程序转换成结构化程序(用结构化定理证明过程提供的方法转换)6.1.3非结构化程序到结构化程序的转换P1P2

第33页:例题的结点与出口线编号

例题的结点与出口线编号:1)进行结点及其出口线的编号;1340202341P1P2AB非结构化程序例图

第34页:构造选择程序G1

构造选择程序G1:P1321G1=P11L:=3L:=22)将图中的四个结点构造新的程序G1、G2、G3、G4

第35页:构造序列程序G2

构造序列程序G2:BG2=BL:=0220

第36页:构造选择程序G3

构造选择程序G3:P2403G3=P23L:=4L:=0

第37页:构造序列程序G4

构造序列程序G4:AG4=AL:=1441

第38页:转换后的结构化程序

转换后的结构化程序:3)利用得到的G1、G2、G3、G4按介绍的方法构造一个While-do循环,最终结果如图:L:=1L>0L=1L=4L=2L:=0P1L:=3L:=2BL:=0L=3P2L:=4L:=0AL:=1转化后的结构化程序图FFFFFTTTTT

第39页:人机界面设计问题

人机界面设计问题

  • 1.系统响应时间
  • 2.用户帮助
  • 3.出错信息处理
  • 4.命令交互

第40页:人机界面设计过程与指南

人机界面设计过程与指南

  • 1.一般交互指南
  • 2.信息显示指南
  • 3.数据输入指南

第41页:程序流程图

程序流程图:过程设计的工具6.3.1程序流程图程序流程图:是一种描述程序的控制结构流程和指令执行情况的有向图。历史悠久、使用广泛、直观描绘控制流程、便于初学者掌握

第42页:ASP检索程序流程图

ASP检索程序流程图:开始加载Include文件定义记数变量、作物变量创建数据库链接对象、记录集对象打开数据库用客户提交的值对作物变量赋值SQL查询语句赋值通过记录集对象打开SQL语句设定的记录记录集末端?记数变量加1,输出记录字段值及图像转跳下一记录关闭数据库链接对象、记录集对象,并释放资源输出记录数和提示结束YN

第43页:程序流程图的缺点

程序流程图的缺点

  • 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制
  • 程序流程图不易表示数据结构。程序流程图的缺点
  • 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构

第44页:盒图的基本符号

盒图的基本符号:盒图(N-S图)ABC条件FTElseBThenACase条件Case1ACase2B…CasenN循环条件循环条件Do-While部分Do-Until部分Aa.顺序结构b.选择结构c.多分支结构d.当型循环结构e.直到型循环结构f.调用子程序A图

第45页:盒图的特点

盒图的特点:有

  • 功能域明确,可以从盒图上一眼就看出来
  • 不可能任意转移控制
  • 很容易确定局部和全程数据的作用域
  • 很容易表现嵌套关系,也可以表示模块的层次结构

第46页:盒图

盒图:FTBCDACase1E2F3G4HA

第47页:PAD图的提出

PAD图的提出:PAD(ProblemAnalysisDiagram)是问题分析图。日立公司发明和推广(1973)

第48页:PAD图的基本符号

PAD图的基本符号:P1P2WHILECUNTILCPPP2P1CP1P2Pn…X=L1L2Lndefa.顺序结构b.当型循环结构c.直到型循环结构d.选择结构e.多分支结构f.语句标号g.定义图

第49页:PAD图

PAD图:例子:P1P2UNTILC2P7P4P3Cdefa.初始的PAD图图6.6PAD图例子b.使用def符号细化处理框P2P5P2P8C1UNTILC2P9P10P6

第50页:PAD图的优点(上)

PAD图的优点(上)

  • 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序
  • PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数

第51页:PAD图的优点(中)

PAD图的优点(中):3)用PAD图表现程序,通俗易懂,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点

第52页:PAD图的优点(下)

PAD图的优点(下)

  • 容易将PAD图转换成高级语言源程序,这种转换可以用软件工具自动完成
  • 可用于表示程序逻辑,也可用于描绘数据结构
  • PAD图的符号支持自顶向下、逐步求精的方法

第53页:判定表的组成

判定表的组成:判定表由四部分组成:左上部列出所有条件左下部是所有可能做的动作右上部表示各种条件组合右下部是和每种条件组合相对应的动作

第54页:行李费判定表

行李费判定表:123456789国内乘客TTTTFFFF头等舱TFTFTFTF残疾乘客FFTTFFTT行李重量W≤30TFFFFFFFF免费×(W-

  • ×2×(W-
  • ×3×(W-
  • ×4××(W-
  • ×6××(W-
  • ×8×(W-
  • ×12×

第55页:行李费判定树

行李费判定树:判定树判定树是判定表的变种。行李重量W>30行李重量W≤30国内乘客外国乘客头等舱其他舱头等舱其他舱残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客(W-

  • ×2(W-
  • ×4(W-
  • ×3(W-
  • ×6(W-
  • ×4(W-
  • ×8(W-
  • ×6(W-
  • ×12免费图

第56页:过程设计语言PDL

过程设计语言PDL:PDL也称为伪码。如:ifI>0then执行订单数据输入模块else报告出错信息endif6.3.6过程设计语言(PDL)

第57页:PDL的优缺点

PDL的优缺点

  • 可以作为注释直接插在源程序中间
  • 可以使用普通的正文编辑程序或文字处理系统来完成PDL的书写和编辑工作
  • 现在已经有一些自动处理程序可以自动地把PDL生成程序代码。PDL的缺点:不如图形工具形象直观

第58页:Jackson图的顺序结构

Jackson图的顺序结构:面向数据结构的设计方法1)顺序结构ABCD图6.8A由B、C、D三个元素顺序组成

第59页:Jackson图的选择结构

Jackson图的选择结构:2)选择结构AB°C°D°图6.9根据条件A选择B、C、D中的某一个

第60页:Jackson图的重复结构

Jackson图的重复结构:3)重复结构AB*图6.10A由B出现N次组成

第61页:改进的Jackson图

改进的Jackson图:ABCD图6.11改进的Jackson图ABºCºDºABº-ºAB*S(i)S(i)I(i)(a)(b)(c)(d)

第62页:Jackson方法的目标

Jackson方法的目标:是:得出对程序处理过程的详细描述

第63页:Jackson方法的步骤(上)

Jackson方法的步骤(上):Jackson结构程序设计方法由五个步骤组成

  • 分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构
  • 找出输入数据结构和输出数据结构中有对应关系的数据单元

第64页:Jackson方法的步骤(中)

Jackson方法的步骤(中)

  • 用三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图
  • 为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框

第65页:Jackson方法的步骤(中续)

Jackson方法的步骤(中续)

  • 根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框
  • 根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框

第66页:Jackson方法的步骤(下)

Jackson方法的步骤(下)

  • 列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置
  • 用伪码表示程序

第67页:顺序结构的伪码

顺序结构的伪码:顺序结构:AseqBCDAend与三种基本结构对应的伪码是

第68页:选择结构的伪码

选择结构的伪码:选择结构Aselectcond1BAorcond2CAorcond3DAend

第69页:重复结构的伪码

重复结构的伪码:重复结构Aiteruntil(或while)condBAend

第70页:正文文件统计空格例题

正文文件统计空格例题:例:一个正文文件由若干记录组成,每个记录是一个字符串。如:Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?Record2:Afterenteringtheroom,walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.Record3:Whatareencapsulatedintoanobject?Record4:Whatdiagramisthefollowingdiagram?Simplydescribethemeaningofit.

第71页:例题的程序要求

例题的程序要求

  • 设计程序统计每个记录中空格字符的个数,输出数据的格式是,每读入一个记录(字符串)之后,另起一行打印出这个字符串及其空格数
  • 最后打印出文件中空格的总个数

第72页:输入输出数据结构分析

输入输出数据结构分析:正文文件字符串*字符*空格º非空格º输出表格表格体空格总数串信息*字符串空格数IISI(a)输入数据结构(b)输出数据结构图6.12表示输入/输出数据结构的Jackson图分析输入、输出数据结构,用Jackson图描绘,并找出两者对应的数据单元

第73页:统计空格程序结构

统计空格程序结构:统计空格程序体印总数处理字符串*分析字符串印空格数印字符串分析字符*处理空格º处理非空格ºIIS图6.13描绘统计空格程序结构的Jackson图导出描绘程序结构的Jackson图

第74页:操作与条件清单

操作与条件清单

  • 停止(2)打开文件
  • 关闭文件
  • 印出字符串
  • 印出空格数目
  • 印出空格总数
  • sum:=sum+1
  • totalsum:=totalsum+sum
  • 读入字符串
  • sum:=0
  • totalsum:=0
  • pointer:=1
  • pointer:=pointer+1I
  • 文件结束I
  • 字符串结束S
  • 字符是空格列出所有操作和条件

第75页:最终分配好操作的Jackson图

最终分配好操作的Jackson图:统计空格程序体印总数处理字符串*分析字符串印空格数印字符串分析字符*处理空格º处理非空格ºI

  • I(2)S
  • 图6.14最终分配好操作和条件的Jackson图31119261012458971313

第76页:程序复杂度的定量度量

程序复杂度的定量度量

  • 可估算软件中错误的数量及软件开发工作量
  • 度量的结果可用来比较不同设计或不同算法的优劣
  • 程序的复杂度可作为模块规模的限度

第77页:流图的概念

流图的概念:流图“退化”的程序流程图,仅描绘程序的控制流程,不表现对数据的具体操作及循环、选择的条件。6.5.1McCabe方法

第78页:流图的结点映射

流图的结点映射:圆代表一条或多条语句;一个顺序结构可以合并成一个结点;汇点也是结点;一个顺序处理框序列和一个判断框可映射成一个结点

第79页:

第80页:复合条件的分解

复合条件的分解:复合条件:包含了一个或多个布尔运算符(OR、AND、NOR等)。应把复合条件分解为简单条件,每个条件对应一个结点

第81页:环形复杂度的计算方法

环形复杂度的计算方法

  • 2.计算环形复杂度的方法
  • 环形复杂度V(G)等于流图中的区域数
  • 环形复杂度V(G)=E-N+2,其中E是流图中边的条数,N是结点数
  • 环形复杂度V(G)=P+1,其中P为流图中判定结点的数目

第82页:环形复杂度计算例题

环形复杂度计算例题:例:计算下列程序图的程序复杂度

第83页:例题的三种解法

例题的三种解法:解:方法一:程序图把平面分为4个区域,程序复杂度V(G)=4;方法二:边的条数E=11,结点数N=9,程序复杂度V(G)=E-N+2=4;方法三:判定结点为1、2、4点,数目为P=3个,所以V(G)=P+1=4

第84页:环形复杂度的用途

环形复杂度的用途:对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。实践表明,模块规模以V(G)≤10为宜

第85页:Halstead方法

Halstead方法:根据程序中运算符和操作数的总数来度量程序复杂度。N=N1+N2其中:N定义为程序长度;N1为程序中运算符出现的总次数;N2为操作数出现的总次数

第86页:程序长度的预测公式

程序长度的预测公式:Halstead给出预测程序长度的公式为:H=n1log2n1+n2log2n2其中:H定义为程序预测长度;n1为程序中使用的不同运算符(包括关键字)的个数;n2为程序中使用的不同操作数(变量和常量)的个数

第87页:错误个数的预测公式

错误个数的预测公式:多次验证都表明,程序的预测长度H和实际程序长度N非常接近。Halstead还给出了预测程序中包含错误的个数的公式:E=Nlog2(n1+n2)/3000

第88页:第6章小结

第6章小结:◇详细设计说明书着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等

顶部目录