3

我正在尝试创建一个模型,使我能够捕获给定组织中的所有者、用户和资产。我似乎遇到了一个绊脚石,因为我无法回答以下问题,也不确定我是否正确建模。

  1. 如何表达给定资产的所有权和用户?
  2. 我如何表达对象的所有权和使用值,例如服务器对象具有 IBM 的供应商值,由 ABC Corp 拥有并由 DEF 用户使用。
  3. 有没有办法可以进一步解耦常见的属性或属性,例如名称、位置?是否需要进一步解耦?
  4. 我如何评估行为约束,例如如果用户离开组织或资产损坏会发生什么?如果不在模型中,我在哪里获取这些信息?

模型示例

在此处输入图像描述

编辑

除了答案之外,我还更新了我的模型。不确定它是否走在正确的道路上。

在此处输入图像描述

4

2 回答 2

3

您的设计似乎与您对问题的描述相吻合。对于问题 4,这实际上取决于您想用系统捕获什么。如果资产损坏,是否还需要在系统中进行记录?如果一个用户离开了它的组织,你想在系统的内存中存储什么?

对于问题 3,您可以使用通用抽象类,如下所示:

资产所有权 UML 类图 http://app.genmymodel.com/engine/xaelis/assetOwnership.jpg

如果您想复制并调整此模型,可以使用此链接。

于 2013-08-05T06:03:21.213 回答
2

编辑:回应 OP 评论:

回覆。记录所有权等信息这是一个例子: 在此处输入图像描述

关键是获取/出售日期等是资产与组织/用户之间关系的属性。它们不是参与课程的属性。在示例中,资产使用允许许多并发用户,而资产所有权在任何给定点仅允许 1 个所有者。这是由多样性控制的。

需要显示所有者和用户。看到资产不是所有者或用户类的子类或子类型,我将如何证明这一点?

您的显示页面将根据关系从必要的类中提取信息。页面不限于一次显示来自单个班级的信息。

例如,所有者下的名称属性将具有组织的名称,但服务器下的名称属性将具有服务器的名称,即 FQDN。

好的:那么您可以为这两个名称使用不同的数据类型。可能是组织的简单字符串和资产的特定 FQDN。但请记住:这意味着所有资产都必须使用 FQDN 命名。如果仅使用 FQDN 命名计算机,则将名称属性放在计算机上,而不是资产上。顺便说一句:组织拥有独立于资产类型的资产命名方案是很常见的。唯一的要求是它是独一无二的。例如,我已经在上面的 diag 中展示了这一点。hth。

结束编辑

回答您的具体问题:

我如何表达给定资产的所有权 [..]?

大概这就是Organisation - Asset协会涵盖的范围?如果是这样,多重性是多少?想必:

  • 每项资产仅由一个组织拥有 或者一项资产可以共同拥有吗?
  • 每个组织都拥有许多(零个或更多)资产?
  • 您是否需要记录有关所有权的任何信息 - 例如,何时获得资产,何时出售资产等。如果是这样,您将需要一个关联类来捕获它。

如何表达给定资产的用户?

与上述类似的问题。许多用户可以使用相同的资产吗?同时还是顺序?您是否需要记录资产使用的开始/结束日期?

如何表示 [..] 服务器对象具有 IBM 的供应商值

您已经使用属性对此进行了建模Asset.vendor- 这可能就足够了。但是:您需要为供应商捕获任何详细信息吗?例如联系信息、地址、支持合同等。如果是这样,您可能需要拆分一个单独的供应商类。

有没有办法可以进一步解耦常见的属性或属性,例如名称、位置?是否需要进一步解耦?

所有 3 个子类都具有相同的属性。闻起来很糟糕——这表明它们并没有真正的不同。您能否使用一个类 ( Asset) 来捕获所有属性 - 并具有一个额外的“assetType”(或类似的),其合法值为“S​​erver”、“Destop”、“Laptop”?但是:您是否需要跟踪不是某种类型的计算机的资产?如果是这样,单个资产类就不够灵活。

我如何评估行为约束,例如如果用户离开组织或资产损坏会发生什么?

取决于您的业务需求。如果用户离开,需要发生什么?资产是否应该没有用户?在这种情况下,关系需要是可选的 (0..*)。

资产受损意味着什么?需要记录损失吗?如果是这样,你需要另一堂课。

如果不在模型中,我在哪里获取这些信息?

如果它不在模型中,则无法记录或更改它。所以我会非常警惕任何你认为需要捕捉的不在模型中的东西。这更有可能意味着您的模型不完整和/或您缺少要求。

一般来说,我建议您进一步考虑关联的命名和多样性。这样做无疑会引发有关需求和/或域约束的问题。这将帮助您获得一个更有可能满足要求的模型。

hth。

于 2013-08-05T12:17:44.027 回答