详细设计及任务

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2018/7/2
计算机科学与工程学院
16
多分支判断结构
2018/7/2
计算机科学与工程学院
17
2018/7/2
计算机科学与工程学院
18
5.判定树
判定树是判定表的变种,也能清晰地表示复杂的条件组合与 应做的动作之间的对应关系。
平信 国内 快件 信件收费 政策 平信 国外 快件 超重:0.8+0.2* (w-5)元 不超重:0.8元 超重:20+1.0* (w-10)元 不超重:20元 超重:5.4+0.5* (w-5)元 不超重:5.4元 超重:200+10* (w-10)元 不超重:200元
2018/7/2 计算机科学与工程学院 25
例:
a b c d
开始 K=0 L=0 TOTAL=0 输入A F
a(开始) b(入口) c d e f i
Do While TOTAL<1000 and A0
e f
A>0
T
F
T TOTAL=TOTAL+A
g
L++
g
h j
K++ 输入A
i
h j(出口) k(停止)
2018/7/2
计算机科学与工程学院
24
依据图论的观点看,程序图是一种可用G=(N,E)表示的有向图 ,其中N为结点,E为有向边。 给出了三种基本结构所对应的程序图符号。
程序图仅仅描绘程序内部的控制流程,完全不表现对数据的 具体操作以及分支或循环的具体条件。 通常称程序图中开始点后面的那个结点为入口点, 称停止点前面的那个结点为出口点。
2018/7/2
计算机科学与工程学院
13
PAD描述的示例
2018/7/2 计算机科学与工程学院 14
PAD图具有以下特点: 具有强烈的结构化特征,支持自顶向下、逐步求 精的设计方法; 逻辑清晰,易懂、易用, PAD 图是二维树形结构 图形,程序从图中最左竖线上端结点开始执行, 自上而下、从左向右顺序遍历所有结点; 即可表示设计程序逻辑,又可表示数据结构; 容易将图直接转换为高级语言程序; 既可以用于程序逻辑,也可用于描绘数据结构。
详细设计
4.8 详细设计的目标和任务
目标:

给出软件模块结构中各个模块的内部过程描述, 从而在编码阶段可以把这个描述直接翻译成用某 种程序设计语言表达的程序。 编写软件的“详细设计说明书”。

2018/7/2
计算机科学与工程学院
1
详细设计的任务:
(1)为每个模块确定所采用的算法,并选择某种适 当的工具表达算法的执行过程,写出模块的详细过程 性描述。 (2)确定每一模块使用的数据结构。 (3)确定模块接口的细节,包括对系统外部的接口 和用户界面,对系统内部其他模块的接口,以及模块 的输入数据、输出数据及局部数据的全部细节。
2018/7/2
f g h j(出口) k(停止)
计算机科学与工程学院
28
McCabe 环形复杂度的特点:
① 分支或循环增多时,CC也随之增大,故CC 值实际上是为软件测试的难易度提供了一个 定量度量的方法,间接表示了软件的可靠性。 ② CC是可加的:2模块的总复杂度 = 各自CC 之和。 ③ 实践经验表明,对于CC>10的程序,应分成 几个小程序处理,以降低出错率。


IF-THEN结构:
IF 条件 处理1 NDIF
IF 条件 处理1 ELSE 处理2 ENDIF
2018/7/2
计算机科学与工程学院
20
CASE 条件 OF CASE(1) 处理1 CASE(2) 处理2 … CASE(n) 处理n 3).循环结构 FOR i=1 TO n 循环体 END FOR
2018/7/2
计算机科学与工程学院
32
2018/7/2 计算机科学与工程学院 23
程序复杂度的定量度量广泛使用两种方法:
1. mcCabe方法——计算环形个数 2. Halstead方法。 1、mcCabe’s Theory (Thomas mcCabe , 1976) 第1步:将程序流程图转化为程序图(Control Flow Graph) 程序图是一种简化了的流程图,也就是把程序流程图中每个处 理符号都退化成一个点,原来连接不同处理符号的箭头变成连 接不同点的有向弧,这样得到的有向图就称为程序图。
2018/7/2
计算机科学与工程学院
27
注: ① 对于一个正常的程序, 其CFG应是连通的, 即p = 1.
a(开始)
b(入口)
c d e
③ 对于平面 图 G, V(G) =G 在平面上 围成的区 域的个数。
i
②CFG通常不是 强连通的,故须 从出口到入口画 一条虚弧,使其 成为强连通图。
V(G)=13-11+1=3
2018/7/2
பைடு நூலகம்
计算机科学与工程学院
7
1.程序流程图

程序流程图也称为程序框图,程序流程图使用五种基本控 制结构是:
2018/7/2
计算机科学与工程学院
8
例:
2018/7/2
计算机科学与工程学院
9
2.N-S图

N-S图也叫做盒图。五种基本控制结构由五种图 形构件表示。
2018/7/2
计算机科学与工程学院
2018/7/2
计算机科学与工程学院
29
2. Halstead’s Theory (M. Halstead, 1977)
—— based on source code measurements
The primitive measures are
n1 — the number of distinct operators that appear in a program
n2 — the number of distinct operands that appear in a program
N1 — the total number of operator occurrences
N2 — the total number of operand occurrences
10
2018/7/2
计算机科学与工程学院
11
盒图具有以下特点: 过程的作用域明确; 盒图没有箭头,不能随意转移控制; 容易区分全局变量和局部变量; 容易表示嵌套关系和层次关系; 强烈的结构化特征。
2018/7/2
计算机科学与工程学院
12
3.问题分析图(PAD)

