用例图
用例图(use case diagram)就是由主角、用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。
可以将用例图组织到用例包中,并归用例包所有,让特定包中仅显示互为关联关系的内容。
用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。
参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。
用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。
系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。
箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。
用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。
□ 元素之间的关系
用例图中包含的元素除了系统边界、角色和用例,另外就是关系。关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。
1、角色之间的关系:
角色之间的关系。由于角色实质上也是类,所以它拥有与类相同的关系描述,即角色之间存在泛化关系,泛化关系的含义是把某些角色的共同行为提取出来表示为通用的行为。
2、用例之间的关系:
包含关系:基本用例的行为包含了另一个用例的行为(我的理解是:比如登陆是个用例,用户管理是个用例,那么在用户管理之前要首先登陆,登陆之后可以进行好多的操作比如用户管理,产品的管理,客户的管理那么是不是理解为登陆包含用户管理,所以箭头有用户管理到登陆的用例)。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。在UML1.1中用例之间是使用和扩展这两种关系,这两种关系都是泛化关系的版型。在UML1.3以后的版本中用例之间是包含和扩展这两种关系。
泛化关系:代表一般于特殊的关系。它的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。
扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义。与包含关系一样,扩展关系也是依赖关系的版型。在扩展关系中,箭头的方向是从扩展用例到基本用例,这与包含关系是不同的。
用例的泛化、包含、扩展关系的比较。一般来说可以使用“is a”和“has a”来判断使用那种关系。范化和扩展关系表示用例之间是“is a”关系,包含关系表示用例之间是“has a”关系。扩展与范化相比多了扩展点,扩展用例只能在基本用例的扩展点上进行扩展。在扩展关系中基本用例是独立存在。在包含关系中在执行基本用例的时候一定会执行包含用例。如果需要重复处理两个或多个用例时可以考虑使用包含关系,实现一个基本用例对另一个的引用。当处理正常行为的变形是偶尔描述时可以考虑只用泛化关系。当描述正常行为的变形希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。扩展关系比较难理解,如果把扩展关系看作是带有更多规则限制的泛化关系,可以帮助理解。通常先获得基本用例,针对这个用例中的每一个行为提问:该步骤会出什么差错?该步骤有不同的情况吗?该步骤的工作怎样以不同的方式进行等,把所有的变化情况都标识为扩展。通常基本用例很容易构造,而扩展用例需要反复分析、验证。当我们发现已经存在的两个用例间具有某种相似性时,可以把相似的部分从两个用例中抽象出来单独作为一个用例,该用例被这两个用例同时使用,这个抽象出的用例和另外两个用例形成包含关系。
USE CASE图
USE CASE图
USE CASE图
USE CASE图
分享到:
相关推荐
很实用的一个图片上传得例子 <br>图片上传:生成缩略图 加文字水印 图片水印(全源码开放!) <br>远程图片抓取(保存到本地)支持jpg、gif、bmp、png <br>图片抓取后自动以Auto+日期+原名称命名 <br>...
div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子div+css例子...
本压缩包“dicom图片例子 dcm.zip”提供了一些 DICOM 格式的图像示例,旨在帮助理解和处理这种专业格式的图像。 一、DICOM 格式详解: DICOM 是一个全面的标准,不仅定义了图像的数据结构,还包含了元数据...
多媒体多媒体多媒体例子例子例子多媒体多媒体多媒体例子例子例子多媒体多媒体多媒体例子例子例子
chart图的例子
在这个特定的例子中,我们将探讨如何使用JSP来创建一个自动滚动的图片展示功能。 【描述】"jsp滚动图片小例子"多次提及,暗示这是一个简单的应用实例,可能适合初学者学习或作为项目模板。这个小例子可能包含了HTML...
OCI例子OCI使用例子,本断代码为OCI使用实例
CListCtrl 使用演示的例子CListCtrl 使用演示的例子CListCtrl 使用演示的例子CListCtrl 使用演示的例子CListCtrl 使用演示的例子CListCtrl 使用演示的例子CListCtrl 使用演示的例子CListCtrl 使用演示的例子...
标题中的“image1_pb9版本例子_非常完整控件_图片转换、旋转_柯达控件_”揭示了这个压缩包文件包含的是一个基于PowerBuilder 9(简称PB9)的示例项目,该示例重点展示了如何使用柯达(Kodak)图像控件进行图片的转换...
springboot+h2+mybatisplus+swagger使用例子 h2数据库例子 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一 个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容...
Chart Control 例子:所有 35 种基本图表例子。 开发环境:Visual Studio 2010 开发平台:.Net Framework 4.0 代码语言:C Sharp, Visual Basic 参考代码下载地址:http://code.msdn.microsoft.com/mschart 把注释...
透明图片的例子
此外,为避免内存溢出,我们需要控制图片的大小,比如通过指定加载的图片尺寸或者使用圆形图片加载器。 文件名"AsyncDownPicDemo"可能是一个完整的示例项目,其中包含了异步加载图片的具体实现。在这样的项目中,你...
jquery插件和例子 图片播放器 lightbox thickbox 手风琴 树 分页jquery插件和例子 图片播放器 lightbox thickbox 手风琴 树 分页jquery插件和例子 图片播放器 lightbox thickbox 手风琴 树 分页
**标题解析:** "H5 PhotoSwipe简单例子 - vue图片拉伸放大缩放例子" 这个标题表明我们要探讨的是一个使用H5技术,并结合PhotoSwipe库实现的Vue.js项目,该项目主要用于处理图片的放大、缩小和拉伸功能。 **描述...
C++例子代码C++例子代码C++例子代码C++例子代码C++例子代码
php生成缩略图多张不同缩略图例子,很好用
Extjs例子Extjs例子Extjs例子Extjs例子Extjs例子
switch语句的使用例子
标题中的“protues经典模拟例子”表明这是一系列关于使用Protues软件进行MCS-51单片机仿真教学的实例。Protues是一款强大的电路仿真软件,尤其在电子设计和教学领域广泛应用。它允许用户在虚拟环境中搭建电路,进行...