• 用例图到底是个什么图?
  • 用例图由哪些元素构成?
  • 用例图中的用例之间有什么关系?
  • 如何创建一个用例图?

用例图到底是个什么图?
一个图,由参与者(系统用户)、用例(系统功能)、以及他们之间的关系构成的,用于描述系统功能的动态试图。

如果要在用例图上显示一个参与者,可以绘制一个人形符号。

如果要在用例图上显示某个用例,我们需要画一个椭圆,然后将用例的名称放在椭圆的中心或者椭圆下面的中心位置。


参与者和用例之间的关系使用带箭头或者不带箭头的线段来描述,箭头表示的是:这一关系中哪一方是对话的主动发起者,箭头所指方是对话的被动接受者。

实例如下:

在用例建模中,为了更清楚的描述用例或者参与者,会用到注释。

到目前为止,我们熟悉了什么是用例图,用例图中含有哪些构图的元素,那么我们在分析一下,用例图的作用是什么?

用例图是在需求分析中用到的,主要的作用就是描述参与者和用例之间的关系,并帮助开发者可视化的了解系统的功能,借助用例图,系统用户,系统分析人员,领域专家能够可视化的方式对问题进行探讨,减少了大量交流上的障碍,便于对问题达成共识。

用例图可视化的表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足。

用例方法是完全从外部来定义系统功能,它把需求和设计完全的分离开来,这样我们就不用关系内部是如何实现的,系统对我们来说就是一个黑盒子。


用例图中各个要素所代表的含义

  1. 参与者
    参与者是指存在于系统外部并直接与系统进行交互的人,系统,子系统,或类的外部实体的抽象,每个参与者可以参与一个或多个用例,每个用例也可以有一个或多个参与者。
    在用例图中使用一个人形图标来表示参与者,参与者的名字下载人形图标的下面(如下图所示)
  2. 参与者之间的关系
    由于参与者实质上也是一个类,所以它拥有与类相同的关系描述,即参与者与参与者之间主要是泛化关系(就是继承关系)
    泛化关系的含义就是把某些参与者的共同行为提取出来表示成通用行为,并描述成超类。
    泛化关系表示的是参与者之间的一种一般/特殊的关系,在UML图中,使用带空心箭头的实线表示泛化的关系。
  3. 系统边界
    在项目开发过程中,边界就是一个非常重要的概念,这里说的系统边界就是指系统与系统之间的界限。通常我们所说的系统可以认为是由一系列的相互作用的元素形成的具有特定功能的有机整体。
    系统同时又是相对的,一个系统本身可以是另一个更大系统的组成部分,因此,系统与系统之间需要使用系统边界进行区分开来,我们把系统边界以外的同系统相关的其他部分,称之为系统环境。

用例的重要元素

1.如何识别用例
任何用例都不能在缺少参与者的情况下独立存在,同样,任何参与者也必须要有与之关联的用例,所以识别用例的最好方法就是从分析系统参与者开始,在这个过程中,往往会发现新的参与者。那么参与者怎么找呢?参与者如何定义呢?我们可以通过以下几个问题进行寻找。

  • 参与者希望系统提供什么功能?
  • 参与者是否会读取、创建、修改、删除、存储系统的某种信息?如果是的话,参与者又是如何完成这些操作的呢?
  • 参与者是否会将外部的某些事件通知给系统?
  • 系统中发生的时间是否通知参与者?
  • 是否存在影响系统的外部事件?

2.用例的粒度
用例的粒度值的是用例所包含的系统服务或功能单元的多少。

  • 用例的粒度越大,用例包含的功能越多、反之则包含的功能越少。
  • 用例的粒度越小,用例数就会很多,反之用例数就很少。
  • 如果用例数目过多会造成用例模型过大和引入设计困难大大提高。
  • 如果用例数目过少会造成用例的粒度太大,不方便进一步的充分分析。

示例:
网站后台管理系统中的会员信息维护用例,管理员需要进行添加会员信息、修改会员信息、删除会员信息等操作。
下面这个图就把对会员信息的操作整合为一体:维护会员信息用例

同样我们也可以根据具体的操作将其抽象成3个用例,它展示的系统需求和单个用例是完全一样的。


3.用例规约
对于每一个用例,我们还需要有详细的描述信息,以便让别人对整个系统有一个更加详细的了解,这些信息包含在用例规约中

每一个用例的用例规约都应该包含一下的内容:

  1. 简要说明:对用例作用和目的简要描述
  2. 事件流:事件流包括基本流和被选流,基本流描述的是用例的基本流程,是中用例“正常”运行时的场景。
  3. 用例场景:同一个用例在实际执行的时候有很多不同的情况发生,称之为用例场景,也可以说用例场景就会用例的实例。
  4. 特殊需求:特殊需求指的是一个用例的非功能需求和设计约束。特殊需求通常是非功能性需求,包括可靠性、性能、可用性和可扩展性等。例如法律或法规方面的需求,应用程序标准和所构建系统的质量属性等。
  5. 前置条件:执行用例之前系统必须所处的状态、如:前置条件是要求用户有访问的权限或是要求某个用例必须已经执行完。
  6. 后置条件:用例执行完毕后系统可能处于一组状态,例如要求在某个用例执行后,必须执行另一个用例。

用例之间的关系
1.包含关系
包含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。在UML中,包含关系是通过带箭头的虚线段加<>字样来表示,箭头由基础用例(Base)指向被包含用例(inclusion)。


在处理包含关系的时候,具体的做法就是把几个用例的公共部分单独的抽象出来成为一个新的用例,主要有两种情况需要用到包含关系

第一:多个用例用到同一段的行为,则可以把这段共同的行为单独抽象成为一个用例,然后让其他用例来包含这一用例。

第二:某一个用例的功能过多,事假流过于复杂时, 我们也可以把某一段事件流抽象成一个被包含的用例,以达到简化描述的目的。


2.扩展
在一定条件下,把新的行为加入到已有的用例中,获得的新用例佳作扩展用例,原有的用例叫做基础用例,从扩展用例到基础用例的关系就是扩展关系。
一个基础用例可以拥有一个或者多个扩展用例,这些扩展用例可以一起使用。

3. 泛化
用例泛化指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
在用例的泛化中,子用例继承了父用例所有的结构、行为和关系,子用例是父用例的一种特殊的形式。
子用例还可以添加、覆盖、改变继承的行为。在UML中用例的泛化关系通过一个三角箭头从子用例指向父用例来表示。

泛化的示例:
银行存款有两种方式,一种是银行柜台存款,一种是ATM机存款。在这里,银行柜台存款和ATM机存款都是存款的一种特殊的方式,因此存款为父用例,“银行柜台存款”和“ATM机存款”为子用例。


案例分析:

学生信息管理系统:部分功能如下:

  1. 系统管理员登录后可以对班级的基本信息进行增加、删除、修改、查询等操作。学校领导登录后可以对班级基本信息进行查询操作。
  2. 教师登录后可以对学生的考试成绩进行录入、修改、查询等操作。学生登录后可以对考试成绩进行查询操作。
  3. 学生登录后可以了解所有选修课程的具体信息,可以根据自己的需要选择不同的课程,系统管理员登录后可以增加、修改、查询、删除选修课程。
  4. 系统管理员可以对账号进行创建,设置、查看、删除等操作。

问题分析:

  1. 识别参与者
    【学生】:对于一个学校来说,最重要的就是教育学生,所以首要考虑的就是学生。
    【教师】:给学生上课,那必然有老师,老师的负责学生的教育,可以查看学生的基本信息,对学生的考试成绩进行操作。
    【领导】:老师的上级就是学校的领导,校领导需要掌握一个学校的所有基本信息,包括老师和学生的,同时还要加强对学校的管理工作。
    【管理员】:此外,不论是什么系统,基本都会有比较专业的人来负责管理系统,本系统也不例外,管理员除了负责系统的正常维护外,还要进行录入学校的基本信息(包括老师、学生、课程等)
  2. 构建用例模型
    【系统管理员】:登录、找回密码、查看班级的基本信息,删除班级的基本信息、修改班级的基本信息和录入班级的基本信息。
    【校领导】:登录、找回密码、查看班级基本信息
    如果忘记密码,需要用找回密码的功能来找回密码,但是正常情况下不会用到找回密码这个功能,所以,找回密码是登录的一个扩展。

    【教师】:录入成绩、修改成绩、保存成绩、查询成绩、删除成绩和登录。
    【学生】:登录、查询成绩。
    修改成绩和录入成绩都需要保存成绩,所以将保存成绩抽象出来作为一个单独的用例
    录入成绩、修改成绩和保存成绩是包含的关系
    找回密码和登录是扩展关系

    【学生】:查看课程信息、按课程编号查看、按课程名查看、选择课程、删除已选课程、登录和找回密码。
    【系统管理员】:登录、找回密码和“维护课程信息”
    查看课程有两种形式:
    (1)按照课程名查看
    (2)按照课程编号进行查看
    所以查看课程信息是父用例,而按照课程名查看和按照课程编号查看是子用例他们之间的关系是泛化关系
    找回密码和登录是扩展关系

    【系统管理员】:创建新账号、设置账号、设置账号基本信息、设置账号权限、查看账号和删除账号。
    在设置账号时,主要分为设置账号的基本信息和设置账号的权限,为了便于修改和维护,将这两个功能抽象为两个用例,所以设置账号基本信息、设置账号权限和设置账号时包含的关系。

