1

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

assert enterPIN(int p) <= 3

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

编辑:

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

这个方向的东西?

图例:(StateName | (+-)activity),转换:-->,[Guard]

4

2 回答 2

2

给出图形答案:

在此处输入图像描述

这就是我要建模的方式。

counter通常不需要该对象,因为它是一个简单的计数器,而且很明显剩余/增量将引用一个公共计数器。<<flow>>那个柜台也没有真正的东西。一个没有刻板印象的依赖也足够了。

于 2016-04-01T19:31:55.160 回答
2

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

HS Lahman 在他的《基于模型的开发:应用程序》一书中为使用摩尔状态机提供了一个极好的案例。摩尔状态机是在进入状态时发生动作的地方,而不是在状态之间转换时发生动作的地方。他使用 Moore 状态机最令人信服的原因是转换不会退化为一系列函数调用,它们是对已完成事物的公告。

这是一个如何避免所有细节并创建更耐用模型的示例:

在此处输入图像描述

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

于 2016-04-02T03:36:27.240 回答