浅析软件缺陷
作者:赵俊玲
来源:《科学与财富》2013年第02期
摘要:在软件的开发过程中,软件缺陷的产生是不可避免的。那么究竟什么是软件缺陷,造成软件缺陷的主要原因又有哪些呢?本文将从软件缺陷的类型、级别和软件缺陷产生的原因等方面进行阐述。
关键词:软件缺陷 级别 状态 原因
一、所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。软件缺陷的产生主要是由软件产品的特点和开发过程决定的。 软件缺陷的主要类型有:1. 软件没有实现产品规格说明中提到的功能;2.软件中出现了产品规格说明指明不应该出现的错误; 3.软件没有实现虽然产品规格说明未明确提及但应该实现的目标;4.软件难以理解,不容易使用,运行缓慢。 二、软件缺陷的级别和状态
(1)软件缺陷大体可分为四种级别,分别为:
致命的缺陷。出现致命的错误,往往导致系统或应用程序崩溃、死机,或者造成数据丢失、主要功能完全丧失。
严重的缺陷。出现严重的错误,表现为功能特性没有实现,主要功能部分丧失,次要功能完全丧失,或者出现致命的错误声明。
一般的缺陷。出现一般的错误,表现为不太严重,虽然有一些缺陷存在,但是不会影响系统和程序的基本使用,功能没有被很好的实现,如次要功能丧失,提示信息不太准确,或用户界面差,操作时间长等,没有达到预期要求。
微小的缺陷。出现微小的错误,都是无关紧要的小问题,软件还可以使用,而且不影响功能的实现。
(2)从表现状态方面,软件缺陷可分为以下五种。
激活状态(Open):问题没有解决,测试人员新报告的缺陷或者验证后缺陷仍旧存在。
龙源期刊网 http://www.qikan.com.cn
已修正状态(Fixed):开发人员针对缺陷来修改程序,认为已解决问题或者通过单元测试。
关闭状态或非激活状态(Close):测试人员验证已经修正的缺陷后,确认缺陷不存在后的状态。
保留状态:当所报告的缺陷目前无法解决或是第三方产品引起的,可以看成保留状态。 不一致状态:当所报告的缺陷暂时不需要解决或者在下一版本解决的会更好些,可以看成是不一致状态。
三、软件缺陷的原因分析
(1)软件缺陷所产生的原因,主要有以下四个方面。 1. 技术问题
技术问题包括:算法错误,在给定条件下没能给出正确或准确的结果。 语法错误,对于编译性语言程序,编译器可以发现这类问题,但对于解释性语言程序,只能在测试运行时发现;计算和精度问题,计算的结果没有满足所需要的精度;接口参数传递不匹配,导致模块集成出现问题。 2. 团队工作
团队工作产生的原因主要包括:系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存在一些困难;不同阶段的开发人员相互理解不一致。例如,软件设计人员对需求分析的理解有偏差,编程人员对系统设计规格说明书某些内容重视不够或存在误解;对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通;项目组成员技术水平参差不齐,新员工较多,或培训不够等原因也容易引起问题。 3. 软件本身
软件本身存在的问题包括:文档错误、内容不正确或者拼写错误;没有考虑大量用户的使用场合,从而可能引起强度或负载问题;对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误;对一些实时应用,要精心设计和技术处理,保证精确的时间同步,否则容易引起时间上的不协调、不一致带来的问题;没有考虑系统崩溃后的自我恢复或数据的异地备份,灾难性恢复等问题,从而存在系统的安全性和可靠性隐患;硬件或系统软件上存在的错误以及软件开发标准上的错误。 4. 项目管理的问题
龙源期刊网 http://www.qikan.com.cn
项目管理方面的问题主要包括:缺乏质量文化,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试、等时间,遗留的缺陷会比较多; 开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;由于周期短,还给各类开发人员造成太大的压力,引起一些人为的错误等。
(2)从测试观点可以将对软件缺陷分为以下五类
1.功能缺陷:功能缺陷包括,规格说明书缺陷、功能缺陷、测试缺陷和测试标准引起的缺陷。
2. 系统缺陷:系统缺陷包括,外部接口缺陷、内部接口缺陷、硬件结构缺陷、操作系统缺陷、软件结构缺陷、控制与顺序缺陷、资源管理缺陷;
3. 加工缺陷:加工缺陷包括,算术与操作缺陷、初始化缺陷、控制和次序缺陷、静态逻辑缺陷。
4. 数据缺陷:数据缺陷包括,动态数据缺陷、静态数据缺陷、数据内容缺陷、结构缺陷和属性缺陷。
5. 代码缺陷:代码缺陷包括,数据说明错误、数据使用错误、计算错误、比较错误、控制错误、界面错误、输入和输出错误。
总之,在软件开发的过程中,软件缺陷的产生是不可避免的。为了更好的认识软件缺陷,找出并修正软件中出现的各种问题,我们还应当处理好软件质量保证与测试的关系。软件质量保证是采取一些措施或方法来改进软件开发过程,尽量防止软件缺陷的产生,而软件测试是尽可能地发现软件缺陷并确保缺陷得以改正,使得软件产品更加稳健。两者的职责虽然有所不同,但是他们之间的活动有所交叉,它们是相互依赖,相互促进的。为了更好的实现软件的功能,我们要在软件开发的早期进行测试,如需求分析阶段就应该介入,问题发现的越早越好,发现缺陷后要尽快修复缺陷,因为随着产品开发工作的进行,一个小错误会扩散成大错误,为了修改后期的错误所做的工作要多得多,即越到后来往前返工也越远,缺陷发现或解决的越迟,成本就会越高。修正错误的代价不是随时间线性增长,而几乎是呈指数增长的。 参考文献
[1] 宋广军. 软件工程 [M].北京:北京航空航天大学出版社, 2011年 [2] 张海藩. 软件工程导论[M].北京:清华大学出版社, 2012年 [3] 贺平. 软件测试技术[M].北京:机械工业出版社,2004年
龙源期刊网 http://www.qikan.com.cn
作者简介:赵俊玲 新乡职业技术学院 河南省新乡市 453006 1982年04月,女,河南新乡,本科学士,助理讲师
因篇幅问题不能全部显示,请点此查看更多更全内容