温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

EA画UML状态图中如何实现状态机之间的同步

发布时间:2021-12-20 14:12:50 来源:亿速云 阅读:303 作者:小新 栏目:大数据

这篇文章主要为大家展示了“EA画UML状态图中如何实现状态机之间的同步”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“EA画UML状态图中如何实现状态机之间的同步”这篇文章吧。

首先还是回顾一下系统的构成。还是请出对象图。

EA画UML状态图中如何实现状态机之间的同步

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

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

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

状态机之间的同步

在这个设计中,已经尽量减少了设备之间的耦合性,只留下TrafficSystemEngine和各个设备之间的交互。既然是多线程,那么就需要处理同步问题,具体是:

  1. 系统启动时,等所有的设备都准备好了以后,TrafficSystemEngine开始执行状态切换。


  2. 系统正常执行期间,状态机之间通过信号/事件进行交互,这一部分已经在前面的文章说明,本文省略。

  3. 系统停止时,所有设备的停止过程结束以后,整个系统停止。




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

EA画UML状态图中如何实现状态机之间的同步

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

两个状态有意用了两种表达方式,在本例中表达的语义相同。

建模中的拆分和组装

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

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

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

以上是“EA画UML状态图中如何实现状态机之间的同步”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI