基于时间扩展Petri网的实时嵌入式软件体系结构建模及可靠性评估

2015-11-11 07:17许玉堂殷永峰孙静张弛刘斌
兵工学报 2015年2期
关键词:体系结构变迁组件

许玉堂,殷永峰,孙静,张弛,刘斌

(1.北京理工大学机电学院,北京100081;2.北京航空航天大学可靠性与系统工程学院,北京100191;3.中国兵器科学研究院,北京100089)

基于时间扩展Petri网的实时嵌入式软件体系结构建模及可靠性评估

许玉堂1,殷永峰2,孙静3,张弛2,刘斌2

(1.北京理工大学机电学院,北京100081;2.北京航空航天大学可靠性与系统工程学院,北京100191;3.中国兵器科学研究院,北京100089)

软件可靠性是软件质量评估最重要的指标之一,随着软件工程和组件重用技术的发展,近年来基于体系结构的软件可靠性评估已经成为工程研究的热点之一。为有效地提高软件可靠性,调研现有体系结构的可靠性评估模型,给出了现有体系结构模型的分类和模型代表,并分析了现有模型的不足。由于Petri具有良好的扩展性并且对异步和并行软件有良好的描述性,因此重点研究Petri网可靠性评估模型,通过划分时间变迁和瞬时变迁,并引入时间相关的可靠度,包括延时可靠度与时序可靠度,对Petri网进行了扩展,给出了时间扩展的Petri网进行体系结构建模方法。通过研究组件状态和系统可达状态的关系,创建可达状态转移矩阵,对系统进行可靠性评估。将所研究的方法应用于某航电嵌入式系统软件中,完成了体系结构建模及可靠性评估,并通过误差分析验证了该方法的有效性及准确性。

计算机软件;软件体系结构;可靠性评估;时间扩展Petri网

0 引言

随着社会的不断进步和计算机科学技术的飞速发展,计算机目前已经广泛地应用于航空、航天、工业控制、交通、金融等各项领域。这些领域的系统越来越多地受到计算机的控制,而其控制软件的结构也越来越复杂,软件失效带来的危害也日趋严重[1]。软件可靠性是软件质量的一项重要指标,提高软件的可靠性已成为软件产业发展和应用的迫切要求。

传统的软件可靠性评估模型主要应用于软件测试、验证或运行阶段,它将软件看作一个整体,仅仅考虑软件的输入和输出,而不考虑软件内部的结构,即黑盒测试方法[2]。黑盒测试通过用户的操作剖面随机生成测试用例并执行,获得软件的失效信息,并对其进行数学建模,在检测出错误后立即修复,从而得到用于评估的可靠性增长模型[3-4]。目前基于黑盒的软件可靠性评估技术已经比较成熟。但由于这些模型大都是基于失效数据的,需要在软件测试阶段进行,无法对软件设计阶段的错误进行预防;同时必须通过长时间基于运行剖面的测试才可以得到足够多有意义的失效数据,势必会浪费大量的人力物力[5-6]。

基于体系结构的开发是现代软件开发的重要途径,也是软件工程的要求。软件的体系结构与软件本身的质量和性能息息相关。并且实践表明,越早发现软件中存在的错误,所花费的开销就会越小。软件的可靠性与组成软件的构件可靠性和构件结构相关,因此利用软件体系结构对软件的可靠性进行分析和评估是一种很有价值的方法。

本文首先介绍了基于体系结构模型的可靠性评估的基本思路,并列举了15种经典模型。由于Petri网能够良好地描述并发和异构模式,而且具有良好的扩展能力,因此本文对Petri网进行可靠性评估的方法进行了深入研究。将Petri网中的变迁,划分为瞬时变迁和时间变迁,并引入时间方面的可靠性,主要表现在延时可靠性和时序可靠性方面。随后基于时间扩展的Petri网进行系统体系结构建模,并采用可达状态图的方法解决了组件和状态并非一一对应的问题。由于时间Petri网可以同构成一个离散时间马尔可夫链,采用状态概率转移矩阵计算整个系统的可靠性。最后将本文提出的方法运用到一个工程实例中,验证模型的有效性及准确性。

1 基于体系结构的可靠性评估

1.1组件的概念及其可靠性

现有的基于体系结构的可靠性评估大都以组件为软件的基本单元。一般认为组件是指具有一定功能,可明确辨识的软件单位,是软件系统计算或者存储的对象,并且语法完整、语义正确,有重用的价值,一个组件可以包含多个接口,这些接口说明了组件怎样通过提供或者请求操作与环境交互。组件一般具有独立性、可替换、低耦合、高内聚等特点。对于基于体系结构的可靠性评估,还假设组件具有如下约束:

1)组件接口分为输入接口和输出接口;

2)组件所有的输入和输出域都映射到接口。也就是说组件所有的输入和输出都由接口来完成,没有其他方式的信息传递通道;

3)除了常见的功能接口描述以外,组件还应有可靠性度量指标;

