当前位置: 首页 > news >正文

软件工程--需求分析与用例模型

面向对象分析(ObjectOrientedAnalysis,简称OOA)

分析和理解问题域,找出描述问题域所需的类和对象,分析它们的内部构成和外部关系,建立独立于实现的OOA模型,暂时忽略与系统实现有关的问题。

主要使用UML中的以下几种图描述OOA模型:

  • 用例图
  • 类图
  • 活动图(或泳道图)
  • 时序图(或协作图)

用例模型:

概念

  • 用例图是显示一组用例、参与者以及它们之间关系的图
  • 用例图用来描述用户的需求,他从用户的角度描述系统的功能,并指出各功能的操作者,强调谁在使用系统,系统为参与者完成哪些功能。

■参与者actor(线条人)

  • DFD数据流图的外部实体=用例图的参与者(线条人)
  • 位于目标系统的外部,指用户在系统中扮演的角色,代表一类使用系统某个功能的人或事。

参与者有三大类:

  • 系统用户
  • 与建造的系统交互的其它系统

UML中的符号表示:

  • 参与者是人,用“小人图”
  • 参与者是某个系统时用“方框图”。


■用例(椭圆)
■用例间的关系(用例之间的线)
■系统(方框)--只圈系统功能(可以没有)
 

创建用例建模的步骤:

  • 确定系统的范围和边界
  • 确定系统的用例和参与者
  1. 识别参与者
  2. 识别用例
  • 用例说明
  • 确定用例之间的关系
  • 建立用例图并定义用例图的层次结构
  • 评审用例模型

如何识别参与者

  • 谁使用系统的功能?
  • 谁从系统获取信息?
  • 谁向系统提供信息?
  • 谁来负责维护和管理系统以保证其正常行?
  • 系统需要访问哪些外部硬件设备?
  • 系统需要与哪些其它软件系统进行交互?

PS.管理员的功能不能全部都连,只连管理

如何识别用例(usecase)

 找到参与者后,据此来确定系统的用例,主要考虑各个参与者需要系统为其提供什么样的服务(或功能)。

  • 参与者用系统完成什么任务?
  • 参与者是否会在系统中创建、修改、删除、访问、存储数据?若是,参与者又是如何完成这些操作的?
  • 参与者是否会将外部的某些事件通知给系统?
  • 系统是否会将内部的某些事件通知给参与者?

识别用例的要点

  1. 可观测一用例止于系统边界
  2. 由参与者观测一业务语言、用户观点
  3. 系统执行一用例是有意义的目标
  4. 结果值一结果值由系统生成
  5. 一组用例实例一用例的粒度

关系

角色和角色之间:泛化关系(继承):实线+箭头

三角空箭头

用例和用例之间的关系:包含关系

用例与用例之间的扩展关系:

表示只有在某些特定情况下用例2才会使用到用例1,此时用例1的事件流将被插入到用例2的事件流中。

 用例描述

用例描述

期末考试题库

1.重点

2.

3.

                 

U1:确认处方

U2:药品派送

U3:送药上门

A2:药师

A1:患者

4.

类图是面向对象设计的核心

5.

类图

一个类述了一组对象的集合

√相似属性
√相同操作
V与其他对象共同关系
V共同含义(“语义”)的对象集台

类的实例--对象

类图是表达系统类及其相互联系的图示,它是面向对象设计的核心。类图表示类、接口和它们之间的协作关系。

分析类

分析类是概念层次上的内容。在分析阶段,它直接与系统的应用逻辑和需求相关,而不关注于技术实现。

分析类可划分为三种类型:

  • 边界类
  • 控制类
  • 实体类

实体类(Entity class)

通常对应现实世界中的“事物”息及其相关行为需要在系统中长期存储和管理:。这些“事物”的基本信

比如,校园网上订餐系统中,顾客类(customen),食物类(food)、订单类(order)等都属于实体类。

控制类(Control class)

描述用例所具有的事件流的执行逻辑。控制类本身井不处理具体的任务,而是调度其他类来完成具体任务, 

相关文章:

软件工程--需求分析与用例模型

面向对象分析(ObjectOrientedAnalysis,简称OOA) 分析和理解问题域,找出描述问题域所需的类和对象,分析它们的内部构成和外部关系,建立独立于实现的OOA模型,暂时忽略与系统实现有关的问题。 主要使用UML中的以下几种图…...

预测房价学习

1. 实现函数来方便下载数据 import hashlib import os import tarfile import zipfile import requestsDATA_HUB dict() DATA_URL http://d2l-data.s3-accelerate.amazonaws.com/def download(name, cache_diros.path.join(.., data)):"""下载一个DATA_HUB中…...

电脑无法上网,但是微信、QQ可以正常使用

这种情况一般是由于DNS服务器配置错误,或者已有的DNS服务器无法正常解析地址造成的。 按下winR打开运行,输入ncpa.cpl,点击确定。 在打开的网络连接窗口中找到对应的网卡,双击打开。一般有线网是“以太网”,无线网&am…...

C++11新特性(列表初始化与右值引用折叠与完美转发)

c11 列表初始化c98的{}c11的{}std::initializer_list 右值引用和移动语义左值和右值的概念左值引用和右值引用引用延长临时对象生命周期左值和右值的参数匹配左值引用的主要使用场景移动构造和移动赋值引用折叠完美转发 列表初始化 c98的{} 在C98中,大括号 {} 的使…...

基于SSH的物流运输货运车辆管理系统源码

