2014-02-23 16 views
0

我目前正在刷新/改变我在软件开发方面的知识,因为我很快就会在这方面工作。我们已经在大学学到了很多关于UML图和编码的知识,但是我从来没有把它们放在一个真正的项目中。因此,我开始在Grails中创建一个测试Web应用程序,并且我希望从需求分析开始,并且使用案例也保持接近实际。我是否对那些扩展或包含用例使用相同的actor?

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

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

这是我目前用例图:

http://ubuntuone.com/0zDw9kEbj1BwtXjnCtxdwC

我的问题在这里:

  • ,如果我使用包括或延长,我将不得不使用那些相同的主要参与者扩展或包含用例? (在截图:难道AddProspectiveIngredient有不同的主要参与者比CreateRecipeinclude同样的问题?)

编辑:我不认为这个问题被广泛问:如果我使用包括或延长,将我必须为扩展或包含用例使用相同的主角色?

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

回答

1

如果我使用包括或延伸,我将不得不使用相同的主演员为那些延伸或包括用例?

Extend指一个用例是另一个的变化。这是定义,对不起。所以,我不确定你是否真的想要这样做,但不同的参与者可以轻松地进行不同的活动变化。

至于include,它不是那么简单。一种行为被插入另一种行为。这对用例的一般化有一些变化。

所以,如果行为的包括B,和演员X只连接A和演员Y的连接不仅没有这一切只B,这意味着,是Y真叫一个,太。 X具有Y和所有其他行为的所有行为。这意味着,X是Y的派生,或X是Y.

的子类

简单地说,如果你有A和B不同的不绑的演员,你根本弄错了。他们是捆绑的。

enter image description here

+0

再次感谢您的回复。在你的例子中,这是否意味着你可以创建一个聚合用例'AB',其中X是主要的,Y是次要的?因此,Y帮助X实现了他们的目标,因此完成使用案例A. – nst1nctz

+0

@ user3025256恕我直言,X和Y都会与AB合作,但他们中的哪些人是次要的,取决于客户的看法。 X可以做更多的事情。但这并不意味着他总是更重要。什么是主要的,什么是次要的与模型抽象无关。这只是我们对重要性的评估。这些信息有助于了解整个域名及其使用情况,在我们的计划中应予以考虑,但这是比整个IT系统级别更高的信息。 – Gangnus

+0

我刚刚发现我为什么对这个问题感到困惑的原因。在我们在大学使用的一本书中,由Noushin和Hessam Ashrafi撰写的面向对象系统分析和设计Pearson国际版,讨论了这个话题。 “扩展用例的主要参与者必须与基本用例的主要参与者相同”(第226页)但本书并没有将这个问题与包含关系进行讨论。遵循这个规则是明智的吗? – nst1nctz

相关问题