软件设计之UML用例图大白话教程

news2025/2/25 11:03:23

1、为什么要使用UML用例图?

对一个复杂问题或者现象的分析,好的方式方法往往能带来事半功倍的效果。比如在软件开发领域,参与的人员角色各种各样,比如软件开发工程师、产品经理、客户、运营人员、老板、用户、B端客户等等,而我们开发软件的初衷是为了解决用户的问题或者方便用户的工作生活,首先就需要收集用户的需求,而需求来自哪里呢?有如下几种方式可以获得需求的来源:

  • 用户需求
    首先是用户需求,是这个产品的目标用户想要什么,而不是你想要什么,站在用户的立场去考虑产品应该具备什么样的功能解决用户的痛点,提供用户想要的。所以需要去调研、收集你的目标用户的需求。
  • 客户需求
    有些产品是针对B端客户的,那B端的客户想要什么,产品应该具备什么样的功能满足客户的需求。需要调研客户的需求。
  • 产品经理
    无论做什么产品,都必须要有一个产品经理,产品经理主要负责产品的需求调研、分析、设计、规划等等工作,产品经理对于软件产品的开发很熟悉,熟悉用户体验的设计,所以为了能让用户有更好的体验,产品经理也会有很多的需求,想要把这些需求在软件上实现。
  • 运营人员
    不管是什么样的软件产品,其实也是和用户建立联系的一种渠道,通过这个渠道的运营,让用户能够来使用产品,那么产品本身需要具备运营的功能,满足运营的需求。因此也需要去和运营的人员去分析,收集运营的需求。
  • 竞争对手
    在产品中,有个工作叫竞品分析,通过分析竞争对手的产品,发现竞争对手产品的问题,包括市场需求解决问题和用户体验问题,而这些问题就是你的产品需要去改变的,也是发展的机会。所以很多创业者把竞争对手的产品直接拿过来仿照去开发的方式肯定是不可取的。
  • 开发人员
    产品设计出来后,具体开发还是需要技术人员去实现,但是并不是所有的方式都可以很好的实现,而且开发人员对于前沿的用户体验等都较熟悉,因此也会提出一些需求。

在设计软件的初期,面对不同领域、不同角色、不同身份的需求人员,为了能一起把这个软件的所有需求点确定出来,想想都是一件不容易的事情。首先就是沟通问题,传统的方式是产品经理收集各方反馈的需求整理成PRD,给到研发人员,研发人员再按PRD进行研发设计,然后进行编码开发软件。

在前面分析的整个软件开发过程,就可以看做是对需求信息流进行加工并传递,直到输出软件成品。如果沟通不到位、信息的传递出现误差,做出的成品软件肯定无法满足需求的初衷,这样的软件也是失败的。那么有没有一种方法,让所有需求提供人员都能参与其中,能直观的和大家讨论、沟通软件的需求、功能点呢?

这个时候UML用例图就非常关键了,它是以一种所有人都易于理解的图解方式进行呈现的,也称为统一建模语言,不同角色、领域的参与人员都能直观的了解到整个软件的需求点、功能点、参与角色等信息,并能提出自己的需求、讨论需求,通过所有参与方的仔细沟通后,确定下来的成品就是UML用例图。

UML用例图对产品经理的PRD设计有着指导作用,设计出来的功能需求也很难再偏离需求提供方的初始意图,因为全程都有开发人员一起参与,开发人员在拿到产品经理提供的PRD后也能起到一个监督和反馈的作用。

总结一句话就是,UML用例图是一种以图表形式的标准化建模语言。当然UML除了用例图,还包含活动图、状态图、时序图、类图、组件图、包图、部署图等等,本文仅为大家讲解用例图的使用场景以及如何使用,后续也会对其他类型绘图的使用做讲解,喜欢的朋友可以点赞支持、持续关注更新哦!

2、UML用例图使用场景

简单来说,需要描述一个系统的动态视图时,就可以使用UML用例图,常见的使用场景有:

  • 软硬件参与角色与功能点需求分析
  • 分析并策划一场活动的参与方、节目安排等等
  • 对一个产品的使用人员、功能点进行分析
  • 对一些人群的类型、行为进行分析
  • 对一些生物的生活习性的分析

其实生活中还有很多类似上面的场景都可以使用UML用例图来描述,只要使用得当,效果一定会事半功倍的。

3、UML用例图组成结构分析

用例图(Use Case Diagram): 描述了人们希望一个系统应该提供怎样的服务给自己使用,将系统参与方、功能服务、及他们间的使用关系更清晰的展示出来,以便使系统用户、系统开发人员和其他参与方更容易理解这些元素的用途,也便于开发人员最终实现这些元素。

之所以说用例图至关重要,是由于用户并不关心系统的实现和内部结构,只关心产品所呈现出来的外部行为特征。而用例图恰好就是描述软件产品外部特性的视图,它从用户的角度而不是从开发者的角度来描述需求,分析产品的功能和动态行为。

用例图包括四方面内容:

  • 用例(Use Case)
    是对系统的用户需求(主要是功能需求)的描述,用例表达了系统的功能和所提供的服务,描述了活动者与系统交互中的对话。用椭圆形表示。

  • 参与者(Actor)
    参与者是系统外部的一个实体,它以某种方式参与了用例的执行过程,在UML中,通常用名字写在下面的人形图标表示。

  • 参与者、用例之间的关系
    参与者与用例之间的关系主要包括关联、泛化、包含、拓展。以连线+描述的方式表示
    关联
    表示参与者与用例之间的关系

    泛化
    表示参与者与参与者之间、用例与用例之间的关系。一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。

    包含
    表示用例与用例之间的关系,其中一个用例的行为包含了另一个用例的场景,另一个用例的行为作为该用例的行为的一部分。

    拓展
    表示用例与用例之间的关系,拓展用例是在满足一定条件下对基础用例的补充。

    • 系统边界
      系统边界是指系统与系统之间的界限。用方形容器+系统名称表示。

4、常用UML用例图示例

4.1 绘图示例

我平时一直使用PDDON在线画图(一款可以免费使用支持低代码的在线画图工具),所以本文所有配图均使用PDDON进行绘制,因为比较喜欢手绘卡通风格,所以使用了PDDON提供的一键转手绘功能。

  • 画图工作空间

  • 用例图示例

  • 其他绘图示例

4.2 那么pddon与其他画图软件有哪些区别呢?

  • 在线画图,打开浏览器就能用,无论windows、mac、linux系统,支持市面上大部分浏览器:chrome、Firefox、edge、360安全/极速、Safari等浏览器,最好都使用新版本浏览器,画图体验更好,IE不提供支持,UC浏览器兼容性也比较差,不建议使用,而且手机上也能画图哦!
  • PDDON完全免费,但不同于其他免费软件,PDDON非常好用,而且一直在迭代更新,致力于提供更简单高效美观的绘图软件服务
  • pddon为每种类型绘图做了定制化功能增强,并非是纯图形绘制,在逻辑功能上进行增强,更易于使用
  • 对程序员和设计者更友好,提供了低代码能力,自动生成SQL和代码节省了编码的时间,而且不易出错,能最大程度保持设计稿与代码的一致性
  • 国人开发的,功能体验对国内用户更友好
  • 提供了很多傻瓜式的智能操作功能,能快速一键切换连线、绘图风格
  • 智能辅助绘图功能简化用户操作,对无绘图经验的用户更友好
  • 功能简化用户操作,对无绘图经验的用户更友好
  • 近期刚推出1.0版本,广受用户喜爱,好评不断

5、总结

PDDON除了可以用来画UML用例图,还可以绘制其他UML图(活动图、状态图、时序图、类图、组件图、包图、部署图),而且还支持流程图、架构图、部署图、网络拓扑图、思维导图、数据库模型图、鱼骨图、韦恩图、自由风格(白板作图)绘图等等一系列绘图,提供的丰富组件可以绘制各种市场营销、产品分析、学习计划、工作相关等等相关的绘图,绘图支持导出各种常见矢量图和非矢量图,可以很容易的插入到您的word文档、ppt、pdf、markdown等各种文档中,关注PDDON在线画图公众号,再也不用担心找不到好用的画图工具了。

PDDON声明:提供的画图功能绝不收费,欢迎大家免费使用。

喜欢的朋友可以关注我,定期分享画图教程和绘图模板。

觉得不错的朋友可以点赞、喜欢、收藏哦,谢谢大家。

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

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

相关文章

chatgpt赋能Python-python_kargs

Python中的*kargs:详解 在Python编程中,经常需要为函数传递参数。除了常规的参数传递,Python还支持通过关键字参数传递参数。这种方法比较灵活,可以快速地修改函数的输入参数。其中,kargs是Python中非常常见的一个参数…

管理git项目:003

首先我们得创建一个git管理仓库 进入桌面路径,待会创建的文件可以在桌面找到 cd ..【创建git管理仓库】:创建一个.git 管理仓库, 这个文件被创建后是一个隐藏文件。这个.git文件的作用是:指定当前文件夹作为git管理仓库 git init …

今天,我问了ChatGPT一个难以启齿的问题,内容实录

文 / 高扬(微信公众号:量子论) 七个月前,我是一个害怕失业的漂泊上海的小青年,每天在合租房里刷着LeetCode。 现在我已经在一家人工智能公司从事着自己喜欢的关于机器深度学习的研发工作。 你想知道我的生活发生了什么…

学习git

文章目录 02-为什么要学习Git软件?03 概念:版本控制04 概念:版本控制软件基础功能05 概念:集中式、分布式版本控制系统、多人协作开发5.1 文件冲突问题5.2集中式版本控制(CVS,SVN)5.3 分布式版本…

Word控件Aspose.Words教程:使用 Aspose.在 Java 中对条码使用 ECI 编码

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理,并…

LabVIEWCompactRIO 开发指南30 目标间通信

LabVIEWCompactRIO 开发指南30 目标间通信 可以从两种方法选择在FPGA VI和实时处理机上运行的VI之间传输数据的方法:前面板控制和指示器或DMAFIFO。可以使用前面板控件和指示器来传输最新值或标签以及DMA FIFO,以流式传输数据或发送消息和命令。这两种…

数据存储应用与原理剖析

存储引擎 存储引擎就是存放和读取用户数据的地方,对于持久化的存储引擎而言,数据的归宿是非易失性的存储介质(通俗意义上来说就是磁盘)所以该以什么形式组织和存储数据,这就是存储引擎设计的艺术所在这一块涉及到和操…

【历史上的今天】5 月 23 日:Java 正式发布;晶体管的共同发明者出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 23 日,在 2007 年的今天,盛大宣布出售所持有新浪公司股票,累计获利 7650 万美元。盛大曾于 2005 年 2 月通过公开市场…

Golang-循环变量作用域针对那些数据类型会出现问题

一、原因 在 Go 中,循环变量的作用域是整个 for 循环语句块。因此,循环变量在 for 循环语句块中的代码都是可见的。 但是,当循环变量的值被用于闭包, 协程或者使用指针类型的数据结构时,会出现一些问题。这是因为循环变量的值在…

每日一练 | 网络工程师软考真题 Day8

1、某客户端采用ping命令检测网络连接故障时,发现可以ping通127.0.0.1及本机的IP地址,但无法ping通同一网段内其他工作正常的计算机的IP地址。该客户端的故障可能是 。 A.TCP/IP协议不能正常工作 B.本机网卡不能正常工作 …

80%的人加班都是因为没搞清业务需求:小白如何做好需求调研?

做过项目的都知道,收集和明确需求并非易事,尤其是挖掘需求方详细、深层次的需求。 很多企业在做需求调研时,经常由于双方对问题描述和理解上的差异,使得需求在不断传递的过程中发生较大的偏差,结果导致最终开发出来的…

Head-Free Lightweight Semantic Segmentation with Linear Transformer 新颖的分割网络

现有的语义分割网络基本都是编码解码结构,新的语义分割网络主要都是在解码阶段添加新的不同模块,提高解码阶段特征处理能力,从而实现语义分割。而这篇文章主要是去除了解码阶段,把工作重心放在了编码阶段。它采用并行架构来利用原…

chatgpt赋能Python-python_isdigit_小数

Python isdigit 小数:如何检测字符串是否为数字? 在Python中,字符串是一种非常常见的数据类型。有时我们需要将字符串转换成数字类型,以便于进行各种计算,比如统计数据、计算平均数等等。在这种情况下,我们…

四、Spring从入门到改行

一、Spring概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器&#xff08;框架&#xff09;。 二、Spring基础程序 1、pom.xml中导入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifact…

chatgpt赋能Python-python_ip地址处理

Python IP地址处理 在网络通信中&#xff0c;IP地址是非常重要的内容。Python作为一门强大的编程语言&#xff0c;自然也能处理IP地址。本文将介绍Python处理IP地址的方法&#xff0c;并提供一些实用的例子。 IP地址的表示方式 IP地址是一个32位的二进制数&#xff0c;通常表…

chatgpt赋能Python-python_if_跳过

Python中if语句的跳过和应用 Python的if语句是编程中常用的一条条件语句&#xff0c;它允许开发者根据不同的情况&#xff0c;对代码进行不同的处理。if语句也带来了一些跳过语句&#xff0c;可以有效地帮助开发者避免不必要的操作&#xff0c;提高程序运行效率。本文将介绍Py…

toString 自定义逻辑 过滤 limit ignore 字段 ReflectionToStringBuilder ToStringBuilder

ToStringBuilder 有自己的属性,style, 也有工具方法,直接代理了ReflectionToStringBuilder // ReflectionToStringBuilder 非并发安全,需每次都new ReflectionToStringBuilder reflectionToStringBuilder new ReflectionToStringBuilder(this, org.apache.commons.lang3.build…

2023新版Spring6全新讲解-HelloSpring入门案例

Spring的入门案例 Spring6.0要求的JDK最低版本是17 我们在本课程中使用的版本是5.x版本。这个Spring5的JDK的最低要求是8 一、环境要求 JDK&#xff1a;8 Maven&#xff1a;3.6 Spring:5.3.27 开发工具&#xff1a;IDEA 2021.1.1 二、项目创建 1. 构建项目 在idea中&…

互联网医院系统的优势与挑战:现状调研分析

随着互联网技术的不断发展和普及&#xff0c;互联网医院系统也逐渐走进人们的视野。这种以互联网技术为支撑的医疗服务模式&#xff0c;可以为患者提供更加便捷、快速和高效的医疗服务&#xff0c;同时也可以缓解医院资源短缺的问题。 一、互联网医院系统的优势 方便快捷 互联…

chatgpt赋能Python-python_josn

Python Json&#xff1a;简介与应用 什么是Json&#xff1f; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有良好的可读性和易于解析性&#xff0c;广泛用于Web数据传输和API交互中。 Python中的Json模块 在Python中&…