UML中的用例图
来源:互联网 发布:iscroll5.js中文文档 编辑:程序博客网 时间:2024/05/17 05:55
UML中的用例图:主要用来确定需求,图中分为多个用例(USECASE),也就是那些小人和圈圈,以及相关的注释,主要包含三种关系:包涵<include>,扩展<extend>,泛化<generalization>,其中
1. 包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。
2.扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(ExtensionPoint)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
3.泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
三者对用例关系的优化侧重点是不同的。如下:
●泛化侧重表示子用例间的互斥性;
●包含侧重表示被包含用例对Actor提供服务的间接性;
●扩展侧重表示扩展用例的触发不定性;(对基类功能的模块化扩展)
ps:
从这幅图中,我们可以看到:
“包含”比较好理解,二者之间可以认为是一个"HAS A"的关系。
“泛化”是一般的“抽象和具体”之间的关系,子用例(较特殊用例)完整包含了父用例(较一般用例),是一个"IS A"关系。“用邮件报告错误”和“用短信报告错误”都是一种具体的“报告错误”。
“扩展”的扩展用例和基用例之间既不是"HAS A"关系也不是"IS A"关系,而是“以模块化的方法递增地修改基用例”,以提供一些附加的功能。
1. 包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。
2.扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(ExtensionPoint)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
3.泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
三者对用例关系的优化侧重点是不同的。如下:
●泛化侧重表示子用例间的互斥性;
●包含侧重表示被包含用例对Actor提供服务的间接性;
●扩展侧重表示扩展用例的触发不定性;(对基类功能的模块化扩展)
ps:
定义
include / using (包含) :基用例与包含用例之间的关系。说明如何将包含用例中定义的行为插入基用例定义的行为中。基用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。
extend(扩展):指扩展用例与基用例之间的关系,说明如何将扩展用例定义的行为插入基用例定义的行为序列。扩展用例以模块化的方法递增地修改基用例。
generalization(泛化):一个较广泛元素和一个较特殊元素之间的类元关系。较特殊元素完整地包含了较广泛元素,并含有更多信息。较特殊元素的实例可以用于任何使用较广泛元素的地方。
说明
其中include/using比较好理解,就是指把多个用例(UseCase A'加撇号表示是在提取公共部分之前的原UseCase , UseCaseC')都使用到的相同的部分提取出来单独作为一个用例(UseCase B),然后再在分离之后的用例A, C调用B,画上连线。
extend和generization容易搞混,至于原因可能在于Java语言中的继承(也就是UML中的泛化)使用了extends这个词的缘故。网上有不少文章把generization直接当作了extend,对学习者造成了误导;也有文章说extend和generization是特殊和一般的关系,下面我举个具体的例子来说明。
举例从这幅图中,我们可以看到:
“包含”比较好理解,二者之间可以认为是一个"HAS A"的关系。
“泛化”是一般的“抽象和具体”之间的关系,子用例(较特殊用例)完整包含了父用例(较一般用例),是一个"IS A"关系。“用邮件报告错误”和“用短信报告错误”都是一种具体的“报告错误”。
“扩展”的扩展用例和基用例之间既不是"HAS A"关系也不是"IS A"关系,而是“以模块化的方法递增地修改基用例”,以提供一些附加的功能。
- UML中的用例图分析
- UML中的用例图分析
- UML中的用例图
- UML中的用例图
- UML中的用例图
- UML中的用例图
- UML用例图中的关系
- UML中的用例图
- UML中的用例图
- UML中的用例图
- UML中的用例图分析(转)
- UML中的用例图详细分析
- UML中的用例图详细分析
- UML中的用例图分析(转)
- 【uml】之用例图中的关系
- UML:UML中的关系
- UML::UML中的视图
- 【UML】UML中的事物
- 自动换行 style css
- .NET中Web Service的异常机制
- 增值税
- 初窥Windows内核——学习Windows Research Kernel手记(二)
- 把 Fedora 7 Gnome 桌面妝扮成 Mac OS X Leopard
- UML中的用例图
- Effective Java(2nd Edition) Item 62 归档方法所抛出的异常(译文)
- select 全选和反选 jquery
- windows server 2003支持内存容量
- 编译器的一些参数
- 学语言最好的方法是尽量多地联系使用它。(The way to learn a language is to practice using it as often as possible.)
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page125
- java 开源持久层框架 bboss
- DTU(data-transfer unit 数据传输装置)