首页> 中国专利> 面向软件体系结构模型的可信性评估方法

面向软件体系结构模型的可信性评估方法

摘要

本发明提供了一种面向软件体系结构模型的可信性评估方法,通过提出基于Breeze/ADL,对大型复杂系统进行高层抽象,采用元建模机制扩展可信属性元素,从中抽取相关可信属性规约。抽取安全性规约,建立安全性模型,制定Breeze/ADL安全性模型到故障树模型的转换规则,从而建立故障树,定性分析系统潜在的安全威胁和隐患;抽取可靠性属性规约,转换为离散马尔科夫链状态模型,进行定量的可靠性评估及重要度分析;基于安全性和可靠性分析结构,提出有效地改进策略,保障系统结构的可信性。本发明从软件生命周期出发,为软件体系结构可信属性评估定性和定量的评估方法,建立正向保障机制,提高软件后续开发阶段的效率和质量。

著录项

  • 公开/公告号CN104679650A

    专利类型发明专利

  • 公开/公告日2015-06-03

    原文格式PDF

  • 申请/专利权人 上海交通大学;

    申请/专利号CN201510056999.6

  • 发明设计人 黄林鹏;陈璐希;李晨;吴惜文;

    申请日2015-02-03

  • 分类号G06F11/36(20060101);G06F21/57(20130101);

  • 代理机构31236 上海汉声知识产权代理有限公司;

  • 代理人郭国中

  • 地址 200240 上海市闵行区东川路800号

  • 入库时间 2023-12-18 09:13:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-24

    未缴年费专利权终止 IPC(主分类):G06F11/36 授权公告日:20160810 终止日期:20190203 申请日:20150203

    专利权的终止

  • 2016-08-10

    授权

    授权

  • 2015-07-01

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20150203

    实质审查的生效

  • 2015-06-03

    公开

    公开

说明书

技术领域

本发明属于软件体系结构可信分析领域,具体涉及软件体系结构可信评估。

背景技术

运行于网络环境下的软件系统日益复杂,其可信问题也愈加突出,特别在可靠性和安全性方面的问题日益凸显,软件系统在很多时候并不能够以人们所期望或信任的方式工作,如会发生各种故障和错误、受到攻击侵害,导致其无法正常工作,进而直接/间接地对用户和社会造成损害。如何构造可信软件,使其运行行为和结果符合预期,是一个极具挑战性的问题。

软件体系结构可从全局的角度和较高的层次整合构件及其之间的拓扑关系。软件体系结构的引入,是控制软件系统在系统结构、环境交互、动态应变以及可信等多重复杂性的有效手段,进而为我们在软件开发时发现、预测和消解潜在的可信性问题提供基础。但是,传统的软件体系结构模型主要针对运行于传统静态、封闭、可控环境中的软件系统,而基于构件和面向服务的软件系统则运行在动态、多变、难控的网络环境之中,其基本形态和主要性质等方面产生若干变化,导致其软件实体模型和交互模型产生相应变化。同时,为了保证开发出的软件系统能够高可信运行,需要在体系结构模型中对各类可信保障机制进行设计和规约,并提供动态变化的能力保证相关可信保障机制的按需配置。

近年来,软件体系结构评估技术取得了许多有益的进展。从精度上看,体系结构分析方法可以分为两类:

(1)基于调查问卷、场景分析、检查表等技术,代表性工作包括基于场景的体系结构分析方法SAAM(Scenario-Based Architecture Analysis Method)及其扩展、体系结构折衷权衡分析方法ATAM(The Architecture Trade-Off Analysis Method)、基于场景的体系结构再工程SBAR(Scenario-Based Architecture Reengineering)、面向可维护性的体系结构预测与分析方法ALPSM(Architecture Level Prediction ofSoftware Maintenance)、体系结构质量分析与评估模型及方法SAEM(A SoftwareArchitecture Evaluation Model)等。上述方法对软件体系结构功能属性关注较多,对非功能属性(如安全性、可靠性等)关注相对较少。

(2)基于形式化方法和数学模型技术,如基于进程代数、CHAM(ChemicalAbstraction Machine)、有穷状态自动机、LTS(Labeled Transition Systems)来分析体系结构模型中是否包含死锁、基于马尔科夫模型分析系统的有效性等。基于形式化的方法能够严格验证软件体系结构的正确性,但是难以理解,同时也难以适用于大规模复杂软件体系架构设计中。采用数学模型的方法,可以对软件非功能属性进行评估、预测,但是现有方法很少利用评估结果指导软件体系结构演化;大多数的评估方法还是停留与一种静态的评估手段。难以满足网络环境对软件体系结构可信演化的需求。

经检索,发现如下2项中国已授权的发明专利:

现有技术1:专利号ZL201110164575.3--基于控例的软件可信性需求提取方法;

现有技术2:专利号ZL200810116038.X--软件构件可信度评价方法和系统。

本发明与“专利号ZL201110164575.3--基于控例的软件可信性需求提取方法”比较如下:

专利“基于控例的软件可信性需求提取方法”中所提的基于危险和可操作性分析(Hazard and Operability Analysis,简称HAZOP)的方法,与本发明中所提的故障树分析方法(Fault Tree Analysis,简称FTA)同属于经典的安全性分析方法。专利“基于控例的软件可信性需求提取方法”采用前馈来制定系统面临外在威胁时应采取的措施;采用反馈控例描述软件系统在面临或者感知系统本身的行为偏差时其应采取的应对措施。但是前馈控例和反馈控例,都只是可信需求的抽取,并不能反映且改变系统设计结构,无法修复系统结构设计过程中的缺陷,无法支持软件体系结构的复用并保证软件体系结构的可信性。而软件体系结构作为软件系统的高层抽象,在系统开发过程中担任着“所有战略和战术上的设计决策”,保证软件体系结构的可信性,能建立正向保障机制,贯穿软件开发周期,提高软件后续开发阶段的效率和质量,显得更为至关重要。而本发明中针对故障树方法所发现的问题,采用Production机制来制定修复措施及应对机制,更具有灵活性,且Production机制调整的对象为软件体系结构,从而支持了软件体系结构的复用并能提升软件体系结构的可信性。

本发明与“专利号ZL200810116038.X--软件构件可信度评价方法和系统”比较如下:

该专利文献所提方法与本发明适用于不同阶段,专利“软件构件可信度评价方法和系统”适用于以构件为基础的系统集成组装,是一种自底向上的过程。而本发明适用于软件体系结构设计阶段,是一种从高层自顶向下的过程。本发明的目的是为了提升软件体系结构模型的可信性,从而形成一种正向制导机制,可以指导构件组装,选择功能相符,可信度信誉度高的构件,二者相辅相成。

发明内容

针对现有技术中的缺陷,本发明的目的在于提出一种面向软件体系结构模型的可信性评估方法,该方法基于一种针对网络环境的软件体系结构描述语言——Breeze体系结构描述语言(Breeze Architecture Description Language,Breeze/ADL),在其基础上对软件系统进行建模,提供定性的安全性分析以及定量的可靠性评估,并能运用分析及评估结果指导软件体系结构进行调整,从而实现高可信演化。

根据本发明提供的一种面向软件体系结构模型的可信性评估方法,包括以下步骤:

步骤1、软件体系结构建模:

采用Breeze/ADL进行体系结构建模,通过Breeze/ADL建模元素来抽象基于网络的软件系统实体元素及实体元素的特征,使得从系统架构高层抽象到软件系统组成各部分功能及交互关系的准确映射,得到Breeze/ADL软件体系结构模型;

步骤2、可信属性元素元建模扩展:

采用元建模机制扩展可信属性元素,定义安全性元模型、可靠性元模型,实现可信属性元素与Breeze/ADL建模元素互相绑定、关联,得到扩展了可信属性元素的Breeze/ADL;

步骤3、采用扩展了可信属性元素的Breeze/ADL,对基于网络的软件系统的软件体系结构进行描述,生成软件体系结构模型;

步骤4、从Breeze/ADL软件体系结构模型中抽取安全性属性规约,将抽取出的安全性属性规约转换为故障树规约,得到安全性分析结果,为后续软件体系结构调整,建立正向保障机制提供指导

步骤5、从Breeze/ADL软件体系结构模型中抽取可靠性属性规约,将抽取出的可靠性属性规约转换为基于状态的离散马尔科夫链,得到可靠性分析结果;

步骤6、根据安全性分析结果、可靠性分析结果,采用调整规则Rule对软件体系结构描述进行调整,其中,调整规则Rule通过Production形式定义,具体地,Production定义为一个二元组Production=<左规约,右规约>,左规约中定义需要调整的软件体系结构描述规约,右规约中定义调整后的软件体系结构描述规约,在执行时,当左规约在软件体系结构描述中被检测到,则采用右规约进行替换,从而实现软件体系结构可信演化。

优选地,Breeze/ADL建模元素包括构件、接口及链接。

优选地,安全性元模型包括失效模式、失效事件、失效事件级联关系,可靠性元模型包括错误发生率、错误传播率。

优选地,所述安全性属性规约,包含:安全性模式迁移(transition)及安全性规则(rule);其中,安全性模式迁移包含:模式定义(mode)及触发条件(trigger);模型定义包括:初始模式、正常模式、错误模式、停止运行模式;安全性模式迁移的触发条件(boolean)包含守卫条件(guard_condition)、触发事件(event)以及时间片迁移条件(time_interval)。触发事件包括:失效事件;事件本身为原子事件或组合事件,组合事件由原子事件通过“与关系(AND)”或“或关系(OR)”方式组合。

安全性属性规约可采用巴科斯范式(Backus-Naur Form,缩写BNF)定义,如下所示:

安全性规约::=[描述信息][安全性模式迁移][安全性规则]

安全性模式迁移::=<模式定义><触发条件>[描述信息]

模式定义::="初始模式"|"正常模式"|"失效模式"|"停止运行模式"|...

触发条件::=<守卫条件>|<触发事件>|<时间片迁移条件>

触发事件::=[触发事件][组合关系][断言]

组合关系::="与关系"|"或关系"

所述抽取可靠性属性规约,通过事件中的断言(declaration)定义,其中,断言包括错误描述(fault)、错误传播类型(propagation)以及错误传播率(rate)。

如下所示,

触发事件::=[触发事件][组合关系][断言]

断言::=<错误描述><错误传播类型><错误传播率>[描述信息]

错误传播类型::="泊松分布"|"指数分布"|...

抽取可靠性属性规约通过事件中的断言(declaration)定义,包括错误描述(fault),错误传播类型(propagation),以及错误传播率(rate),错误传播类型包括泊松分布(possion)和指数分布(exponential)等。

优选地,所述步骤5包括如下步骤:

步骤5.1:在基于状态的离散马尔科夫链模型中,生成软件体系结构的状态迁移矩阵M;

其中,n表示状态数,即构件数;Si代表构件Ci正常运行的状态,构件是原子构件或组合构件;单个原子构件顺序执行调用时,构件Ci到构件Cj的可靠性M(i,j)为M(i,j)=RiPij,1≤i,j≤n,Ri表示构件Ci正常运行的概率,即构件Ci的可靠性,Pij代表构件Ci调用构件Cj的概率;

其中,构件内部通过冗余备份方式进行组合,当构件Cft是通过对构件C1添加r-1个冗余备份构件实现时,冗余备份构件可靠性Rft计算为:

>Rft=R1+Σq=2r(Πp=1q-1(1-Rp)Rq).>

r表示所有构件个数,Rp表示构件Cp的可靠性,1≤p≤q-1,2≤q≤r,Rq表示构件Cq的可靠性,Rft表示采用(fault tolerance,缩写为ft)容错构件的可靠性,一个容错构件可由r个构件组成,其中一个构件为主构件,其余r-1个构件为主构件的副本;

步骤5.2:计算软件体系结构可靠性

软件体系结构的可靠性可以理解为从每个构件都正常运行,并且执行流从构件1开始,遍历体系结构中的每个构件。因此,体系结构的可靠性R可计算为T(1,n)×Rn。在执行流中,构件i可能被重复调用多次,因此,T(1,n)=I+M(1,n)+M2(1,n)+…+Mn(1,n)+…=>Σk=0Mk(1,n)=II-M(1,n)=(I-M(1,n))-1.>

其中,I表示单位矩阵,Mk(1,n)表示表示从构件C1正常执行到构件Cn并循环k次的概率。

(3)对体系结构中的构件进行重要度分析,为后续体系结构调整,建立正向保障机制提供指导。

步骤5.3:对软件体系结构中的构件进行重要度分析,对构件的重要度分析采用如下公式:

>V(Cj)=αr+(1-α)Σi|invoke(cj)|V(Ci)Pij>

其中,V(Ci)代表构件Ci重要度,V(Cj)表示构件Cj重要度,α是属于[0,1]的参数,|invoke(Cj)|代表调用构件Cj的构件集合,Pij代表构件Ci调用构件Cj的概率;其中,i的取值范围为1≤i≤|invoke(Cj)|,r表示所有构件个数。

与现有技术相比,本发明期望通过分析软件体系结构设计所产生的模型,预测系统的安全性及可靠性质量属性(可信非功能属性需求),并标识出潜在的冲突。并充分利用安全性及可靠性分析评估结果,形成可信演化决策,指导体系结构调整。

具有如下有益效果:

1、本发明以基于网络的软件系统为研究对象,从基本结构、行为模式、运行机理、演化规则和可信保障等方面入手,建立嵌入可信性因素的软件体系结构模型——Breeze/ADL模型。

2、本发明将安全性、可靠性等典型元素嵌入到软件体系结构模型——Breeze/ADL中,从而实现在体系结构层面提供了安全性、可靠性非功能属性评估,能够在体系结构设计初期,就定性地发现体系结构设计中存在的风险和隐患,定量地给出可靠性评估结构,以及体系结构中构件重要度排序,为后期体系结构调整提供参考。

3、本发明所关注软件体系结构模型并非是一种静态模型,该模型可以通过Production机制描述动态演化,通过利用定性的安全性分析以及定量的可靠性评估结果,制定体系结构调整策略,从而实现高可信演化。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明流程图;

图2为故障树图;

图3为求取割集过程。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。

本发明提供了一种面向软件体系结构模型的可信性评估方法,通过提出基于网络环境的软件体系结构描述语言——Breeze/ADL,对大型复杂系统进行高层抽象,采用元建模机制扩展可信属性元素,从中抽取相关可信属性规约。抽取安全性规约,建立安全性模型,制定Breeze/ADL安全性模型到故障树模型的转换规则,从而建立故障树,定性分析系统潜在的安全威胁和隐患;抽取可靠性属性规约,转换为离散马尔科夫链状态模型,进行定量的可靠性评估及重要度分析;基于安全性和可靠性分析结构,提出有效地改进策略,保障系统结构的可信性。本发明从软件生命周期出发,为软件体系结构可信属性评估定性和定量的评估方法,建立正向保障机制,提高软件后续开发阶段的效率和质量。

下面结合具体实施例对本发明进行详细说明。如图1所示,本发明流程分为几个步骤,下面将针对每个步骤给出具体实施实例。以下给出一个具体实例来说明本发明提供的面向软件体系结构模型的可信性评估方法,该实施例的评估对象是基于智能家居系统的软件体系结构设计方案,该方案中包含以下构件:控制器Control、电脑PC、便携式设备PDA(Personal Digital Assistant)、相机Camera、手机Cellphone及打印机Printer。

首先采用网络软件体系结构描述语言——Breeze/ADL对软件系统进行高层建模,其中,软件体系结构基本建模元素包括:构件、接口、连接。

Breeze/ADL采用XML作为元语言,以下给出部分建模结果的XML定义:

上述代码的说明如下:

Breeze/ADL建模元素包括构件、接口及链接,实体元素的特征包括性质、结构组织。在定义中,构件采用node定义,端口采用port定义,链接采用edge定义。其中,所述构件的属性包括构件名、端口,所述端口的属性包括端口名、端口方向;所述链接的属性包括链接名、源端口、目标端口。

在得到体系结构建模后,可以在安全性及可靠性元模型中定义相关非功能属性规约。

表1给出了一个安全性属性规约实例,其中定义了失效事件(即故障事件ID)、类型(Type)及失效事件级联关系(即组合类型Gate)。

表1 安全性属性定义

从而生成如下相应的XML规约:

从而生成故障树,如图2所示。其中,ControlFailure表示控制设备故障,InternalLogicError表示内部逻辑错误,TransimissionError表示指令传输错误,PDAFailure表示网络故障,NetworkFailure表示网络故障,PortDirectionError表示设备端口连接错误。当控制设备故障时,则认为是内部逻辑错误或者指令传输错误引起的,当指令传输错误时,则认为是网络故障、网络故故障、或者设备端口连接错误引起的。控制设备故障、指令传输错误均为或门事件。

进而找出故障树中的割集和径集,从而通过改进底层故障,避免顶层故障事件发生,从而改进系统的安全性。割集是这样一个事件集合的集合,如果事件集合内的事件都发生,则顶端事件肯定发生。因此,我们需要找出故障树中的割集事件,并对体系结构进行调整,避免割集事件发生。求取故障树割集的算法如下所示:

1、把初始的割集看作一张空白的表格,顶事件写到表格第一个单元;

2、若父事件是与门事件,把事件拆分成两个子事件,并写到表格与父事件同一行,并删掉父事件;

3、若父事件是或门事件,拆分成两个子事件和,分别用两个子事件代替父事件的位置,写到表格的两行,并复制其它位置的元素;

4、重复步骤3和步骤4,直至遍历故障树中所有事件,且表格中没有中间事件,求取割集完成。

计算过程在图3中给出。

可靠性属性规约在可靠性元模型中定义,针对智能家居实例,我们对构件可靠性赋值如表2所示,构件间迁移概率赋值如表3所示。

表2 构件可靠性赋值

构件名可靠性电脑0.9便携式设备0.92手机0.92相机0.93打印机0.88控制设备0.96

表3 构件间迁移概率

源构件目标构件迁移概率控制设备便携设备0.4控制设备手机0.25控制设备打印机0.05控制设备电脑0.2控制设备相机0.1

手机电脑0.4手机打印机0.3手机控制设备0.3电脑控制设备0.5电脑打印机0.2电脑相机0.1电脑手机0.2便携式设备电脑0.1便携式设备相机0.3便携式设备打印机0.4便携式设备控制设备0.2相机控制设备0.6相机打印机0.4

基于上述参数,可得马尔科夫链迁移矩阵M为:

构件内部通过冗余备份方式进行组合,当构件Comft是通过对构件Com1添加r-1个冗余备份构件实现时,冗余备份构件可靠性Rft计算为:

>Rft=R1+Σq=2r(Πm=1n-1(1-Rm)Rn);>

其中,r表示所有构件数,Rm表示构件Comm的可靠性,1≤m≤n-1,2≤n≤r,Rn表示Comn的可靠性。

接下来计算软件体系结构可靠性。

软件体系结构的可靠性可以理解为从每个构件都正常运行,并且执行流从构件1开始,遍历软件体系结构中的每个构件。因此,软件体系结构的可靠性R可计算为R=T(1,n)×Rn,其中,Rn表示构件n的可靠性,T(1,n)表示从构件1正常执行到构件n,循环任意次的概率,在执行流中,构件i可能被重复调用多次,i=1,2…..,n,因此,T(1,n)=I+M(1,n)+>M2(1,n)+...+Mn(1,n)+...=Σk=0Mk(1,n)=II-M(1,n)=(I-M(1,n))-1.>

其中,I表示单位矩阵,Mk(1,n)表示表示从构件1正常执行到构件n并循环k次的概率;

>(I-M)-1=1.7710.5590.680.5330.4140.7431.0431.4240.4010.5070.3390.720.6950.3331.2670.2270.4460.7880.8730.6890.3351.3340.2380.7460.9880.3340.380.2971.230.787000001>

