一种基于自适应序列图转换为时间自动机的方法技术

技术编号:21246515 阅读:29 留言:0更新日期:2019-06-01 07:04
本发明专利技术公开了一种基于自适应序列图转换为时间自动机的方法,将自适应序列图中节点信息转换为UPPALL中的全局参数声明;将对象转换为UPPALL中的进程;将Local转换为模板的私有参数声明,将状态start s转换为模板中的位置T;设置迁移FL→T的值为状态S的更新属性值;设置迁移FL→T的约束为状态S的组合片段约束和状态S与源状态FS之间的状态间约束;若源状态FS存在发送或接收消息,设置迁移FL→T的通道message!或message?;若状态S不为over状态,设置源状态FS为状态S,设置源位置FL为位置T,遍历所有节点及序列图中所有对象。提高了建模效率、可靠性及自适应软件的开发效率。

A Method of Converting Adaptive Sequence Diagram into Time Automata

The invention discloses a method of transforming node information in adaptive sequence diagram into global parameter declaration in UPPALL based on adaptive sequence diagram, transforming object into process in UPPALL, transforming Local into private parameter declaration of template, transforming state start s into position T in template, and setting the value of migration FL_T as updated attribute value of state S. Set the constraints of migrating FL_T as the combination fragment constraints of state S and the state constraints between state S and source state FS; if the source state FS has the message to send or receive, set the channel message of migrating FL_T! Or message? If the state S is not over state, the source state FS is set as state S, and the source position FL is set as position T, traversing all nodes and all objects in the sequence diagram. It improves the efficiency of modeling, reliability and the development efficiency of adaptive software.

【技术实现步骤摘要】
一种基于自适应序列图转换为时间自动机的方法
本专利技术是对自适应序列图模型提出的一种自动转换算法,旨在使得该技术处理后的自适应软件模型能够通过UPPAAL验证自适应软件的可靠性。
技术介绍
随着计算机技术的不断发展,软件的规模和复杂性不断增加,希望软件系统具有多功能、可靠性等诸多特点,这些给软件开发、维护方面带来极大的困难。因此,提出了软件自适应技术,以应对环境和用户需求变化的自适应能力,使得软件在运行过程中实时获取上下文信息,并根据预定好的方案对自身进行调整,便以应对需求变化的影响。具有这种自适应调整能力的软件称为自适应软件。为了提高自适应软件开发的效率以及模型的可靠性,国内外学者都做了大量研究,杨启亮等人改进了IBM提出的MAPE-K自治计算模型,提出了MV4SAS模型,并将可视化的UML序列图模型与状态图进行有机结合,提出了用以描述自适应软件的自适应序列图模型。
技术实现思路
本专利技术针对现有技术的不足,提出了一种基于自适应序列图的转换时间自动机方法。步骤一:将自适应序列图的Note信息转换为UPPAAL中的全局参数声明;若Note节点中存在整型变量,则在UPPAAL相应声明一个整型变量;若Note中存在时钟变量,则在UPPAAL相应声明一个时钟变量;若Note中存在不变量,则在UPPAAL中相应声明一个不变量。步骤二:将对象ObjectLifeline转换为UPPAAL中的进程,在UPPAAL中声明一个模板取名为ID,在模型声明system项中声明进程,以ID中第一个字母小写作为进程名称,并在UPPAAL模型声明实例项中模板进行实例化得到进程。步骤三:对象ObjectLifeline中本地变量转换为模板的私有参数声明;若本地变量Local存在整型变量,则在模板相应声明一个整型变量;若本地变量Local存在时钟变量,则在模板相应声明一个时钟变量;若本地变量Local存在不变量,则在模板中相应声明一个不变量。步骤四:对象ObjectLifeline中状态State节点转换为模板中的位置节点;若状态S为Over状态且模板未声明OverLocation,在模板中声明一个紧迫位置T,否则获取模板中已经声明的位置T;若状态S是对象ObjectLifeline中第一个状态,在模板中声明一个初始位置T,若状态S的状态内部约束属性值为t<=n形式,设置位置T的不变式属性值为状态S的状态内部约束属性值,并转到步骤七;否则在模板中声明一个位置T,若状态S的状态内部约束属性值为t<=n形式,设置位置T的不变式属性值为状态S的状态内部约束属性值,将位置T设置为常规位置;若状态S的状态内部约束的属性值为t<=0形式,将位置T设置为紧迫位置,设置位置T的不变式属性值为t<=0;若状态S的状态内部约束的属性值为must,将位置T设置为坚定位置,设置位置T的不变式属性值为t<=0;其中t表示时钟变量,n表示常数;步骤五:在模板中声明一条迁移FL→T;若状态S的状态内部约束属性值为t==n形式,设置迁移FL→T的卫士约束属性值为t==n,将位置T设置为常规位置;步骤六:设置迁移FL→T的属性值为状态S的更新属性值;设置迁移FL→T的卫士约束值为状态S的组合片段约束和状态S与源状态FS之间存在的状态间约束;设置迁移FL→T的选择值为状态S的用户参数属性值;若状态FS存在发送消息message,设置迁移FL→T的通道属性值为message!;若状态FS存在接收消息message,设置迁移FL→T的通道属性值为message?;步骤七:若状态S不为Over状态,设置源状态FS为状态S,设置源位置FL为位置T,返回步骤四继续执行,直到遍历完对象ObjectLifeline中状态State节点,返回步骤二,直到遍历完自适应序列图中所有对象ObjectLifeline,结束。本专利技术的有益效果:专利技术旨在降低自适应软件建模和验证的复杂度,提高了自适应软件的建模效率、自适应软件的可靠性以及自适应软件的开发效率。具体实施方法:(1)ObjectLifeline转换为UPPAAL中的进程(Process)自定义序列图中ObjectLifeline为自适应类的实例,即为{monitor,analyzer,planner,executer,knowledgebase,user,environment,soft-self},生命线(lifeline)是一条虚线,清晰的描述了生命周期内的状态变化。UPPAAL中模板(Template)带有参数,通过给模板传递参数可以实例化得到进程(Process)。UPPAAL中系统由并发进程组成,每个进程都由时间自动机进行建模,即每个进程带有位置、迁移以及变量信息。将生命周期内的状态变化映射为UPPAAL中的一个模板,通过实例化模板得到的进程作为UPPAAL中系统交互的实体。(2)ObjectLifeline名称转换为模板(Template)声明与进程(Process)声明在UPPAAL中需要声明组成系统的进程,即先声明进程名称,再通过实例化模板(Template)得到进程为了便于转换,在建立自适应模型时对ObjectLifeline命名规则如下:Name→<<ClassName>>:ID以生命线名称中“:”为分割点,取后半部分ID作为模板(Template)名称,在UPPAAL中模型声明system项中声明进程,以ID中第一个字母小写作为进程名称,并在UPPAAL模型声明实例项中对模板进行实例化得到进程。(3)Note信息转换为UPPAAL中的全局参数声明(globaldeclarations)UPPAAL中的全局声明(globaldeclarations)包含整数变量、时钟、通道和常量声明。全局声明是TAN中所共有的数据变量或时钟,并非单个TA所存在的。在自适应序列图中Note组件可以对某个元素进行补充说明,也可以对自适应序列图进行补充说明,因此在建模时在Note组件中添加全局变量声明以便于转换。(4)本地变量(Local)转换为模板(Template)的参数声明(localdeclarations)模板(Template)的参数声明与上文全局声明的区别在于私有参数声明是某个模板(Template)独有的参数声明,即该声明数据只能在该模板(Template)中使用,类似于对象中的私有变量,声明数据类型与全局声明中数据类型一致。为了方便转换,本文在自适应序列图中Lifeline组件中添加Local标签,对应模板(Template)的参数声明(localdeclarations)(5)State节点转换为模板(Template)中位置(Location)状态图(StatechartDiagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应,即描述一个对象所处的可能状态以及状态之间的转移。自定义序列图的描述的状态与状态图中所描述的一致,即在生命周期中的一种状况,处于某个状态的对象必然会满足某些条件,执行某些动作或者等待某些事件。转移是两个状态之间的关系,它表示当发生指定事件并且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态。当发生这种状态变更时,即“触发本文档来自技高网...

【技术保护点】
1.一种基于自适应序列图转换为时间自动机的方法,包括以下步骤:步骤一:将自适应序列图的Note信息转换为UPPAAL中的全局参数声明;若Note节点中存在整型变量,则在UPPAAL相应声明一个整型变量;若Note中存在时钟变量,则在UPPAAL相应声明一个时钟变量;若Note中存在不变量,则在UPPAAL中相应声明一个不变量;步骤二:将对象Object Lifeline转换为UPPAAL中的进程,在UPPAAL中声明一个模板取名为ID,在模型声明system项中声明进程,以ID中第一个字母小写作为进程名称,并在UPPAAL模型声明实例项中对进程进行实例化;步骤三:对象Object Lifeline中本地变量转换为模板的私有参数声明;若本地变量Local存在整型变量,则在模板相应声明一个整型变量;若本地变量Local存在时钟变量,则在模板相应声明一个时钟变量;若本地变量Local存在不变量,则在模板中相应声明一个不变量;步骤四:对象Object Lifeline中状态State节点转换为模板中的位置节点;若状态S为Over状态且模板未声明Over Location,在模板中声明一个紧迫位置T,否则获取模板中已经声明的位置T;若状态S是对象Object Lifeline中第一个状态,在模板中声明一个初始位置T,若状态S的状态内部约束属性值为t<=n形式,设置位置T的不变式属性值为状态S的状态内部约束属性值,并转到步骤七;否则在模板中声明一个位置T,若状态S的状态内部约束属性值为t<=n形式,设置位置T的不变式属性值为状态S的状态内部约束属性值,将位置T设置为常规位置;若状态S的状态内部约束的属性值为t<=0形式,将位置T设置为紧迫位置;若状态S的状态内部约束的属性值为must,将位置T设置为坚定位置;其中t表示时钟变量,n表示常数;步骤五:在模板中声明一条迁移FL→T;若状态S的状态内部约束属性值为t==n形式,设置迁移FL→T的卫士约束属性值为t==n,将位置T设置为常规位置;步骤六:设置迁移FL→T的属性值为状态S的更新属性值;设置迁移FL→T的卫士约束值为状态S的组合片段约束和状态S与源状态FS之间存在的状态间约束;设置迁移FL→T的选择值为状态S的用户参数属性值;若状态FS存在发送消息message,设置迁移FL→T的通道属性值为message!;若状态FS存在接收消息message,设置迁移FL→T的通道值为message?;步骤七:若状态S不为Over状态,设置源状态FS为状态S,设置源位置FL为位置T,返回步骤四继续执行,直到遍历完对象Object Lifeline中状态State节点,返回步骤二,直到遍历完自适应序列图中所有对象Object Lifeline,结束。...

【技术特征摘要】
1.一种基于自适应序列图转换为时间自动机的方法,包括以下步骤:步骤一:将自适应序列图的Note信息转换为UPPAAL中的全局参数声明;若Note节点中存在整型变量,则在UPPAAL相应声明一个整型变量;若Note中存在时钟变量,则在UPPAAL相应声明一个时钟变量;若Note中存在不变量,则在UPPAAL中相应声明一个不变量;步骤二:将对象ObjectLifeline转换为UPPAAL中的进程,在UPPAAL中声明一个模板取名为ID,在模型声明system项中声明进程,以ID中第一个字母小写作为进程名称,并在UPPAAL模型声明实例项中对进程进行实例化;步骤三:对象ObjectLifeline中本地变量转换为模板的私有参数声明;若本地变量Local存在整型变量,则在模板相应声明一个整型变量;若本地变量Local存在时钟变量,则在模板相应声明一个时钟变量;若本地变量Local存在不变量,则在模板中相应声明一个不变量;步骤四:对象ObjectLifeline中状态State节点转换为模板中的位置节点;若状态S为Over状态且模板未声明OverLocation,在模板中声明一个紧迫位置T,否则获取模板中已经声明的位置T;若状态S是对象ObjectLifeline中第一个状态,在模板中声明一个初始位置T,若状态S的状态内部约束属性值为t<=n...

【专利技术属性】
技术研发人员:陈滨蔡运克方景龙魏丹王兴起
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1