本文参考于:https://blog.csdn.net/mj_ww/article/details/53020080

到底什么是用例图!!!!相关推荐

  1. web前端到底是什么?有前途吗

    web前端到底是什么? 某货: "前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> ...

  2. 【UML】— 用例图

    一.元素: 1.角色.用例(功能描述).关系(泛化.依赖.关联.实现) 2.元素含义: Actor 1. 可以是人.事.物 2. 分析角色考虑的因素:直接使用系统的人.维护人员.外设(人.打印机).相 ...

  3. UML初探——用例图学习UMLet使用详解

    用例图基础知识 用例图简介 用例图描述的是参与者所理解的系统功能,主要元素是用例和参与者.虽然用例图不能取代文本形式的用例文档,但它简要地概括了用例文档的主要内容,项目的基本需求和需求之间的关系一目了 ...

  4. 架构的交付到底应该交付什么?

    架构的交付到底应该交付什么? 最近在重新温习TOGAF,想起了以前很多自己周围同事朋友对架构, 很多都认知不全:大多数的朋友以为架构就是技术选型,画几张图,比如用例图,时序图,架构图:是对,但是不全对 ...

  5. 电商系统架构设计系列(一):电商系统到底是如何设计出来的?

    引言 电商这个业务,和我们的生活息息相关.你可能对电商多少有一些了解,但是,即使是一个最小化的电商系统,它仍然非常复杂. 在这个系列的文章里,我们将一起以一个创业公司的 CTO 的视角,来设计一个最小 ...

  6. [转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?

    转载链接:https://www.zhihu.com/question/51325408/answer/125426642 来源:知乎 这个问题无外乎有三个难点: 什么是sum 什么是reduce 什 ...

  7. 硬核科普:到底啥是云原生?

    本文主要根据课程 什么是云原生?_哔哩哔哩_bilibili 总结而来,其他参考文章如下: <云原生人才计划之Kubernetes 技术图谱>发布! - 知乎 (zhihu.com) ku ...

  8. 深度学习到底有哪些卷积?

    深度学习到底有哪些卷积? 深度学习中不同种类的卷积(比如 2D / 3D / 1x1 /转置/扩张(Atrous)/空间可分/深度可分/平展/分组/混洗分组卷积),能帮理解实际的工作方式. 总结深度学 ...

  9. 做技术到底可以做到哪种地步-技术为什么越走越窄 (转)

    尽管做技术已经有不少年头了,不管是犹犹豫豫还是坚定不移,我们走到了现在,依然走在技术这条路上. 不管我们处于何种职位,拿着哪种薪水,其实,我们会是不是的问问自己"做技术到底可以做到那种地步& ...

最新文章

  1. macos下使用aria2_用Aria2代替Firefox内置的下载器
  2. 使用repeater,遍历数据,不规则排序,不同的样式之间切换
  3. ds90ub934 i2c 配置_DS90UB948-Q1:1080p 双路 FPD-Link III 解串器
  4. windows环境安装haproxy及初步配置负载均衡使用示例
  5. 光华科技光刻胶_光刻胶领衔国产替代,20只相关优质个股曝光,快看看有没有你的...
  6. Keil5消除未调用警告
  7. ado.not--综合练习
  8. kafka中处理超大消息的一些考虑
  9. python:拼接多个csv文件
  10. 2021必看!java电子书合集,值得收藏!
  11. java题库软件_基于JAVA题库管理系统.doc
  12. jdk6或者7Base64转码与解码
  13. linux SysV IPC实现
  14. 如何免费编辑PDF文档?
  15. mysql 异地备份脚本_MySQL异地备份脚本
  16. 分类堆叠柱状图顺序排列及其添加合适条块标签
  17. Java集合底层原理理解
  18. 吉林大学计算机技术(电子信息)专业(专硕)解读
  19. python截取图片中的圆形区域
  20. LeetCode:390. 消除游戏————中等

热门文章

  1. 拉格朗日插值fortran程序
  2. 拒绝Softonic弹框
  3. vncserver的端口设置
  4. Android-Jetpack架构组件(一)带你了解Android-Jetpack
  5. CF342D Xenia and Dominoes
  6. NEC成功完成对Avaloq的收购
  7. 现代企业文化杂志现代企业文化杂志社现代企业文化编辑部2023年第1期目录
  8. JavaFX学习笔记(最全,最详细)
  9. 数据库专题训练实验-------存储过程
  10. 在SINA blog里加背景音乐的三种方法