首页> 中国专利> 一种软件组件系统组件间协作行为分析方法

一种软件组件系统组件间协作行为分析方法

摘要

本发明涉及一种软件组件系统组件间协作行为分析方法,包括:分析组件行为,建立组件的行为模型;对各组件进行基于Pi演算的行为描述;生成协作路径集合;分析协作路径上的时间约束,生成带时间约束的协作路径集。本发明适用于软件组件系统,关注的不是组件顺序的线性行为,而是组件间的交互行为。将UML与Pi演算理论相结合,提出软件组件协作路径分析方法,在较高的抽象层次上描述各组件间的协作。使用带时间约束的协作路径集作为组件间的协作行为,对行为的描述更加准确。将本发明应用于软件系统的开发过程中,对于提高软件组件协作行为的可信性以及增强整个软件系统的可信性具有重要作用。

著录项

  • 公开/公告号CN103714001A

    专利类型发明专利

  • 公开/公告日2014-04-09

    原文格式PDF

  • 申请/专利权人 北京工业大学;

    申请/专利号CN201310717410.3

  • 申请日2013-12-23

  • 分类号G06F11/36(20060101);

  • 代理机构11203 北京思海天达知识产权代理有限公司;

  • 代理人张慧

  • 地址 100124 北京市朝阳区平乐园100号

  • 入库时间 2024-02-19 22:49:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-01-18

    授权

    授权

  • 2014-05-07

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

    实质审查的生效

  • 2014-04-09

    公开

    公开

说明书

技术领域

本发明属于计算机软件领域,涉及一种软件组件系统组件间协作行为分析方法。

背景技术

近年来,随着计算机和软件技术的迅速发展与广泛应用,社会的信息化程度不断提高,计算机软件已经广泛应用于诸如航空航天、核反应堆、国防建设以及与国民经济相关的重要领域。如果计算机软件系统的安全受到危害,将会危及国家安全,引起社会混乱,造成重大损失。因此,确保计算机软件系统的安全成为世人关注的社会问题,并成为信息科学技术领域中的研究热点。随着人们对软件系统功能要求的不断提高,软件系统的规模也越来越大,导致软件的开发、集成和维护工作也越来越复杂,软件在被使用时遇到广泛的软件信任问题。增强软件系统的可信性得到了广泛的关注。软件系统的可信是指软件系统的行为及其结果总是符合人们的,在受到干扰时仍能提供连续的服务。然而,由于目前尚严重缺乏相关的可信软件构造技术,导致软件产品在推出时总会含有一些已知或未知的缺陷,这些缺陷对软件系统的运行构成了严重的威胁。因此,构造可信软件已经成为现代软件技术发展和应用的重要趋势和必然选择。

目前,对于可信软件的开发方法以及运行支撑平台的研究仍然处于起步阶段。对于生产可信软件产品来说,仍然缺少科学的理论基础和严格的技术手段。因此,如何构造可信软件的相关问题,已经成为当前软件行业所面临的一个挑战,并且已成为软件工程领域的热点问题之一,该领域的研究具有重要的理论意义和应用价值。

现有的软件行为分析方法多是通过静态分析或动态分析,获取软件自身的状态序列从而进一步获取行为序列,其缺点是只能关注软件本身顺序执行的行为,而对软件系统中各组件的协作行为关注不够。申请号为201210303587.4的专利公开了一种基于状态层的软件行为建模方法,该方法通过截获软件执行时的调用序列,转化并建立状态转移图,抽取敏感状态序列,导出软件行为。该方法虽使用了状态转移图,但无法适用于基于组件的软件系统,无法描述各组件的交互行为,其算法的复杂度也较高。

发明内容

针对软件各组件间协作行为中存在的问题,本发明提出一种软件组件系统组件间协作行为分析方法,不仅能够分析组件间的协作路径,而且还能够同时分析这些路径上的时间约束,从而使所获取的协作行为模型既可以用与时间无关的领域,也可以用与时间相关的领域,具有较好的适用性。

为达到以上目的,本发明采用如下方案。

组件协作行为的分析方法包括:基于UML与Pi演算理论的软件组件协作路径分析方法,基于时序图构造的软件组件协作路径上的时间约束分析方法。

组件间的协作路径是指人们所期望的组件间的协作路径。组件间的协作是通过相互收发消息完成的,所以在获取组件间的协作路径时只需考虑人们所期望的组件间的消息传递序列即可,这种消息传递序列反映了组件间的协作路径。

时间约束是指组件协作路径上关于消息传递的一种时间限制。一方面,需要分析协作路径上消息传递所花费时间的约束;另一方面,还需要分析协作路径上相邻消息传递之间的时间间隔约束。

一种软件组件系统组件间协作行为分析方法,包括以下步骤:

步骤1:分析组件行为,建立组件的行为模型。

分析组件与其它组件的外部交互,确定组件与指定组件交互所接收和发送的消息,建立组件的UML状态图,通过状态图进一步了解了组件的行为。

步骤2:对各组件进行基于Pi演算的行为描述。

针对组件行为分析结果,以组件与其它组件协作情况下的UML状态图为主,并将组件收发的消息作为附加信息,按所定义的抽取规则对组件状态图进行Pi演算语义的抽取,得到各组件基于Pi演算的行为描述。

本发明设计的抽取规则如下:

规则1.一个组件可以作为Pi演算中的一个进程。

规则2.一个组件可以通过消息的接收与发送与其它组件交互,当一个消息被传递时,假定存在一个传递该消息的通道与Pi演算中的传递该消息的通道相对应。

规则3.在状态图中,状态的迁移是由事件的触发引起的,事件的触发由消息的收发引起,因此一个状态迁移可以由基本进程表达式表达。例如:从S1状态迁移到S2状态是由通道a接收消息x完成的,这一迁移可以表示为a<x>。

规则4.在状态图中,没有通过接收或发送消息而被触发的事件所造成的状态变迁不进行Pi演算语义抽取。

规则5.在状态图中,互斥的条件分支借助Pi演算中的和式表达式表示。

规则6.在状态图中,由一系列状态迁移构成的可行流程用Pi演算的进程表达式来表达。

步骤3:生成协作路径集合。

利用Pi演算操作语义推演组件间的协作路径,生成协作路径集合,将该集合作为组件间协作行为的一部分。

协作路径是各组件协作完成某项任务的过程中进行消息传递形成的协作消息链。组件间的协作路径可以表示为pi=<mi1mi2…mij>,其中mij是所传递的消息,可以用一个三元组表示为mij=(sender,name,receiver),其中,i>0,j>0;sender为消息发送者的标识;name为所传递消息的标识;receiver为消息接收者的标识。

协作路径集合可以表示为集合P={pk},其中pk为组件间的协作路径,k>0。

步骤4:分析协作路径上的时间约束,生成带时间约束的协作路径集。

构造系统的时序图,根据所生成的协作路径从所构造的时序图中抽取所需的时间约束,生成带时间约束的协作路径集。

时序图用于显示系统内各个实体处于某种特定状态的时间,以及触发这些状态发生变化的消息。其主要元素包括参与者、状态、状态线、事件与消息以及时间约束。其中,

参与者:参与者是交互所涉及的所有实体。

状态:状态是实体在交互过程中自身的所有状态。

状态线:是用来显示系统中的实体在任何特定时间下所处的状态,系统中实体的状态线与系统中实体的某个状态是一致的。

事件与消息:将事件与消息显示在时序图上,用于表示触发实体的状态改变。

协作路径上的时间约束包括消息时间约束和相邻消息间隔时间约束。消息时间约束可以表示为一个二元组STnm=(L,U),相邻消息间隔时间约束可以表示为一个二元组ITnm=(L,U),其中,L表示时间下限,U表示时间上限,n>0,m>0。带时间约束的协作路径可以表示为:pti=<mti1ITi1mti2ITi2…ITij-1mtij>,mtij=(sender,name,receiver,STij),其中,mtij表示所传递的消息,用一个四元组表示;STij为消息时间约束;ITij-1为相邻消息间隔时间约束。带时间约束的协作路径集可以表示为PT={pt1pt2…ptk},其中,ptk为带时间约束的协作路径,k>0。

抽取时间约束的步骤如下:

步骤4.1:从协作路径集P中选取一条协作路径pi,i>0。

步骤4.2:对于pi消息链中的每一个消息mij,在系统的时序图中进行定位,抽取其时间约束,形成消息时间约束二元组STij,生成表示所传递消息的四元组mtij

步骤4.3:对于pi消息链中的任意两个相邻消息mij和mij+1,在系统的时序图中进行定位,通过时序图给出的相关时间约束计算mij和mij+1之间的间隔时间约束,形成相邻消息间隔时间约束二元组ITij

步骤4.4:生成带时间约束的协作路径pti=<mti1ITi1mti2ITi2…ITij-1mtij>。

步骤4.5:重复执行步骤4.1~4.4,直到处理完P中的所有路径,生成带时间约束的协作路径集PT={pt1pt2…ptk},k>0。

与现有技术相比,本发明具有以下优点:

本发明适用于软件组件系统,关注的不是组件顺序的线性行为,而是组件间的交互行为。将UML与Pi演算理论相结合,提出软件组件协作路径分析方法,在较高的抽象层次上描述各组件间的协作。使用带时间约束的协作路径集作为组件间的协作行为,对行为的描述更加准确。本发明为提高软件组件协作行为的可信性提供了有效方法。将本发明应用于软件系统的开发过程中,对于提高软件组件协作行为的可信性以及增强整个软件系统的可信性具有重要作用。

附图说明

图1为本发明所涉及的软件组件系统组件间协作行为分析方法流程图;

图2为本发明实施例中的组件状态图:(a)为A组件状态图,(b)为B组件状态图,(c)为C组件状态图;

图3为本发明实施例中A、B、C组件时序图。

具体实施方式

下面结合附图和实施例对本发明做进一步的说明。

为简便起见,本实施例只选取A、B、C三个简单组件。为了便于理解,这些组件的协作也以简单方式体现。对这些组件的说明信息进行分析后,能够分别得到这些组件接收消息集合RM和发送消息集合SM。A组件的接收消息集合RM={xr,yr},发送消息集合SM={x,y};B组件的接收消息集合RM={x},发送消息集合SM={xr};C组件的接收消息集合RM={y},发送消息集合SM={yr}。

软件组件系统协作行为分析方法的流程图如图1所示,包括以下步骤:

步骤1:分析组件行为,建立组件的行为模型。

根据A、B、C组件各自的说明信息分别对它们的状态变化进行分析,可以得到各组件在与其它组件交互情况下其自身的状态变化,相应的UML状态图如图2(a)、(b)、(c)所示。

图2(a)为A组件的状态图。首先A组件由初始状态进入A1状态,等待互斥事件x、y的触发。当x事件触发时A组件由A1状态进入A2状态,之后当xr事件触发时A组件由A2状态进入结束状态;当y事件触发时A组件由A1状态进入A3状态,之后当yr事件触发时A组件由A3状态进入结束状态。图2(b)为B组件的状态图,当x事件触发时B组件由初始状态进入B1状态,之后当xr事件触发时B组件由B1状态进入结束状态。图2(c)为C组件的状态图,当y事件触发时C组件由初始状态进入C1状态,当yr事件触发时C组件由C1状态进入结束状态。

步骤2:对各组件进行基于Pi演算的行为描述。

对A、B、C组件进行行为分析之后,综合考虑每个组件的外部交互分析结果和状态变化分析结果,按抽取规则进行Pi演算语义的抽取。对于A组件来说,x事件和y事件是两个互斥的事件。在图2(a)中,若x事件触发时,A组件发送x消息,由A1状态迁移到A2状态,用Pi演算可以表示为其中x为消息,a为传递消息x的通道;之后若xr事件触发时,A组件接收消息xr,由A2状态迁移到结束状态,用Pi演算可以表示为ar<xr>,其中xr为消息,ar为传递消息xr的通道;若y事件触发时,A组件发送y消息,由A1状态迁移到A3状态,用Pi演算可以表示为其中y为消息,b为传递消息y的通道;之后若yr事件触发时,A组件接收消息yr,由A3状态迁移到结束状态,用Pi演算可以表示为br<yr>,其中yr为消息,br为传递消息yr的通道。因此,在以上Pi演算语义抽取的基础上,并根据状态迁移构成的可行流程,可以用Pi演算的进程表达式PA来描述A组件的行为,同样,对于B、C组件来说,也可以利用抽取规则对其行为分析的结果进行Pi演算语义的抽取,并根据状态迁移构成的可行流程,最终可以用Pi演算的进程表达式来描述各组件的行为。B、C组件Pi演算的进程表达式分别为:至此,分别得到了A、B、C组件基于Pi演算的行为描述,为组件间协作路径的生成奠定了基础。

步骤3:生成协作路径集合。

在进行组件协作行为推演之前,需要将组件间的协作看作为一个并发系统,用Pi演算中的进程组合描述组件间的协作,Pi演算中的进程组合可以用并行表达式表示。正如前面对A、B、C三个组件用Pi演算进程表达式表示之后,它们之间的交互协作可以表示为组合进程的形式,可以表示为:

>PS=PA|PB|PC=(a<x>.ar<xr>+b-<y>.br<yr>)|a<x>.ar-<xr>|b<y>.br<yr>>

在利用Pi演算中的进程组合形式表示组件间的协作的基础上,利用Pi演算的操作语义对组件间的协作行为进行推演。对上述组合进程表达式PS进行推演,可以得到如下所示的两个推演过程:

>(1)PS=PA|PB|PC=(a<x>.ar<xr>+b<y>.br<yr>)|a<x>.ar<xr>|b<y>.br_<yr>>

>ar<xr>|ar<xr>|b<y>.br<yr>b<y>.br<yr>>

>(2)PS=PA|PB|PC=(a<x>.ar<xr>+b<y>.br<yr>)|a<x>.ar<xr>|b<y>.br<yr>br<yr>|a<x>.ar<xr>|br<yr>a<x>.ar<xr>>

在第一个推演过程中,进程pa发出消息x,进程pb接收到消息x,随后进程pb发出到消息xr,进程pa接收到消息xr,之后进程pc等待接收消息y,此时进程pa和进程pb已执行完毕,因此无法继续向后推演。在第二个推演过程中,进程PA发出消息y,进程PC接收到消息y,随后进程PC发出消息yr,进程PA接收消息yr,进程PB继续等待接收消息x,此时进程PA和进程PC已执行完毕,因此无法继续向后推演。

在两个推演过程中,分别收集组件间的消息传递,得到了组件间的两条协作路径。因此,A、B、C三个组件间的协作路径集可以表示为P={p1p2},两条协作路径可以表示为p1=<m11m12>、p2=<m21m22>,其中m11=(A,x,B),m11=(B,xr,A),m21=(A,y,C),m21=(C,yr,A)。

步骤4:分析协作路径上的时间约束,生成带时间约束的协作路径集。

参照每个组件的具体说明信息,从中提取出的主要信息包括:(1)A、B、C三个参与者;(2)A参与者所具有的状态为AS1、AS2、AS3;B参与者所具有的状态为BS1、BS2;C参与者所具有的状态为CS1、CS2;(3)A组件向B组件发送的消息m1;B组件向A组件发送的消息m2;A组件向C组件发送的消息m3;C组件向A组件发送的消息m4。同时,参照系统中关于时间的需求信息,从中提取的主要信息包括:(1)消息m1、m2、m3、m4均耗时在0.5s内;(2)A组件完成一次交互的耗时在5s内,B组件在BS2状态耗时在1s内,C组件在CS2状态耗时在1.5s内。之后,按照时序图的构造原则,向时序图中添加所提取的各个构成部件,从而生成所需的时序图,如图3所示。

以图3所示A、B、C组件时序图为例,这里假设已经获取系统的协作路径集P={p1},p1=<m11m12m13m14>,其中m11=(A,m1,B),m12=(B,m2,A),m13=(A,m3,C),m14=(C,m4,A)。首先从P中取p1。之后,在时序图中定位p1中的每个消息,抽取时间约束并形成各消息的时间约束二元组,ST11=(0,0.5),ST12=(0,0.5),ST13=(0,0.5),ST14=(0,0.5),生成表示所传递消息的四元组mt11=(A,m1,B,ST11),mt12=(B,m2,A,ST12),mt13=(A,m3,C,ST13),mt14=(C,m4,A,ST14)。然后,在时序图中定位m11和m12,可直接获得其间隔时间约束,形成相邻消息间隔时间约束二元组IT11=(0,1);在时序图中定位m12和m13,通过给出的相关时间约束计算其间隔时间约束,形成IT12=(0,0.5);在时序图中定位m13和m14,可直接获得其间隔时间约束,形成IT13=(0,1.5)。至此,生成了带时间约束的协作路径pt1=<mt11IT11mt12IT12mt13IT13mt14>。由于协作路径集P中只有一条协作路径,因此最后生成带时间约束的协作路径集为PT={pt1}。

生成带时间约束的协作路径集之后,将该集合作为带时间约束的协作路径集,即组件间的协作行为。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号