我目前正在刷新/改变我在软件开发方面的知识,因为我很快就会在这个领域工作。我们在大学学到了很多关于UML图和编码的知识,但我从来没有在一个真实的项目中将它们全部整合在一起。因此,我开始在Grails中创建一个测试Web应用程序,我想从需求分析和用例开始,使其保持接近现实。
我的网络应用应允许用户分享食谱,查找食谱和查看其他用户的食谱。每个食谱都有很多成分,不仅仅是字符串,而是实体,因此卡路里,脂肪,蛋白质和碳水化合物可以用来自动计算某种食谱的营养成分。
消费者或营养专家可以将一种成分添加到数据库中。如果它是由消费者创建的,那么它只是一种“预期”成分,这意味着它必须由管理员验证才能成为“适当的”成分 - 否则它被标记,例如,红色文字颜色。
这是我目前的用例图:
http://ubuntuone.com/0zDw9kEbj1BwtXjnCtxdwC
我的问题是:
AddProspectiveIngredient
的主要演员可能与CreateRecipe
不同吗?include
的同一问题编辑:我不认为这个问题是广泛的:如果我使用include或extend,我是否必须使用相同的主要角色来扩展或包含用例?
我同意,因为这是我在Stackoverflow上的第一个问题之一,开头有一些不必要的样板。如果是这种情况,我可以编辑我的问题以保持开放。我仍然希望有人偶然发现它并为我提供更多的知识或来源。
答案 0 :(得分:1)
如果我使用include或extend,我是否必须使用相同的主要角色来扩展或包含用例?
Extend
表示一个用例是另一个用例的变体。对不起,这是定义。所以,我不确定你是否真的这么做,但不同演员可以轻松地进行不同的活动变化。
至于include
,并非如此简单。一种行为插入另一种行为中。这是用例概括的一些变体。
因此,如果行为A包含B,并且演员X仅连接到A而演员Y仅连接到B,那意味着,Y实际上也是A,而不是全部。 X具有Y的所有行为和一些其他行为。这意味着X是从Y派生的,或者X是Y的子类。
简单地说,如果A和B有不同的不绑定演员,那你就错了。他们是并列的。