一种嵌入式系统可靠性分析与评估方法转让专利

申请号 : CN201010221813.5

文献号 : CN101901186B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张凡董云卫高磊王广仁

申请人 : 西北工业大学

摘要 :

本发明涉及一种嵌入式系统可靠性分析与评估方法,技术特征在于:基于AADL架构模型文件和AADL错误模型文件,形成AADL可靠性模型文件,然后将AADL可靠性模型转换到广义随机Petri网(General Stochastic Petri Net,GSPN)可靠性模型,利用现有的GSPN可靠性评估方法,对AADL可靠性模型进行量化分析。本发明方便软件架构可靠性分析自动化,方便用户在软件设计的早期对嵌入式软件的可靠性进行分析评估,在架构级别对软件的可靠性进行评估,如果模型架构不能满足要求,那么就可以提前修改软件架构,这样不仅可以节约开发成本,而且可以缩短开发周期。

权利要求 :

1.一种嵌入式系统可靠性分析与评估方法,其特征在于步骤如下:

步骤1:利用Eclipse平台的OSTAE工具对需要评估的AADL系统进行实例化操作,将AADL系统逐层展开得到系统模态之间的变迁;所述OSTAE工具为软件工程协会开发的基于Eclipse平台的开源工具,提供一套从前到后对AADL模型进行处理的工具集;所述AADL为美国自动化工程师协会发布的航空标准AS5506——架构分析与设计语言;

步骤2:利用步骤1中实例化操作得到的系统模态之间的变迁,将模态元素转换到对应的GSPN模型元素,转换方法如下:将模态转换为GSPN中的位置;

将初始模态转换为GSPN中带有一个标识的位置;

将模态迁移条件转换为GSPN中的瞬时变迁;

将模态间的转换转换为GSPN中用弧连接的从位置到变迁到位置的位置变迁网;

所述GSPN为广义随机Petri网的可靠性模型;

步骤3:对于AADL系统构件内部的所有子构件,根据每一个子构件处于的系统模态寻找到每个模态下面的所有子构件;

步骤4:利用步骤1中实例化操作得到的系统层次结构关系,确认子构件内部是否有更低层子构件;当子构件内部有更低层子构件时转向步骤2;

步骤5:首先,对于每一个子构件,根据基本AADL错误模型到GSPN模型转换规则,将AADL错误模型元素转换到对应的GSPN模型元素,生成每一个子构件的GSPN模型;接着,利用步骤3中得到的系统底层模态下面的所有构件,便得到该系统内处于同一个模态下所有构件的GSPN模型;

步骤6 处理构件之间的错误传播规则:根据这些构件之间的连接关系和软硬件之 间的绑定关系,将同一模态下各个子构件的GSPN模型连接在一起,得到在该模态下上层构件的GSPN模型,利用GSPN模型计算工具PIPE2(Platform Independent Petri net Editor2,Petri网编辑工具)量化分析与评估在这个模态下的构件可靠性;

步骤7:根据步骤6中得到的同一模态下构件可靠性以及步骤2中模态转换的GSPN模型中每个模态的发生概率,利用PIPE2工具计算出上层构件的可靠性,如果该构件为所要评估的系统构件,则结束可靠性评估;如果该构件不是所要评估的系统构件,则转向步骤

6;采用由底层构件向上层构件的逐层迭代计算得出整个系统的可靠性。

说明书 :

一种嵌入式系统可靠性分析与评估方法

技术领域

[0001] 本发明涉及一种系统可靠性分析与评估方法,主要涉及嵌入式系统可靠性分析与评估方法。

背景技术

