【问题标题】:How to specify OCL constraint in activity diagram using Eclipse Papyrus?如何使用 Eclipse Papyrus 在活动图中指定 OCL 约束?
【发布时间】:2018-07-19 20:11:49
【问题描述】:

详情

我有一个在 Eclipse Papyrus 中设计的登录部分的活动图。现在我必须为以下条件编写 OCL 约束:

  1. 用户名必须是字符串且
  2. 密码必须是数字+特殊字符且长度大于 10 个字符
  3. 用户最多可以尝试 5 次,否则系统将锁定登录

我的努力

我已经在 this 这样的类图中完成了这项工作,但不知道如何在活动图中应用约束。我已经阅读了很多文章,观看了视频和研究论文,并检查了诸如 thisthisthisthis 之类的问题,但没有一个提供正确的答案。

Sample of my activity diagram image

【问题讨论】:

  • 我已经在 [link] (stackoverflow.com/questions/50315035/…) 上提出了问题,但没有得到正确回答,我仍然感到困惑。
  • 如果您想要一个明智的答案,您需要提供一个您最佳尝试的压缩项目。你真的不能指望这个、这个和这个的零碎信息会被一个受访者拼凑起来。
  • @EdWillink 你的意思是我必须在这里上传我的项目文件??
  • 是的。如果你想让我看看你的模型,你必须提供你的模型。 Eclipse OCL 特定的错误更常见于eclipse.org/forums/index.php/f/26
  • @EdWillink 这里dropbox.com/s/45ngodt508s99yx/… 是我的项目文件。

标签: eclipse constraints uml ocl papyrus


【解决方案1】:

这似乎与活动图没有太大关系。您的新措辞很明确,在一个表单上尝试 5 次或在五个表单中的每一个上尝试一次都是不好的,因此 User_Account::failedAttempts(而不是 login::attempts)是一个明智的模型功能。

约束最容易定义为 User_Account::failedAttempts 的上限 5。请注意,约束定义什么是有效的,而不是如何对无效做出反应。对于 maximumAttempts() 计算值,您可以更多地使用不变量到上限。您可能会不明智地在操作上使用前置/后置条件,或者只是编织您的控制操作。

你可以有一个 User_Account::isLocked() 操作,它的主体是 failedAttempts >= maximumAttempts()。

活动为模型提供控制。大概它有一条与登录的创建/销毁相关的生命线。据推测,它使用了返回 User_Account 并增加 User_Account::failedAttempts 作为副作用的 DataBase::checkPassword(userName, password) 操作。因此,最大值的执行在 User_Account::checkPassword 中。 (注意,您不应该对 User_Account 查找和密码验证进行两阶段访问,以确保黑客无法区分(可能仅通过响应时间)失败是由于用户名错误还是密码错误。)

您需要清楚地识别模型中的内容;在系统运行期间持续存在的内容,可能在系统重新启动后从备份中恢复。因此 User_Account 必须具有用户名和密码以及 failedAttempts 属性来定义持久状态。

相反,当启动另一个用户交互时,视图/控件的一部分可能会丢失并重新创建。因此,登录表单还具有用户名和密码属性来表示在表单上输入的内容,并且可能通过 DataBase::getUserAccount 和 UserAccount::checkPassword 与模型数据库相关联。

我不会用瞬态登录内容污染持久数据库模型。如果您需要在服务器故障时重新进行正在进行的登录尝试,我将有一个单独的 ViewDataBase 瞬态查看状态。如果不出意外,您可以通过在重新激活瞬态活动之前重新激活持久数据库来恢复服务器故障。

【讨论】:

  • 你可以在活动图中的eclipse中按照上面的答案解释吗?帮助将不胜感激,thnx
  • 当然可以。如果不能,我会明确说明不能做什么。
  • 感谢您的帮助,任何媒体与您联系 fb、gmail 等
猜你喜欢
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多