基于经典的ssh(Spring Spring MVC Hibernate)框架与SaaS(软件即服务)模式,我们为运输企业与物流公司打造了一款开源且易用的车辆管理系统。 该系统主要包含以下核心模块: 档案管理 财务管理 借款管理 保…...

基于RabbitMQ,Redis,Redisson,RocketMQ四种技术实现订单延时关闭功能及其相关优缺点介绍(以12306为主题)

目录 1. 延迟关闭订单 1.1 订单延时关闭功能技术选型 1.1.1 定时任务 1.1.2 RabbitMQ 1.1.3 Redis 过期监听 1.1.4 Redisson 1.1.5 RocketMQ 1.2 RocketMQ订单延时关闭发送方实现 1.3 RocketMQ订单延时关闭的消费方实现 1. 延迟关闭订单 用户发起订单后,如…...

HarmonyOS ArkTS与C++数据类型转换

1. HarmonyOS ArkTS与C数据类型转换 本文介绍了C与TS各自数据类型与互相之间的数据类型转换,在需要使用C模块时可以快速上手对各种数据类型进行转换。 1.1. 概述 HarmonyOS的主力开发语言是ArkTS,也提供了C语言的支持,对于一些能力&#xff…...

腾讯云或阿里云centos7安装Redis,并解决端口无法访问的问题

问题背景 最近自建的网站JeecgFlow在云环境安装redis时候,出现端口无法远程进行访问。 浪费好了好久时间进行排查, 记录一下Redis在云环境centos7环境下如何安装,并且远程访问。 Redis安装 //安装c 用于编译redis yum install gcc-c//在/u…...

【小问题】距离估计和频率估计的方差下界推导出距离估计的方差下界

【1】OFDM Radar Algorithms in Mobile Communication Networks pp34 文章目录 1. 频率和距离之间的关系2. 计算 d ^ \hat{d} d^ 对 n ^ \hat{n} n^ 的导数3. 将频率的方差转化为距离的方差4. 从频率的 CRB 获得 var ⁡ [ n ^ ] \operatorname{var}[\hat{n}] var[n^]5. 将 …...

Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容

介绍 在当今数据驱动的世界中,抓取动态网页内容变得越来越重要,尤其是像抖音这样的社交平台,动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容,Selenium爬虫技术则是一…...

Z-BlogPHP显示错误Undefined array key 0 (set_error_handler)的解决办法

今天打开博客的时候,意外发现页面,打开均显示错误:Undefined array key 0 (set_error_handler)。 博客程序采用的是Z-BlogPHP。百度了一圈没有找到解决办法,在官方论坛里也没找到解决办法。 于是开始自己排查原因。我服务器采用…...

java-实例化一个List,然后添加数据的方法详解

在Java中,实例化一个 List 并向其中添加数据非常简单。List 是一个接口,因此我们通常使用它的常见实现类 ArrayList 或 LinkedList。以下是一些常见的操作方法: ### 1. 使用 ArrayList 实例化并添加数据 java import java.util.ArrayList; …...

【Linux系统】Ubuntu的简单操作

什么是 Ubuntu? Ubuntu(乌帮图)是一个非洲词汇,它的意思是“人性对待他人”或“群在故我在”。Ubuntu发行版将Ubuntu精神带到软件世界之中。 目前已有大量各种各样基于GNU/Linux的操作系统,例如:Debian,SuSE,Gentoo,R…...

标准日志插件项目【C/C++】

博客主页:花果山~程序猿-CSDN博客 文章分栏:项目日记_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,项目介…...

SpingBoot原理

SpingBoot原理 在前面十多天的课程当中,我们学习的都是web开发的技术使用,都是面向应用层面的,我们学会了怎 么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇,主要偏向于底 层原理。 我们今天的课程…...

Cout输出应用举例

Cout输出应用 在main.cpp里输入程序如下&#xff1a; #include <iostream> //使能cin(),cout(); #include <stdlib.h> //使能exit(); #include <sstream> #include <iomanip> //使能setbase(),setfill(),setw(),setprecision(),setiosflags()和res…...

java的无锁编程和锁机制

Java 的并发编程中&#xff0c;为了保证线程安全和高性能&#xff0c;采用了两种主要的同步手段&#xff1a;锁机制和无锁编程。以下是对锁机制、无锁编程、死锁及其避免的详细讲解。 一、无锁编程 无锁编程通过原子操作来避免传统锁&#xff0c;从而减少线程的上下文切换&am…...

vue实现富文本编辑器上传(粘贴)图片 + 文字

vue实现富文本编辑器上传&#xff08;粘贴&#xff09;图片 文字 1.安装插件 npm install vue-quill-editor -s2.在使用vue-quill-editor富文本的时候&#xff0c;对于图片的处理经常是将图片转换成base64&#xff0c;再上传数据库&#xff0c;但是base64不好存储。 原理&a…...

子集和全排列(深度优先遍历)问题

欢迎访问杀马特主页&#xff1a;小小杀马特主页呀&#xff01; 目录 前言&#xff1a; 例题一全排列&#xff1a; 1.题目介绍&#xff1a; 2.思路汇总&#xff1a; 3.代码解答&#xff1a; 例题二子集&#xff1a; 题目叙述&#xff1a; 解法一&#xff1a; 1.思路汇总…...

判断检测框是否在感兴趣区域(ROI)内

判断检测框是否在感兴趣区域&#xff08;ROI&#xff09;内 在计算机视觉和图像处理中&#xff0c;我们经常需要确定一个矩形检测框是否位于一个特定的感兴趣区域&#xff08;Region of Interest, ROI&#xff09;内。这个ROI可以是一个多边形&#xff0c;而检测框则是一个矩形…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...