APP下载

软件可靠性工程综合应用建模技术研究

2018-11-15尚京威韩邢健

信息安全研究 2018年11期
关键词:可靠性节点软件

尚京威 陈 平 韩邢健

(工业和信息化部电子第五研究所 广州 510610)

随着计算机技术的迅猛发展,计算机软件已经在越来越多的领域发挥着重要的作用,特别是航空航天、金融和医疗等关系国计民生的行业,对软件可靠性有着越来越高的要求.通常软件可靠性工程包括软件可靠性早期预计、分配、分析、设计、测试和评估等多个活动环节,但是在实际的工程实践中这些活动较为零散和孤立,各种软件可靠性活动之间可以实现哪些数据共享,互相之间能够提供什么样的数据交互并不明确,无法为软件开发活动提供全过程的软件可靠性技术支持.导致在工程实践中往往只是孤立地运用某一项技术,解决局部的软件可靠性问题,缺乏完整的软件可靠性工程应用.

本文提出一种软件可靠性工程技术综合应用技术,旨在解决软件可靠性工程活动中的一系列信息孤岛,在软件的全生命周期内提供软件可靠性预计、分配、分析、设计、测试和评估技术的综合应用,为软件可靠性工程提供全过程的支持.

1 软件可靠性工程的定义和过程

美国宇航协会(AIAA)认为软件可靠性工程是“应用统计技术处理在系统开发和运行期间所采集的数据,以便详细说明、预计、估计和评价基于软件的系统可靠性”[1].该定义主要强调的是软件可靠性工程中的度量工作.Lyu[2-3]在《软件可靠性工程手册》中提出:“软件可靠性工程是根据用户的可靠性需求而对软件系统操作行为的定量化研究”.美国的John[4]将软件可靠性工程定义为一种确保产品的可靠性达到用户要求,加速产品上市速度,降低产品成本的一种实践方法,并提出了一种软件可靠性工程过程模型,如图1所示:

图1 软件可靠性工程过程

图2 软件可靠性工程过程框架

我国的阮镰教授[5]提出:“软件可靠性工程是指为了满足软件的可靠性要求而进行的一系列设计、分析、测试和管理工作”,并提出了一套全过程生命周期的软件可靠性工程过程框架,如图2所示:

总的来讲,虽然关于软件可靠性工程的定义很多,但是其核心思想都体现出围绕着软件可靠性要求而开展一系列活动.在得到较多认同的Musa和Ruan的可靠性工程模型中,Musa的过程模型过多地注重于软件可靠性测试且不能覆盖软件的全生命周期,不能体现出软件可靠性是设计出来的这一思想.Ruan的可靠性工程过程模型能够覆盖软件的全生命周期,包含以软件可靠性为核心的多项活动,但是只是体现出在软件生命周期中可以开展的软件可靠性活动,各项活动之间的信息交互关系并没有真正得到体现.而在实际的软件开发项目中,软件可靠性工程过程与软件的开发过程紧密相关,开发过程的并发、迭代、微循环对软件可靠性工程活动有着很大的影响.实现软件可靠性工程与软件开发过程紧密结合,软件可靠性工程活动之间紧密联系,能够更大地发挥软件可靠性工程的价值和意义.

2 软件可靠性工程的活动分析

根据可靠性工程过程模型,可以将软件可靠性工程活动划分为软件可靠性预计(早期预计)、分配、分析、设计(可靠性设计准则[6])、测试(基于剖面的测试)和评估(基于失效数据的评估)等环节,每一个环节都作为软件可靠性工程的一项重要活动,围绕提高软件产品可靠性这一中心发挥着作用.高可靠性的软件是设计和开发出来的,因此不能孤立地谈软件可靠性工程,只有与软件的开发活动紧密地结合起来才能发挥出更大的作用.

2.1 软件可靠性工程过程与软件开发过程的关系

尽管瀑布模型在工程实践中诟病较多,但是一系列软件工程过程模型都是以其为蓝本演化发展而成,如原型模型、螺旋模型等.为了更好地分析软件可靠性工程过程与软件工程过程的关系,这里仍然沿用瀑布模型把软件的开发过程分为系统定义、需求分析、设计、编码、测试、维护等阶段.这些阶段可以是迭代开发过程中的一个子阶段,也可以指软件生命周期内的各个阶段.软件可靠性工程过程应该与软件开发过程紧密地结合在一起.