[0002] 随着嵌入式系统的发展,嵌入式系统结构越来越复杂,规模越来越大,对系统的开发成本、开发周期及非功能属性(可调度性、可靠性、安全性)要求也越来越高,早期的嵌入式系统开发方法已经不能满足当前需求,为此,业界引入了模型驱动结构方法(Model Driven Architecture,MDA),系统开发被提升到更高的级别——模型级,针对特定计算平台的编码工作由机器自动完成,模型成为开发过程中的核心。因此,传统的基于代码的系统评估已经不能满足需求,需要从模型级别对系统的非功能属性进行分析,从而可以在模型级别就对系统的可调度性、可靠性、安全性进行分析,如果系统的非功能属性不能满足需求,那么就可以从模型级别对系统架构进行修改,这样就可以大大的缩短系统的开发周期,节约开发成本。
[0003] 美国自动化工程师协会(Society of Automotive Engineers,SAE)针对这样的应用需求和技术发展趋势,发布了航空标准AS5506——架构分析与设计语言(Architecture Analysis and Design Language,AADL),AADL很好的支持了基于模型的分析和复杂的实时嵌入式系统描述。AADL通过构件以及构件间的交互对系统架构进行描述与分析,不关心构件的具体实现,通过软件构件、硬件构件和系统构件,对实时嵌入式系统以及高可靠性系统进行了描述与分析。因此,可以通过对系统的AADL模型进行分析与评估,如果AADL模型不能满足需求,那么可以在架构这一级别对系统进行重构。
[0004] 现在已经有很多基于AADL模型进行设计与分析的工具,其中,软件工程协会(Software Engineering Institute,SEI)开发了基于Eclipse平台的开源工具OSATE,OSATE是一个很好支持AADL开源环境,OSATE提供了一套从前到后对AADL模型进行处理的工具集,AADL模型可以以文本的AADL文件或者基于XML AADL模型文件,可以对AADL模型文件进行语法和语义的检查,同时还可以对AADL模型进行流分析以及到MetaH模型的转换等,OSATE可以将一个系统构件进行实例化,通过实例化,不需要完整的声明模型就可以对AADL模型进行处理,而且OSATE是开源的,为其他的基于AADL模型的分析提供了环境。基于OSATE的开发工具已经出现了很多,如AADS(AADL Simulation and Performance Analysis in SystemC)实现了从AADL到SystemC的转换,对AADL模型进行仿真和性能分析。
[0005] 虽然人们开展了一系列针对AADL软件架构模型的可靠性建模方法研究,例如,采用广义随机Petri网、马尔可夫链、故障树等,对AADL架构模型以及AADL错误模型进行很好的描述,然而,基于AADL软件架构的可靠性分析评估方法,工作量大、任务繁琐,需要有较好的方法支持才能实现对软件架构模型的可靠性分析评估、有利于在软件设计的早期对软件的可靠性需求进行分析和验证,提高软件的质量。

发明内容