其中,I表示单位矩阵。

根据表2定义得打印机的可靠性为0.88,根据矩阵M定义得软件系统的执行流为从控制设备到打印机。在(I-M)-1结果中得到从控制设备正常执行到打印机的概率为0.743(见(I-M)-1矩阵中的第一行第五列结果),可得软件体系结构可靠性R为R=0.743×0.88≈0.654。

由步骤5.2公式以及表3不同构件间的迁移概率可得:

V(Control)=α/n+(1-α)(0.5V(PC)+0.2V(PDA)+0.3V(Cellphone)+1/6V(Printer)+0.6V(Camera))

V(PC)=α/n+(1-α)(0.2V(Control)+0.1V(PDA)+0.4V(Cellphone)+1/6V(Printer))

V(PDA)=α/n+(1-α)(0.4V(Control)+1/6V(Printer))

V(Cellphone)=α/n+(1-α)(0.25V(Control)+0.2V(PC)+1/6V(Printer))

V(Printer)=α/n+(1-α)(0.05V(Control)+0.2V(PC)+0.4V(PDA)+0.3V(Cellphone)+1/6V(Printer)+0.4V(Camera))

V(Camera)=α/n+(1-α)(0.1V(Control)+0.1V(PC)+0.3V(PDA)+1/6V(Printer)),

组合得:

构件重要度可通过如下公式计算:

>V(Control)V(PC)V(PDA)V(Cellphone)V(Printer)V(Camera)=α/nα/nα/nα/nα/nα/n+(1-α)00.50.20.31/60.60.200.10.41/600.40001/600.250.2001/600.050.20.40.31/60.40.10.10.301/60V(Control)V(PC)V(PDA)V(Cellphone)V(Printer)V(Camera)>

其中,V(*)表示括号内构件的构件重要度,α表示在步骤5.2中给出,属于[0,1]的参数,n表示构件个数。

得到构件重要度为:V(Control)=0.5831,V(Printer)=0.5144,V(PC)=0.3553,V(PDA)=0.319,V(Cellphone)=0.3026,V(Camera)=0.2753。排序如下:

V(Control)>V(Printer)>V(PC)>V(PDA)>V(Cellphone)>V(Camera)。

在得到安全性分析结果和可靠性分析结果后,我们采用Productions形式定义体系结构调整规则Rule。其中,Production定义为一个二元组Production=<Arch,Arch>,在左边的Arch(记为“左规约”)中定义需要调整的体系结构描述规约,在右边的Arch(记为“右规约”)中定义调整方案。在执行时,当左规约被检测到时,系统将自动采用右规约进行替换,从而实现软件体系结构可信演化。

例如,在安全性分析结果中,可知端口不匹配将有可能引发顶层事件失效,我们定义端口匹配规则相应的XML如下:

上述代码的说明如下:

其中的左规约,具体定义为:构件Com1具有端口方向为输出(即out)的端口P1,构件Com2具有端口方向为输出的端口P2,链接Link的源端口为端口P1且目标端口为端口P2。

其中的右规约,具体定义为:构件Com1具有端口方向为输出(即out)的端口P1,构件Com2具有端口方向为输入(即in)的端口P2,链接Link的源端口为端口P1且目标端口为端口P2。

该端口匹配规则检测体系结构当中是否存在两个相连构件,并且链接的两端端口都为out(即输入)类型,若存在,则将source端(即源端口)port的方向(即端口方向)修改为in(即输入)。同理,还可以通过上述规则,修改链接两端都为in的情况,并将source端port方向由in改为out。

例如,通过可靠性分析结果中的重要度分析可知,构件Control是体系结构中最重要构件,因此替换一个可靠性更高的Control,可以最大程度提升体系结构可靠性。我们将原有可靠性为0.96的Control替换为0.998,替换操作如下:

上述代码的说明如下:

其中的左规约,具体定义为:构件Control的可靠性为0.96,具有端口方向为inout的端口ct,inout代表端口方向为双向。

其中的右规约,具体定义为:构件Control的可靠性为0.998,具有端口方向为inout的端口ct,inout代表端口方向为双向。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号