我是否可以使用相同的角色来扩展或包含用例?

时间:2014-02-23 21:56:17

标签: uml diagram use-case

我目前正在刷新/改变我在软件开发方面的知识,因为我很快就会在这个领域工作。我们在大学学到了很多关于UML图和编码的知识,但我从来没有在一个真实的项目中将它们全部整合在一起。因此,我开始在Grails中创建一个测试Web应用程序,我想从需求分析和用例开始,使其保持接近现实。

我的网络应用应允许用户分享食谱,查找食谱和查看其他用户的食谱。每个食谱都有很多成分,不仅仅是字符串,而是实体,因此卡路里,脂肪,蛋白质和碳水化合物可以用来自动计算某种食谱的营养成分。

消费者或营养专家可以将一种成分添加到数据库中。如果它是由消费者创建的,那么它只是一种“预期”成分,这意味着它必须由管理员验证才能成为“适当的”成分 - 否则它被标记,例如,红色文字颜色。

这是我目前的用例图:

http://ubuntuone.com/0zDw9kEbj1BwtXjnCtxdwC

我的问题是:

  • 如果我使用include或extend,我是否必须使用相同的主要角色来扩展或包含用例? (在屏幕截图中:AddProspectiveIngredient的主要演员可能与CreateRecipe不同吗?include的同一问题

编辑:我不认为这个问题是广泛的:如果我使用include或extend,我是否必须使用相同的主要角色来扩展或包含用例?

我同意,因为这是我在Stackoverflow上的第一个问题之一,开头有一些不必要的样板。如果是这种情况,我可以编辑我的问题以保持开放。我仍然希望有人偶然发现它并为我提供更多的知识或来源。

1 个答案:

答案 0 :(得分:1)

如果我使用include或extend,我是否必须使用相同的主要角色来扩展或包含用例?

Extend表示一个用例是另一个用例的变体。对不起,这是定义。所以,我不确定你是否真的这么做,但不同演员可以轻松地进行不同的活动变化。

至于include,并非如此简单。一种行为插入另一种行为中。这是用例概括的一些变体。

因此,如果行为A包含B,并且演员X仅连接到A而演员Y仅连接到B,那意味着,Y实际上也是A,而不是全部。 X具有Y的所有行为和一些其他行为。这意味着X是从Y派生的,或者X是Y的子类。

简单地说,如果A和B有不同的不绑定演员,那你就错了。他们是并列的。

enter image description here