[0006] 要解决的技术问题
[0007] 为了避免现有技术的不足之处,本发明提出一种嵌入式系统可靠性分析与评估方法,对AADL可靠性模型进行量化分析。
[0008] 本发明的思想在于:基于AADL架构模型文件和AADL错误模型文件,形成AADL可靠性模型文件,然后将AADL可靠性模型转换到广义随机Petri网(General Stochastic Petri Net,GSPN)可靠性模型,利用现有的GSPN可靠性评估方法,对AADL可靠性模型进行量化分析。
[0009] 技术方案
[0010] 一种嵌入式系统可靠性分析与评估方法,其特征在于步骤如下:
[0011] 步骤1:利用Eclipse平台的OSTAE工具对需要评估的AADL系统进行实例化操作,将AADL系统逐层展开得到系统模态之间的变迁;
[0012] 步骤2:利用步骤1中实例化操作得到的系统模态之间的变迁,将模态元素转换到对应的GSPN模型元素,转换方法如下:
[0013] 将模态转换为GSPN中的位置;
[0014] 将初始模态转换为GSPN中带有一个标识的位置;
[0015] 将模态迁移条件转换为GSPN中的瞬时变迁;
[0016] 将模态间的转换转换为GSPN中用弧连接的从位置到变迁到位置的位置变迁网;
[0017] 步骤3:对于AADL系统构件内部的所有子构件,根据每一个子构件处于的系统模态寻找到每个模态下面的所有子构件;
[0018] 步骤4:利用步骤1中实例化操作得到的系统层次结构关系,确认子构件内部是否有更低层子构件;当子构件内部有更低层子构件时转向步骤2;
[0019] 步骤5:首先,对于每一个子构件,根据基本AADL错误模型到GSPN模型转换规则,将AADL错误模型元素转换到对应的GSPN模型元素,生成每一个子构件的GSPN模型;接着,利用步骤3中得到的系统底层模态下面的所有构件,便得到该系统内处于同一个模态下所有构件的GSPN模型;
[0020] 步骤6处理构件之间的错误传播规则:根据这些构件之间的连接关系和软硬件之间的绑定关系,将同一模态下各个子构件的GSPN模型连接在一起,得到在该模态下上层构件的GSPN模型,利用GSPN模型计算工具PIPE2(Platform Independent Petri net Editor2,Petri网编辑工具)量化分析与评估在这个模态下的构件可靠性;
[0021] 步骤7:根据步骤6中得到的单一模态下构件可靠性以及步骤2中模态转换的GSPN模型中每个模态的发生概率,利用PIPE2工具计算出上层构件的可靠性,如果该构件为所要评估的系统构件,则结束可靠性评估;如果该构件不是所要评估的系统构件,则转向步骤6;采用由底层构件向上层构件的逐层迭代计算得出整个系统的可靠性。
[0022] 有益效果
[0023] 本发明提出的嵌入式系统可靠性分析和评估方法,为方便软件架构可靠性分析自动化,方便用户在软件设计的早期对嵌入式软件的可靠性进行分析评估,在架构级别对软件的可靠性进行评估,如果模型架构不能满足要求,那么就可以提前修改软件架构,这样不仅可以节约开发成本,而且可以缩短开发周期。

附图说明

[0024] 图1:系统架构层次模态图;
[0025] 图2:本发明方法流程图;
[0026] 图3:本发明实施例的备份系统架构图;
[0027] 图4:模态变迁的GSPN模型;
[0028] a:R1mode向R2mode变迁;b:R2mode向R1mode变迁;
[0029] 图5:子构件R1的GSPN模型;
[0030] 图6:Hotstandby系统GSPN模型

具体实施方式

