软件工程学习(四)

知识要点:

1)实现:编码风格;2)测试的定义和目标;3)单元测试;

4)集成测试过程及方法;5)白盒、黑盒测试技术;6) BRO测试;条件测试,测试用例设计。

7)维护:软件维护的定义、特点; 8)主要的维护活动;软件再工程过程。

9)软件项目管理:估算软件规模;10)开发工作量估算;11)开发时间、进度估算;

12)关键路径、机动时间;13)软件配置及管理过程;能力成熟度模型。

实现:编码和测试统称为实现;

编码就是把软件设计结果翻译成某种程序设计语言书写的程序;

测试的目的就是在软件投入生产性运行之前,尽可能多的发现软件中的问题。

编码风格所遵循的规则:

1)程序内部的文档包括恰当的标识符、适当的注解和程序的视觉组织;

2)数据说明的次序应该标准化;

3)语句构造要求简单直观;

4)数据的输入安全方便,输出清晰易懂;

5)效率尽可能的高效,满足用户需求即可;

测试的目标或定义:

1)测试是发现程序的错误而执行程序的过程;

2)好的测试方案是为了发现迄今为止尚未发现的错误的测试方案;

3)成功的测试是发现了迄今为止尚未发现的错误的测试;

软件维护的定义:软件交付使用后,为改正错误或者满足信息的需要而修改软件的过程;

维护的分类:改正性维护、适应性维护、完善性维护、预防性维护

软件维护的特点:(3条)

1)结构化维护与非结构化维护差别巨大;

2)维护代价高昂; 3)维护所面临的问题很多;

单元测试:集中测试软件设计的最小单元——模块。单元测试主要使用白盒测试技术,对多个模块的测试可以并行进行;

集成测试方法:自顶向下集成、自底向上集成;

Alpha测试:用户在开发者场所进行,并且在开发者对用户的指导下进行。开发者负责记录发现的错误和使用中遇到的问题,

总之Alpha测试是在受控环境下进行的测试;

Beta测试:软件的最终用户在一个或多个客户场所进行。开发者通常不在Beta测试的测试现场,因此Beta是软件在开发者

不能控制的环境中的“真实”应用;

白盒测试:

语句覆盖:被测试程序中每一条语句至少执行一次;

判定覆盖:不仅每条语句要执行一次,而且每种判定可能的结果也要执行一次;

条件覆盖:不仅每条语句要执行一次,而且判定表达式中的每个条件都取到各种可能结果;

判定条件覆盖:选取足够多的测试数据,使得判定表达式中每个条件都能取到可能的值,而且每个判定表达式也都取到各种结果

条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中的条件的各种组合至少出现一次;

例子:

软件工程学习(四)_第1张图片

语句覆盖:A=2,B=0,X=4(任意);//1-a-4-5-2-b-6-7-3-d;(即图中每个图形均走一遍)

判定覆盖:A=2,B=0,X=4(任意);//覆盖每个判定结果为T的

A=0,B=1,X=1;//覆盖判定结果为F的     (测试用例不唯一,即每个判定的真假走一次即可)

条件覆盖:(所有结点均走一遍且包含以下所有条件)

各个判定的条件有:对于a判定结点A>1和A<=1,B=0和B!=0;对于b判定结点:A=2和A!=2,X>1和X<=1;

A=2,B=0,X=1;(覆盖条件A>1、A=2、B=0、X<=1)

A=1,B=1,X=4;(覆盖条件A<=1、A!=2、B!=0、X>1)

判定/条件覆盖:(同时满足判定覆盖和条件覆盖)

A=2,B=0,X=4;(覆盖条件A>1、A=2、B=0、X>1,且T路径全走)

A=1,B=1,X=1;(覆盖条件A<=1、A!=2、B!=0、X<=1,且F路径全走)

条件组合覆盖:(每个判定表达式中的判定组合至少出现一次)

