一种缺陷驱动的软件可靠性设计方法

文档序号:6372931阅读:309来源:国知局
专利名称:一种缺陷驱动的软件可靠性设计方法
技术领域
本发明属于软件可靠性工程领域,涉及其中的软件可靠性设计方法,具体涉及一种缺陷驱动的软件可靠性设计方法。
背景技术
软件可靠性是软件质量的重要属性之一,软件可靠性是在70年代中期提出,到80年代中期得到发展,大约在1988年,开始鼓励技术人员使用软件可靠性方法。软件可靠性设计是保证软件质量、提高软件可靠性的关键,软件可靠性设计方法的研究是软件可靠性工程领域的一个极其重要的方面。 软件可靠性设计方法不同的书籍及文献有不同的内容,一般包括贯彻软件工程化、简化设计、健壮性设计、容错设计、软件可靠性设计准则等,但对软件可靠性设计方法的介绍都不够系统、清晰,特别是对于在什么时候该使用何种具体的设计方法不明确,较为含糊,不利于软件可靠性设计方法的工程应用,从而也不利于提高软件的可靠性。软件缺陷是阻碍软件可靠性提高的最根本因素,在软件可靠性设计中占有非常重要的地位,与软件可靠性设计方法存在一定的关联。软件缺陷是导致软件失效的根源,软件失效就意味着软件不可靠。目前越来越多的软件组织重视对软件缺陷数据的收集和管理,目前已积累了一定的缺陷数据,但对软件缺陷数据的利用还不够。而且软件缺陷与可靠性存在一定的关联,但对于如果利用软件缺陷数据为软件可靠性设计服务缺乏相应的方法。

发明内容
本发明为了克服软件可靠性设计技术实施的盲目性,提高软件可靠性设计的针对性,尽早地预防和避免缺陷,编写出高可靠的软件,提出一种缺陷驱动的软件可靠性设计方法。该方法通过识别出软件中潜在的缺陷,建立软件缺陷模式库,通过软件故障树分析(SFTA)完善缺陷原因,制定改进措施,从而引导软件可靠性设计技术的实施。本发明提供了一种基于缺陷驱动的软件可靠性设计方法,该方法包括以下步骤步骤I :明确软件可靠性设计的对象,具体而言需要明确针对具有什么特性的软件进行可靠性设计。步骤2 :收集当前开发软件相关的缺陷数据,根据软件开发阶段及每个阶段工作内容和任务对软件缺陷进行分类,并进一步获取当前开发软件的可能缺陷模式。步骤3 :建立软件缺陷模式库,通过SFTA分析缺陷原因,提炼软件缺陷改进措施形成软件可靠性设计技术。步骤4:明确当前开发软件所属哪个开发阶段,找出这个阶段可能的缺陷模式。步骤5 :依据步骤3提炼的软件缺陷改进措施编写对应的功能代码。步骤6 :对功能代码进行重构,并进一步分析保证所有可能的缺陷模式不会发生。若还可能发生,返回步骤3再次提炼软件缺陷改进措施,对功能代码进行修改或重新设计,直到可能的缺陷模式都不会发生。
步骤7 :循环完成所有当前软件开发阶段的功能,直到软件开发完毕。所属步骤2是本发明的基础和依据,是实施缺陷驱动的软件可靠性设计的数据来源。首先从本单位相似软件、国内外其它相似软件或领域专家的教训与经验中收集与当前要进行可靠性设计的软件相关的缺陷数据;其次,对收集的软件缺陷数据进行整理,补充缺陷信息,剔除无用的或明显重复的缺陷数据;之后,制定缺陷分类标准,根据制定的软件缺陷分类对收集的软件缺陷数据进行分类;最后,将已分好类的软件缺陷数据抽象为软件缺陷模式。软件缺陷模式,即发生的一类特定的、重复的或类似的软件缺陷的抽象描述。分析对每一类软件缺陷表现形式的规律,进行总结和抽象,归纳出相应的缺陷模式。根据软件缺陷引入阶段将软件缺陷分为三大类软件需求缺陷、软件设计缺陷、软件编码缺陷,同时考虑嵌入式软件常用C语言编程,给出了 C语言缺陷。同时考虑每个阶段工作内容和任务,将这三类缺陷进一步划分为若干子类。软件需求缺陷又分为功能需求缺陷、性能需求缺陷、接口需求缺陷、数据需求缺陷、安全和保密需求缺陷、异常处理缺陷、其它需求缺陷。软件设计缺陷又分为体系结构缺陷、模块设计缺陷、接口设计缺陷、共享资源 缺陷、中断设计缺陷、用户界面缺陷、其它设计缺陷。软件编码缺陷又分为数据说明缺陷、语句构造缺陷、语句效率缺陷、代码注释缺陷、某种具体语言缺陷、其它编码缺陷。C语言缺陷又分为头文件结构缺陷、顺序结构缺陷、内存缺陷、IF语句缺陷、SWITCH语句缺陷、循环语句缺陷、函数语句缺陷和其它缺陷。所属步骤3是本发明的核心部分,是实施缺陷驱动的软件可靠性设计的直接指导。首先建立软件缺陷模式库,在软件缺陷数据抽象成缺陷模式基础上,引入缺陷原因、缺陷后果、缺陷等级和预防措施,建立软件缺陷模式库;其次,需要对缺陷模式库中的缺陷原因进行重点分析,本发明提出了在软件缺陷模式库基础上使用软件故障树分析(SFTA)来获取缺陷原因。通过建立软件缺陷的SFTA,获取最小割集,就可得到引发缺陷的原因。该方法不仅能较正确地获取缺陷原因,而且可以通过SFTA还能掌握缺陷原因的逻辑关系,为更好地制定改进措施提供依据。最后,根据缺陷原因制定需要采取的改进措施,即采用哪些软件可靠性技术避错技术、查错技术、改错技术和容错技术。一般的缺陷通过避错技术就可以使开发的软件无错,但是有些缺陷例如由于干扰因素导致的缺陷,或者缺陷后果很严重的缺陷,除了使用避错设计之外,还需要考虑查错技术、改错技术和容错技术。采用缺陷驱动进行软件可靠性设计的优点(I)能更有效地进行软件可靠性。按软件开发阶段同时考虑每个阶段工作内容和任务进行的软件缺陷分类,对设计而言针对性更强。通过SFTA分析缺陷原因,不仅可以找出导致缺陷的原因,而且还能得到各个原因的之间的逻辑关系,能更好地制定改进措施,从而能有效地进行软件可靠性。(2)防止为了可靠性设计而可靠性设计,提高了软件可靠性设计的针对性。通过识别出软件中潜在的缺陷,针对缺陷分析原因,制定改进措施,从而引导软件可靠性设计技术的实施,更具有针对性。(3)可以尽量地预防和尽早地避免缺陷,极大地降低了后续测试及修复的成本,更有效地提高了软件可靠性。软件可靠性设计技术来源于根据缺陷原因制定的改进措施,能更早地预防缺陷,编写出高可靠的软件。缺陷的改进措施缺陷驱动方法体现了软件可靠性与缺陷作斗争的本质特性,发挥了缺陷在软件可靠性设计中的作用。