[0031] 现结合实施例、附图对本发明作进一步描述:
[0032] 该实例描述了一个备份系统HotStandby,系统内有3个子构件分别为R1、R2、Decide,构件R1、R2各有一个数据接口与构件Decide相连。该系统有两个模态,分别为初始模态R1mode和模态R2mode,这两个模态间的转换是由子构件Decide的两个事件接口prim1和prim2控制的,当接口prim1发出事件时,系统会从模态R1mode转换到R2mode,当接口平日m发出事件时,系统会从模态R2mode转换到R1mode。对于子构件Decide,prim1和prim2两个事件接口发出事件是由接收自子构件R1和R2的数据控制的。图3为系统架构图:
[0033] 下面为该系统的AADL架构模型代码
[0034] system HotStandby
[0035] end HotStandby;
[0036] system Replica
[0037] features
[0038] toDecider:out data port;
[0039] end Replica;
[0040] system Decider
[0041] features
[0042] fromR1:in data port;
[0043] fromR2:in data port;
[0044] prim1:out event port;
[0045] prim2:out event port;
[0046] end Decider;
[0047] system implementation HotStandby.impl
[0048] subcomponents
[0049] R1:system Replica.impl in modes(R1mode);
[0050] R2:system Replica.impl in modes(R2mode);
[0051] Decide:system Decider.impl;
[0052] connections
[0053] DataConnection1:data port R1.toDecider->Decide.fromR1;
[0054] DataConnection2:data port R2.toDecider->Decide.fromR2;
[0055] modes
[0056] R1mode:initial mode;
[0057] R2mode:mode;
[0058] R1mode-[Decide.prim2]->R2mode;
[0059] R2mode-[Decide.prim1]->R1mode;
[0060] end HotStandby.impl;
[0061] system implementation Replica.impl
[0062] annex Error_Model{**
[0063] Model=>errormodels::replicaEM.impl;
[0064] **};
[0065] end Replica.impl;
[0066] system implementation Decider.impl
[0067] annex Error_Model{**
[0068] Model=>errormodels::deciderEM.impl;
[0069] Guard_Event=>fromR1[FailedVisible]and fromR2[Error_Free][0070] and self[Error_Free]applies to Prim2;
[0071] Guard_Event=>fromR2[FailedVisible]and fromR1[Error_Free]and[0072] self[Error_Free]applies to Prim1;
[0073] **};
[0074] end Decider.impl;
[0075] 下面为对应的错误模型代码
[0076] package errormodels
[0077] public
[0078] annex Error_Model{**
[0079] error model deciderEM
[0080] features
[0081] Error_Free:initial error state;
[0082] Failed:error state;
[0083] Fail:error event{Occurrence=>poisson 0.01};
[0084] Repair:error event{Occurrence=>poisson 0.99};
[0085] end deciderEM;
[0086] error model implementation deciderEM.impl
[0087] transitions
[0088] Error_Free-[Fail]->Failed;
[0089] Failed-[Repair]->Error_Free;
[0090] end deciderEM.impl;
[0091] error model replicaEM
[0092] features
[0093] Error_Free:initial error state;
[0094] Failed:error state;
[0095] Fail:error event{Occurrence=>poisson 0.01};
[0096] Repair:error event{Occurrence=>poisson 0.99};
[0097] FailedVisible:out error propagation{Occurrence= > poisson0.8};
[0098] end replicaEM;
[0099] error modelimplementation replicaEM.impl
[0100] transitions
[0101] Error_Free-[Fail]->Failed;
[0102] Failed-[Repair]->Error_Free;
[0103] Failed-[out FailedVisible]->Failed;
[0104] end replicaEM.impl;
[0105] **};
[0106] end errormodels;
[0107] 按步骤1将系统进行实例化,利用Eclipse平台的OSTAE工具对需要评估的AADL系统进行实例化操作,将AADL系统逐层展开,可得到系统模态之间的变迁;
[0108] 按步骤2,根据架构模型描述,该系统存在两个模态R1mode和R2mode,模态间的转换为:
[0109] R1mode-[Decide.prim2]->R2mode;
[0110] R2mode-[Decide.prim1]->R1mode;
[0111] 将它们转换为GSPN模型,如图4所示:
[0112] 按步骤3,在模态R1mode下运行的子构件为R1和Decide,在模态R2mode下运行的子构件为R2和Decide,利用各个子构件自身的错误模型,便可以对系统在不用模态下的可靠性进行评估。
[0113] 按步骤4,子构件内部不包含其它子构件,转向步骤5。
[0114] 按步骤5,首先实现子构件的错误模型向GSPN模型转换,以子构件R1为例,它有两个错误状态分别为Error_Free和Failed,有两个错误事件为Fail和Repair,还有一个向外传播的错误FailedVisible,将其转换为GSPN模型,如图5所示;接着,分别找出系统在R1mode模态下运行的子构件R1和Decide的GSPN模型以及系统在R2mode模态下运行的子构件R2和Decide的GSPN模型。
[0115] 按步骤6和步骤7,首先在单一模态下根据构件间的连接关系和错误传播规则(本实例中没有软硬件绑定关系),将各个子构件的GSPN模型组合成为系统在单一模态下的GSPN模型;接着,将系统的两个模态下的GSPN模型进行整合,形成系统完整的GSPN模型,如图6所示:
[0116] 至此,方法已完成对系统的可靠性模型转化,利用相关GSPN模型计算工具便可以完成对该系统的可靠性行分析与评估。