“includes”、“extends”和“uses”有何区别?它们在编程中的应用场景是什么?

23
在用例图中,“<< 包含 >>”、“<< 扩展 >>”和“<< 使用 >>”有何区别?“<< 包含 >>”和“<< 使用 >>”是否相同?
在用例图中,“<< 包含 >>”是指在一个用例的主要流程中需要使用另一个用例的一部分或多个部分,而“<< 扩展 >>”则是指在特定条件下,可选地执行一个用例的附加步骤。与此不同,“<< 使用 >>”描述了一个用例如何使用一个系统中的另一个组件或对象。
“<< 包含 >>”和“<< 使用 >>”并不相同。前者是用于将多个用例的共同功能提取出来形成更高层次的用例,而后者则是描述用例与系统中其他组件之间的交互关系。

更详细的答案请参考此处:https://dev59.com/vXI-5IYBdhLWcg3wu7Pv - Rap
4个回答

10

8

这里有一篇不错的文章:http://www.agilemodeling.com/essays/useCaseReuse.htm

该文章总结如下:

  • 扩展用例继续基础用例的行为。
  • 包含依赖是一种泛化关系,表示另一个用例描述的行为的包含。最好的思考包含依赖的方式是它是由另一个用例调用。
  • 继承用例将完全替换继承用例中的一个或多个行动过程。

我的问题是,既然包含的用例是某些用例的强制性部分,那么描绘它的目的是什么?我只需编写主要用例,并在用例文本(故事)中解释包含的用例即可。 - Krishna Oza
1
你绘制包含的用例是因为你想清楚地指出,包含的用例不是重复的,而是共享的功能。重复意味着编写多次,共享意味着只编写一次。 - DwB

6
包含关系通常在用例中使用,表示一个用例使用另一个用例。相比之下,使用关系用于显示模型之间的依赖关系,即一个模型需要另一个模型才能正常运行。
以下是IBM文档中的引用:

包含关系
在UML建模中,包含关系是指一个用例(基础用例)包含另一个用例(被包含用例)的功能。包含关系支持在用例模型中重复使用功能。

使用关系
在UML建模中,使用关系是一种依赖关系类型,其中一个模型元素(客户端)需要另一个模型元素(供应商)才能完全实现或操作。

简而言之,包含是模型中的依赖关系,而使用是功能中的依赖关系。

我理解的是,<<uses>> 用于任何被使用的用例之间,而 <<includes>> 是一个用例的所谓子用例。对吗? - SMUsamaShah
这是预期的项目展示考试问题,希望我的老师能够理解它 :) - SMUsamaShah
链接已经失效,请修复。 - Souradeep Nanda

4

"includes""uses" 表示强制使用情况,"extends" 表示可选使用情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接