用例图主要用来描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的各种关系,如泛化、关联和依赖。它展示了一个外部用户能够观察到的系统功能模型图。

用例图中包含6个元素,分别是执行者(Actor),用例(Use Case),关联关系(Association),包含关系(Include),扩展关系(Extend)以及泛化关系(Generalization)。

  • 角色(Actor):即使用本系统的有哪些角色,不同的角色使用的系统功能部分是不同的,在用例图中用小人表示。其中,角色可能是人,也可能不是人,而是另外的一个系统,本系统与另外一个系统交互的话,可以将另外一个系统画成某某角色。
    分析得到角色的原则,也可以看做是我们在获得角色时,需要思考的内容:

    1)有哪些直接使用系统的人

    2)涉及到哪些维护人员

    3)使用哪些外设

    4)相连的其他系统

    5)还有哪些人和事物对这个系统产生的结果感兴趣。

  • 用例(Use Case):即系统具有的功能,在用例图中用椭圆圈表示,圈里用文字描述该用例,一般为动宾短语。

    其中,某个用例不一定是只属于一个角色的,有些用例是同时属于多个角色的,即被多个角色“共享”。

  • 关系:用例图中涉及的关系有:关联、泛化、包含、扩展。
     1)关联(Association):表示参与者与用例之间的通信,任何一方都可发送或接受消息。【箭头指向】:无箭头或者Actor指向Use Case,将参与者与用例相连接,指向消息接收方 。图标
      或
    2 ) 泛化(Generalization):就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。【箭头指向】:子参与者指向父参与者或者子用例指向父用例

    3 ) 包含(Include):是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分以便基用例复用.当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。因为子用例被抽出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。include关系在用例图中使用带箭头的虚线(Link/Traceability Link)表示(在线上标注<<include>>),箭头从基用例指向子用例。 

    注册卡和删除卡之前都必须检验卡是否存在,注册卡和删除卡着两个用例并不完整,必须和查询卡是否存在这个子用例一起才能完成它的功能。

    文章管理包含添加文章,修改文章,删除文章,审核文章才是一个完整的功能。
    include的表示方法见如下图所示;:

    4 ) 扩展关系(Extend):extend关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。 extend关系在用例图中使用带箭头的虚线(Link/Traceability Link)表示(在线上标注<<extend>>),箭头从子用例指向基用例。

    查询学生信息可以独立完成,不需要子用例的参与。只有点击导出为excel按钮或打印按钮时才会执行相应的动作。

    用户登录可以独立完成,不需要子用例的参与。只有点击QQ登录或新浪帐号登录才会执行相应的动作。
    extend的表示方法见如下图所示;:


  • 一个完整的用例图实例

  • 附:UML用例UseCase的几个理解误区
    误区1:用例就是功能点 
      这是一个很大的误区,也是技术人员容易犯的一个错误。功能点是站在软件开发的角度来说的,而用例是站在用户的角度来说的。获取用例是领域专家干的活,而最后的功能实现是技术专家干的活,不同的角色。所以获取用例的关键就是要站在用户角度看问题。 
      怎么获得用例?首先确定位于系统边界之外的主角是谁?他的期望和目的是什么?这个期望和回报要求在系统之内。所以,用例是帮助确定系统边界的一个好方法。用例也是获取需求的一个方法。 
      误区2:用例和步骤混淆 
      举例来说,用户输入密码,要有密码错误提示,并且三次错误自动锁定用户,最后登录成功。“输入密码”是一个步骤,不是用例。整个过程是一个用例:“用户登录”。中间步骤和场景可以有很多。比如输入密码是一个步骤;“要有密码错误提示”这是一个业务需求,不是用例;“并且三次错误自动锁定用户”这是一个业务需求,也不是用例。 
      用例的特征:有目的,有用户期望,有回报预期。当结果不可定义或不清晰时不能用Use Cases,意思是如果目标成功或目标失败不能有一个明确的定义,那就不是一个用例。举例来说,用户输入密码,这是不是一个用例?用户输入密码的目的是什么?是为了输入密码吗?不是的,是为了登录系统,所以,用户登录是一个用例。 
      误区3:用例的粒度不明 
      用例的粒度大小要看情况,因地制宜,因时制宜。 
      因地制宜:一般系统用例10-50个为宜。比较小型系统可以粒度更小一些。 
      因时制宜:在业务建模阶段,在概念建模阶段,在系统建模阶段都是不同的。在系统建模阶段,用例的粒度是以每个用例能够描述操作者与计算机的一次完整的交互为宜。根据项目的不同阶段,不断缩小边界可以获得更小的粒度用例。一个大的用例还可以include一个小的用例,比如网上下订单是一个用例,修改订单是一个子用例,因为除了用户,管理员可以修改订单,这个子用例有意义。 
      误区4:用例和场景混淆 
      一个用例的执行是要有前因和后果的(前提是什么,结果会怎么样);比如,煮饭和炒菜是用例,他们各自都有步骤,各自有好几个场景。比如煮饭,我可以用电饭锅煮,也可以蒸饭,煮饭前要先淘米,等等,这些都是一个用例的不同场景,但用户的最终目的都是一样的。不要把用例和场景混淆。 
      误区5:软件工程是不是用例驱动? 
      软件工程是不是用例驱动?需求是重要的,用例是构造需求的好方法。但如果你同时要考虑开发的所有因素包括重用,架构,花费,时间,你就无法仅仅从一个方面来驱动你的项目。好的软件工程是被一系列重要因素所驱动的,而且因素也因不同的公司和项目有着不同的重要程度。这些因素包括: 技术上对于设计的考虑,用户需求,重用,可更改性,系统性能,标准化,日程的安排以及其他的商务驱动。每个项目都有着自己不同的考虑。对于每一种情况,可以精确的说项目被域模型和用例共同驱动。 
      误区6:用例直接推导出设计 
      不要从用例直接推论出设计。如果这样做,“用例开发”仅仅成为了功能分解的一个借口。用例止于系统接口的边界!用例应该描述参与者使用系统时所遵循的次序,但用例决不说明系统内部采用什么步骤来响应参与者的刺激。 
      用例是帮助确定系统边界的一个好方法。用例也是获取需求的一个方法。用例也是产生测试用例的好方法。但是,从系统边界、需求、到详细设计还有很长的路要走。比如说,类图,事实上类图和用例图没有对应关系。换句话来说,用例是需求分析时的产物,类(边界类外)的设计期的产物。

下面是菜单说明:

一:新建一个用例的模型 File->new Model

二:设置一下让画图区的那些页面线不显示,这样就不会干扰我们的视线。Tools->Display Preferences

三:设置一下线的箭头这样可以更好的清楚用例的出发者,也更好描写需求。

四:设置一下用例图的线,不设置的话会画成折线,我们一般喜欢用直线,这样可以更好的描写用例。

五:设置一下让名称和密码不一致,因为一致的话很麻烦 Tools->General Options

六: 工具栏  View->Toolbox

PowerDesigner16 用例图的更多相关文章

  1. 用rose画UML图(用例图,活动图)

    用rose画UML图(用例图,活动图) 首先,安装rose2003,电脑从win8升到win10以后,发现win10并不支持rose2003的安装,换了rose2007以后,发现也不可以. 解决途径: ...

  2. [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图

    [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图  1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...

  3. StartUML的基础的使用,用例图,序列图

    转载地址  http://blog.csdn.NET/tianhai110 (下面参考了原博主的内容,也加入自己的内容,为了自己脑补,也方便其他看到的人脑补) 使用StartUML绘制用例图:     ...

  4. PowerDesigner16 基本使用教程

    一.基本概念 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充. 它从用户的观点出发对信息进行建模,主要用于数据库的概念 ...

  5. UML 用例图、顺序图、状态图、类图、包图、协作图、流程图

    ​用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...

  6. [UML]UML系列——用例图Use Case

    用例图的概念 用例图是描述用例.参与者以及它们之间关系的图. 用例图的作用 用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为. 用例图定义和描述了系统的外部可见行为,是分析.设计直至组 ...

  7. [UML]UML系列——用例图中的各种关系(include、extend)

    用例图中的各种关系 一.参与者与用例间的关联关系 参与者与用例之间的通信,也成为关联或通信关系. 二.用例与用例之间的关系 包含关系(include) 扩展关系(extend) 包含关系 (1)  概 ...

  8. UML学习(一)-----用例图

    1.什么是用例图 用例图源于Jacobson的OOSE方法,用例图是需求分析的产物,描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图.它的主要目的就是帮助开发团队以一 ...

  9. 思维导图MindManager的文件格式与例图

    思维导图软件很多,能够画出思维导图的软件更多.作为流传较广而又比较成熟的思维导图软件,MindManager有专门的文件格式.如果读者想多借鉴导图,就应该了解MindManager的文件格式. Min ...

随机推荐

  1. svn服务器 备份,迁移,部署方案

    这次做业务迁移,要从一个云厂商迁移到某云厂商,之前每天到全备svn排到用场了,需要搭建一个全新到svn服务并要做迁移,并实现我们开发机到时时代码同步 一.svn备份有很多种,优劣都不同,百度可查,我采 ...

  2. Bus of Characters(栈和队列)

    In the Bus of Characters there are nn rows of seat, each having 22 seats. The width of both seats in ...

  3. mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: [sql] view plain cop ...

  4. activeMQ 讲解及实战

    #### 软件架构项目中需要用到activeMQ 下载地址:http://activemq.apache.org/download.html #### 安装教程需要安装jdk环境activeMQ免安装 ...

  5. java zip 压缩与解压

    java zip 压缩与解压 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java. ...

  6. React & event-pooling & bug

    React & event-pooling & bug event-pooling https://reactjs.org/docs/events.html#event-pooling ...

  7. Dubbo和Spring Cloud开发框架对比

    前言 微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案 ...

  8. 文件上传C:\fakepath\解决方案

    1.设置IE:工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可 2.利用js ...

  9. 【转】自编码算法与稀疏性(AutoEncoder and Sparsity)

    目前为止,我们已经讨论了神经网络在有监督学习中的应用.在有监督学习中,训练样本时有类别标签的.现在假设我们只有一个没带类别标签的训练样本集合  ,其中  .自编码神经网络是一种无监督学习算法,它使用了 ...

  10. Redis的RDB和AOF持久化

    RDB 持久化:在指定的时间间隔内生成数据集的时间点快照. AOF 持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. RDB 它只保存了 Redis 在某个 ...