EA&UML日拱一卒-状态图::状态机之间的同步

网友投稿 592 2022-10-12

EA&UML日拱一卒-状态图::状态机之间的同步

EA&UML日拱一卒-状态图::状态机之间的同步

今天是交通信号系统连载的最后一篇,首先还是回顾一下系统的构成。还是请出对象图。

这个系统的基本设计如下:

每个设备都拥有自己的状态机,在独立的线程中执行,这些状态机相互独立,互不干扰。

交通信号系统引擎TrafficSystemEngine也拥有状态机,也是运行在一个独立的线程中。它的职责是控制系统的到全体动作。

状态机之间的同步

TrafficSystemEngine和各个设备之间的交互。既然是多线程,那么就需要处理同步问题,具体是:

系统启动时,等所有的设备都准备好了以后,TrafficSystemEngine开始执行状态切换。系统正常执行期间,状态机之间通过信号/事件进行交互,这一部分已经在前面的文章说明,本文省略。系统停止时,所有设备的停止过程结束以后,整个系统停止。

说起来挺玄,画成状态图就是下面这样。

TrafficSystemEngine,不再说明。这里只说明其他两个状态:Setup状态用于等待所有设备初始化完成;Shutdown用于状态等待所有设备的Shutdown结束处理结束。

建模中的拆分和组装

对一个系统建模,一般需要经历一个拆分和组装的的过程。

拆分就是前面讲到的庖丁解牛,只不过分解的对象是交通信号系统。我们将系统拆分成各个子系统或者说模块,然后对它们分别建模。这样既可以降低建模的难度,又可以得到可复用的模块。

建模活动中的组装既是设计的一部分,也是检验设计的过程。在组装过程中可以发现各模块设计中的不足。否则的话这些问题恐怕就要等到结合测试时才能发现了。

参考资料:

14.2 Behavior StateMachines (6)--子状态机状态

14.2 Behavior StateMachines (7)--为状态

14.2 Behavior StateMachines (10) --记法

打开方法如下:

写在文章的最后

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:How to Switch Between GDM and KDM on Ubuntu
下一篇:CCFBLOG- Go 博客程序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~