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

2024-05-25 16:18

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

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

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

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

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

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

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

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

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

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

        

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

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

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

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



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

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.