关于项目管理中关系类型的 UML class 图

UML class diagram about relationship types in project management

我正在尝试为我的项目管理软件绘制 class 图表 描述如下。它包含以下 classes:

和以下 relationships/associations:

  1. 一个项目经理可能要管理多个项目,而一个项目只能由一个项目经理管理

  2. 项目经理可以将员工分配给 he/she 管理

  3. 的项目

对于上述关联,我创建了这个 class 图:

一种更通用的问题建模方法是为项目经理和员工使用对象类型 Person(或 Employee)。这表示项目经理也是员工,可以作为经理分配到一些项目,而作为普通员工分配到其他项目。

在这种方法中,您将拥有两个 classes EmployeeProject,它们之间有两个关联:

  1. 一个协会Employee-works-for-Project(或者最好在协会末端使用像worker这样的角色名称)。
  2. 关联 Employee-is-manager-of-Project,其中 manager 是角色名称。

如果你真的需要model/record项目经理分配员工到项目,那么你需要替换第一个关联(Employee-works-for-Project)具有三元关联 Employee-is-assigned-to-Project-by-Employee-as-assigner 其中后者雇员(分配者)必须是指定项目的经理。可以使用附加到 Employee class.

的相应 不变量 来捕获此条件

您的问题与我们在我公司 BITPlan 的 UML 培训中使用了多年的上述示例很接近。

在此示例中,有一个 ProjectAssignment class,并且规则是对于每个时间点,可能只有一个带有 "responsible=true" 的 ProjectAssignment。具有此 ProjectAssignment 的 Employee 是 ProjectManager。当子项目开始发挥作用并且您希望对可能随时间变化的整个管理器层次结构建模时,也可以应用此样式。

就我个人而言,我认为在模型文档中以散文形式陈述此类限制通常比尝试使用继承和基数在结构中显示它要好得多。

您只需向 Project 添加一个名为 assignEmployee 的操作,该操作会将员工添加到其分配的员工列表中:

不清楚如何分配员工,是只分配给一个项目还是多个项目。此外,您可能需要取消分配操作。

当然,您也可以使用关联 class,就像@WolfgangFahl 所建议的那样。