有没有更好的UML模型?

时间:2013-08-05 03:44:41

标签: uml

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

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

    enter image description here

    修改

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

    enter image description here

2 个答案:

答案 0 :(得分:3)

您的设计似乎与您对问题的陈述有关。对于问题4,它实际上取决于您想要用系统捕获的内容。如果资产损坏,是否还需要在系统中记录?如果用户离开其组织,您希望将哪些内容存储在系统内存中?

对于问题3,你可以使用一个共同的抽象类,如:

asset ownership UML Class diagram http://app.genmymodel.com/engine/xaelis/assetOwnership.jpg

如果您想制作副本并调整此模型,可以使用此link

答案 1 :(得分:2)

编辑:回应OP评论:

重新。记录所有权等信息这里是一个例子: enter image description here

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

  

需要显示所有者和用户。如何看待资产不是所有者或用户类的子类或子类型?

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

  

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

好的:那么你可以为这两个名字设置不同的数据类型。也许是一个简单的组织字符串和一个特定的资产FQDN。但请记住:这意味着所有资产必须使用FQDN命名。如果仅使用FQDN命名计算机,则将name属性放在Computer上,而不是Asset。顺便说一句:对于组织来说,拥有与资产类型无关的资产命名方案是很常见的。唯一的要求是它是独一无二的。我已经在上面的诊断中显示了这个例子。第h

结束修改

回答您的具体问题:

  

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

据推测,这是Organisation - Asset协会涵盖的内容?如果是这样,那么多重性是什么?据推测:

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

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

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

  

如何表达[..]服务器对象的供应商值为IBM

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

  

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

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

  

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

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

资产损坏意味着什么?你需要记录赔偿金吗?如果是这样,你需要另一个班级。

  

如果不在模型中,我在哪里捕获此信息?

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

一般情况下,我建议你进一步考虑命名和放大。多种联想。这样做无疑会引发有关要求和/或域限制的问题。这将帮助您获得更有可能满足要求的模型。

第h