UML-用例图

news2024/11/20 8:49:11

目录

一、UML

什么是UML?

为什么要用UML?

UML图有哪些?

二、用例图

用例图摘要

用例图主要元素

1. 参与者(Actor)

2. 用例(Use Case)

3. 关系

4. 边界

用例图之间的关系

(1)参与者之间的关系

(2)参与者与用例之间的关系

(3)用例之间的关系

三、用例图例子

1. 庭审系统

2. 图书馆借书系统

四、用例图实训

例题:商场购物卡

例题:小型网上书店


一、UML

什么是UML?

UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言

为什么要用UML?

通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。

UML图有哪些?

  • UML图分为结构图和行为图。
  • 结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
  • 行为图又分活动图、用例图、状态机图和交互图。
  • 交互图又分为序列图、时序图、通讯图、交互概览图。

二、用例图

用例图摘要

  • 用例图是从用户角度描述系统功能,是用户所能观察到的系统功能的模型图
  • 用例是系统中的一个功能单元
  • 用例图列出系统中的用例和系统外的参与者,并显示哪个参与者参与了哪个用例的执行(或称为发起了哪个用例)
  • 用例图多用于静态建模阶段(主要是业务建模和需求建模)

用例图主要元素

  1. 参与者(Actor)
  2. 用例(Use Case)
  3. 关联关系(Association)
  4. 包含关系(Include)
  5. 扩展关系(Extend)
  6. 泛化关系(Generalization)

1. 参与者(Actor)

        参与者在uml中用下面带有名字的小人来标示,主要表示与您的软件系统交互的人,组织或者外部软件系统。

2. 用例(Use Case)

        用例在uml中用使用椭圆标示,主要说明你的软件系统的功能,是使用文字描述的形式说明你的系统的功能。

3. 关系

参与者与用例、参与者之间、用例之间的联系。

4. 边界

一组用例描述的系统或子系统,用矩形框表示。

用例图之间的关系

(1)参与者之间的关系

  • 泛化关系

(2)参与者与用例之间的关系

  • 关联关系:参与者与用例之间通常用关联关系来描述。带箭头的实线表示,箭头指向用例

(3)用例之间的关系

  • 包含关系:一个用例(基础用例)的行为包含另外一个用例(被包含用例)的行为。基础用例依赖于包含用例的执行结果。包含关系是通过在依赖关系上应用<<include>>构造型(衍型)来表示的箭头的方向是从基础用例指向被包含的用例。包含关系是一定要执行的。

应用情形

  1. 如果两个以上用例有重复的功能,则可以将重复的功能分解到另一个用例中。其他用例可以和这个用例建立包含关系。
  2. 一个用例的功能太多时,可以用包含关系创建多个子用例。

  • 扩展关系:扩展用例可以在基础用例之上添加新的行为,基础用例必须声明某些特定的扩展点,扩展用例只能在这些扩展点上扩展新的行为,将扩展用例的事件流在一定的条件下按照相应的扩展点插入到基础用例中。扩展关系是通过在依赖关系上应用<<extend>>构造型(衍型)来表示的箭头方向由扩展用例指向基础用例。扩展关系是当特殊情况下触发的。

  • 泛化关系:一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。泛化关系表示的是一般与特殊的关系。

三、用例图例子

1. 庭审系统

2. 图书馆借书系统

四、用例图实训

例题:商场购物卡

  • 若某商场中发行一种购物卡用户可以根据自己的需要提出申请去办理购物卡
  • 商场的卡管理员可以根据申请,创建新的购物卡
  • 用户可以向购物卡预存费用,商场卡管理员为该用户添加相应的预存费用
  • 用户可以用购物卡在商场进行消费,每进行一次消费,售货员就从购物卡中扣除相应的费用
  • 当购物消费每满一定数额时,商场自动在卡中添加奖励费

分析:

  • 参与者:购物卡管理员、售货员。
  • 用例:创建新卡、为卡添加预存费用、消费。
  • 创建新卡、为卡添加预存费用、消费都需要相关人员登录操作。

例题:小型网上书店

小型网上书店系统简介: 本书店系统提供图书的浏览功能,无论登录与否都能浏览库存的图书,而已注册用户还可以进行图书的购买以及自己订单的管理。相对于使用者,系统还有一个管理图书的管理员,用于对库存书籍进行增加、删除、检索等工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Figma实用插件速收藏!精选19个干货插件大公开!

Figma 如今有着大量的插件&#xff0c;在 UI/UX 设计领域&#xff0c;很多工作已经不用真的从零开始做了。用好 Figma 插件&#xff0c;往往能让设计工作事半功倍。不过其中的插件素质差别很大&#xff0c;需要仔细筛选。不过如果你选择了对的插件&#xff0c;合理的设置&#…

SpringCloud(17~21章):Alibaba入门简介、Nacos服务注册和配置中心、Sentinel实现熔断与限流、Seata处理分布式事务

17 SpringCloud Alibaba入门简介 17.1 why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now 说明 Spring Cloud Netflix Projects Entering Maintenance Mode 什么是维护模…

c高级day4(shell)

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果

