软件工程第5章--详细设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应具备以下特点:
① 有固定的外语法(keyword);
§1. 工具
② 内语法用自然语言描述;
③ 有数据说明,例如:
TYPE number IS STRING LENGTH (12) 抽象类型
TYPE table
IS INSTANCE OF symbol_table
④有子程序定义与调用机制,例如:
PROCEDURE <子程序名> <属性:内部\外部,编程语言等等> INTERFACE <参数表:I\O等等> pseudocode lines END
d
e
§1. 工具
特点: ① 结构清晰,层次分明,易读; ② 支持逐步求精的设计思想; ③ 容易将PAD自动转换为高级语言源程序。 4、判定表 & 判定树(Decision Table & Tree) 表示复杂的条件(input)组合与应做动作 (output)之间的对应关系。
§1. 工具
例:航空行李托运费的算法
B
C
B C
B*
C
A=
A=
B
A=B
§2. JSD
2、Jackson方法:
例:一个正文文件由若干个记录组成,每个记录
是一个字符串。要求统计每个记录中空格字符的 个数,以及文件中空格字符的总个数。要求的输 出数据格式是:每复制一行输入字符串之后,另 起一行印出这个字符串中的空格数,最后印出文 件中空格的总个数。
分析字符*
S
处理空格o 处理非空格o
第4步:列出所有操作条件, 并分配到上幅程序结构图中
§2. JSD
统计空格
例:(部分 列举)
1
2
3
程序体
I(1)
印总数
4
5
处理字符串*
⑴打开文件 ⑵读入字符串 印字符串 ⑶空格总数totalsum=0 ⑷关闭文件 ⑸仃止 I ⑴文件结束
分析字符串
I
印空格数
第5步:用
Internal PROCEDURE spell_check IS statements BEGIN Split document into single words Look up words in dictionary External statements Display words which are not in dictionary Create a new dictionary END spell_check
第1步:用Jackson图描述 I\O 的数据结构
输入
正文文件
I
§2. JSD
输出
输出表格
字符串*
I
表格体
I
空格总数
字符*
S
串信息*
空格O
非空格O
字符串
空格数
第2步:在两个图中指出有直接因果关系(causality)、可 以同时处理的单元(重复的次序,次数均相同)
输入
正文文件
I
输出
输出表格
§2. JSD
单元测试 集成测试
修改日期 代码长度
§2. Jackson System Development(JSD)
与SD的由DFD导出结构设计不同,JSD是以数据 结构(data structure)为基础设计每个模块的处理过程。
注意:
1、Jackson Diagram:
A
Bo
A
S
A
I Co
S
H中的方框表示 模块,而JD中的 方框代表几个语 句构成的简单操 作; H表现调用关系, 而JD表现组成关 系。
§1. 工具
例:N-S图与PAD的转换
a
T
b x1 f x4 i g
x5
F
F
k: x2
1 2 3
T
k
Do-Until
h
Do-Until x6
Do-While x3 c
d
e
j
§1. 工具
开始
a
b
Until x6
f
Until x5
i
x4
x1
结束
g k h
j
k
def
1
While x3
c
x2
2 3
§1. 工具
3、PAD(Problem Analysis Diagram):日立公司,1973
A B
Sequential
A P B
Selective
THEN ELSE
While P Until P
Loops
S S
1
A1 A2 An
Statement Index
2
def
Definition
P=
n
…
Case
Program structure
§2. JSD
把有对应关系的单元合为一个处理框,画 在相应的层次中(不同层以低层为准)
输入
正文文件
I
输出
输出表格 统计空格
字符串*
I
表格体
I
空格总数
程序体
I
印总数
字符*
S
串信息*
处理字符串*
空格O
非空格O
字符串
空格数
印字符串
分析字符串 分析字符*
I
印空格数
注:顺序执行的处理中不允许混有 重复执行或选择执行的处理。
调用时可用:PERFORM <子程序名> USING<参数表>
§1. 工具
优点:易于实现由PDL到源代码的自动转换。 缺点:不够直观。
6、文件夹:
记录模块开发过程的文档。
建议各组建立自己的文件夹。
§1. 工具
项目名称: 开发人员: 模块简述:
任 设 编 务 计 码
模块名称: 完成日期:
起始日期 完成日期
Action rows
用判定表表示计算行李费的算法
§1. 工具
残疾乘客 (W-30) 2 (W-30) 4 (W-30) 3
头等舱
国内乘客 行李重量 W > 30 行李费 算法 外国乘客 其他舱 行李重量 W 30 免费 其他舱 正常乘客 残疾乘客 正常乘客 残疾乘客 头等舱 正常乘客 残疾乘客
按规定:重量不超过30公斤的行李可免费托运。
重量超过30公斤时,对超运部分,头等
舱国内乘客收4元/公斤;其它舱位国内 乘客收6元/公斤;外国乘客收费为国内 乘客的2倍;残疾乘客的收费为正常乘 客的1/2。
§1. 工具
Rules
Rule numbers 1 2 3 4 5 6 7 8 9 Condition rows
字符串*
I
表格体
I
空格总数
字符*
S
串信息*
?
字符串 空格数
空格O
非空格O
经过程序处理由正文文件得到 输出表格。
?
字符不与多字符组成的字符串 对应。
每处理输入中一个字符串后就 得到输出中一个串信息,二者重 复次序和次数均相同。 单个空格不能决定空格数。
第3步:Data structure
输出报表如下:
顾客号
新余额
顾客姓名
张 三
活动号
001 002
支出数
300. 00
存入数
0000001
旧余额
5000. 00 0000002 5700. 00 李 士
1000. 00 300. 00 1000. 00
存入总数 支出总数
20000. 00 20000. 00 0000003 王 武 001 …… …… …… 2500. 00
任何复杂的程序流程图都应由以上五种基本结构 组合而成。
ISO 认可的规定符号:P.117 图 4.36
优点:容易掌握,且历史“悠久”,使用广泛。 缺点:本质上不具备逐步求精的特点,对于提高
大型系统的可理解性作用甚微; 不易表示数据结构; 转移控制太方便。
趋势:仃止使用
§1. 工具
2、盒图(Box Diagram): Nassi &Shneiderman 1973年提出, 又称为N-S Charts。Chapin 1974年作扩充,故 也称为Chapin charts.
060
§3. Warnier方法
第5步:将前一步分类结果标号排序 Pseudocode.
辅助技术:当I\O 数据有多个时,借 助判定表
§4.程序复杂程度的定量度量
(Measuring Program Complexity)
1、mcCabe’s Theory (Thomas mcCabe , 1976) 第1步:将程序流程图转化为程序图(Control Flow Graph)
§3. Warnier方法
第1步:用Warnier Diagram 描述I\O的数据结构
第2步:Data Structure
Program Structure
。
第3步:将上图对应转换为程序流程图,并将每个处
理框编号。 第4步:Pseudocode 分类。
§3. Warnier方法
例:(部分列举,)
活动号 顾 客 号 顾客姓名
0000001 0000001 0000001 0000002 0000003 001 002 李 王 张 山 300. 00 1000. 00 士 武
旧余额
5000. 00 01 02 20000. 00 7500. 00
代码 (存/取)
…… …… ……
数量
§3. Warnier方法
structure)
A
structure)
F A
(while-loop structure)
T T B P F
P
B
S
(4) 后判定型循环结构 (until-loop structure)
S P
(5) 多情况选择(case structure)
P=1
T T
A1 A2
F
P=2
F
F
P=n
T
F
…
T An
§1. 工具
国内乘客 头等舱 残疾乘客 行李重量 W 30 免费 (W-30) 2 (W-30) 3 (W-30) 4 (W-30) 6 (W-30) 8 (W-30) 12 T T F T F T F F F T T T F T F T F F T F F F F F F F T T F F F T F
第五章 详细设计
(Program Design Coding)
对机器,不是对人
结构程序设计的特点: ① 自顶向下逐步求精; ② 具有单入、单出的控制结构(取消GOTO语句)
§1. 工具
1、程序流程图(Program Flow Chart)
5种基本控制结构为:
§1. 工具
(1) 顺序结构(sequential (2) 选择结构(selective (3) 先判定型循环结构
A B
F
P A B
T
F
P B
T
Do-While P
S
While
Sequential Selective
S 1
Do-Until P
P 2 A2 Case n An Call subroutine
A
A1
Until
§1. 工具
例:
a
T
b x1 f x4 i g
x5
F
F
k: x2
1 2 3
T
k
Do-Until
第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)。
Pseudocode
分析字符*
S
表示程序。 (详见P.94 -95)
处理空格o 处理非空格o
§3. Warnier方法
Warnier方法又称LCP法(Logically Constructing Program)
例:假设要设计一个系统用来定期产生有关顾客帐 目的报表,输入文件中每个顾客有一个头记录,后 接若干个事务记录。
a b c d
开始 K=0 L=0 TOTAL=0 输入A F
a(开始) b(入口) c d
Do While TOTAL<1000 and A0
e
f
e
T A>0
F
f
T TOTAL=TOTAL+A
i
g
L++
g h j
K++
i
h
输入A
j(出口) k(停止)
输出K, L, TOTAL
kHale Waihona Puke Baidu
停止
§4.程序复杂程度的定量度量
h
Do-Until x6
Do-While x3 c
d
e
j
§1. 工具
特点:
① 没有箭头,不允许随意转移控制;
② 每个矩形框(Case中条件取值例外)都 是一个功能域(即一个特定结构的作 用域),结构表示明确; ③ 局部及全程数据的作用域易见;
④ 易表现嵌套关系(embedded structure)以 及模块的层次结构。
(W-30) 6
(W-30) 4 (W-30) 8 (W-30) 6 (W-30) 12
正常乘客
用判定树表示计算行李费的算法
注:判定表与判定树并 不适用于作为一种通用 的设计工具,通常将之 用于辅助测试
§1. 工具
5、PDL(Program Design Language):又称 Pseudocode. 例:
输 入 类 010 — 读 040 — 读 100 — 读 分支准备类:040 — 顾客号送到访问顾客号 分支指令类:010 — 若EOF 030 040 — 若读出的顾客号 =访问的顾客号 100 — 若读出的顾客号 =访问的顾客号 070 ………… 计 输 算 出 类:040 — 旧余额送到工作区 ………… 类:040 — 旧余额送到参考区 040 — 编辑顾客标题 040 — 输出并复原打印区 …………