4)组件可靠性与软件运行的路径无关。

对于组件的可靠性,部分模型假设单个组件可靠度为已知,文献[7]使用传统的可靠性增长模型来计算可靠度,但是耗时较长,还有文献[8]指出使用故障注入等方式还进行计算,但到目前为止还没有一个公认的方法能够在体系结构评估过程中精确计算每个组件的可靠度。在此重点是对体系结构建立符合其运行特征的模型,并看单个组件可靠度的变化对整体可靠度的影响,因此对组件可靠度的计算不做深入讨论,假设组件可靠度为已知。

1.2体系结构模型的类别和典型模型介绍

1.2.1体系结构评估模型分类

自1975年起,Parnas和Shooman开始提出了软件结构对软件可靠性影响的重要性,率先突破了软件可靠性只考虑整体与外部交互的局面,第一次将软件内部结构应用到可靠性评估当中。文献[9-10]中将三十几年间出现了基于体系结构的可靠性评估模型归纳为3类:状态模型、路径模型和其他模型,具体模型分类和各个模型基本情况见表1所示。

表1 体系结构评估模型分类Tab.1 Classification of architecture evaluation models

1.2.2典型模型介绍

1.2.2.1基于状态的评估模型

基于软件状态的可靠性模型采用状态控制流程图来描述软件的体系结构。由于构件被定义为逻辑上独立的功能集合,可将一个构件的执行看成一个状态。假设软件系统处于某一个状态时,那么它的下一时刻的状态只与当前状态有关,而与在此之前的状态无关,那么各个状态的转移就符合马尔可夫过程。状态模型采用马尔可夫链对软件体系结构进行建模。而根据软件体系结构和体系结构元素失效方式的建模方式不同,状态模型又可分为组合模型和分层模型两种。Cheung模型是最早考虑到模块可靠度应用到软件可靠性预测的模型之一[11]。该模型假设一个软件系统中具有n个构件,各构件的可靠性和构件之间的转移概率已知,并假设状态图中有唯一的开始节点和结束节点。将软件体系结构用离散时间马尔可夫过程(DTMC)进行建模,创建状态转移矩阵P=[pij],通过n次计算得到系统可靠性。Wang W.在Cheung的研究基础上做出了关系软件体系结构风格评估的扩展工作[12]。利用Cheung氏马尔可夫模型来评估不同体系结构风格下的可靠性。文献[11]使用到的体系结构风格有:批处理;管道—过滤器;调用—返回和备份容错。对于分层模型,最早的分层模型是Littlewood模型[13],将软件体系结构采用连续时间的马尔可夫链过程(CTMC)进行建模,假设构件i转移到构件j的平均执行时间是mij;构件i的失效符合参数为λi的泊松过程;构件i转移到构件j时接口发生失效的概率是vij,并做出假设:

失效发生的次数要远少于软件控制权转移的次数,则软件系统的失效也符合泊松过程,软件失效率为

1.2.2.2基于路径的评估模型

基于路径的可靠性模型与基于状态的可靠性模型具有相似的分析方法,最主要的区别在于计算软件系统可靠性时考虑了系统的执行路径。最早的基于体系结构的路径模型由Shooman等提出[14]。他从软件的执行路径角度对软件体系结构进行了建模,每个软件具有m个执行路径,每条路径i具有执行频率fi,每条路径还具有相应的失效概率qi.在软件系统的N次运行中,失效总数为式中:Nfi代表路径i执行总次数。则整个软件系统的失效概率可以写作Yacoub,Cukic和Ammar[2]结合了场景技术来计算软件的可靠性,一个场景可以定义为一系列构件的相互作用,具有特定的外部激励。运用场景技术,可以建立一个随机概率模型:组件关系依赖图(CDG).CDG可以描述一个场景,其中包括执行过程的时间信息、系统组件间的交互以及可靠性信息等。CDG的特别之处在于运用统一建模语言UML建立了描述软件系统运行的执行模型,并结合不同场景,遍历模型,计算出不同场景下不同构件对软件系统可靠性影响的大小。

1.2.2.3其他模型

其他模型包括仿真模型和增量模型。仿真模型[15]对软件系统在时间域内的失效行为进行仿真,假设软件构件的失效强度函数服从G-O模型λ(t)=αe-bτ,构件平均执行时间Φ和构件i、j之间转移概率wij作为仿真需要的参数。通过一个离散时间仿真模型算法来驱动软件系统运行,其中输入为软件系统运行一次时的可靠性和执行时间,通过设定相应的仿真算法,计算出软件系统的可靠性。增量模型[16]没有明显的软件体系结构特征,而主要是利用组件的失效数据来估计系统的可靠性。这些模型假设构件的可靠性可以用非齐次泊松过程(NHPP)建模,系统的失效强度可以用构件的失效强度和来表示。

现有的体系结构模型普遍存在参数准确性不足,假设条件过多,且部分假设与实际情况不符等缺点。并且在大部分模型中,将每个组件的运行看作一个状态,但软件在实际运行中,状态可能需要不止一个组件来支持其实现,因此需要研究组件与系统运行状态的关系。同时,对于航电嵌入式软件,时间方面的可靠性也是需要重点考虑的因素,而这些情况现有的模型无法良好地描述[17]。

2 基于时间扩展Petri网的软件体系结构建模及可靠性评估

2.1Petri网的体系结构建模及时间扩展研究

2.1.1Petri网简介

Petri网是20世纪60年代由卡尔·A·佩里发明的,适合于描述异步、并发的计算机系统的模型。首先给出经典Petri网的定义:Petri网是一个四元组的集合Σ=(P,T,F,M0),其中:

1)P={p1,p2,…,pn}是有限位置集合;

2)T={t1,t2,…,tm}是有限变迁集合(P∪T≠Ø,P∩T=Ø);

3)F∈(P×T)∪(T×P)为流关系;

4)M0是网的初始标识,Petri网的标识是位置集上的多重集,M0代表系统在最开始状态时令牌在各个位置中的分布情况。

Petri网可用一个有向二部图表示,其中包含两类节点,并且用有向弧连接起来。两类节点分别为位置和变迁,其中位置一般用圆圈表示,变迁一般采用矩形表示。Petri网除了具有以上静态结构外,还包括了描述动态机制的行为。这一特征是通过允许位置中包含令牌,其中令牌用黑点表示。在含有令牌的Petri网中,依据迁移的使能条件,可以使得使能的迁移点火,迁移的点火会依据点火规则实现令牌的移动。不断变化着的令牌重新分布就描述了系统的动态变化,一个典型的Petri网图如图1所示。

图1 典型Petri网图Fig.1 Typical Petri net

Petri网具有良好的扩展性,可实现针对实时嵌入式软件的建模及验证,特别是在安全关键软件验证领域已得到成功应用[18],本文对Petri网的时间方面的扩展进行了研究,提出了一种基于时间扩展Petri网的体系结构建模方法,并在此基础上为后续基于体系结构的可靠性评估奠定基础。

2.1.2软件体系结构的Petri网描述

在之前的研究中,通过引入时间要素已经出现了随机Petri网(SPN)和时间Petri网(TPN)。SPN是一种引入时间因素的Petri网,引入的方法是:在每个变迁的可实施和实施之间联系一个随机的延迟时间,变迁在获得系统资源后不会立即点火,而是设置一个定时器,当定时器时间变为0时变迁才会点火。时间Petri网也是将时间因素加入到变迁当中,与SPN不同的是,引入的时间延时不是一个随机时间,而是一个时间区间,变迁在该区间内等可能引发。Petri网是一个描述系统动态运行的模型,系统中某个事件的发生通常用一个变迁来表示,软件的运行需要一定的运行时间,因此将时间与变迁联系起来也是合情合理的。

软件体结构都是以组件为基础,因此在进行Petri网建模时,将库所看作组件的集合,库所之间的转移看作每个组件运行状态的转移,当组件获得CPU和内存等系统资源时,即视为获得令牌。对于变迁,可以按照广义SPN的定义,将变迁分为瞬时变迁和时间变迁,可以将一些选择状态看作是瞬时变迁,其所花费的系统时间可以忽略不计。而对于时间变迁,一般为需要获得系统资源(如CPU,内存等),进行一定时间运行的变迁,可将其看作是上一组件的运行时间。瞬时变迁用一个黑线表示,时间变迁用一个矩形框表示,如图2所示。

图2 两类变迁的图形表示Fig.2 Graphical representation of two types of changes

使用引入瞬时变迁和时间变迁的Petri网可以很好的描述并发,选择等结构。对于选择结构,组件可以分成两个瞬时变迁,因为组件的选择不需要占用太多的系统资源,可以看作是瞬时变迁,对于选择结构中瞬时变迁,为变迁赋值该组件运行的概率,选择结构后只有一个组件可以获得令牌,选择结构可以用图3表示。

对于并行结构,可以使用两个时间变迁进行描述,两个组件都可以获得令牌执行,并行结构的Petri网图可用图4表示。

图3 选择结构的Petri网表示Fig.3 Petri net represetation of selected structure

图4 并行结构的Petri网表示Fig.4 Petri nets representation of parallel structure

2.1.3Petri网时间因素的引入

对于Petri网引入的时间要素,如何与可靠性评估结合起来,是本文研究的一个重点。在传统的可靠性评估模型中,大都假设只有组件才具有小于等于1的可靠度。本文在此基础上进行了扩展,除了组件具有单独可靠度以外,部分变迁也具有可靠度,并不是所有的变迁可靠度都为1.对于瞬时变迁,引入执行该变迁的概率作为参数,不用考虑可靠性。而对于时间变迁引入可靠度参数,其值与时间因素相关,变迁失效的类型主要有以下方面:

1)变迁的发生超过其规定的时间;

2)两个互斥事件的发生;

3)事件按照错误的顺序发生。

2.1.3.1延时可靠性的引入

在扩展时间Petri网中,对于时间变迁,引入一个不确定时段,代表变迁可以在这一时间段实施,该时间段可以表示为X(t)=[tl,tu][19-20],其中0≤tl≤tu,tl和tu是相对时间,相对于系统初始运行的时刻,由系统决定。假设变迁在时刻s使能,实际触发的时刻记为t*,则s+tl≤t*≤s+tu.对于瞬时变迁,可表示为X(t)=[0,0],代表其实施不需要时间延迟。将时间因素引入到变迁当中主要应用于并发的发生,当两个组件并发执行时,各个变迁的执行有各自的使能时间,而最后并发的变迁完成后需要合并,进入下一组件运行,此时两个并发的变迁合并转入下一组件时能否满足系统内变迁的延迟,当变迁的发生大于该变迁规定的延迟时,则该变迁会发生失效,失效的可能性与变迁发生的时间段和系统定义的变迁时延有关。

图5为典型的并行结构的Petri网,变迁T1和T2之间没有直接的时间约束关系,图5中表示到达S后经过瞬时变迁,使得T1,T2同时出发,这两个变迁在相同标识中可独立实施,一个变迁的运行不影响另一个变迁的运行,当两个变迁都执行完毕后,经过同步,标识到达结束状态E.用s1、s2、s分别表示变迁T1、T2、T的触发使能时刻,分别表示变迁T1、T2和T的实际触发时间。由于从S经过瞬时变迁使得T1和T2同时使能,因此s1=s2=s,由于Petri网的性质,可得因此T1、T2结束时间段为[s+t1l,s+ t1u]、[s+t2l,s+t2u],最晚结束时间则为max(s+t1u,s+t2u),即T的等效触发最早结束时间为max(s+t1l,s+t2l),最晚结束时间为max(s+t1u,s+t2u),因此可以得到s+max(t1l,t2l)≤t*≤s+max(t1u,t2u),通过Petri网的性质可以获得变迁T发生的时间段为[max(t1l,t2l),max(t1u,t2u)].

图5 并行结构的Petri网视图Fig.5 Petri nets of parallel structure

在软件实际运行时,变迁T的发生也是有延时方面的限制,假设系统运行定义的变迁T发生的延时限制为t′,如果max(t1u,t2u)-max(t1l,t2l)≤t′,则代表两个变迁合并之后其发生的时间段仍然小于系统规定时延,因此其可靠度为1,不会发生延时方面的失效。如果max(t1u,t2u)-max(t1l,t2l)>t′,则根据Petri网运行推算出的时延大于系统规定时延,有可能发生延时方面失效,其可靠度

通过对变迁加入使能时间段,使得Petri网不仅能够对系统运行状态进行描述,还能够分析系统每个时段各个组件的运行情况,满足了嵌入式系统对于时间因素的敏感性,并且通过引入时间变迁的延时可靠度,对于并发结构变迁的延时情况进行了研究,使得评估更加符合实际情况。

2.1.3.2时序可靠性的引入

时间相关的后两种情况,主要是系统资源互斥以及时序问题。软件需要运行,必须要获得一定的系统资源,而在不同的时间段各个模块所获得的系统资源也各不相同。在某些系统中,有些事件不能同时占用系统资源运行,这些事件就称为互斥事件,当互斥事件发生时,也属于一种失效。另一方面,在嵌入式系统中,某些变迁的发生需要之前变迁遵循一定的顺序发生,只有满足条件变迁才能正常使能,对于这种变迁,因此引入与时序相关的可靠性,增加可靠性评估的准确性。

对于如何描述系统时序方面的信息,引入时序Petri网中相关概念[21]。时序Petri网是在基本Petri网上引入时序逻辑公式,而这些逻辑公式对Petri网中的变迁引发顺序加以限制。当且仅当变迁T满足Petri网中的引发条件和逻辑公式时,T才能引发,其他描述与基本Petri网相同。时序公式是一组公式的集合并且具有如下性质:

1)命题p,↑t和t是原子命题,其中p∈P,t∈T;

2)如果f和g是公式,则┑f,f∧g,f∨g,f⇒g,○f,◇f,□f,f∪g也是公式。

上述性质中,p表示库所获得令牌,↑t表示变迁t在当前标识下使能,t表示变迁t在当前标识下引发。其中┑,∧,∨,⇒是布尔运算符。公式○f,◇f,□f和f∪g是时序逻辑符号。○f表示下一状态f为真;◇f表示从当前状态(包括当前状态)开始以后的所有状态至少有一个状态使得f为真;□f表示从当前状态(包括当前状态)开始以后的所有状态都为真;f∪g表示f为真,直到g为真。

在Petri网中引入时序逻辑公式后,需要将其运用到可靠性评估中。首先分析系统中的时序逻辑公式,确定系统运行需要遵循的规则,对于一个规则,例如时序约束公式(Fe1)□(t1⇒◇t2),表示t1不能一直使能,以后需要有一个状态让t2使能,否则t2就会一直无法获得系统资源而处于饥饿状态。对变迁t2加入一个时序可靠性,该变迁时序失效率λ为系统一直执行t1而不执行t2的概率,该变迁的时序可靠性即为1-λ.并非所有的变迁都具有时序相关可靠性,在进行可靠性评估时,首先需要了解系统运行的一些特定规则,定义系统运行的时序逻辑公式,根据公式确定哪些变迁的使能具有时序相关特性,并计算时序相关的可靠性。通过引入时序逻辑公式和变迁时序可靠性,可以描述嵌入式系统中的互斥事件和特定事件序列,进一步提高了Petri网可靠性评估模型的准确性。

在进行体系结构的可靠性评估时,很多时候是因为软件不适合进行系统地测试,无法使用黑盒的测试方法通过可靠性增长模型获得整个系统可靠度。只能通过对软件分开测试,获得各个组件的基本信息,如运行时间、单独可靠度等。然后依据系统的架构建立相应的评估模型。因此如何描述系统的实际运行情况是可靠性评估的一个重点。对于嵌入式软件,时间因素的描述是一个重要环节,本文通过引入TPN和时序Petri网中的相关概念,将其与可靠性评估结合起来,增强了Petri网描述嵌入式软件的能力。而由于Petri网具有良好的扩展性,因此这些概念的引入不会影响其本身的描述能力。

2.2基于TPN的可靠性评估

在完成了对Petri网的扩展后,需要通过该网络进行可靠性评估。首先需要绘制体系结构的Petri网模型。对于系统中的组件,定义其为Petri网中的库所,通过令牌在库所中的转移来描述系统的运行。然后通过分析系统的运行时间和时序关系等特征,计算出某些变迁的时间相关可靠度。

在获得了单独组建可靠度和变迁可靠度时,需要建立计算系统可靠性的模型。首先需要获得系统运行状态的可靠度与运行组件可靠度之间的关系。在系统实际运行时,一个系统状态的运行可能需要不止一个组件来支持。因此对于系统的运行状态,如果系统中有n个组件,可定义一个n维向量Mi=(s1,s2,…,sn)来描述该状态,如果在此状态下第i个组件处于运行状态,则s1置为1,否则置0.对于状态可靠度与运行组件可靠度之间的计算关系,拟采用如下方式进行计算:

1)如果当且仅当所有的组件都正常运行时该状态才能正常运行,则为串联状态,该状态的可靠度为所有组件可靠度的乘积;

2)如果只要某一个组件能够正常运行该状态便可以正常运行下去,则为并联状态,该状态的失效率为所有组件失效率的乘积,可靠度则为一减去失效率;

3)如果系统既有串联运行状态也有并联运行状态,则为混联运行状态。此时的可靠性计算可以采用递归的方法:每次依据串联或者并联的形式,进行逐层分解,直到分解所得的每一部分均含有单纯串联或者并联状态为止,再利用上述串/并联状态可靠性计算方法逐层回溯,最终得到该状态的可靠度。

获得了系统各个状态可靠度和变迁的可靠度后,可以通过状态模型来计算系统的可靠度,对于可靠性计算方法进行如下假设:

假设1 软件任意可达状态发生失效,都视为软件系统的失效;

假设2 软件各个状态发生的失效相互独立,软件某个状态发生的失效不会受到其他状态的影响;

假设3 假设软件各个状态之间的转移服从DTMC.软件状态之间的转移概率由软件系统的剖面决定,状态间的控制转移只与当前状态有关,而与此状态之前的状态无关。

基于如上假设,构建系统的状态转移矩阵,假设系统由n个可达状态构成{M1,M2,…,Mn},其中M1为初始状态,Mn为终止状态,每个状态的可靠度用Ri表示,用pij表示系统正常从状态i运行到状态j的概率,如果状态转移的变迁存在可靠度,则其值为转移的概率与变迁可靠度的乘积。矩阵第i行、j列代表状态i不发生失效并正确转移到状态j的概率,即Ripij,因此可得到如下矩阵:

对现有状态空间进行扩充,加入两个吸收状态S和F,其中:S代表软件正确完成并结束的概率,该状态只能由最终状态Mn转移得到;F为软件某一个状态发生失效,可以由任意状态获得。这样状态空间扩充为{S,F,M1,M2,…,Mn},扩展的状态转移矩阵如下所示:

由(4)式可以看出,矩阵M′为M增加了前两列,其中:第1列为各状态转移到状态S的概率,即软件正常执行的概率;第2列为各构件状态转移到状态F的转移概率,即发生失效的概率。在矩阵M中,最后一行元素为0,而在矩阵M′中,最后一行元素和仍为0,这意味着终止状态Mn只能转移到S或F状态。

Mk(i,j)代表状态i经过k步转移,到达状态j的概率,因此Mk(1,n)为软件初始状态,经过k步转移,到达终止状态n的概率。这样可以得出:

式中:I为单位矩阵;E为(I-M)矩阵中删除第n行和第1列后的矩阵。

则软件的系统可靠度:

利用状态之间转移的马尔可夫模型进行可靠性评估具有良好的效果,特别是当系统中存在循环路径时。如果采用路径的模型,可能需要对循环路径进行处理,需要对路径循环执行的次数进行研究,计算方法较为复杂并且可能不太准确。但是基于状态转移的马尔可夫过程可以依据自身数学计算的特征顺利地解决循环路径的问题。

3 实例研究

3.1被测软件介绍

本节将之前的可靠性评估方法带入到一个具体实例中,下面以某飞控系统中的纵向控制软件为例,首先对其体系结构进行Petri网建模,然后进行可靠性评估,并将计算结果的误差与传统模型进行比较。飞控系统是飞机上的核心系统之一,包含了复杂的并发、异步等活动,系统共包含4个软件模块,包括系统自检(BIT),纵向操控软件,横航向操控软件以及操作系统软件。

为了验证上述可靠性评估方法的有效性和准确性,本文选取纵向操控软件进行实例研究,纵向系统主要包含两个子系统,分别为纵向控制增稳软件和纵向自动驾驶软件,工作流程如下:

1)当纵向控制增稳按钮按下时,驾驶员的操作处于主导,通过操纵杆控制飞机的高度,系统软件处于纵向控制增稳功能,主要进行控制增稳控制律的计算,以及控制律的调参,并控制俯仰角以避免出现危险情况,进而辅助飞行员进行驾驶;

2)当纵向自动驾驶按钮按下时,系统进入纵向自动驾驶状态,此时飞行状态主要由软件进行控制,系统除了进行各种调参之外,还需要对飞机俯仰姿态进行跟踪控制,并且当驾驶员对驾驶仪进行拉高或者俯冲操作时进行控制律的计算,当到达指定高度后改平俯仰状态使飞机进入一个稳定状态。

3.2飞控系统建模

通过查阅文档和代码,根据3.1.1节中的建模方法,可以绘制该飞控纵向控制软件体系结构的Petri网图,如图6所示。

图6 某飞控纵向控制软件的Petri网结构图Fig.6 Longitudinal control of a flight control software structure of Petri nets

开始状态为纵向飞行的稳定状态,飞行员通过操纵界面对飞机纵向飞行状态进行控制,分别进入纵向控制增稳状态和纵向自动驾驶状态,在完成了对飞行姿态的控制以后,最后飞机再次进入一个纵航向上的稳定飞行状态,图中各个组件和变迁和含义见表2.

3.3基于体系结构的可靠性评估

通过构建Petri网模型,对系统组件的信息以及组件之间的转移进行了描述。Petri网通过令牌的运行来模拟整个软件系统的运行,在某一时刻如果组件获得令牌则处于运行状态,通过令牌的转移可以获得整个系统的可达状态标识,进而得到Petri网的可达状态标识转移图,如图7所示。

系统有12个组件,因此对于每一个可达状态标识,定义一个12个元素的向量表示,当组件在该状态运行时则其值为1,否则为0,系统每个状态的含义以及向量表示见表3.

表2 飞控纵向控制软件组件和变迁名称Tab.2 Names of flight control longitudinal control software components and changes

表3 可达状态标识含义及向量表示Tab.3 Identification meaning of reachable states and vector representation

在使用Petri网建立其体系结构模型之后,需要添加可靠性信息。根据软件测试获得失效数据,运用可靠性增长模型,可以得到各个组件的单独可靠度为Rs1=0.999 2,Rs2=0.995 1,Rs3=0.994 8,Rs4= 0.987 5,Rs5=0.984 7,Rs6=0.994 5,Rs7=0.993 2,Rs8=0.994 8,Rs9=0.982 4,Rs10=0.991 2,Rs11= 0.991 2,Rs12=0.9981.几个选择变迁执行的概率分别为:t1=0.7,t2=0.3,t4=0.8,t5=0.2,t10=0.5,t11=0.5,t3=0.2,t′3=1-t3=0.8,t9=0.2,t′9=1-t9=0.8.

在时间变迁中变迁t8具有延时方面的可靠性,t12具有时序方面的可靠性。由于变迁t8属于两个并行变迁t6、t7运行之后的合并变迁,因此具有合并后的延时的可靠性。由系统运行情况可知,变迁t7运行的时间段可以表示为[46 ms,98 ms],变迁t6运行的时间段为[47 ms,90 ms],因此可以获得变迁t8期望的运行时间段为[47 ms,96 ms].而系统中对于延时的要求为50 ms,因此可得该变迁的延时可靠度Rt8=50/51=0.980 4.对于变迁t12,根据Petri网图以及变迁可以获得时序逻辑公式为t11⇒◇t9∧t12,根据系统实际运行情况,计算可得t12的时序可靠度为Rt12=0.992 0.

在获得了所有可靠性信息以后,根据上文描述的计算方法,可以获得可达状态的概率转移矩阵:

图7 某飞控系统可达状态转移图Fig.7 State transition of a flight control system

根据(6)式,计算得到整个系统的可靠度R= 0.963 4.

3.4误差分析及与传统模型的比对

基于软件体系结构的可靠性评估结果是否可以准确反应软件系统的真实可靠性水平,是多年来一直困扰研究者的问题,文献[22]提出了将模型评估结果与来自软件测试数据的可靠性评估结果作对比,定义软件可靠性的相对误差为

式中:Ra是利用软件系统测试的失效数据得到的系统“真实”可靠度;Rs是通过评估模型计算得出的可靠性。根据测试收集的失效数据,得出该软件的“真实”可靠度为0.955 1,因此有相对误差

本文选用传统的状态模型[11]对软件进行可靠性评估,并与时间扩展Petri网的可靠性评估模型的结果进行对比。选用该状态模型的原因是在现有的基于体系结构的可靠性评估模型中,其评估结果的准确度被认为是最高的,同时也是应用最为广泛的模型。根据文献[2]描述的方法,创建马尔可夫状态转移矩阵,计算可靠度为0.974 4,因此有相对误差

通过相对误差分析,可以证明本文提出的基于时间扩展Petri网的可靠性评估模型比传统模型具有更高的准确性。

4 结论

基于体系结构的可靠性评估主要有两个方面的意义:一方面有些软件无法进行系统的黑盒测试,只能对各个组件单独测试,然后建立体系结构的可靠性评估模型来计算整个系统的可靠性;另一方面,可以在软件开发的早期建立起软件的体系结构模型,因为经过大量的工程实践表明,软件的很多缺陷都是在设计阶段产生的,通过在开发时期建立体系结构的可靠性模型,能够对开发有一定的指导意义。通过对各个组件进行灵敏度分析,可以获得对系统可靠性影响较大的关键组件,作为软件开发阶段的重点,避免不必要的错误,在开发阶段可以有效提高系统的可靠性,从而节省在后期验证阶段耗费的人力物力。

本文首先总结了现有的基于体系结构的可靠性评估模型,介绍了组件和基本Petri网的概念。然后对于基于组件的软件体系结构,提出了时间扩展的Petri网模型,通过引入时间变迁和瞬时变迁,并对时间变迁引入与时间关联的可靠度,提高了模型对实时嵌入式软件的描述能力。最后选用一个典型的嵌入式软件——飞控系统,对其中的纵向操控软件,建立其Petri网图,带入相应的可靠性信息,计算整个系统的可靠度,并进行相对误差分析,验证了模型的准确性。

TPN模型会随着库所和变迁等建模元素的增长呈指数级增长,会导致出现状态空间的爆炸问题,如何缓解状态空间,对模型进行精简,又不降低其描述能力,现在正在成为一个研究方向。而进行体系结构的可靠性评估时,对于单个组件可靠度和变迁可靠度,如何能够进一步提高计算的准确性,也是今后研究的一个重点。

[1]YIN Y F,LIU B,NI H Y.Real-time embedded software testing method based on extend finite state machine[J].Journal of Systems Engineering and Electronics,2012,23(2):276-285.

[2]Goseva-Popstojanova K,Trivedi K S.Architecture-based approach to reliability assessment of software systems[J].Performance Evaluation Journal,2001,45(2/3):179-204.

[3]Ramamoorthy C V,Bastani F B.Software reliability-status and perspectives[J].IEEE Transactions on Software Engineering,1982,8(4):354-371.

[4]Goel A L.Software reliability models:assumptions,limitations,and applicability[J].IEEE Transactions on Software Engineering,1985,11(12):1411-1423.

[5]Horgan J R,Mathur A P.Perils of software reliability modeling[R].US:Software Engineering Research Center,Purdue University,1995.

[6]Hsu C J,Huang C Y.An adaptive reliability analysis using path testing for complex component-based software systems.[J],Reliability,2011,60(1):158-170.

[7]Fiondella L,Rajasekaran S,Gokhale S S,et al.Efficient software reliability analysis with correlated component failures[J].IEEE Transactions on Reliability,2013,(6)2:244-255.

[8]Noh Y J,Choi K K,Du L.Reliability-based design optimization of problems with correlated input variables using a Gaussian Copula[J]. Structural and Multidisciplinary Optimization,2009,38(1):1-16.

[9]Gokhale S S,Trivedi K S.Structure-based software reliability prediction[C]∥Proceedings of 5th International Conference on Advanced Computing.Chennai,India:IEEE,1997:447-452.

[10]Gokhale S S,John R C,William H F.System availability analysis considering failure severities[J].International Journal of Performability Engineering,2007,3(4):467.

[11]Li Q Y,Lei L,Jun A,et al.The determination method for software reliability qualitative indices[C]∥Software Security and Reliability(SERE),2013 IEEE 7th International Conference on.Gaithersburg,MD:IEEE,2013:237-245.

[12]Inoue S J,Shigeru Y D.Two-dimensional software reliability measurement technologies[C]∥Industrial Engineering and Engineering Management.Hongkong:IEEE,2009:223-227.

[13]Littlewood B.Software reliability model for modular program structure[J].IEEE Transactions on Reliability,1979,28(3):241-246.

[14]Park J,Kim H J,Shin J H,et al.An Embedded Software Reliability Model with Consideration of Hardware Related Software Failures[C]∥IEEE Sixth International Conference on Software Security andReliability.Gaithersburg,MD:IEEE,2012:207-214.

[15]Lee W B,Boo G J,Jongmoon B.Early reliability prediction:An approach to software reliability assessment in open software adoption stage[C]∥Second International Conference on Secure System Integration and Reliability Improvement.Yokohama:IEEE,2008:226-227.

[16]Inoue S J,Shiho H,Shigeru Y.Toward practical software reliability assessment with change-point based on hazard rate models[C]∥2013 IEEE 37th Annual Computer Software and Applications Conference(COMPSAC).Kyoto,Japan:IEEE Computer Society,2013.

[17]Nelsen R B,Manuel'U Flores.The lattice-theoretic structure of sets of bivariate copulas and quasi-copulas[J].Comptes Rendus Mathematique.2005,341(9):583-586.

[18]Noh Y J,Choi K K,Liu D.Reliability-based design optimization of problems with correlated input variables using a Gaussian copula[J].Structural and Multidisciplinary Optimization,2009,38(1):1-16.

[19]Huang C,Lin C,Kuo S,et al.Software reliability growth models incorporating fault dependency with various debugging time lags[C]∥Proceedings of the 28th Annual International Conference on Computer Software and Applications.Hongkong:IEEE,2004:186-191.

[20]Kaneishi T,Tadashi D.Software reliability modeling and evaluation under incomplete knowledge on fault distribution[C]∥7th International Conference on Software Security and Reliability(SERE).Gaithersburg,MD:IEEE,2013.

[21]Chandra B,Koizumi T,Hayashi M,et al.A study on network reliability evaluation for developing countries[C]∥2012 18th Asia-Pacific Conference on Communications.Jeju Island Korea:IEEE,2012.

[22]Zeng J T,Li J Z,Zeng X H,et al.A prototype system of software reliability prediction and estimation[C]∥2010 Third International Symposium on Intelligent Information Technology and Security Informatics(IITSI).Jinggangshan:IEEE,2010.

Real-time Embedded Software Architecture Modeling and Reliability Estimation Based on Time-extended Petri Net

XU Yu-tang1,YIN Yong-feng2,SUN Jing3,ZHANG Chi2,LIU Bin2
(1.School of Mechatronical Engineering,Beijing Institute of Technology,Beijing 100081,China;2.School of Reliability and System Engineering,Beihang University,Beijing 100191,China;3.Ordnance Science and Research Academy of China,Beijing 100089,China)

Software reliability is one of the most important quality indices in software quality evaluation. With the development of software engineering and component reusing,the reliability analysis based on software architecture has become a researching hotspot.This paper puts a research on existed architecture-based reliability estimation models at first,then proposes existing architecture based reliability estimation types and typical models,putting forward the shortage of these models as well.As Petri net has a well expansibility and descriptive power of concurrency and asynchronism,this paper focuses on the research of Petri net model,divides transition into time transition and instant transition,and adds time-related reliability—time-delay reliability and temporal reliability,by this means establish the software archi-tecture modeling.The reachable state transition matrix is set up and the system reliability estimation is made by studing the relationship between component state and system reachable state.At last,the method is used in a avionics embedded software for architecture modeling,reliability estimation and error analysis,proving the effectiveness and accuracy of this method.

computer software;software architecture;reliability estimation;time-extended Petri net

文献标志码:A文章编号:1000-1093(2015)02-0363-11

10.3969/j.issn.1000-1093.2015.02.025

2014-04-15

航空科学基金项目(20140751008);中央高校基本科研业务费专项资金项目(YWF-11-03-Q-114)

许玉堂(1978—),男,博士生研究生。E-mail:xyutang@foxmail.com;殷永峰(1978—),男,副教授。E-mail:yyf@buaa.edu.cn

猜你喜欢
体系结构变迁组件
无人机智能巡检在光伏电站组件诊断中的应用
小渔村的变迁
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
一种嵌入式软件组件更新方法的研究与实现
足球机器人并行行为组合控制体系结构分析
回乡之旅:讲述世界各地唐人街的变迁
一纸婚书见变迁
清潩河的变迁
作战体系结构稳定性突变分析
基于DODAF的装备体系结构设计