当前位置:首页 > 软件工程导论复习重点总结--很全(第六版)
PAD图的主要优点如下:
使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。 PAD图所描绘的程序结构十分清晰。
PAD图表现程序逻辑易读、易懂、易记。
容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。 即可表示程序逻辑,也可描绘数据结构。
PAD图的符号支持自顶向下、逐步求精方法的使用。
6.3.4 判定表
判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。
条件组合矩阵 所有条件 所有动作 条件组合 对应的动作 判定表的缺点:
判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。
当数据元素的值多于两个时,判定表的简洁程度也将下降。
6.3.5 判定树
判定树的优点:
它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。 判定树的缺点: 简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多。
画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。
6.3.6 过程设计语言(伪码)
伪代码的基本控制结构:
简单陈述句结构:避免复合语句。
判定结构:IF_THEN_ELSE或CASE_OF结构。 选择结构:WHILE_DO或REPEAT_UNTIL结构。
PDL的优点:
可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。 可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。 已经有自动处理程序存在,而且可以自动由PDL生成程序代码。 PDL的缺点:
不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。
6.4 面向数据结构的设计方法
面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。
6.4.1Jackson
A由B、C、D 3个元素顺序组成 根据条件A是B或C或D中的某一个 A≥0)组成
6.4.2 改进的Jackson图 6.4.3 Jackson方法
6.5 程序复杂程度的定量度量
6.5.1 McCabe方法
1. 流图(程序图)
11,2F 2T
F 1T1242,34355 1F 1T22,33
2. 计算环形复杂度的方法 V(G)=流图中的区域数 V(G)=E-N+2
其中E是流图中的边数,N是结点数
由B出现N次(NV(G)=P+1
其中P是流图中判定结点的数目
6.5.2 Halstead方法
令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:
N=N1+N2
程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。预测程序长度的公式如下:
H = n1 log2n1 + n2 log2n2
预测程序中包含错误的个数的公式如下:
E = N log2 (n1+n2)/3000
第7章 实现
编码和测试统称为实现。
7.1编码
7.1.1 选择程序设计语言
主要的实用标准:
系统用户的要求 可以使用的编译程序 可以得到的软件工具
工程规模 程序员的知识 软件可移植性要求 软件的应用领域
7.1.2 编码风格
1. 程序内部的文档:恰当的标识符 适当的注解 程序的视觉组织 2. 数据说明 3. 语句构造 4. 输入输出
5. 效率:程序运行时间 存储器效率 输入输出的效率
7.2软件测试基础
7.2.1 软件测试的目标
测试是为了发现程序中的错误而执行程序的过程;
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; 成功的测试是发现了至今为止尚未发现的错误的测试。
7.2.3 测试方法
黑盒测试(功能测试): 把程序看作一个黑盒子;
完全不考虑程序的内部结构和处理过程; 是在程序接口进行的测试。 白盒测试(结构测试):
把程序看成装在一个透明的盒子里; 测试者完全知道程序的结构和处理算法;
按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
7.2.4 测试步骤
1. 模块测试(单元测试)
保证每个模块作为一个单元能正确运行; 发现的往往是编码和详细设计的错误。 2. 子系统测试
把经过单元测试的模块放在一起形成一个子系统来测试; 着重测试模块的接口。 3. 系统测试
把经过测试的子系统装配成一个完整的系统来测试;
发现的往往是软件设计中的错误,也可能发现需求说明中的错误;
不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。 4. 验收测试(确认测试)
把软件系统作为单一的实体进行测试; 它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试;
发现的往往是系统需求说明书中的错误。 5. 平行运行
7.2.5 测试阶段的信息流
输入信息有两类:
软件配置,包括需求说明书、设计说明书和源程序清单等; 测试配置,包括测试计划和测试方案。
7.3 单元测试
单元测试集中检测模块;
单元测试和编码属于软件过程的同一个阶段;
可以应用人工测试和计算机测试这样两种不同类型的测试方法;
单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行。
7.3.1 测试重点
模块接口 局部数据结构 重要的执行通路 出错处理通路 边界条件
7.3.2 代码审查
由审查小组正式进行测试称为代码审查;
一次审查会上可以发现许多错误,可以减少系统验证的总工作量。
7.3.3 计算机测试
驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并且印出有关的结果。 存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。
7.4 集成测试
集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。 由模块组装成程序时有两种方法:
共分享92篇相关文档