1) 系统定义阶段

系统的定义阶段是软件可靠性工程活动的起点,这里将系统的需求分析和系统设计统称为系统的定义过程.系统定义过程为软件可靠性工程活动提供了工程活动开展的依据.系统定义过程与软件可靠性工程活动的交互如表1所示:

表1 系统定义过程与SRE活动的交互

2) 软件需求分析阶段

软件需求分析阶段一方面从软件可靠性工程活动中获得支持,另一方面为软件可靠性工程活动提供数据来源.需求过程与软件可靠性工程活动的交互如表2所示:

表2 需求分析过程与SRE活动的交互

3) 软件设计阶段

软件设计阶段是将软件可靠性要求加以设计实现的过程;同时设计的细节为更为深入的软件可靠性工程活动提供支持.软件设计过程与软件可靠性工程活动的交互如表3所示.

4) 软件编码阶段

软件编码阶段为软件可靠性工程提供了更为详细的参考细节;软件可靠性工程则将可靠性设计要求和分析结论用于指导编码工作的进行.软件编码过程与软件可靠性工程活动的交互如表4所示.

表3 软件设计过程与SRE活动的交互

表4 软件编码过程与SRE活动的交互

5) 软件测试阶段

软件测试阶段可以看作软件可靠性活动结果的验证过程,同时软件可靠性活动指导测试的执行;为测试定量化的软件可靠性评估提供数据.软件测试过程与软件可靠性工程活动的交互如表5所示:

表5 软件测试过程与SRE活动的交互

2.2 软件可靠性活动之间的联系

软件可靠性工程活动接收来自开发过程的信息,并为软件开发过程提供软件可靠性技术支持.通过对多个已完成的软件可靠性工程项目的总结,建立了软件可靠性工程数据交互关系图,如图3所示.

1) 软件可靠性早期预计

软件可靠性早期预计是在开发过程早期,根据类似软件的信息、开发组织成熟度或已有的缺陷数据给出软件系统可靠性的定量估计.早期预计的结果可以为软件可靠性分配、分析提供参考.

2) 软件可靠性分配

软件可靠性分配的目的是将软件系统的可靠性指标要求分配给软件的各个配置项(必要时分配到软件部件或软件单元)[7],用以指导配置项(软件部件或软件单元)的设计开发.软件可靠性活动的主要作用是为其他可靠性活动提供目标值,如可以为可靠性评估设立评估目标值;为可靠性测试提供统计实验方案的目标值;明确高可靠性要求的模块,为设计提出要求;为可靠性分析提供重点关注的分析模块.

3) 软件可靠性分析

软件可靠性分析可以为软件可靠性设计提供失效模式和关键模块参考,作为建立设计准则的依据;为可靠性分配提供模块的关键度等级.

4) 软件可靠性设计

这里的软件可靠性设计主要指的是为保证软件可靠性设计要求而进行的软件可靠性设计准则建立活动.建立的活动准则为详细级的软件可靠性分析提供参考.

5) 软件可靠性测试

软件可靠性测试是根据软件操作剖面随机抽样生成测试用例,并执行测试和收集失效数据的软件可靠性工程活动.可以细分为软件可靠性增长测试和软件可靠性验证测试2种类型.为软件可靠性测试构造的操作剖面可以对基于操作剖面的软件可靠性分配方法提供支持;测试中收集的失效数据是软件可靠性定量评估的数据来源.

6) 软件可靠性评估

软件可靠性评估是利用软件可靠性测试收集到的失效数据,通过选用合适的软件可靠性模型定量评估和预计软件可靠性水平的活动.软件可靠性评估结果可以为前期进行的可靠性分配、预计进行验证;评估的可靠性结果还可以作为软件可靠性测试是否停止的判别标准.

图3 软件可靠性工程数据关系图

3 数据驱动的软件可靠性工程过程模型

从第2节的分析可以看出,软件可靠性工程过程与软件开发过程紧密相关,两者之间发生着频繁的数据交互.软件可靠性活动从软件开发过程获取数据来源,其产出支持保证软件可靠性要求的软件开发活动.同时软件可靠性工程活动之间也相互影响相互支持,形成了为保证软件的可靠性要求而开展的一系列软件可靠性工程活动.软件可靠性过程之间以及软件可靠性过程与开发过程之间的数据流关系,实质上是一种以工程业务流程为主的工作流关系.可以以工作流模型的方式建立软件可靠性工程过程模型,将软件可靠性工程过程和软件开发过程有机地结合在一起,形成一套完整的软件可靠性工程过程方法.

3.1 软件可靠性工程过程中的工作流定义

工作流目前尚无统一定义,比较受广泛认可的是工作流管理联盟(WFMC)的定义[8]:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、使得文档、信息或任务能够在不同的执行者之间进行传递与执行.工作流技术的主要优点是能够将业务逻辑和过程逻辑清晰地分隔开来.在过程逻辑中,可以定义软件可靠性工程中各个业务活动的先后顺序及连接方法,使得各个活动以松耦合的方式连接在一起共同完成业务流程;当业务逻辑发生变化时只需要重新定义各个活动的连接顺序即可.

借助于工作流模型可以对可靠性活动的实施过程进行描述、抽象,描述软件可靠性业务流程;对流程进行冗余、相似性的分析优化,实现流程集成;对软件可靠性工程活动流程状态进行监控;实现软件可靠性工程集成系统的开发.

3.2 软件可靠性过程模型的工作流元素定义

一个完整的软件可靠性工程过程是由一系列最基本的可靠性活动按照一定的逻辑顺序规则组成的.软件可靠性工程活动与它们之间的数据依赖、逻辑关系可以用有向图进行表示.有向图中的节点表示一个可执行的活动单元,连接于2个节点之间的有向弧即表示活动间的先后顺序关系.过程模型中各元素的图形化表示如图4所示:

图4 过程模型中各元素的图形化表示

1) 活动

活动是指在一段不间断的时间间隔内为实现某一个目标而由人工或者自动完成的一个行为,是组成业务流程的最基本单元.活动的输入部分是保证活动开始的必要条件,如软件信息、软件需求文档等,只有在满足活动开展的条件后,该活动才能被激活.活动的输出部分是指活动的结果,活动的输入与输出构成了每一个基本活动单元与外部之间的接口.工作流中的活动可以用于表示软件可靠性工程活动.

2) 外部活动

外部活动是指不包含在当前业务流程中,但其输出是当前业务流程中某活动的输入.外部活动不是当前业务流程的组成部分,但对当前流程有着一定的影响.可以把软件开发过程活动定义为软件可靠性工程过程的外部活动.

3) 子过程

子过程是一类能够分解的节点类型,其内部可以包含组成工作流模型的所有元素类型.软件可靠性工程是一系列软件可靠性工程活动的有序集合,可以把某些关系密切的活动集合起来,在图中以一个节点表示.

4) 同步节点

将一个实际的业务流程映射为工作流模型时,描述活动间的逻辑关系是一项非常重要的环节.在软件可靠性工程过程建模中,“与”和“或”是2类最基本的工作流逻辑关系.

“或”的关系表示:对于任意一个处于非执行状态的节点n,只要有一条输入连接弧发生了转移,那么该节点即可被执行,即∪{n′∈Pre(n),l=(n′,n)∈L,Trans(l)=1,且l发生转移}.

“与”的关系通过增加一类新的节点——同步节点S——来表达,它对活动起协调、同步的作用.规定当S处于执行状态时,State(S)=1,将判断它的所有输入连接弧是否已经全部发生转移:若是,则S的状态就由1变为0,即S执行完毕;否则,S仍处于执行状态,并将继续判断,直至满足上面的条件后S才执行完毕,State(S)=1→0,即∩{n′∈Pre(n),l=(n′,n)∈L,Trans(l)=1,且l发生转移}.

5) 连接弧

连接弧表达了图中不同节点元素之间的逻辑顺序关系.它从前趋节点指向后继节点,体现了节点状态的转移与有向图的演进.连接弧连接于同一层次中的任意2个有数据交换的节点之间来定义数据流,数据流动的方向就是连接弧所指的方向.数据连接弧上标明的数据集和DATA是该弧承载的数据类型.未标明数据集合的连接弧表示前趋节点和后继节点存在着某种时序上的关系,没有数据上的依赖.在软件可靠性工程过程模型中,定义2种连接弧:

1) 永真型.永真型的数据连接弧,当前趋节点产生的数据集D∈DATA时,数据弧转移函数为真,Trans(l)≡1.这体现了一种顺序关系,不需要经过任何条件的判断,只要前趋节点执行完毕并产生后继节点所需数据,即可激活后继节点.

2) 不定型.即在满足D∈DATA的同时,转移函数的取值是需要在具体的工作流执行过程中由工作流或人加以判断来确定的.这种判断实际上体现了一种选择关系,即根据不同的情况,通过满足条件的连接弧的转移,实现对某一节点的多个后继节点的选择性激活.

4 基于数据驱动的软件可靠性工程过程模型的建模

根据软件可靠性技术活动的输入输出数据,以及软件开发过程中软件可靠性工程的输入输出关系,为软件可靠性工程过程建立软件可靠性分配、分析、早期预计和软件可靠性增长测试4项子过程,实现对软件可靠性活动过程的封装,并统一外部接口.而可靠性评估、测试过程相对简单,直接在过程模型中体现.在子过程中,子工作流从子过程之外的外部活动获得所需数据,根据数据的不同,选择不同的软件可靠性分配、分析、早期预计方法进行实施,同时将产出的数据传向子过程以外.基于数据驱动的软件可靠性工程过程模型如图5所示:

图5 数据驱动的软件可靠性工程过程模型

软件开发过程的各个阶段产生了不同的数据,当这些数据满足软件可靠性技术活动触发条件时,可靠性技术活动开始执行,它们的输出将作为后续软件可靠性活动的输入数据和触发条件,即输人数据是活动的“触发器”.在整个软件生命周期内,这些数据作为软件可靠性任务活动的动力,“推动”工作流流动.

5 软件可靠性工程综合应用方法的实现

基于数据驱动的软件可靠性工程过程模型,利用Microsoft Visual Studio提供的工作流机制,本文开发出了软件可靠性工程综合集成环境.该集成环境将各个软件可靠性辅助工具集成到集成环境中,通过软件可靠性过程模型创建和管理过程模型的实例,协调用户操作,调度软件可靠性分配、设计、分析、测试和评估等应用软件工具的工作流,在不同的应用程序间自动传输数据,实现了软件可靠性工程过程的自动化管理和多种工具的有机整合.集成环境的结构图如图6所示.软件可靠性综合服务器为每个软件可靠性工程应用对象软件创建过程模型实例;集成环境中可以同时运行多个软件可靠性工具客户端,各个客户端独立处理单项软件可靠性活动,但是活动的进程和与其他客户端的交互受软件可靠性综合服务器的调度.

图6 软件可靠性工程集成环境结构图

图7 综合服务器系统工作流程示意图

综合服务器系统工作流程如图7所示.综合服务器系统以过程实例运行时为核心,控制软件可靠性过程模型实例的运行,通过过程模型解析器分析过程的内容和含义,通过任务分派器将任务项分派给参与该过程实例的各个客户端,通过任务管理器管理各个任务项的信息,通过启动控制器控制软件可靠性过程的启动,通过状态转换器控制过程实例、活动实例和任务项的状态转换.

6 结 论

软件可靠性工程过程中的各项活动不但与软件的开发过程发生着信息交互,同时各项活动之间也具有密切的数据联系.通过建立数据驱动的软件可靠性工程过程模型,将孤立的软件可靠性工程活动与软件开发过程,以及其他软件可靠性工程活动紧密的联系在一起,从而实现了软件可靠性工程过程对软件全生命周期的可靠性技术支持,形成了活动过程紧密结合的软件可靠性工程过程,实现了软件可靠性工程技术的综合应用,有利于保证软件可靠性工程技术的应用与实施,提高了软件的可靠性.

猜你喜欢

可靠性节点软件
CM节点控制在船舶上的应用
禅宗软件
基于AutoCAD的门窗节点图快速构建
概念格的一种并行构造算法
软件对对碰
合理使用及正确测试以提升DC/DC变换器可靠性
GO-FLOW法在飞机EHA可靠性分析中的应用
5G通信中数据传输的可靠性分析
论如何提高电子自动化控制设备的可靠性
抓住人才培养的关键节点