列出所有的判定条件组合,选取合适的测试用例直到包含所有条件组合;(重点,要求会区别覆盖类型和设计其测试用例

黑盒测试:常用方法(等价类划分、边界值分析、错误推断

软件维护过程:1)维护组织; 2)维护报告; 3)维护事件流;4)保存维护记录; 5)评价维护活动;

软件再工程过程:1)库存目录分析; 2)文档重构; 3)逆向工程; 4)代码重构; 5)数据重构; 6)正向工程;

软件工程学习(四)_第2张图片

逆向工程:分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示过程。(即:恢复设计结果的过程)

正向工程(革新或改造):从现有程序中恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量;

软件项目管理:通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以求达到最终目标的过程;

估算软件规模的方法:

1)代码行技术;(a为最小规模、b为最大规模、c为最可能规模)通过多人对此三者进行统计估计得出各个规模的平均值

通过下述公式来计算程序规模的估计值

L=(A+4C+B)/6;(此处的ABC为上述三种规模的平均值,单位LOC或KLOC)

2)功能点技术;

功能点技术定义了信息域的5个特性:输入项数inp、输出项数out、查询数inq、主文件数maf、外部接口数inf;

如何估算功能点:

      1、计算未调整的功能点数UFP:UFP=a1*inp+a2*out+a3*inq+a4*maf+a5*inf;

(注这里的a1,a2,a3,a4,a5为信息域特性系数,一般会给出下表不须记忆)

软件工程学习(四)_第3张图片

      2、计算技术复杂因子TCF:TCF=0.65+0.01*DI,这里的DI为这种技术因素对软件规模的影响程度(取值范围0-5)之和;

      3、计算功能点FP:FP=UFP*TCF

开发工作量估算:1)静态单变量模型;2)动态多变量模型;3)cocomo2模型;(了解即可)

开发时间估算:(向一个已经延期的项目中增加人力只会使其更加延期;软件系统的开发时间越短,开发成功率越低。)

关键路径&机动时间:圆圈(标识,最早时刻、最迟时刻)、箭头(仅仅表示依赖关系,其上面的数字表示活动持续时间)

        关键路径:事件的最早时刻和最迟时刻相同,这些事件构成了关键路径。关键路径上的事件必须准时发生,组成

        关键路径的活动的实际持续时间不能超过估计的持续时间。

        机动时间:不在关键路径上的作业有一定程度的机动余地,即实际开始时间可以比预定时间晚一些,或者实际持续

        时间比预定的持续时间长一些,而不影响工程的结束时间;

        计算方式(机动时间=(LET)结束-(EET)开始-持续时间)      (数据结构中的关键路径的计算,重点要求会计算)

软件配置和管理过程(5项任务):标示、版本控制、变化控制、配置审计、报告

成熟度能力模型:(5个等级,下表标识了各个等级的名称和每个等级的特点)

初始级

软件过程的特征是无序的,有时甚至是混乱的。几乎没有什么过程

是经过定义的,项目能否取得成功完全取决于开发人员的个人能力

可重复级

软件项目的策划和跟踪是稳定的,已经为一个有记律的管理过程

提供了可重复之前成功实践的项目环境。

已定义级

软件过程已经是文档化和标准化。无论是管理活动还是工程活动

都是稳定的,软件开发的成本和进度以及产品的功能和质量都受

到控制,且软件产品的质量具有可追溯性。

已管理级

软件过程是可度量的,软件过程在可度量的范围内进行。这一级

的过程能力允许软件机构在定量的范围内预测过程和产品质量趋势

在发生偏离时可以及时的采取措施予以纠正,并且可以预期软件

产品是高质量的。

优化级

软件过程是可优化 的,这一级的软件机构能够持续不断地改进其过

程能力,既对现行过程实例不断地改进和优化,又借助于所采用的

新技术和新方法来实现未来改进的过程。

常用于指定进度计划的工具:Gantt图和工程网络

你可能感兴趣的:(软件工程,软件工程)