您好,登录后才能下订单哦!
本篇内容介绍了“协议状态机的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
概要
协议状态机用于表现使用方法的协议。协议状态机表示事件发生的合法的序列,关联的行为类目的行为必须遵循这个序列。状态机记法是一种定义类目的行为特征的调用次序的简便方式。
协议状态机可以和类目,接口和端口关联。
14.4.2 Abstract Syntax
语义
协议状态机
协议状态机总是在类目的上下文中定义。它定义了类目的在一个给定的协议状态中,什么条件下,哪个行为特征可以被调用。这样,从外部观点定义了类目的某个实例的生命周期的规范。
协议状态机帮助定义类目的行为特征被调用的顺序,它明确了:
它们可以被正确调用时的行为上下文(即:哪个状态和前置条件)
正确的调用次序,
期待的调用输出(后置条件)
协议状态机向协作者呈现了一个包含协议状态机的类目的外部视图。这种扩展依据的是通过独立的行为特征的前置条件和后置条件可以捕捉到什么,协议状态机也可以定义不同特征的正确的调用次序。这是通过状态机定义实现的,在这个定义中,为了保证调用的正确性,功能调用的触发条件和迁移的定义后置条件的监护条件必须使用以保证调用的正确性。作为过去的调用序列的结果,状态机的状态(协议状态)捕捉协议的状态并且也是前置条件的一种形式。
因为协议状态机提供的是类目行为的“黑盒”视图,状态不必和内部行为状态机的状态相对应。
协议状态机可以有不同的形式:
陈述性协议状态机,它定义了行为特征调用的有效迁移。不定义行为特征调用的效应。这种类型的定义只是向上下文类目的用户提供一种约定。
可执行(执行时)协议状态机,它定义了一个对象可以接受和处理的所有事件发生和它们触发的迁移。在这种情况下,正当的行为特征调用迁移必须和被触发的迁移或运行时例外完全匹配。方法执行的调用结果和被调用的行为特征相关联。
两种解释的定义都相同,唯一的区别就是后一种解释提供了直接的动态含义。
在行为状态机中遇到的更加复杂的形式,例如复合迁移,子状态机,组合状态,并发正交区域等,也可以用于协议状态机。例如并发区域可以用于表现一个实例同时拥有多个活动状态的情况。子状态机和复合迁移可以用于分解复杂的协议状态机。
一个类目可以有多个协议状态机。例如下面的场景:一个类目拥有多个父母(类目),每个拥有自己的协议状态机,且协议之间为正交关系。另一种方式是只拥有一个协议状态机,但是在它的并发区域中包含不同的状态机。
State in ProtocolStateMachines(协议状态机中的状态)
协议状态机的状态被暴露给它们的上下文类目的用户。一个协议状态表现了它的上下文类目的一个外部可见的稳定情况:当类目的某个实例没有处理任何的行为特征调用时,那个实例的用户总是知道它的状态构成。
协议状态机的状态不允许定义进入,退出和doActivity行为。
协议迁移
协议迁移定义了上下文类目的行为特征在被调用时允许的迁移。协议迁移有如下特征:
· a pre-condition (preCondition), which specializes the guard attribute of Transition,
定义迁移的监护属性的前置条件,
· a trigger,
触发条件,
· a post-condition (postCondition).
后置条件。
协议迁移定义了上下文类目的实例可以被调用的关联(引用)特征,如果它位于初始状态内,有监护条件,被迁移完成触发,那么这个实例将会处于拥有后置条件的目标状态中。
协议迁移没有关联的效应行为。作为行为特征调用的结果,协议迁移的意味着与被调用行为特征相关联的方法的执行。在其他类型触发条件的情况下,影响是没有定义的,除非该迁移会引出另外一个满足特定前置条件的状态,这时不考虑与这个迁移相关联的任何行为。
非预期触发接受
关于没有和当前状态,状态不变量或前置条件匹配的事件发生的接受的解释没有被定义(即,它可以被忽略,拒绝或推迟;升起异常;或作为错误而终止应用的执行)。在语义上它对应于前置条件的违反,在UML中没有为它设定预先定义的行为。
非预期行为
作为迁移的非预期结果(错误的完了状态,或完了状态不变量,或后置条件),非预期行为的解释也无定义。然而它应该被解释成协议状态机实现的错误。
操作的前置和后置条件的等价性
在语义上,协议迁移可以从操作的前置和后置条件两个方面来解释。例如图14.42中的迁移可以按以下方式解释:
1 The operation “m1” can be called on an instance when it is in the ProtocolState “S1” under the condition “C1.”
当实例处于协议状态"S1",满足条件“C1”时,操作m1可以被调用。
2 When “m1” is called in the ProtocolState “S1” under the condition “C1,” then the ProtocolState “S2” must be reached under the condition “C2.”
当处于协议状态“S1”s时,“m1”被调用,那么满足条件”C2“时,必须到达协议状态"S2“。
被多个迁移引用的操作
图14.43表示了在协议状态机中,多个迁移可以引用同一个操作的例子。在这个情况下,所有的前置和后置条件都被组入操作的前置(/后置)条件,表示如下
Operation m1()
Pre: in state S1 and condition C1
or
in state S3 and condition C3
Post: if the initial condition was “in state S1 and condition C1”
then in S2 and C2
else
if the initial condition was “in state S3 and condition C3”
then in S4 and C4
协议状态机为它的迁移所引用的每个行为特征定义了所有的协议迁移。
没有被引用的操作
如果行为特征没有被任何的行为特征引用,那么该操作可以被协议状态机的任何状态调用,并且不会改变当前状态或前置/后置条件。
在协议状态机中使用其他类型的事件
除了调用行为特征,可以使用另外的事件来表现协议状态机的行为。不是行为特征调用的触发条件可以用于定义协议迁移。这种定义是对于行为状态机外部环境的需求。也就是说,只有满足协议状态机定义的条件时,向上下文类目发送事件发生才是合乎要求的。与此有关的准确的语义解释没有被定义。
协议一致
协议状态机可以被定义为更加具体的协议状态机。协议一致声明了具体的协议状态机定义了一个协议,它与泛用协议状态机定义的协议一致。
协议状态机属于类目。该类目拥有一个泛用状态机,而且通常情况下,也会通过泛化和实现关联一个具体的状态机。
协议一致表示一个声明:为泛用协议状态机定义的所有规则,约束(状态不变量,协议状态机引用的操作的前置/后置条件)都会适用与具体的协议状态机。
记法
协议状态机
协议状态机的记法和行为状态机非常相似。只是通过靠近状态机名称的«protocol»关键词从图形上区别了协议状态机图。
与协议状态机中的状态相关联的不变量的文字表达式的表示方法,是通过将其封装入括号中,放到状态名之后或之下。
协议迁移
使用通常的状态机中的记法。区别是不会定义效应行为和可以有后置条件。后置条件和监护条件的语法相同,但是迁移语法的最后表示。
“协议状态机的知识点有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。