在用例图中正确使用包含和扩展

Correct usage of includes and extends in use case diagram

我正在为理发店系统创建用例图。我不确定 Add Product Inventory 用例是否应包括 Purchase Product 用例。

将与理发店系统交互的参与者是:

  1. 客户
  2. 系统用户(即理发师)
  3. 系统管理员(即经理)

所有用户都需要能够登录,如果客户是第一次使用,则需要注册。

客户将与系统交互以进行预订或购买产品,即凝胶、洗发水、蜡。预约可以延伸到取消预约,客户不太可能重新安排预约而是取消预约并在不同的时间重新预约。

系统用户理发师需要能够查看预约时间表、查看客户联系方式并登录系统。

系统管理员(可能是经理和理发师)还应该能够查看约会时间表、查看客户详细联系信息以及向商店添加产品库存。产品库存还会包括设置产品规格,产品颜色或尺寸,以及设置价格。

我不熟悉你的场景中的业务规则,所以这是一些猜测和一些你可以验证的假设。

我假设“添加产品库存”用例是关于将产品添加到所有产品的库存中。为了我们回答您的问题,我认为这个用例是否涉及添加一个产品、多个产品、管理产品(例如编辑或删除它们)、库存是否已经存在或者库存是否存在并不重要与上面的产品是分开的,但是这些问题的答案并不是 100% 从您的模型中清楚的,您可以考虑澄清这些要点。

我还假设 产品 需要在 库存 上才能购买。如果是这样,那么我认为您要问的正是这一点——我如何表示 Product 需要 添加到库存 才能购买?如果这就是您要问的,那么您可以使用简单的“dependency”关系来表示,该关系将 运行 来自 Purchase Product 用例到 添加产品库存 用例如下。这说明 Product Purchase 在某种程度上依赖于 Add Product,但没有进一步解释这种关系。或者,您可以使用 preceedes 关系 运行ning,而不是从 AddPurchase.我不认为 extend 是正确的关系 - Add Product 的步骤不需要在每次 购买产品,依赖于添加产品的objective,而不是步骤。

I am not sure if the Add Product Inventory use case should include the Purchase Product use case.

情况并非如此,否则这意味着每次将产品添加到库存中时,也会在添加期间购买该产品。另请注意,这两个用例的参与者并不相同,但包含意味着购买也由管理员完成。

也没有扩展。

您在 UC 购买 的描述中添加了一个产品在购买之前添加到库存中的事实是一个先决条件 .


你的图中还有其他问题:

  • 你所有的延伸方向都画错了,除了可能在 LoginRegister 之间,这取决于什么你想说

  • 通常把次要演员放在右边,所以Customer好像是次要演员,其实不是这样的

  • AdminBarber 无法 Login(但他们可以注销),要获得这些角色之一,真人需要在 before 之前成功登录,这是由演员 Guest 或类似的人完成的。

  • 以相同的方式,客户 不能注册(也不能登录)

  • 但实际上登录注册(和注销)是非常常见和简单的功能,可能不会有足够的附加值作为用例。

  • 一个客户只能在创建期间取消约会,这不是你想要的。

    • 您需要允许客户以其他方式激活取消预约(直接或作为可能查看自己的约会,见后)
    • 对我来说,当约会正在建设中时,它不存在,然后 客户 无法取消约会,但客户可以中止建设。所以对我来说,这些用例之间没有扩展。当然在Make Appointment的描述中可以说abort是可以的,但是我觉得所有的UC都是这样。
  • 很可能 客户 可以查看 his/her 约会所以 UC(假设 查看自己的约会) 必须添加。请注意,这不像 UC View Appointmenst a Barber 可以激活,因此这些 UC 不能具有相同的名称。将取消约会作为这个新 UC 的扩展似乎是一个好方法,在这种情况下 取消约会 不能直接由 [=35= 激活]客户.

  • 某些 管理员 可以激活的 UC 丢失,修改产品价格,删除产品,修改理发师详细信息,删除一个理发师,...