重构机房收费系统需求分析之用例图

2024-05-25 16:18

本文主要是介绍重构机房收费系统需求分析之用例图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         上篇博客和大家分享了,机房收费系统的数据库是如何思考和构建出来的,有了数据库就要考虑整个系统的架构,而架构之前必须要进行需求分析,如何将需求分析的结果展示出来,是个问题,当然你可以写文档,但是仅仅有文字说明是不够的,如此一来,UML的Use Case Diagram就显得十分重要了。

         本次我们主要谈机房收费系统的用例图,我们先来了解一下用例图的基础知识,一个是方便大家阅读,另一个就是帮大家复习一下用例图的知识,因为长时间不用,有的人就会淡忘,比如本人。

         所谓的用例图,就是由主角、用例以及它们之间的关系构成的用于描述系统功能的静态视图。

         用例图主要由参与者(Actor)、用例(Use Case)、系统边界和箭头组成。

         用例图中元素的关系主要有用例之间的关系、角色之间的关系以及用例和角色之间的关系。

         角色之间的关系类似于类之间的关系,主要是泛化关系。用例之间的关系主要有include、generalize、extend三种关系。其中generalize就是泛化关系,类似于面向对象中的继承,这里就不多说了。我们主要来辨析一下包含和扩展这两个容易混淆的关系。

         所谓包含是指基本用例的行为包含了另一个用例的行为。简单理解就是用例可以包含其他用例具有的行为,并把它所具有的用例的行为作为自身行为的一部分。

         而扩展是指对基本用例的扩展,基本用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能操作。扩展关系中的基本用例中存在一个扩展点,扩展用例只能在扩展点上增加新的行为和含义。

         下面我们结合机房收费系统来加深理解一下扩展和包含这两种关系。

        

         在这个系统中,用户有很多的查询功能,我们作为一个用例抽象出来,然而在查询页面还有导出查询结果的功能,这样又一个用例被抽象出来,那么这两个用例之间应该是什么关系呢?我们来分析一下,对于查询而言能不能导出查询结果和查询本身并没有任何关系,换句话说这两个操作相对独立,导出是对查询功能的扩展,当然我们还可以添加打印的功能。因此这两个用例之间是扩展关系。

         而对于用户管理功能来说,AddUser和DeleteUser是用户管理功能的组成部分,如果没有了添加和删除用户这两个子用例,那么用户管理这个用例就变成了空壳,没有了任何意义。用户管理和其子用例是相互依存的,具有很强的依赖关系,因此他们之间是包含的关系。

         以上是我个人对用例之间的扩展和包含关系的理解,如有不妥之处,还请知情人不吝赐教。

这篇关于重构机房收费系统需求分析之用例图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001996

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl