不同Statechart语义比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第21卷第2期2005年6月长 沙 交 通 学 院 学 报JOURNAL OF CHAN GSHA COMMUN ICA TIONS UN IV ERSIT Y Vol.21 No.2J une 2005 文章编号:1000-9779(2005)02-0075-05
不同Statechart 语义比较
刘 震1,李聪怡2
(1.长沙民政职业技术学院,湖南长沙 410011;2.长沙理工大学,湖南长沙 410076)
摘 要:Statechart 是一种可视的规格描述语言,由于其直观的特性和强大的描述能力,一直
得到广泛的重视,Statechart 语义的关键在于执行步语义,不同的statechart 的变体有着不同
的描述能力,而应用于不同的领域。
本文以三种应用最为广泛的Statechart 语义为对象,以逆
时间的方式,从UML Statechart 的语义开始,通过对Statechart 功能的讨论,逐步引出了
STA TEMA TE Statechart 的语义和Pnueli 给出的Statechart 的语义,并进行了比较,显示出不
同语义的描述能力的差异和不同语义表达的思想。
关键词:Statechart ;有限状态机;形式化语义;软件规格
中图分类号:TP311.56 文献标识码:A
收稿日期:2005-02-25
作者简介:刘 震(1968—
),男,长沙民政职业技术学院讲师. Statechart 是Harel 于1987年提出的一种可视化规格语言[1],针对传统的FSM 之不足,Statechart 增加了层次、并发、广播通讯等概念,使Statechart 能适用于描述大型复杂的反应式系统。
Statechart 由于其直观的特性和强大的功能,因此得到了广泛的关注和应用。
Statechart 的语义问题,实际上就是描述一个Statechart 如何执行的过程,是应用Statechart 建模、仿真和验证的基础。
定义Statechart 的语义是一个非常复杂而困难的问题,对Statechart 语义的研究导致了大量不同类型的语义的定义,一些微妙的差别实际上导致了相同的Statechart 模型在不同语义下完全不同的意义。
Statechart 执行步step 的语义,是Statechart 功能最本质的反映,但不同的论文对此仍有一些不同的理解。
本文以UML [2],STA TEMA TE [3]和Pnueli [4]三种最具代表性的Statechart 语义为对象,重点讨论其各自对于Statechart 执行步的不同定义,探究其内在的联系。
从时间上看,UML 是比较晚出现的语义,而Pnueli 却是较早的,为了更好地阐述问题,本文采用逆时间方式,从UML 的语义开始,逐步将其推广到Pnueli 的语义。
通过对这三种Statechart 语义的比较,可以更好地理解以不同语义定义的模型的区别,针对实际的系统要求,采用相应的模型来进行构造和分析。
1 基本概念
这里,首先给出一个一般的Statechart 的概念,再基于这个一般的概念讨论语义的变化。
Statechart 可以看成FSM 的一种扩展,在传统的FSM (本文觉得不如说是EFSM )上,增加了层次、并发、广播通讯等概念,其中并发在一些文章中也称为正交。
Statechart 包括三种状态:and ,or ,basic 。
and 和or 状态都是组合状态,一个组合状态由它的子状态集构成,其中每个子状态也是这三种状态之一;basic 状态是不包含子状态的状态。
Statechart 的状态集构成一个树状结构,其叶子节点是basic 状态。
Statechart 的格局是一个状态集,满足条件:1)如果一个and 状态在集合中,则该状态的所有子状态也在该集合中;2)如果一个or 状态在集合中,则该状态有唯一一个子状态在该集合中。
图1 一个Statechart 例子
如图1,S 1为一个and 状态,A ,B 都是or 状态,
C ,
D ,
E ,
F ,
G ,
H 都是baisc 状态。
{S ,S 1,A ,B ,D ,
E}是一个格局,而{S ,S 1,A ,D ,C }不是一个格局。
Statechart 的变迁由5个部分(src ,trigger ,guard ,
action ,des )组成,src 是变迁出发状态,trigger 是变迁
出发的事件条件,guard 是变迁使能的谓词条件,action
是变迁产生的行为,包括一系列赋值语句的集合和产
生的事件集合。
一个变迁可能被激活当且仅当该变迁
的出发状态在当前的格局中,且触发事件条件和谓词
条件为真。
如图1中变迁标记a/b ,即触发事件为a ,
变迁执行产生事件为b ,为简化起见,图中没有标出谓
词条件。
设C 为Statechart 的一个格局,I 是一个输入事件集,T 是一个变迁的集合,Π是Statechart 所以可能的事件,I ΑΠ。
更进一步,定义函数relevant (C )返回一个变迁集合,其中所有的变迁的出发状态在格局(configuration )C 中,consistent (T )返回一个可以无冲突执行(变迁都是可以并发执行的)的变迁集,triggered (I )为事件集I 可以触发的变迁集合,则Statechart 的使能函数En (C ,I ,T )可以定义为:
En (C ,I ,T )=relevant (C )∩consistent (T )∩triggered (I ) 一个粗略描述Statechart 的执行:当Statechart 处于一个格局中时,由于事件的激发,激活了一个变迁集合,Statechart 通过一些规则选择一个可无冲突执行的变迁集合执行,从而进入下一个格局。
2 从UML Statechart 的语义到STATEMATE
UML 对于一个变迁的触发事件的定义最为简单(本文不讨论事件参数,而且由于事件可定义为对多个对象发送,简单地将其视为广播式传播),一个变迁中只有一个触发事件,即UML 不支持事件的组合。
这一点可以直接从其对执行步的定义看出。
UML 中的一个执行步,又称为一个R TC (run to com 2pletion )步是这样定义的[1]:每个状态机维护着一个事件队列,事件被一次一个的由状态机分派和处理,每个事件只有当其队列中排在前面的事件处理完成后才能被调度出队列进行分派和处理。
当一个事件的处理过程完成后,该事件即被消耗完。
显然,既然事件是一次一个地从队列中出来,而且上一个事件不能持续到下一个事件的处理过程,则事件刺激的对象,Statechart 的变迁的触发条件显然只能是一个事件。
这样,使能函数为:
En (C ,i ,T )=relevant (C )∩consistent (T )∩triggered (i ),i ∈Π
对图1而言,当Statechart 处在格局{S ,S 1,A ,B ,D ,E},如果此时事件队列分派出事件a ,则变迁a/b 执行,事件b 加入到队列中,但这不意味变迁b/c 在下一步可以被触发,因为可能有其他事件等在队列中,例如,若下一个事件是d ,则变迁d/b 被触发。
图2 与零时间假设相关的Statechart 例子
一个最直接的想法是:如果事件不是一次一个
地处理,而是能同时处理多个,则Statechart 的描述
功能不是更强吗?
同时处理多个事件,可以更方便地描述系统的
性质,这样却导致执行时间的假设前提不同,这是
UML 和STA TEMA TE 的一个重要不同。
同时处
理多个事件,如STA TEMA TE 的同步语义,需要基
于一个零时间假设:所有的变迁执行时间都可以忽
略不计,这样所有变迁执行时间都相同[3]。
前一步
的执行所产生的所有事件同时和接受的外部事件也6
7 长 沙 交 通 学 院 学 报 第21卷
作为下一步的激发事件,而对于UML ,前一步执行所产生的所有事件是按顺序进入队列,一个一个地被分派处理,这实际上在某种程度上反映了变迁中动作需要执行的时间的不同,而且,上一步产生的事件在UML 中可能比从外部接受的事件排在后面,这在STA TEMA TE 中是不可能的。
这种处理也体现了正交和并发语义的区别,如图2示例。
当以UML Statechart 的语义解释时,在接受输入事件为a 后,执行了两个变迁产生事件c 、d ,如果c 、d 以先事件d 后事件c 进入队列,则右边的两个变迁都可以被相继激发。
相反,如果以STA TEM 2A TE Statechart 的语义解释,事件c 、d 同时作为下一步的输入,则右边触发事件为d 的变迁可以马上激活,而触发事件为c 的变迁由于以前产生的事件c 已经被消耗,因而不能激活。
这样,STA TEMA TE 同步时间模型的使能函数为:
En (C ,I ,T )=relevant (C )∩consistent (T )∩triggered (I ),I ΑΠ
另一个想法是关于链式反应。
链式反应是指Statechart 每步执行的变迁集产生的变迁直接触发了其他的变迁,这个反应一直继续直到系统达到一个稳态,而在反应过程中系统对外来事件不作反应。
链式反应一般基于零时间假设,同时需要区分外来事件和内部事件。
STA TEMA TE 异步时间模型[3]定义为链式反应语义,其与同步时间模型的区别在于,同步时间模型每步完成后即可接受环境事件以及这一步所产生的事件作为下一步的输入事件集,而异步时间模型只有当系统达到一个稳定状态,在没有外部事件输入的情况下,此时Statechart 已经没有可能激活的变迁,然后才能接受外部事件。
STA TEMA TE 异步时间模型的使能函数仍然可认为:
En (C ,I ,T )=relevant (C )∩consistent (T )∩triggered (I ),I ΑΠ
此时使能函数描述的是链式反应中的一个微步。
一个链式反应的第n 微步产生的事件作为第n +1微步输入的事件。
文献[5]将UML Statechart 的语义等同于STA TEMA TE Statechart 异步时间语义,这样处理将导致UML 中有两个队列,一个是外部事件队列,一个是内部事件队列,笔者在其他相关文献[6,7]中没能看到这种做法的根据,并且,如果设定了两个队列,由于UML 一次只能有一个事件被处理,则这两个队列的处理必然有优先级不同,这也没有看到相关说明。
如果希望UML 也能进行链式反应,则同时还要修改UML 的R TC 语义,即对于外部事件满足R TC ,此时一个外部事件的完毕意味着该事件引发的所有产生事件都已完毕,Statechart 在没有接受新的外部事件时处于等待状态,对于外部事件激活的变迁产生的事件显然不能满足R TC ,否则陷入一个逻辑上的矛盾。
例如图1中,若事件队列中仅仅有事件a ,当a 被分派出队列,则变迁a/b 的执行产生事件b ,按理变迁b/c 可以得到触发,但a 事件没有结束(根据新的R TC 语义),则b 永远不能被分派出队列。
3 从STATEMATE 语义到Pnueli 的语义
无论UML 或STA TEMA TE 的语义,对于事件的处理有一个共同点,即一个输入事件集仅仅存在图3 全局一致性问题的Statechart 例子于该事件集引起的Statechart 的一步执行过程中,一步执行完,事件
集即被消耗而消失,甚至对于异步时间模型的链式反应,如果把整个
链式反应视为一个大执行步,这一大步由一个序列的微步构成,触发
每个微步的事件集仍然只能存在于这个微步的执行过程中。
本文考
虑一种链式反应的推广的情况:整个链式反应的触发事件和产生的
事件在该链式反应整个一大步中产生后便一直存在,直到这一大步
完成才消失。
这种定义接近于Pnueli 的语义[4]。
显然,对同一个模型,这两种语义可能导致不同的执行情况,更
重要的是,Pnueli 的语义产生了一个全局一致性问题,如图3所示。
若输入事件没有a ,则变迁a/b 可以触发,产生事件b ,又触发变迁b/a ,产生事件a ,事件a 与变迁a/b 触发的条件矛盾,因此这
77第2期 刘 震,李聪怡:不同Statechart 语义比较
两个变迁不能在一个执行步中执行。
STA TEMA TE 因为a 是作为下一步的输入,故不存在这个问题。
更进一步的情况是,对于Pnueli 语义,Statechart 格局的变化不是发生在每个微步完成时,而是发生在一大步完成时,这意味着:根据Pnueli 的语义,只有一个大步才能导致格局的变化,而对于STA TE 2MA TE 的语义,每个微步也能产生格局的变化。
若定义函数generated (T )是变迁集合T 所产生的所有事件集,则Pnueli 语义的使能函数为:
En (C ,I ,T )=relevant (C )∩consistent (T )∩triggered (I ∪generated (T )),I ΑΠ
4 结 语
Statechart 是一种可视的规格描述语言,自从被提出来后,由于其直观的特性和强大的描述能力,一直得到广泛的重视。
Statechart 语义的关键在于执行步语义,不同的Statechart 的变体有着不同的描述能力而应用于不同的领域。
执行步语义的差别对于Statechart 用户而言尤为重要,同样的一个State 2chart 模型在不同语义的解释下可能有非常微妙却重要的差别。
本文以三种应用最为广泛的Statechart 语义为对象,以逆时间的方式,从UML Statechart 的语义开始,通过对Statechart 功能的讨论,逐步引出了STA TEMA TE Statechart 的语义和Pnueli 给出的Statechart 的语义,并进行了比较,显示出不同语义的描述能力的差异和不同语义表达的思想。
本文的特点在于,不是直接对三种不同的Statechart 模型进行比较,而是着重于其内在的逻辑关系发展,从而得到比较结果。
参考文献:
[1] Harel D.Statecharts :a visual formalism for complex systems[J ].Science of Computer Programming.1987;8(3).
[2] OM G unified modeling language specification (Version 1.4)[S].Needham :Object Management Group ,Inc.,2001.
[3] Harel D ,Naamad A.The STA TEMA TE semantics of statecharts[J ].ACM Transactions on S oftware Engineering and
Methodology ,1996.
[4] Pnueli A ,Shalev M.What is in a step :on the semantics of statecharts[J ].Theoretical Aspects of Computer S oftware ,
volume 526of Lecture Notes in Computer Science ,pp :244~264,1991.
[5] Hong H S ,Lee I ,S okolsky O ,Cha S D.Automatic test generation from statecharts using model checking [D ],In
Workshop on Formal Approaches to Testing of S oftware.BRICS Notes Series ,2001.
[6] Latella D ,Majzik I ,Massink M.Towards a formal operational semantics of UML statechart diagrams[D ],In Formal
Methods for Open Object 2Based Distributed Systems ,III.K luwer Academic Publishers ,1999.
[7] Lilius J ,Porres Paltor I.The semantics of UML state machines[J ].Technical Report ,Turku Centre for Computer Sci 2
ence ,1999.
A Comparison of Different Statecharts Semantics
L IU Zheng 1,L I Cong 2yi 2
(1.Changsha S ocial Work College ,Changsha 410011,China ;
2.Changsha University of Science and Technology ,Changsha 410076,China )
Abstract :Since introduced by Harel in 1987,Statechart has become a popular notion for specifying complex reactive systems.The most important part of Statecharts semantics is step ,which defines how a Statechart is executed step by step ,and the difference of step semantic may induce different executing result to the same test model.The authors have compared three important Statechart variants with logic development of step semantic.The description clearly expresses the differences of ability and idea of three Statecharts.
K ey w ords :Statechart ;FSM ;formal semantic ;software specification 8
7 长 沙 交 通 学 院 学 报 第21卷 。