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