20230911 Shell指令数组以及函数值传递,值返回

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bashfunction fun() {sum0for ((i0;i<$var;i))do(( sumarr[i] ))doneecho $sum } read -p "输入该数组个数: " var for((j0;j<$var;j)) doread -p "输入数组第$j个值: " arr[j] …

Jmeter引入外部jar包以满足加密数据的Post请求

目录 一、把项目打成jar包 1、创建一个Maven项目&#xff0c;并保证可以正常运行。 2、把工具类放置项目中&#xff0c;确保无报错且能够正常使用。 3、打包 4、验证 jar包是否有效 5、你想打多个工具类的包 二、在jmeter中使用 1、把jar包放到jmeter仓库下&#xff0c;…

Mixin从理论到实践

mixin从理论到实践 mixin从理论到实践一、什么是mixin二、使用mixin三、mixin的合并策略四、mixin辨析五、个人实践 mixin从理论到实践 一、什么是mixin mixin混入 — Vue.js (vuejs.org) 官方解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue …

uni-app:自带的消息提示被遮挡的解决办法(自定义消息提示框)

效果&#xff1a; 代码&#xff1a; 1、在最外层或者根组件的模板中添加一个容器元素&#xff0c;用于显示提示消息。例如&#xff1a; <div class"toast-container" v-if"toastMessage"><div class"toast-content">{{ toastMessa…

shell脚本中分支结构、循环、以及函数的介绍和使用

练习 实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bash function sum() {sum0for i in ${arr[*]}do((sumi))doneecho "数组和为&#xff1a;"$sum } read -p "请输入一个数组&#xff1a;" -a arr sum arr写一个函数&#xff0c…

华为云云服务器云耀L实例评测 | 从零开始:华为云云服务器L实例使用教程

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Mediasoup源码介绍

一、Mediasoup 整体结构 整个Mediasoup库通过Nodejs管理&#xff0c;比如整体逻辑、worker、router、producer、consumer...都是通过JS进行管理的。 其底层的数据传输是通过C部分进行控制的&#xff0c;通过NodeJs来控制C部分&#xff0c;以实现整体的数据传输效 二、Mediasou…

Python最好用的可视化库(从低级到高级)

今天&#xff0c;我将深入探讨Python中的数据可视化世界&#xff0c;更具体地说&#xff0c;我们如何利用一些官方库来可视化SQL查询的结果&#xff0c;已有的“轮子”可以让这个过程变得轻松愉快。我们接下来将分别给出几个库的简介及运行结果。 Matplotlib&#xff1a;你可靠…

想要精通算法和SQL的成长之路 - 课程表IV

想要精通算法和SQL的成长之路 - 课程表IV 前言一. 课程表IV &#xff08;拓扑排序&#xff09; 前言 想要精通算法和SQL的成长之路 - 系列导航 做这个题目之前可以回顾一下&#xff1a;课程表II 一. 课程表IV &#xff08;拓扑排序&#xff09; 原题链接 这道题目在课程表I…

通过Git Bash将本地文件上传到本地github

1. 新建一个仓库&#xff08; Repository&#xff09; 1.1登录Github&#xff0c;点击个人头像&#xff0c;点击Your repositories&#xff0c;点击New。 1.2 填写信息 Repository name: 仓库名称 Description(可选): 仓库描述介绍,不是必填项目。~~建议填写上哦&#xff01;…

排序算法:快速排序(三种排序方式、递归和非递归)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关排序算法的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…

PMP中十大知识领域及敏捷部分

今天给大家分享一篇PMP考试中十大知识领域及敏捷部分。希望正在备考11月PMP的宝子们能够清楚地拿捏重难点&#xff0c;稳稳上岸&#xff01; 我是胖圆~欢迎大家关注留言&#xff01; 或者移步公众号【胖圆说PM】找我

SpringBoot-可视化监控

一、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--采集应用的指标信息&#xff0c;prometheus--> <dependency…

牛客练习赛115 A Mountain sequence - 乘法原理

a 到 b有3条路&#xff0c;b到c有4条路&#xff0c;那a到c共有12种选择。 最大值作为顶点&#xff0c;统计每个数的数量&#xff0c;比如说最大值为9&#xff0c;且只有一个&#xff0c;7的数量为4 有的可能为 77779 77797 77977 79777 97777 共计5种可能性&#xff0c;设一…

windows 下载安装 mysql

windows 下载安装 mysql 官网地址&#xff1a;https://dev.mysql.com/ 下载地址&#xff1a;https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.34.0.msi 点击 Downloads 点击 MySQL Community (GPL) Downloads 点击 MySQL Installer for Window…

C高级day5

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bashfunction sum() {i${#*}j0m0while [ $j -lt $i ]do((m${arr[j]}))((j))doneecho "数组和为$m"} read -a arr sum ${arr[*]} 写一个函数&#xff0c;输出当前用户的uid和gid&…

Android悬浮窗实现源码-悬浮球转盘悬浮加速小火箭效果悬浮播放视频图片

一、实现思路 悬浮窗是一种比较常见的需求&#xff0c;就是把需要展示的内容界面缩小成一个悬浮窗&#xff0c;然后用户可以在其他界面上处理事情。 基本实现原理&#xff1a; 主要是通过WindowManager这个类来实现 addView方法用于添加一个悬浮窗&#xff0c; updateViewLay…