一种基于时间扩展petri网的嵌入式软件可靠性评估系统的制作方法

文档序号:13236422阅读:200来源:国知局
一种基于时间扩展petri网的嵌入式软件可靠性评估系统的制作方法

本发明涉及一种嵌入式软件可靠性评估系统,具体涉及一种基于时间扩展petri网的嵌入式软件可靠性评估系统,属于软件可靠性技术领域。



背景技术:

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

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

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



技术实现要素:

本发明提供一种基于时间扩展petri网的嵌入式软件可靠性评估系统,可实现分层建模、支持不同方式的体系结构建模,支持可靠性信息的分配和可靠性评估。所述嵌入式软件可靠性评估系统包括系统框架模块、petri网建模模块、可达状态建模模块、工程管理模块、数据分配模块、可靠度计算模块和灵敏度分析模块。

所述系统框架模块是所有模块的依附框架,实现对软件中各个资源的管理,软件的调配等。

所述petri网建模模块完成基于petri网的嵌入式软件体系结构建模,模型的基本元素是petri网的基本元素,包括库所、变迁和弧。

所述可达状态建模模块完成使用层面的可达状态和状态转移的建模,模型的基本元素是系统可达状态,以及状态之间的转移。

所述工程管理模块完成整个评估工程的存储和读取功能。

所述数据分配模块完成对建模的可靠性信息的分配,包括转移概率和组件可靠度等信息。

所述可靠度计算模块完成可达状态转移图的构建以及系统可靠度的计算,所述的可靠度计算的过程为:获得可达状态转移矩阵后,调用matlab进行矩阵计算。

所述灵敏度分析模块完成各个组件的灵敏度计算。所述的灵敏度计算为通过实验法改变组件可靠度的步长获取系统可靠度的变化,计算并显示各个组件的灵敏度分析结果。

根据两种不同的建模方式,体系结构建模分为两种:一种是对于对系统内部比较了解的评估人员,可以通过详细设计和代码结构,实现从底向上的体系结构建模,另一种是对于仅对软件需求比较了解的评估人员,可以完成从顶向下的体系结构建模。

所述的可靠性信息的分配包括:一方面是对每个库所可以配置组件的可靠度信息,对于变迁可以选择为瞬时变迁和时间变迁,瞬时变迁可以配置转移概率,时间变迁可以配置变迁可靠度(默认值为1);另一方面是对于每个可达状态可以配置其所包含的库所,并通过计算获得可达状态的可靠度,对于可达状态转移弧可以在线条上配置转移概率。

本发明的优点在于:

(1)本发明对于不同的人群能够选择不同方式的体系结构建模方式,提高了系统的适用性。

(2)本发明采用分层建模的方式,能够让结构模型更加清晰,便于分析。

(3)本发明调用matlab计算系统的可靠性和灵敏度,相对于使用普通程序,提高了计算的速度,并提高了模型计算的规模。

附图说明

图1为本发明提供的可靠性评估系统模块图。

图2为创建评估工程流程图。

图3为软件可靠性评估流程图。

图4为自底向上体系结构建模流程图。

图5为自顶向下体系结构建模流程图。

图6为可靠性评估与灵敏度分析流程图。

图7为实施例中某飞控系统主要模块运行状态图。

图8为飞控系统纵向姿态调整流程图。

图9为飞控纵向控制软件体系结构的petri网图。

图10为可达状态标识转移图。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步详细、深入地描述,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。

本发明是一种基于时间扩展petri网的嵌入式软件可靠性评估系统,如图1所示,所述的系统包括系统框架模块、petri网建模模块、可达状态建模模块、工程管理模块、数据分配模块、可靠度计算模块和灵敏度分析模块。