PAD也设置了五种基本控制结构的图式,并允许递 归使用。
(4)用自顶向下、逐步求精的方法完成程序设计。 结构化程序设计的缺点是存储容量和运行时间增 加10%~20%,但易读和易维护性比较好 。
2018/7/2
计算机科学与工程学院
6
4.9 详细设计的描述工具
图形工具——把过程的细节用图形的方式描述出 来。 表格工具——用一张表来表达过程的细节。这张 表列出了各种可能的操作及相应的条件,即描述 了输入、处理和输出信息。 语言工具——用某种类高级语言(伪码)来描述 过程的细节。
4
(1)程序结构中应尽可能少用GOTO语句,以确保程 序结构的独立性。 (2)使用单入口单出口的控制结构,确保程序的静态 结构和动态执行情况相一致,保证程序易于理解。
(3)程序的控制结构一般采用顺序、选择和循环三种 结构来完成,确保程序结构尽可能简单。
A B
2018/7/2
exp
exp
A
B
A
5
计算机科学与工程学院
CALL模块名(参数) 数据定义 DECLARE 类型 变量名,… • 其中,类型可以有:字符、整型、实型、双精 度、指针、数组及结构等类型。 5). 输入或输出 GET(输入变量表) PUT(输出变量表)


2018/7/2
计算机科学与工程学院
22
4.10程序复杂程度的定量度量 (Measuring Program Complexity)
注:判定表与判定树并不适用于作为一种通用的设计工具, 通常将之用于辅助测试
2018/7/2 计算机科学与工程学院 19
6 过程设计语言
过程设计语言(Program Design Language,简称 PDL),也称伪码, 是一种混杂语言,说明某种结构化的程序设计语言的语法形式。 • 用PDL表示的程序结构: 1) . 顺序结构 处理1 处理2 … 处理3 2).选择结构 IF-THEN-ELSE结构:
在详细设计结束时,应该把上述结果写入详细设 计说明书,并且通过复审成为正式文档,交付给编码 阶段作为工作的依据。
2018/7/2 计算机科学与工程学院 2
(4)为每一个模块设计出一组测试用例,以便在编 码阶段对模块代码进行预定的测试。 模块的测试用例是软件测试计划的重要组成部分, 通常应包括输入数据、期望的输出结果等内容。 测试用例应由负责详细设计的软件人员来完成, 因为他们对模块功能的实现了解得最清楚。
2018/7/2
计算机科学与工程学院
15
4.判定表
1. 判定表的组成 • 左上部列出所有条件。 • 左下部列出所有可能做的工作。 • 右上部每一列表示各种条件的一种可能组合, 所有列表示条件组合的全部可能情况。 • 右下部的每一列是和每一种条件组合所对应的 应做的工作。 2. 判定表中的符号 • 右上部用“T”表示条件成立,用“F”表示条件 不成立,空白表示条件成立与否不影响。 • 右下部画“Y”表示做该行左边列出的那项工作, 空白表示不做该项工作。
注意:H可由词汇表算出,即程序长度可通过词汇表预估。
(4)潜在错误(potential error):B = N Log2 n /3000 。
2018/7/2
计算机科学与工程学院
31
详细设计文档与复审
1 详细设计说明书 2 操作手册编写提示 3 详细设计的复审 用下列形式之一完成:
• • •
设计者和设计组的另一成员一起进行静态检查; 由检查小组进行较正式的软件结构设计检查; 由检查小组进行正式的设计检查,对软件设计质量 给出评价。

CASE结构:
• FOR循环结构: • WHILE循环结构: • UNTIL循环结构:
WHILE 条件 循环体 ENDWHILE REPEAT 循环体 UNTIL条件
计算机科学与工程学院 21
2018/7/2
4). 模块定义和调用


PROCEDURE 模块名(参数) … RETURE
模块调用
模块定义
详细设计是编码的先导,对最终的程序代码的质量起着决定性 的作用。 详细设计的结果对于软件测试和维护人员也是十分重要的, 使得他们不需要阅读程序代码,就能了解模块内部的程序结构 。 经过详细设计之后每个模块的内容都非常具体了,人们希望 能进—步定量度量软件的复杂度。 定量度量程序复杂程度的方法很有价值,因为程序的复杂程度 对于估算软件的开发成本、软件中的故障数量以及不同设计方 案的优劣等诸方面关系密切。软件复杂性度量是软件度量的一 个重要分支。
输出K, L, TOTAL
k
停止
2018/7/2
计算机科学与工程学院
26
第2步:计算CFG的环形复杂度(Cyclomatic Complexity)
已知公式:V(G) = m - n + p 其中 V(G) 为强连通有向图G中线性无关环(independent paths) 的个数(称为 cyclomatic number of G); m 是边数 (number of edges) ; n 是 节 点 数(number of nodes); p 是G中连通集的数目(number of connected components), 即被分离出的数目。
2018/7/2
计算机科学与工程学院
3
结构化程序设计
基本原则: 采用自顶向下,逐步求精的设计方法; 用顺序、选择和循环3种基本控制结构实现单入 口和单出口的程序。
关于逐步求精方法Wirth又曾做过一些总结概括,从 而形成结构程序设计的基本方法和原则,其基本内 容归纳为如下几点:
2018/7/2
计算机科学与工程学院
注:成对出现的运算符,如 BEGIN…END, IF…THEN…ELSE 等都算1个运算符。
2018/7/2 计算机科学与工程学院 30
Halstead’s laws: (1) 实际程序长度(program length):N = N1 + N2 (2) 程序词汇表(program vocabulary):n = n1 + n2 (3) 预测程序长度(estimated length):H = n1log2n1 + n2log2n2
相关文档
最新文档