软件工程复习提纲,期末、考研的学霸笔记
第五章——详细设计
第五章详细设计
- 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统。
- 结构程序设计:
1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每
个代码块只有一个入口和一个出口,则称这个程序是结构化的。
2)三种基本的控制结构:
- 人机界面设计:
1)在设计人机界面的过程中,有下述4个问题:
系统响应时间:从用户完成某个控制动作到软件给出预期的响应之间的这段时间。
用户帮助设施:常见的帮助设施可分为集成的和附加的两类。
出错信息处理:(无)
命令交互:菜单+键盘输入。
- 过程设计工具:
1)程序流程图:
优点:直观、容易掌握,且历史“久”, 使用广泛。
缺点:本质上不具备逐步求精的特点;用箭头代表控制流,转移控制太方便;
不易表示数据结构。
2)盒图(N-S图):
概念:是一种符合结构化程序设计原则的图形描述工具,用方框图代替传统的流程图。
特点:(1) 功能域明确,可以从盒图上一眼就看出来。
(2) 不可能任意转移控制。
(3) 很容易确定局部和全程数据的作用域。
(4) 很容易表现嵌套关系,也可以表示模块的层次结构。
3)PAD图(问题分析图):
概念:用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。
优点:(1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。
(2) PAD图所描绘的程序结构十分清晰。
(3) 用PAD图表现程序逻辑,易读、易懂、易记。
(4) 容易将PAD图转换成高级语言源程序。
(5) 即可用于表示程序逻辑,也可用于描绘数据结构。
(6) PAD图的符号支持自顶向下、逐步求精方法的使用。
4)判定表:
概念:当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂的条件组合与
应做的动作之间的对应关系。
5)判定树:它是判定表的变种。
判定树和判定表的优缺点:
注:判定表与判定树并不适用于作 为一种通用的设计工具,通常用于辅助测试。
- 面向数据结构的设计方法:
1) 定义:根据数据结构设计程序处理过程的方法。
目标:得出对程序处理过程的描述。
步骤:使用面向数据流的方法设计软件结构——使用面向数据结构的方法来设计每个模块
的处理过程。
代表:Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法。
2) Jackson图:
(1)优点:a. 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。
b. 形象直观可读性好。
c. 既能表示数据结构也能表示程序结构。
(2)三种类型:
(3)Jackson方法的步骤:
①分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。
②找出输入数据结构和输出数据结构中有对应关系的数据单元。
③从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。
④列出所有操作和条件,并且把它们分配到程序结构图的适当位置。
⑤用伪码表示程序。
3)程序复杂程度的定量度量:
(1)概念:程序的复杂性主要指模块内程序的复杂性。
(2)McCabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度。其结果称为程序
的环形复杂度。
①方法:先画出流图,然后用该图的环路数作为程序复杂性的度量值。
②流图组成: 圆:结点(一个圆代表一条或多条语句)。
箭头线:边。
③计算环形复杂度的方法:
a. 环形复杂度=流图中的区域数。
b. 环形复杂度V(G)=E-N+2,其中E是边数,N是结点数。
c. 环形复杂度V(G)=P+1,其中P是判定结点数。
④例子:
【【【实践表明,模块规模以V(G)≤10为宜,V(G)=10是模块规模的一个更科学
更精确的上限。】】】
3)Halstead方法:根据程序中可执行代码行的运算符和操作数(运算对象)的个数来计
算程序的复杂性。
①n1:程序中不同运算符的个数
n2:程序中不同操作数(运算对象)的个数
N1:程序中实际出现的运算符总个数
N2:程序中实际出现的操作数(运算对象)总个数
N(程序长度)=N1+N2
H(程序预测长度)=n1log2n1+n2log2n2
E:预测程序中包含错误的个数
E=Nlog2(n1+n2)/3000