图I是软件缺陷模式获取流程图;图2是软件缺陷分类标准;图3是软件缺陷模式库建立流程图;图4是软件缺陷原因分析方法;图5是软件缺陷改进措施制定方法。
具体实施例方式下面结合附图和实施例对本发明进一步说明。 为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步详细、深入地描述,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。图I描述了基于缺陷数据的软件缺陷模式获取的详细流程,具体步骤为步骤I :收集相关的软件缺陷数据。软件缺陷数据是本发明的基础,缺陷数据的来源一般可考虑以下三个方面(I)本单位相似软件开发、测试和运行过程中已经发现的软件缺陷数据软件开发一般都有一定的继承性,在开发新软件之前,可以通过收集之前相类似软件发生的缺陷数据。可以通过各种软件文档和记录来收集可能存在的缺陷,如评审记录、质保记录、测试记录、测试报告等;也可以通过采用问卷调查、当面座谈或头脑风暴的形式,通过与软件设计和开发人员面谈,收集他们在项目实践中经历的教训和成功的经验,包括在软件项目实施过程中遇到的棘手问题、易忽略的问题、易引入的缺陷及采取的预防措施
坐寸ο(2)国内外其它相似软件已经发现的缺陷数据除了收集本单位相关缺陷数据之外,还可通过收集国内外相关文献和标准规范中提及的缺陷数据及国内开发单位的经验教训,如NASA的安全性指南、GJB102、航天故障启示录、XX软件典型案例分析及设计参考。(3)领域专家的教训与经验采用问卷调查和座谈的形式收集领域专家的经验,以补充已缺陷模式。领域专家包括软件设计人员、软件开发人员、软件可靠性研究人员等,通过与他们面谈,收集他们在项目实践中积累的经验,包括在软件项目实施过程中遇到的棘手问题、易忽略的问题、易引入的缺陷及采取的预防措施等。另一方面,还可通过与专家讨论已收集的缺陷模式,辨别其正确性。步骤2 :对收集的软件缺陷数据进行整理由于缺陷数据来源多样导致收集的缺陷数据可能存在如下的问题(I).软件开发和测试项目积累的缺陷数据均为自然语言表示,相同缺陷可能由于人员理解的差异,描述不尽相同;(2).收集缺陷数据时,部分缺陷描述信息被错收集或者漏收集,影响到缺陷数据信息的可信度和完整度;
(3).不同的开发与测试项目其缺陷分类方法、缺陷等级划分等方面存在不一致。针对上述问题,需要采用以下几种方法对缺陷数据进行进一步的整理(I).根据不同开发和测试项目的软件及开发和测试人员的特点,理解缺陷数据描述的信息,获取无重复的缺陷数据;(2).从缺陷数据中将不完整的缺陷描述或错误的缺陷描述尽量给予修复,无法修复缺陷的从数据中剔除;(3).按照缺陷分类对收集的缺陷数据进行整理,未能归入任何类别的缺陷数据,归为其它类别。步骤3 :对收集的软件缺陷数据进行分类软件缺陷的分类是研究软件缺陷的基础。软件缺陷的分类方法有很多,各种分类 方法的目的不同,观察角度和复杂程度也不一样。已有的代表性软件缺陷分类基于软件错误来源的软件缺陷分类、基于错误性质的软件缺陷分类、基于正交分类的软件缺陷分类、基于软件生命周期活动软件缺陷分类、基于开发阶段的软件缺陷分类(Phase-DC)、基于某类特定软件研究软件缺陷分类。这些分类方法由于分类目的、分类依据和缺陷数据来源不同,各有其用途和优缺点。综合考虑以上各种分类方法,对软件缺陷分类一般应满足以下要求令准确地对软件缺陷进行分类;今分类应遵循最大覆盖最小重复的原则,分类覆盖所有的缺陷类型;令分类应与软件生命周期有机结合。步骤4 :将已分好类的软件缺陷数据抽象为软件缺陷模式。软件缺陷数据多,不可避免存在重复,需要进一步抽象为软件缺陷模式。软件缺陷模式,即发生的一类特定的、重复的或类似的软件缺陷的抽象描述。此定义适用于软件工程中任何阶段引入的软件缺陷。对软件缺陷模式的研究建立在软件缺陷分类的基础上,分析对每一类软件缺陷表现形式的规律,进行总结和抽象,归纳出相应的缺陷模式。图2描述了本发明制定的软件缺陷分类标准。该缺陷分类能覆盖软件开发全过程,与软件生命周期紧密结合,充分考虑软件缺陷引入阶段。基于以上要求,根据软件缺陷引入阶段将软件缺陷分为三大类软件需求缺陷、软件设计缺陷、软件编码缺陷,同时考虑嵌入式软件常用C语言编程,给出了 C语言缺陷。同时考虑每个阶段工作内容和任务,将这三类缺陷进一步划分为若干子类,构成如下缺陷分类层次结构图。
权利要求
1.一种缺陷驱动的软件可靠性设计方法,其特征在于包含以下步骤 (1)明确软件可靠性设计的对象,具体而言需要明确针对具有什么特性的软件进行可靠性设计。
(2)收集当前开发软件相关的缺陷数据,根据软件开发阶段及每个阶段工作内容和任务对软件缺陷进行分类,并进一步获取当前开发软件的可能缺陷模式。
(3)建立软件缺陷模式库,通过SFTA分析缺陷原因,提炼软件缺陷改进措施形成软件可靠性设计技术。
(4)明确当前开发软件所属哪个开发阶段,找出这个阶段可能的缺陷模式。
(5)依据步骤(3)提炼的软件缺陷改进措施编写对应的功能代码。
(6)(6)对功能代码进行重构,并进一步分析保证所有可能的缺陷模式不会发生。若还可能发生,返回步骤(3)再次提炼软件缺陷改进措施,对功能代码进行修改或重新设计,直到可能的缺陷模式都不会发生。
(7)循环完成所有当前软件开发阶段的功能,直到软件开发完毕。
2.根据权利要求I所述的缺陷驱动的软件可靠性设计方法,其特征是所述的获取当前开发软件的可能缺陷模式,包括以下步骤 (1)收集相关的软件缺陷数据。来源分为三个方面a)本单位相似软件开发、测试和运行过程中已经发现的软件缺陷数据。可以通过各种软件文档和记录来收集可能存在的缺陷,如评审记录、质保记录、测试记录、测试报告等;也可以通过采用问卷调查、当面座谈或头脑风暴的形式,通过与软件设计和开发人员面谈,收集他们在项目实践中经历的教训和成功的经验;b)国内外其它相似软件已经发现的缺陷数据。除了收集本单位相关缺陷数据之外,还可通过收集国内外相关文献和标准规范中提及的缺陷数据及国内开发单位的经验教训,如NASA的安全性指南、GJB102、航天故障启示录、XX软件典型案例分析及设计参考;c)领域专家的教训与经验。采用问卷调查和座谈的形式收集领域专家的经验,以补充已缺陷模式。领域专家包括软件设计人员、软件开发人员、软件可靠性研究人员等。还可通过与专家讨论已收集的缺陷模式,辨别其正确性。
(2)对收集的软件缺陷数据进行整理,补充缺陷信息,剔除无用的或明显重复的缺陷数据。
(3)制定缺陷分类标准,根据制定的软件缺陷分类对收集的软件缺陷数据进行分类。
(4)将已分好类的软件缺陷数据抽象为软件缺陷模式。软件缺陷模式,即发生的一类特定的、重复的或类似的软件缺陷的抽象描述。分析对每一类软件缺陷表现形式的规律,进行总结和抽象,归纳出相应的缺陷模式。
3.根据权利要求2所述的制定软件缺陷分类标准,其特征是根据软件缺陷引入阶段将软件缺陷分为三大类软件需求缺陷、软件设计缺陷、软件编码缺陷,同时考虑嵌入式软件常用C语言编程,给出了 C语言缺陷。同时考虑每个阶段工作内容和任务,将这三类缺陷进一步划分为若干子类。软件需求缺陷又分为功能需求缺陷、性能需求缺陷、接口需求缺陷、数据需求缺陷、安全和保密需求缺陷、异常处理缺陷、其它需求缺陷。软件设计缺陷又分为体系结构缺陷、模块设计缺陷、接口设计缺陷、共享资源缺陷、中断设计缺陷、用户界面缺陷、其它设计缺陷。软件编码缺陷又分为数据说明缺陷、语句构造缺陷、语句效率缺陷、代码注释缺陷、某种具体语言缺陷、其它编码缺陷。C语言缺陷又分为头文件结构缺陷、顺序结构缺陷、内存缺陷、IF语句缺陷、SWITCH语句缺陷、循环语句缺陷、函数语句缺陷和其它缺陷。
4.根据权利要求2所述的根据制定的软件缺陷分类对收集的软件缺陷数据进行分类,其特征分为二个阶段 (1)初始分类。按照软件开发阶段,对软件缺陷数据进行初始分类,如将其分为需求缺陷、设计缺陷、代码缺陷等,以便于下一步根据缺陷演化确定每种缺陷对应具体更细的缺陷分类。
(2)详细分类。进一步提取每个大类的缺陷具体特征,按照制定的软件缺陷分类方法对其进行详细分类。例如代码缺陷可以分为头文件结构、顺序结构、内存、IF语句、SWITCH语句、循环语句等。
5.根据权利要求I所述的缺陷驱动的软件可靠性设计方法,其特征是建立软件缺陷模式库,通过SFTA分析缺陷原因,提炼软件缺陷改进措施形成软件可靠性设计技术,包括以下步骤 (1)建立软件缺陷模式库,在软件缺陷数据抽象成缺陷模式基础上,引入缺陷原因、缺陷后果、缺陷等级和预防措施,建立软件缺陷模式库。
(2)对缺陷模式库中的缺陷原因进行重点分析,在软件缺陷模式库基础上使用软件故障树分析(SFTA)来获取缺陷原因。通过建立软件缺陷的SFTA,获取最小割集,得到引发缺陷的原因。
(3)根据缺陷原因制定需要采取的改进措施,即采用哪些软件可靠性技术避错技术、查错技术、改错技术和容错技术。一般的缺陷通过避错技术就可以使开发的软件无错,但是有些缺陷例如由于干扰因素导致的缺陷,或者缺陷后果很严重的缺陷,除了使用避错设计之外,还需要考虑查错技术、改错技术和容错技术。
全文摘要
本发明公开了一种缺陷驱动的软件可靠性设计方法。该方法通过收集相类似软件已发生的缺陷数据,识别出软件中潜在的缺陷,制定缺陷分类标准,建立软件缺陷模式库。在缺陷模式库的基础上,通过软件故障树分析(SFTA)完善缺陷原因,针对缺陷原因,制定改进措施,从而引导软件可靠性设计技术的实施。本发明的方法克服了软件可靠性设计技术实施的盲目性,提高了软件可靠性设计的针对性;能更有效地进行软件可靠性;可以尽量地预防和尽早地避免缺陷,极大地降低了后续测试及修复的成本,更有效地提高了软件可靠性。
文档编号G06F11/36GK102819489SQ201210232598
公开日2012年12月12日 申请日期2012年7月5日 优先权日2012年7月5日
发明者曾福萍, 陆民燕, 张虹 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1