对软件缺陷进行分类,分析产生各类缺陷的软件过程原因,总结在开发软件工程中不同软件缺陷出现的频度,制定对应的软件过程管理与技术两方面的改进措施,是提高软件组织的生成能力和软件质量的重要手段。
▶6.1.3.1 软件缺陷分类方法
软件缺陷分类是在缺陷描述的基础上进行的,对缺陷进行分类之前,要先定义缺陷的属性。缺陷的属性主要包括以下几个方面:
(1)缺陷标识(Identifier):缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识。
(2)缺陷类型(Type):缺陷类型是根据缺陷的自然属性划分的缺陷种类。
(3)缺陷严重程度(Severity):缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。
(4)缺陷优先级(Priority):缺陷的优先级是指缺陷必须被修复的紧急程度。
(5)缺陷状态(Status):缺陷状态是指缺陷通过一个跟踪修复过程的进展情况。
(6)缺陷起源(Origin):缺陷起源是指引起缺陷的起因。
(7)缺陷来源(Source):缺陷来源是指缺陷引起的故障或事件第一次被检测到的阶段。
(8)缺陷根源(Root Cause):缺陷根源是指发生错误的根本因素。
软件缺陷的分类方法繁多,各种分类方法的目的都不同,观察问题的角度和复杂程度也不一样。下面是几个有代表性的软件分类方法。
▶1.Putnam分类法
Putnam等人提出的分类方法将软件缺陷分为以下六类:需求缺陷、设计缺陷、文档缺陷、算法缺陷、界面缺陷和性能缺陷。
这种分类方法可以分析软件缺陷的来源和出处,指明修复缺陷的方向,为软件开发过程各项活动的改进提供线索。
▶2.Thayer分类法
Thayer软件错误分类方法是按错误性质分类,它利用测试人员在软件测试过程填写的问题报告和用户使用软件过程反馈的问题报告作为错误分类的信息。它包括16个类,有计算错误、逻辑错误、I/O错误、数据加工错误、操作系统和支持软件错误、配置错误、接口错误、用户需求改变(用户在使用软件后提出软件无法满足的新要求产生的错误)、预置数据库错误、全局变量错误、重复的错误、文档错误、需求实现错误(软件偏离了需求说明产生的错误)、不明性质错误、人员操作错误、问题(软件问题报告中提出的需要答复的问题)。另外,在这16个类之下,还有164个子类。
该分类方法特别适用于指导开发人员的缺陷消除和软件改进工作。通过对错误进行分类统计,可以了解错误分布状况,对错误集中的位置重点加以改进。该方法分类详细,适用面广,当然分类也较为复杂。该分类方法没有考虑造成缺陷的过程原因,不适用于软件过程改进活动。
▶3.缺陷正交分类ODC(Orthogonal Defects Classification)
ODC是IBM公司提出的缺陷分类方法。该分类方法提供一个从缺陷中提取关键信息的测量范例,用于评价软件开发过程,并提出正确的过程改进方案。该分类方法用多个属性来描述缺陷特征。在IBM ODC最新版本中,缺陷特征包括以下八个属性:发现缺陷的活动、缺陷影响、缺陷引发事件、缺陷载体(Target)、缺陷年龄、缺陷来源、缺陷类型和缺陷限定词。ODC对八个属性分别进行了分类,其中缺陷类型被分为七大类:赋值、检验(Checking)、算法、时序、接口、功能、关联(Relationship)。
分类过程分两步进行:
第一步,缺陷打开时,导致缺陷暴露的环境和缺陷对用户可能的影响是易见的,此时可以确定缺陷的三个属性:发现缺陷的活动、缺陷引发事件和缺陷影响。
第二步,缺陷修复关闭时,可以确定缺陷的其余五个属性:缺陷载体、缺陷类型、缺陷限定词、缺陷年龄和缺陷来源。这八个属性对于缺陷的消除和预防起到关键作用。
该分类方法分类细致,适用于缺陷的定位、排除、缺陷原因分析和缺陷预防活动。缺陷特征提供的丰富信息为缺陷的预防、消除和软件过程的改进创造了条件。
▶4.IEEE分类法
电气和电子工程师学会制定的软件异常分类标准(IEEE Standard Classification for Anomalies 1044—1993)对软件异常进行了全面的分类。该标准描述了软件生命周期各个阶段发现的软件异常的处理过程。分类过程由识别、调查、行动计划和实施处理四个步骤组成。每一步骤包括三项活动:记录、分类和确定影响。异常的描述数据称为支持数据项。分类编码由两个字母和三个数字组成。如果需要进一步的分类,可以添加小数。例如RR324,IV321.1。RR表示识别步骤,IV表示调查步骤,AC表示行动计划步骤,IM表示确定影响活动,DP表示实施处理步骤。分类过程的四个步骤都需要支持数据项。由于每个项目都有各自的支持数据项,该标准不强制规定支持数据项,但提供了各个步骤相关的建议支持数据项。强制分类建立通用的定义术语和概念,便于项目之间、商业环境之间、人员之间的交流沟通。可选分类提供对于特殊情况有用的额外的细节。在调查步骤中,对实际原因来源和类型进行了强制分类。其中调查步骤将异常类型分为逻辑问题、计算问题、接口/时序问题、数据处理问题、数据问题、文档问题、文档质量问题和强化问题(Enhancement)共八个大类,下面又分为数量不等的小类,分类细致深入,准确说明了异常的类型。
该分类方法提供一个统一的方法对软件和文档中发现的异常进行详细的分类,并提供异常的相关数据项帮助异常的识别和异常的跟踪活动。IEEE软件异常分类标准具有较高的权威性,可针对实际的软件项目进行裁剪,灵活度高、应用面广。不足之处是没有考虑软件工程的过程缺陷,并且分类过程复杂。但是该方法提供了丰富的缺陷信息。缺陷原因分析活动可以充分利用这些信息进行原因分析。
▶6.1.3.2 软件缺陷分类方法的应用
软件缺陷分类的方法虽然有很多,但实际应用中的缺陷分类通常是按照缺陷的表现形式、缺陷的严重程度、缺陷的优先级、缺陷的起源和来源、缺陷的根源以及缺陷的生命周期等进行。
(1)软件缺陷类型标准。根据软件缺陷的自然属性表现形式将缺陷分为以下几种:
·功能(F-Function):影响了重要的特性、用户界面、产品接口、硬件结构接口、全局数据结构和设计文档需要正式的变更。如逻辑、指针、循环、递归、功能等缺陷。(www.xing528.com)
·赋值(A·Assignment):需要修改少量代码,如初始化或控制块中声明、重复命名、范围、限定等缺陷。
·接口(I-Interface):与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。
·检查(C-Checking):提示的错误信息,不适当的数据验证等缺陷。
·联编打包(B-Build/package/merge):由配置库、变更管理或版本控制引起的错误。
·文档(D-Documentation):影响发布和维护,包括注释。
·算法(G-Algorithm):算法错误。
·用户接口(U-User Interface):人机交互特性、屏幕格式、确认用户输入、功能有效性、页面排版等方面的缺陷。
·性能(P-Performance):不满足系统可测量的属性值,如:执行时间、事务处理速率等。
·标准(N-Norms):不符合各种标准的要求,如编码标准、设计符号等。
(2)按缺陷的严重程度划分。该划分方法是指按软件的缺陷对软件质量的影响程度划分,按照严重程度由高到低顺序可分为5个等级:
·致命缺陷(Critical):不能执行正常工作功能或重要功能或者危及人身安全。
·严重缺陷(Major):严重地影响系统要求或基本功能的实现,且没有办法更正(重新安装或重新启动该软件不属于更正办法)。
·一般缺陷(Minor):严重地影响系统要求或基本功能的实现,但存在合理的更正办法(重新安装或重新启动该软件不属于更正办法)。
·次要缺陷(Cosmetic):使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。
·其他缺陷(Other):其他错误。
(3)按优先级别划分。指处理和修正软件缺陷的先后顺序,按照优先级可分为3个等级:
·高(Resolve Immediately):缺陷必须被立即解决。
·中(Normal Queue):缺陷需要正常排队等待修复或列入软件发布清单。
·低(Not Urgent):缺陷可以在方便时被纠正。
(4)按缺陷的起源和来源划分。软件缺陷的产生不仅仅是因为编码的错误,更多的是因为在软件开发的初期做了错误或不全面的需求分析和系统设计所引起的。根据产生缺陷的根源和来源可以划分为以下5类:
·Requirement:在需求阶段发现的缺陷。
·Architecture:在构架阶段发现的缺陷。
·Design:在设计阶段发现的缺陷。
·Code:在编码阶段发现的缺陷。
·Test:在测试阶段发现的缺陷。
缺陷不同,其表现形式以及后果也不同:在评审或测试过程中由于评审人员或测试人员的角度不同,对缺陷的认识也不同,对缺陷的描述定义也不完全相同。因此,在实际应用中,要根据实际情况来划分。
在缺陷确认分类过程中可以分析不同阶段的缺陷情况,与标准缺陷类型进行关联,并确认其注入阶段。软件缺陷类型标准与几个缺陷检测阶段存在缺陷及注入阶段关联情况(见表6-1)。
表6-1 缺陷类型标准与软件测试阶段
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。