【问题标题】:State machine diagram: how to tell that one transition induces another?状态机图:如何判断一个转换引发另一个?
【发布时间】:2012-12-13 21:02:07
【问题描述】:
我有一个实时聚合声音的类。聚合意味着它计算声音参数,如平均振幅、噪音水平等,时间单位比声音帧长。帧是 PCM,持续时间不到毫秒,而聚合单元是 1/10 秒或更长。
我想画这个类的UML状态机图。
它由两个较小的状态图组成,一个跟踪帧,另一个跟踪聚合单元,按周期。如果第一个图检测到接收到完整的帧,它应该踢第二个图,在那里处理帧并更新一个单元的聚合数据。
下面是我画的。
我的问题是:如何画出第一台机器从全帧状态到初始状态的转换引发第二台机器的转换?
我将第二张图上的问题转换命名为“框架”。
【问题讨论】:
标签:
audio
uml
real-time
aggregate-functions
state-machine
【解决方案1】:
您需要的是,当输入Full frame received 时,第一台机器向第二台机器发送一个事件。有几种方法可以做到这一点。您可以在通往Full frame received 的过渡上添加效果,或者,您还可以为Full frame received 定义一个“进入操作”。
一旦您在输入Full frame received 时发送了一个事件,您就可以在第二个状态机中定义一个对其作出反应的转换。
在UML Spec. 2.4.1 中,“进入动作”在第 561 页描述,effect 在第 581 页的转换。