航天嵌入式软件缺陷的分类方法

2012-09-05 10:35董晓刚杨孟飞
空间控制技术与应用 2012年5期
关键词:嵌入式软件航天错误

董晓刚,杨孟飞

(1.北京控制工程研究所,北京100190;2.中国空间技术研究院,北京100094)

航天嵌入式软件缺陷的分类方法

董晓刚1,杨孟飞2

(1.北京控制工程研究所,北京100190;2.中国空间技术研究院,北京100094)

软件缺陷分类是软件缺陷管理的基础.介绍了软件缺陷的概念,对几种软件缺陷分类方法进行了分析和比较.结合航天嵌入式软件研制流程和缺陷类型分析,提出了一种航天器嵌入式软件缺陷的分类方法,对于缺陷类型和实现与编码错误子类型给出了详细的分类方法.

软件缺陷;航天嵌入式软件;缺陷分类

软件缺陷(software defect)的一般定义指软件中存在的未满足与用户期望或者规定用途有关的要求[1].软件缺陷是软件本身存在的一种固有状态,不同的软件开发阶段可能引入各种类型的软件缺陷,在软件运行中遇到有缺陷的软件代码被执行,软件运行就会表现出和预期不一致的执行效果,导致系统或系统功能无法满足任务要求.软件缺陷是软件故障和失效的源头,不同的软件缺陷会产生不同的后果,对于航天嵌入式软件,如果不能在测试阶段充分发现和暴露软件中的缺陷,一旦软件交付在轨运行,可能导致严重的后果.

研究软件缺陷的分类方法,特别是航天嵌入式软件的缺陷分类方法,是为了形成一套对软件缺陷的引入、发现、定位、危害和根源进行分析的有效方法,之后在软件缺陷管理中有针对性的对问题最多、危害最大的几类缺陷进行增强的测试,或者研究开发专项分析工具,力争尽早和尽量完整的发现缺陷并修复缺陷.

1 一般的软件缺陷分类方法

软件缺陷的分类方法有很多,各种分类方法的目的不同,观察问题的角度和复杂程度也不一样,几个有代表性的软件分类方法如下.

1.1 Putnam分类法

Putnam和Myers将软件缺陷分为6类:需求缺陷、设计缺陷、算法缺陷、界面缺陷、性能缺陷和文档缺陷[2].同时,还对软件的缺陷严重等级做出了划分,根据缺陷造成的后果和所需采取的行动,分为重大的、严重的、中等的和表面的4个等级.该分类法主要覆盖软件研制的需求分析、软件设计和软件实现3个阶段,类型比较简单,对目前软件缺陷的分析和排除作用有限.

1.2 Thayer分类法

Thayer[3]分类法按照错误性质分类,它利用测试人员在软件测试过程填写的问题报告和用户使用软件过程反馈的问题报告作为错误分类的信息.它包括16个大类,分别是:计算错误、逻辑错误、I/O错误、数据加工错误、操作系统和支持软件错误、配置错误、接口错误、用户需求改变、预制数据库错误、全局变量错误、重复的错误、文档错误、需求实现错误、不明性质错误、人员操作错误、问题.

Thayer分类法主要用于软件测试过程中的问题报告,主要是指示开发人员的缺陷定位和消除工作,没有考虑到软件整个研制过程中可能引入缺陷的其他因素,对缺陷的引入阶段和缺陷根源的分析也不充分.

1.3 缺陷正交分类ODC

缺陷正交分类ODC(orthogonal defects classification)是IBM公司提出的缺陷分类方法,包括7类:赋值、检验、算法、时序、接口、功能、关联[4].

分类过程分两步进行.第一步,缺陷发现时,导致缺陷发现的环境和缺陷对用户可能的影响,此时可以确定缺陷的3个属性:发现缺陷的活动、缺陷引发事件和缺陷影响.第二步,缺陷修复关闭时,可以确定缺陷的其余5个属性:缺陷载体、缺陷类型、缺陷限定词、缺陷年龄和缺陷来源.这8个属性对于缺陷的消除和预防起到关键作用.

该分类方法分类细致,适用于缺陷的定位、排除、缺陷原因分析和缺陷预防活动.缺陷特征提供的丰富信息为缺陷的消除、预防和软件过程的改进创造了条件.ODC的缺点在于分类复杂,难以把握分类标准.

1.4 IEEE异常分类方法

IEEE异常分类方法[5]认为分类过程由识别、调查、行动计划和实施处理4个步骤组成,其中调查步骤将异常类型分为:逻辑问题、计算问题、接口/定时错误、数据处理问题、数据问题、文档问题、文档质量问题和增强问题共8类.

IEEE分类方法对软件异常进行了全面分类,给出了整个缺陷分类的完整属性框架.但是,IEEE分类过程复杂,通常需根据项目实际情况进行裁减,不利于快速地对缺陷进行分类和度量.

2 航天嵌入式软件缺陷分类方法

传统的软件缺陷分类方法,有的分类方法简单,缺陷信息量不足,无法有效帮助进行缺陷的修复;有的没有考虑缺陷发生的过程原因,不适用于软件过程改进活动;有的分类又过于复杂,导致难以把握分类标准.因此,需要结合上述软件缺陷分类方法的优缺点,同时结合航天嵌入式软件研制流程,特别是软件缺陷的发现、定位、排除和预防过程,提出航天嵌入式软件缺陷分类方法,指导软件缺陷的分类,为软件缺陷定位和修复,为软件缺陷的预防提供准确的完整的信息.

进行航天嵌入式软件缺陷分类的目的是对软件缺陷进行度量,分析软件缺陷产生的过程和产生原因,改进软件研制过程,预防软件缺陷,提高组织的软件能力成熟度.航天嵌入式软件缺陷分类方法,从方法上应满足以下要求:

1)准确地对发现的缺陷进行分类;

2)分类之间应无重叠,分类体系应覆盖所有的缺陷类型;

3)分类应该与软件生命周期有机结合;

4)分类应满足航天嵌入式软件研制流程和缺陷的发现、定位、排除和预防过程的要求.

可以定义下面这个6元组模型来描述航天嵌入式软件缺陷属性,即 <引入阶段、发现阶段、缺陷类型、编程语言、缺陷根源、缺陷严重等级>,表1说明了每个缺陷属性的具体含义.

表1 缺陷属性及含义Tab.1 Defect’s attributes and definitions

根据航天软件研制阶段的定义,软件生命周期一般包括10个阶段,则定义下面这个10元组来描述软件缺陷的引入阶段和发现阶段,即“引入阶段”=“发现阶段”=<系统需求分析与设计、软件需求分析、概要设计、详细设计、软件实现、组装测试、确认测试、系统联试、验收交付、运行维护>.一般上来说,软件缺陷的引入阶段应不包括开始软件测试之后的研制阶段,但为方便统一表述,这里把引入阶段和发现阶段定义一致.

“缺陷类型”是定义缺陷类型的属性,可以通过描述对缺陷所作的实际修复工作的类型来确定缺陷类型的属性值.传统的软件缺陷分类主要是从软件本身存在问题的角度来区分软件的缺陷,但是在实际软件测试中,往往需要记录和分析许多本身可能并非软件缺陷的问题,这些问题可能是测试人员在理解上的误会,可能是由于测试人员误操作导致,还可能是测试设备、测试软件等缺陷导致的软件执行异常现象.为全面反映航天嵌入式软件测试过程的真实信息,从软件研制过程改进的角度,应把由于测试过程导致的软件异常现象纳入软件缺陷的分类中,见表2所示.

表2 缺陷类型及主要表现Tab.2 Defects types and forms

需求分析缺陷主要是软件需求分析阶段引入的,可以通过完善需求分析工作以消除缺陷.设计阶段缺陷主要指软件设计文档方面的缺陷,可以通过完善设计文档的方式消除缺陷.功能、性能、数据、结构、接口和集成错误主要反映因为软件需求分析或设计的不到位导致的真实软件缺陷,可以通过完善需求分析,或者完善软件设计,通过重新修改软件代码消除缺陷.测试设备、测试软件和测试执行缺陷主要反映了软件测试阶段,因为测试硬件、软件或者测试活动的错误导致的软件执行不符合预期希望结果的现象,通过重新设计测试的软硬件测试平台,重新设计测试方法和测试用例,可以消除这几类缺陷.

实现与编码错误是因为软件实现人员对软件编程语言、软件使用环境、软件执行过程、软件执行异常、软件编程规范等方面的认识和理解不正确或者不准确导致的软件代码缺陷.程序由源代码符号序列组成,源代码经过编译器的词法分析、语法分析、语义分析和中间代码生成、代码优化,最后生成目标代码.在对软件缺陷类别中的“实现与编程错误”继续分类,可以按照软件编译过程的不同阶段进行分类,这种方法不会导致分类的模糊,也明确了可以在编译的哪个阶段发现该类缺陷,如果结合静态分析的方法,可以明确在编译过程的哪个阶段通过修改编译器可以部分的发现这类缺陷,增加软件缺陷排除的准确性.

词法分析的任务是对构成源程序的字符串进行扫描和分解,识别出一个个的单词,词法缺陷即考察符号序列在组成程序时可能出现的问题.语法分析的任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单元.如果编码错误都不是上述两类缺陷,程序仍然可能与实现者想表达的含义不一致,则产生语义缺陷[6].可维护性缺陷是专门考察程序注释问题和变量、语句多余的缺陷类型.在此基础上,试给出“实现与编码错误”缺陷分类,为缺陷预防提供依据.

编程语言是航天嵌入式软件源程序的实现语言,可以用以下的3元组来定义,即 <C语言、汇编语言、Ada语言>.

缺陷根源是软件缺陷产生的根原因,通过考察近3年航天嵌入式控制软件的缺陷产生原因,按照缺陷修复的方式进行分类,可用以下10元组定义缺陷根源,即<用户需求理解不完整、用户需求理解错误、功能设计不完整、功能设计错误、性能设计不完整、编码疏漏、对编程语言认识不准确、对使用环境认识不准确、对规范理解不准确、操作错误>.

表3 实现与编程错误类型细化分类Tab.3 Implementation and coding error

缺陷严重等级是根据如果软件缺陷一直存在,对航天任务造成的不利影响的严重程度来分类,如表4所示.

表4 缺陷严重等级Tab.4 Severity level of defects

3 结束语

通过给出航天嵌入式软件缺陷分类方法,进而分析产生各类缺陷的软件过程原因,获取不同软件缺陷出现的频度数据,并以此为依据制定对应的软件过程管理与技术改进两方面的改进措施,才能进一步提高软件质量,提高软件组织的生产能力.在未来的型号软件研制中,可以结合本文给出的软件缺陷分类方法进行缺陷的统计分类和故障定位,并可有针对性的在不同的软件测试阶段采取不同的测试方法和测试工具,重点发现和暴露某一类别的软件缺陷,提高测试的有效性.

[1] W ilfredo T P.Software fault tolerance a tutorial[R]. Langley Research Center,NASA,2000

[2] Putnam L H,Myers W.Measures for excellence:reliable software on time,within budget[M].New Jersey: Prentice Hall,1992

[3] 黄锡滋.软件可靠性、安全性与质量保证[M].北京:电子工业出版社,2002 Huang Z X.Software reliability and safety with quality assurance[M].Beijing:Publishing house of electronic industry,2002

[4] Ram C,Inderpal S B,Jarir K C,et al.Orthogonal defect classification-a concept for in-process measurements[J].IEEE transactions on software engineering,1992,18(11):943-956

[5] IEEE Std 1044-1993.IEEE standard classification for anomalies[S].The Institute of Electrical and Electronics Engineers,1993

[6] 胡璇,刘斌,陆民燕.软件代码缺陷分类及其应用[J].计算机工程,2009,35(2):30-33 Hu X,Liu B,Lu M Y.Classification of software code errors and its application[J].Computer Engineering,2009,35(2):30-33

A C lassification M ethod for Spacecraft Em bedded Software Defects

DONG Xiaogang1,YANG Mengfei2
(1.Beijing Institute of Control Engineering,Beijing 100190,China; 2.China Academy of Space Technology,Beijing 100094,China)

Classification of software defects is the basis of software defect management.The concept of software defects,is presented in this paper,and some kinds of software defect classification methods and their merit and flaw are analyzed in detail.According to analysis of spacecraft embedded software development process and its defective types,a classification method is proposed for spacecraft embedded software defects,particular for defects types and its subclass of“implementation and coding errors”.

software defect;spacecraft embedded software;defect classification

V4

A

1674-1579(2012)05-0049-04

董晓刚(1974—),男,高级工程师,研究方向为航天器嵌入式软件开发,软件可靠性与安全性;杨孟飞(1962—),男,研究员,研究方向为空间控制计算机系统和航天器控制系统.

2012-02-03

DO I:10.3969/j.issn.1674-1579.2012.05.009

猜你喜欢
嵌入式软件航天错误
我的航天梦
在错误中成长
航天梦,我的梦
嵌入式软件测试数据传输稳定性检测方式分析
逐梦航天日
全景相机遥控器嵌入式软件V1.0 相关操作分析
航天股为何遭爆炒
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制
不犯同样错误