Statecharts:限制状态执行的次数

时间:2016-04-01 17:40:30

标签: uml limit state statechart

如何在状态图表中以图形方式表示状态永远不会执行超过一定次数?这样它就不会以无限循环结束。像

这样的东西
assert enterPIN(int p) <= 3

然后分支到另一个状态,如果条件违反。我应该以某种方式将它包括在守卫中吗?还是在州活动?

编辑:

(CheckPIN)--[invalid]-->(counter| + inc.)--[counter>3]-->(retainCard)
    ^                      |
    |-----[counter<=3]-----|

朝这个方向发展的事情是什么?

  

图例:( StateName |(+ - )活动),转换: - &gt;,[Guard]

2 个答案:

答案 0 :(得分:2)

给出一个图形答案:

enter image description here

这就是我的模型。

通常不需要counter对象,因为它是一个简单的计数器,并且很明显休息/增量将引用一个公共计数器。此计数器也没有真正的<<flow>>。一个非刻板的依赖也足够了。

答案 1 :(得分:2)

我认为你的问题在杂草中太过分了。虽然您可以建模到无穷小的细节,但您应该致力于创建一个更耐用的模型,不需要随着时间的推移而变化。

小时。 S. Lahman在他的书Model-Based Development: Applications中使用摩尔状态机是一个很好的例子。摩尔状态机是在进入状态时发生动作的地方,而不是在状态之间的转换上发生动作的地方。他使用摩尔状态机的最令人信服的理由是,转换不会退化为一系列函数调用,而是发布已完成的事物。

以下是如何避免所有细节并创建更持久的模型的示例:

enter image description here

您会注意到 事件的发生方式是完全封装的。例如,挑战用户可能涉及PIN号,视网膜扫描或皮下芯片。每种身份验证模式允许的最大故障可能完全不同。该政策可以在其他地方代表。