所述系统框架模块是所有模块的基础框架,实现对软件中各个模块资源的管理、软件的调配等,比如对为petri网建模模块构建画布,分配组件元素,实现数据的读写输出。所述petri网建模模块完成基于petri网的嵌入式软件体系结构建模,其中,petri网绘图栏为绘制petri网图的画布,画布位于界面左侧,可以将工具栏中显示的petri网元素拖拽到画布中,并双击为不同的元素配置不同的可靠性信息。所述可达状态建模模块完成使用层面的可达状态和状态转移的建模。可达状态图绘图栏为绘制可达状态转移图的画布,画布位于界面右侧,可将工具栏中显示的可达状态图元素拖拽到画布中,并双击为不同元素配置不同的petri网图信息和转移概率。

所述工程管理模块完成整个评估工程的存储和读取功能。此模块主要为petri网建模模块和可达状态建模模块服务,读取并保存两个模块建模过程中的产生的数据信息。

所述数据分配模块完成对建模的可靠性信息的分配,包括转移概率和组件可靠度等信息。此模块主要为petri网建模模块和可达状态建模模块服务,在这两个模块建模过程中,模型元素构建完成之后,对元素进行数据信息的分配,调用工程管理模块读取并存储数据信息。

所述可靠度计算模块完成可达状态转移图的构建以及系统可靠度的计算。当调用petri网建模模块和可达状态建模模块完成模型的建立之后,根据数据分类模块和工程管理模型保存的数据信息,可靠度计算模块根据马尔科夫过程理论计算可达状态矩阵和以及系统可靠度,并进行组件灵敏度分析。

计算系统可靠度rs公式为:

其中,m为系统可达状态矩阵,i为(n+2)维单位矩阵,e为单位矩阵中删除第n行和第1列后的矩阵,rn为可达状态n的可靠度,n为可达状态的个数。

而在评估组件灵敏度时,采用改变组件的可靠度观察系统可靠度的变化情况的方法,计算方法为:

其中,δr为系统可靠度变化值,δx为组件可靠度变化值。通过上述计算公式得到各个组件的相对于系统可靠度的灵敏度。首先给出图2所示的创建评估工程流程,创建评估工程之前,首先确认是否有工程被打开,如果有则提示需要关闭现有工程,然后创建新工程;否则,进行工程信息录入,初始化数据,建立工程框架,创建新工程。

软件可靠性评估流程如图3所示,针对不同的人员实施流程不同,分别是:

对于对系统内部比较了解的评估人员,可以通过详细设计文档和代码结构,实现从底向上的体系结构建模。首先构建整个系统的petri网模型,然后进行可靠性信息分配,完成系统建模,实现可靠度评估和灵敏度分析。

而对于仅对软件需求和设计比较了解的评估人员,可以根据需求说明文档和详细设计文档完成从顶向下的体系结构建模。首先根据软件实现功能对系统可达状态建模,然后双击可达状态进入下一层的petri网图构建,并设置出口和入口结构,进行库所配置和转移概率配置,完成petri网的组件建模,实现可靠度评估和灵敏度分析。

如图4所示,如果选择自底向上体系结构建模,首先拖动petri网元素到左边画布中,构建整个系统的petri网结构图,随后拖到状态图元素到右边画布,绘制可达状态图,并配置每个状态图中对应的petri网元素,完成后进行体系结构建模的有效性检验,看petri网是否符合规范以及状态配置是否合理,验证通过后完成体系结构建模。

如图5所示,如果选择自顶向下体系结构建模。首先拖动状态图元素到左边画布,配置可达状态图,完成后双击每一个状态,可以进入绘制子画布,拖到petri网元素到子画布,绘制该状态内的petri网视图,并配置输入接口和输出接口,完成后进行模型的有效性检验,然后生成整个体系结构的petri网图,完成系统自顶向下的petri网建模。

如图6所示,在完成了体系结构建模以后,首先需要配置可靠性元素,包括组件可靠度、状态转移概率以及变迁的性质等,配置后进行数据的有效性判断,如果有效则建立可达状态转移矩阵,并调用matlab计算矩阵,计算系统可靠度,并进行灵敏度分析,否则重新输入数据配置可靠性元素。

调用matlab计算矩阵时,首先编写一个函数完成矩阵计算的功能,相应的matlab代码如下:

function[r]=ssanlys(n,m)

c=det(eye(n)-m);

a=eye(n)-m;

a(n,:)=[];

a(:,1)=[];

e=det(a);

r=(-1)^(n+1)*(e/c);

end

在matlab中编译成jar包,命名为caculation.jar。完成后将caculation.jar和javabuilder.jar两个包导入到程序的javabuildpath的library中,完成java调用matlab的环境配置。当需要使用时,通过创建caculation类调用matblab完成矩阵计算。随着可达状态的增加,矩阵的维数也会相应增加。如果使用普通的计算方式来进行矩阵计算,计算的等待时间可能过长,影响了用户的使用。由于matlab有着强大的矩阵处理的能力,通过调用matlab完成计算,大大提高了计算效率,也使得软件在处理大量可达状态时也能够保持较高地效率。

实施例:

本实施例以某飞控系统中的纵向控制软件为例子,飞控系统是飞机上的核心系统之一,包含了复杂的并发、异步等活动,系统共包含4个软件模块,包括系统bit自检、纵向操控软件、横航向操控软件以及余度管理软件等。系统主要模块运行状态图如图7所示,当系统启动后,进行上电初始化,系统bit自检测,然后系统将进行余度管理或空中任务调度初始化,当余度超出范围,飞行结束,若在允许范围之内,进入三种状态,分别为纵向调整状态,横航向调整状态以及维护状态,若达到姿态稳定状态,或系统出现维护情况,飞行均结束。

其中纵向姿态调整和横向姿态调整为飞控系统的主要处理过程,选取纵向操控软件进行实例研究,纵向系统主要包含两个子系统,分别为纵向控制增稳软件和纵向自动驾驶软件,图8为飞控系统纵向姿态调整流程图,工作流程如下:

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

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

通过查阅文档和代码,选择自底向上体系结构建模,点击工具栏中的“插入”按钮,选择库所、变迁以及有向弧元素,根据分析对象流程,可以绘制该飞控纵向控制软件体系结构的petri网图,如图9所示。使用圆圈代表功能组件的库所,黑色矩形框代表瞬时变迁t1,空白矩形框代表时间变迁t1',圆圈内的黑点表示令牌。图9中各个组件和变迁和含义见表1。

表1飞控纵向控制软件组件和变迁名称

通过令牌的转移可以获得整个系统的可达状态标识,进而得到petri网的可达状态标识转移图,如图10所示。

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

表2可达状态标识含义及向量表示

根据软件失效数据,得到各个组件的单独可靠度为几个选择变迁执行的概率分别为:t1=0.7,t2=0.3,t4=0.8,t5=0.2,t10=0.5,t11=0.5,t3=0.2,t′3=0.8,t9=0.2,t′9=0.8。

在时间变迁中变迁t8具有延时方面的可靠性,t12具有时序方面的可靠性。由于变迁t8属于两个并行变迁t6、t7运行之后的合并变迁,因此具有合并后的延时的可靠性。由系统运行情况可知,变迁t7运行的时间段可以表示为[46,98],变迁t6运行的时间段为[47,90](单位为毫秒ms),因此可以获得变迁t8期望的运行时间段为[47,98]。而系统中对于延时的要求为50ms,因此可得该变迁的延时可靠度对于变迁t12,根据petri网图以及变迁可以获得时序逻辑公式为根据系统实际运行情况,计算可得t12的时序可靠度为

点击工具栏中的“选择”按钮,双击左画布中的库所或变迁,键入各个组件和变迁的可靠度,点击“确定”,双击右画布中的状态节点,勾选状态节点对应的库所,点击“确定”,双击状态之间的转移,键入转移概率,保证一个状态的转移出概率加和为1,点击“确定”。

键入所有可靠性信息以后,点击工具栏上的“分析”按钮,获得可达状态的概率转移矩阵:

点击工具栏上的“计算”按钮,计算得到整个系统的可靠度r=0.9634,各个组件的灵敏度结果如表3所示

表3实例灵敏度分析结果

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1