如何在状态图表中以图形方式表示状态永远不会执行超过一定次数?这样它就不会以无限循环结束。像
这样的东西assert enterPIN(int p) <= 3
然后分支到另一个状态,如果条件违反。我应该以某种方式将它包括在守卫中吗?还是在州活动?
编辑:
(CheckPIN)--[invalid]-->(counter| + inc.)--[counter>3]-->(retainCard)
^ |
|-----[counter<=3]-----|
朝这个方向发展的事情是什么?
图例:( StateName |(+ - )活动),转换: - &gt;,[Guard]
答案 0 :(得分:2)
给出一个图形答案:
这就是我的模型。
通常不需要counter
对象,因为它是一个简单的计数器,并且很明显休息/增量将引用一个公共计数器。此计数器也没有真正的<<flow>>
。一个非刻板的依赖也足够了。
答案 1 :(得分:2)
我认为你的问题在杂草中太过分了。虽然您可以建模到无穷小的细节,但您应该致力于创建一个更耐用的模型,不需要随着时间的推移而变化。
小时。 S. Lahman在他的书Model-Based Development: Applications中使用摩尔状态机是一个很好的例子。摩尔状态机是在进入状态时发生动作的地方,而不是在状态之间的转换上发生动作的地方。他使用摩尔状态机的最令人信服的理由是,转换不会退化为一系列函数调用,而是发布已完成的事物。
以下是如何避免所有细节并创建更持久的模型的示例:
您会注意到 事件的发生方式是完全封装的。例如,挑战用户可能涉及PIN号,视网膜扫描或皮下芯片。每种身份验证模式允许的最大故障可能完全不同。该政策可以在其他地方代表。