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

2024-05-25 16:18

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

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

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

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

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

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

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

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

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

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

        

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

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

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

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



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

相关文章

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc