`
sipgreen
  • 浏览: 25460 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

UML中扩展与泛化的区别

 
阅读更多

UML中扩展和泛化的区别

 

用例图:

用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图包含了用例和参与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。


用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。从原则上来讲,用例之间都是独立、并列的,它们之间并不存在着包含从属关系。但是为了体现一些用例之间的业务关系,提高可维护性和一致性,用例之间可以抽象出包含(include)、扩展(extend)和泛 (generalization)几种关系。

共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。



1、包含(include)

 

    包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。

   包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。 

   例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。


UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客

2、扩展(extend)

扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。

对于一个扩展用例,可以在基用例上有几个扩展点。   

例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:


UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客


4、泛化(generalization)

 

泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:


UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客

    上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。

    *****************************************************************

    (1)系统整体用例图

    UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客


   
    (商品用例图)

   
   UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客
    
   
   
   (购买信息用例)
  
   UML中扩展和泛化的区别 - 紫彩斑斓 - 付莎的博客

   
    (用户资料用例)


   

 

 

 

         泛化表示类似于OO术语“继承”或“多态”。UML中的Use Case泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下:
          ●泛化侧重表示子用例间的互斥性;
          ●包含侧重表示被包含用例对Actor提供服务的间接性;
          ●扩展侧重表示扩展用例的触发不定性;详述如下:


        既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:
         ⒈无条件发生:肯定发生的;
         ⒉有条件发生:未必发生,发生与否取决于系统状态;

         因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。进一步,用例的存在是为Actor提供服 务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。同样,扩展用例提供的也是直接服务,但扩展用例的发生是有条件的。

         另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。

分享到:
评论

相关推荐

    解释UML用例图中包含,扩展、泛化的区别.doc

    解释UML用例图中包含,扩展、泛化的区别.doc 解释UML用例图中包含,扩展、泛化的区别.doc

    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系

    用例的关系有泛化(generalization)、扩展(extend)和包含(include)。其中include和extend最易混淆。下面我们结合实例彻底理清三者的关系。基本概念用例图(UseCaseDiagram):用例图显示谁是相关的用户,用户希望系统...

    UML用例图的包含,扩展,泛化的详细阐述.doc

    UML用例图的包含,扩展,泛化的详细阐述.doc

    uml 基础、案例与应用(第三版)

    UML基础、案例与应用(第三版) 目录 第一部分 基础知识 第1章 UML简介 3 1.1 在纷繁复杂中寻求解决问题的办法 3 1.2 UML的诞生 4 1.3 UML的组成 5 1.4 其他特征 12 1.5 UML 2.0中的新图 13 1.6 为...

    UML与系统分析设计

    1.1.4 面向对象的软件开发语言与工具 1.2 面向对象的系统分析与设计 1.2.1 面向对象的主要概念 1.2.2 面向对象的系统分析与设计方法 1.3 UML概述 1.3.1 UML简史 1.3.2 UML概貌 1.3.3 UML的特点...

    《UML建模实例教程》【PPT】

    6.3.6UML中的类与语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的...

    UML那些事儿

     本书通过引用UML规格书里的图例和定义详细介绍了UML的特色和发展历史,六类UML图,元模型的说明,并且以StarUML为示范,讲解UML,工具如何落实UML概念,还介绍了活动图、控制节点、交互图、生命线、用例图等内容。...

    UML参考手册.PDF

    12.5.2 工作进展过程中产生的不一致模型 75 12.5.3 空值和未详细说明的值 75 第三部分 参考资料 77 第 13 章 术语大全 78 第 14 章 标准元素 334 第四部分 附录 343 附录 UML元模型 344 索引 347

    UML.zip_uml顺序图

    UML包括事物、关系、图、扩展机制。 (1)事物 结构:类、接口、构件、节点等等。 行为:交互(消息)、状态等等。 分组:包、子系统等等。 注释:注释。 (2)关系 依赖、关联(聚合、组合)、泛化、实现。 (3)图...

    UML参考手册-UML入门资料

    目录 译者序 前言 ...12.5.2 工作进展过程中产生的不一致模型 12.5.3 空值和未详细说明的值 第三部分 参考资料 第 13 章 术语大全 第 14 章 标准元素 第四部分 附录 附录 UML 元模型 索引

    UML用例图中关系详解

    UML中用例图:包含、扩展、泛化三种关系详解。在设计的时候可以参考一下。

    UML和模式应用(架构师必备).part07.rar

    第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考资料 第23章 快速地更新分析 ...

    UML基础、案例与应用(第三版)].施穆勒.扫描版_2分.pdf

    12.3.1 在UML 1.x和UML 2.0中表示一个构件 135 12.3.2 接口表示法 136 12.3.3 黑盒和白盒 137 12.4 应用构件图 137 12.5 UML“大图”中的构件图 141 12.6 小结 142 12.7 常见问题解答 142 12.8 小测验和习题 143 ...

    图书管理系统uml图

    其中,“还书”有一项扩展用例为“超期交纳罚金”。 图书管理员系统模块的功能应该包括登陆、预定、解除预定、处理借书等四个功能。其中,“处理借书”又扩展用例“收罚金”。 系统管理员模块的功能应该包括“登陆”...

    UML和模式应用(架构师必备).part02.rar

    第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考资料 第23章 快速地更新分析 ...

    UML和模式应用(架构师必备).part06.rar

    第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考资料 第23章 快速地更新分析 ...

    UML参考手册.doc

    12.5.2 工作进展过程中产生的不一致模型 75 12.5.3 空值和未详细说明的值 75 第三部分 参考资料 77 第 13 章 术语大全 78 第 14 章 标准元素 334 第四部分 附录 343 附录 UML元模型 344 索引 347

    图书馆管理系统 uml建模 程序设计

    其中,“还书”有一项扩展用例为“超期交纳罚金”。 图书管理员系统模块的功能应该包括登陆、预定、解除预定、处理借书等四个功能。其中,“处理借书”又扩展用例“收罚金”。 系统管理员模块的功能应该包括“登陆”...

    面向对象与UML资料

    面向对象与UML 第一部分 软件开发活动 7 第一章 结构化的分析与设计 8 第一节 模型图 8 业务流程图 8 数据流图 11 功能结构图 12 功能树 13 网络结构图 14 程序流程图 15 第二节 需求分析 15 需求分析的任务 15 需求...

Global site tag (gtag.js) - Google Analytics