uml上机实验 4

news/2024/12/27 20:13:59/文章来源:https://www.cnblogs.com/LiuHuWei/p/18636645

一 实验目的
 理解顺序图、协作图、活动图、状态机图的概念及其在系统分析设计中的作用;
 了解和掌握软件工程中用例逻辑时序的分析方法;
 掌握两种交互图(顺序图和协作图)的差别;
 掌握描述一个操作执行过程中所完成工作(动作)的方法;
 掌握描述对象内部工作的具体步骤;
 掌握使用Rational Rose 依据用例绘制创建顺序图、协作图、活动图、状态图的方法;
二 实验环境及实验准备
 所需硬件环境为微机;
 所需软件环境为Rational Rose、Miscrosoft Word等;
 熟悉Rational Rose下交互模型和状态模型建模的方法和步骤;
 完成系统用例模型建模;
三 实验内容
(1) 分析系统用例流程中对象间的交互
“网店销售系统”包括“店主查询”“统计成表”、“平台管理员查询”和“顾客查询”。而“店主查询系统”又包括“仓库管理”、“采购管理”和“销售管理”。“店主查询”从“统计成表”中获取数据。
实体类对象:平台管理员类、店主类、顾客类、产品类、销售数据类、店铺类、库存类付款单类、订单类、销售报表类。
边界、控制类对象:平台管理者查询边界类、统计成表边界类、店主查询及管理边界类、顾客查询边界类、平台管理员边界类、报表生成控制类、店主管理控制类、顾客查询控制类。
【对象交互分析】
交互1:电商平台管理员与系统
交互编号 1 交互名称 管理员查询与统计
功能描述 管理员登录系统并进入管理界面,选择“查询平台各网店销售及个流量数据”功能,系统返回各个店铺的销售数据、客流量等,管理员分析数据,使用过滤器或排序工具对数据进行筛选并将导出的结果反馈给店主。
涉及的对象 平台管理员类、店铺类、产品类、订单类、付款单类
信息的类型 简单消息
传递的消息 查询店铺销售量、导出成表
返回的消息 查询成功、查询失败
销毁的对象

交互2:统计数据成表
交互编号 2 交互名称 统计数据成表
功能描述 管理员进入系统,进入“统计数据成表”给你功能,系统展示各个店铺的销售情况,管理员将其反馈给店主
涉及的对象 销售数据类、店铺类、订单类、店主类
信息的类型 简单消息
传递的消息 导出数据
返回的消息 数据加载成功、数据加载失败
销毁的对象

交互3:店主查询及管理
交互编号 3 交互名称 店主查询及管理
功能描述 管理员发出查询指令,系统反馈出该店铺在某一时间段的销售情况,店主根据数据对商品价格等进行调整
涉及的对象 销售数据类、店铺类、订单类
信息的类型 简单消息
传递的消息 查询某一店铺的指令
返回的消息 该店铺的销售数据
销毁的对象

交互4:采购管理
交互编号 4 交互名称 采购管理
功能描述 店主登录进入“采购管理”模块,根据数据需求生成采购计划,选择供应商,提交采购订单
涉及的对象 店主类
信息的类型 简单消息
传递的消息 提交订单
返回的消息 订单提交成功、订单提交失败
销毁的对象

交互5:销售管理
交互编号 5 交互名称 销售管理
功能描述 店主查看销售数据,分析热销商品和滞销商品,基于销售数据调整商品价格、库存和进货量
涉及的对象 销售数据类、库存类
信息的类型 简单消息
传递的消息 修改商品信息
返回的消息 数据加载失败
销毁的对象

交互6:仓库管理
交互编号 6 交互名称 仓库管理
功能描述 店主查看库存数据,检查库存状态,根据库存情况调整库存数量。
涉及的对象 库存类
信息的类型 简单消息
传递的消息 修改库存
返回的消息 修改成功、修改失败
销毁的对象

(2) 绘制顺序图
查看销售数据

@startuml
actor "店主" as StoreOwner
boundary "店主查询及管理边界类" as StoreQueryBoundary
control "店主管理控制类" as StoreCtrl
entity "销售数据类" as SalesData
entity "店铺类" as Store
entity "产品类" as Product

StoreOwner -> StoreQueryBoundary : 查看销售数据
StoreQueryBoundary -> StoreCtrl : 请求销售数据
StoreCtrl -> SalesData : 获取销售数据
SalesData -> Store : 获取店铺数据
SalesData -> Product : 获取商品信息
StoreCtrl -> StoreOwner : 返回销售数据
@enduml
分析热滞销售商品

@startuml
actor "店主" as StoreOwner
boundary "店主查询及管理边界类" as StoreQueryBoundary
control "店主管理控制类" as StoreCtrl
entity "销售数据类" as SalesData
entity "产品类" as Product

StoreOwner -> StoreQueryBoundary : 分析热销商品
StoreQueryBoundary -> StoreCtrl : 请求热销商品数据
StoreCtrl -> SalesData : 获取热销商品数据
SalesData -> Product : 获取热销商品信息
StoreCtrl -> StoreOwner : 返回热销商品数据
@enduml
调整商品价格、进货量

@startuml
actor "店主" as StoreOwner
boundary "店主查询及管理边界类" as StoreQueryBoundary
control "店主管理控制类" as StoreCtrl
entity "产品类" as Product
entity "库存类" as Inventory

StoreOwner -> StoreQueryBoundary : 调整商品价格、进货量
StoreQueryBoundary -> StoreCtrl : 请求商品价格和进货量调整
StoreCtrl -> Product : 获取商品信息
StoreOwner -> StoreCtrl : 修改商品价格、调整进货量
StoreCtrl -> Product : 更新商品价格和进货量
StoreCtrl -> Inventory : 更新库存数据
StoreQueryBoundary -> StoreOwner : 返回修改结果
@enduml
修改商品信息

@startuml
actor "店主" as StoreOwner
boundary "店主查询及管理边界类" as StoreQueryBoundary
control "店主管理控制类" as StoreCtrl
entity "产品类" as Product

StoreOwner -> StoreQueryBoundary : 修改商品信息
StoreQueryBoundary -> StoreCtrl : 请求修改商品信息
StoreCtrl -> Product : 获取商品信息
StoreOwner -> StoreCtrl : 修改商品信息
StoreCtrl -> Product : 更新商品信息
StoreQueryBoundary -> StoreOwner : 返回商品信息修改结果
@enduml

(3) 绘制协作图
管理员查询

@startuml
actor "平台管理员" as Admin
participant "平台管理员边界类" as AdminBoundary
participant "店铺类" as Store
participant "产品类" as Product
participant "订单类" as Order
participant "付款单类" as Payment
participant "报表生成控制类" as ReportCtrl

Admin -> AdminBoundary : 登录请求
AdminBoundary -> Admin : 返回登录界面
Admin -> AdminBoundary : 选择查询平台各网店销售数据
AdminBoundary -> ReportCtrl : 请求销售数据及流量
ReportCtrl -> Store : 获取店铺数据
ReportCtrl -> Product : 获取产品数据
ReportCtrl -> Order : 获取订单数据
ReportCtrl -> Payment : 获取付款单数据
ReportCtrl -> Admin : 返回查询结果(销售数据、流量)
@enduml
店主查询

@startuml
actor "店主" as StoreOwner
participant "店主查询及管理边界类" as StoreQueryBoundary
participant "销售数据类" as SalesData
participant "店铺类" as Store
participant "订单类" as Order

StoreOwner -> StoreQueryBoundary : 查询某一店铺销售数据
StoreQueryBoundary -> SalesData : 获取销售数据
SalesData -> Store : 获取店铺信息
SalesData -> Order : 获取订单数据
StoreQueryBoundary -> StoreOwner : 返回店铺销售数据
@enduml
采购管理

@startuml
actor "店主" as StoreOwner
participant "店主查询及管理边界类" as StoreQueryBoundary
participant "店主类" as StoreOwnerEntity
participant "订单类" as Order

StoreOwner -> StoreQueryBoundary : 进入采购管理
StoreQueryBoundary -> StoreOwnerEntity : 获取采购需求
StoreOwnerEntity -> StoreQueryBoundary : 提交采购订单
StoreQueryBoundary -> Order : 提交订单
Order -> StoreQueryBoundary : 返回订单提交结果
StoreQueryBoundary -> StoreOwner : 返回订单提交结果
@enduml
仓库管理

@startuml
actor "店主" as StoreOwner
participant "店主查询及管理边界类" as StoreQueryBoundary
participant "库存类" as Inventory
participant "店主类" as StoreOwnerEntity

StoreOwner -> StoreQueryBoundary : 进入仓库管理
StoreQueryBoundary -> Inventory : 获取库存数据
Inventory -> StoreQueryBoundary : 返回库存数据
StoreOwner -> StoreQueryBoundary : 修改库存数量
StoreQueryBoundary -> Inventory : 更新库存
StoreQueryBoundary -> StoreOwner : 返回库存修改结果
@enduml
(4) 绘制活动图

@startuml

|平台管理员|
start
:登录系统;
if (登录成功?) then (yes)
:访问统计成表边界类;
:请求平台数据生成统计报表;
:查看并生成销售报表;
:分析报告;
else (no)
:提示登录失败;
stop
endif
:登出系统;
stop

|统计成表边界类|
start
:接收平台管理员请求;
:生成统计数据报表;
if (数据完整?) then (yes)
:返回报表;
else (no)
:提示数据不完整;
endif
stop

|店主查询及管理边界类|
start
:登录系统;
if (登录成功?) then (yes)
:访问店主查询界面;
:查询店铺销售数据;
:查看库存状态;
:修改商品价格与库存;
else (no)
:提示登录失败;
stop
endif
:登出系统;
stop

|采购管理边界类|
start
:登录系统;
if (登录成功?) then (yes)
:访问采购管理界面;
:查看当前库存;
:提交采购订单;
:审核并确认采购;
else (no)
:提示登录失败;
stop
endif
:登出系统;
stop

|销售管理边界类|
start
:登录系统;
if (登录成功?) then (yes)
:访问销售管理界面;
:查看订单状况;
:更新订单状态;
:生成销售报告;
else (no)
:提示登录失败;
stop
endif
:登出系统;
stop

|仓库管理边界类|
start
:登录系统;
if (登录成功?) then (yes)
:访问仓库管理界面;
:查看库存;
:调整库存;
:管理库存入库与出库;
else (no)
:提示登录失败;
stop
endif
:登出系统;
stop

@enduml
(5) 分析系统主要对象的生命周期中状态及状态迁移
迁移1:
迁移编号 1 迁移名称 商品上架
迁移描述 商品从待上架状态转为已上架状态
事件 店主上架商品
动作 商品变为已上架状态
监护条件 商品信息完整
迁移2:
迁移编号 2 迁移名称 商品售出
迁移描述 商品从上架状态转为售出状态
事件 顾客购买商品
动作 商品库存减少,商品状态变为已出售
监护条件 库存充足
迁移3:
迁移编号 3 迁移名称 商品下架
迁移描述 商品从已上架状态转为已下架状态
事件 店主手动下架商品
动作 商品从已上架状态变为已下架
监护条件 商品库存为零
迁移4:
迁移编号 4 迁移名称 商品库存不足s
迁移描述 商品从已上架状态转为库存不足状态
事件 库存达到预警阈值
动作 商品库存减少,显示库存不足
监护条件 商品酷讯小于最低限
迁移5:
迁移编号 5 迁移名称 创建订单
迁移描述 订单从待创建状态转为已创建状态
事件 店主提交采购需求
动作 床架采购订单
监护条件 有足够库存
迁移6:
迁移编号 6 迁移名称 确认订单
迁移描述 商品从已创建状态转为已确认状态
事件 店主提交订单
动作 订单状态变为已确认
监护条件 订单信息完整
迁移7:
迁移编号 7 迁移名称 发货订单
迁移描述 商品从已确认状态转为已发货状态
事件 供应商发货
动作 订单状态为已发货
监护条件 供应商确认
迁移8:
迁移编号 8 迁移名称 完成订单
迁移描述 订单从已发货状态转为已完成状态
事件 货物到达
动作 订单状态变为已完成
监护条件 货物确认

(6)绘制状态机图
平台管理员的状态机图

@startuml
!define RECTANGLE class

state "平台管理员" as Admin {
[*] --> 未登录
未登录 --> 登录 : 登录()
登录 --> 登出 : 登出()
登录 --> 查询 : 查询()
查询 --> 生成报表 : 生成报表()
生成报表 --> 查询 : 查询()
查询 --> 设置权限 : 设置权限()
设置权限 --> 查询 : 查询()
}

@enduml

店主的状态机图

@startuml
!define RECTANGLE class

state "店主" as Owner {
[*] --> 未登录
未登录 --> 登录 : 登录()
登录 --> 管理店铺 : 管理店铺()
管理店铺 --> 修改店铺信息 : 修改店铺信息()
修改店铺信息 --> 管理店铺 : 管理店铺()
管理店铺 --> 查看销售数据 : 查看销售数据()
查看销售数据 --> 管理店铺 : 管理店铺()
管理店铺 --> 退出 : 退出()
}

@enduml

顾客的状态机图

@startuml
!define RECTANGLE class

state "顾客" as Customer {
[*] --> 未登录
未登录 --> 登录 : 登录()
登录 --> 浏览商品 : 浏览商品()
浏览商品 --> 查看商品详情 : 查看商品详情()
查看商品详情 --> 下单 : 下单()
下单 --> 查看订单 : 查看订单()
查看订单 --> 取消订单 : 取消订单()
查看订单 --> 支付 : 支付()
支付 --> 查看订单 : 查看订单()
支付 --> 完成 : 完成()
}

@enduml

四 实验分析及问题思考
通过本次实验,体会到了一个完整的系统中各个子系统及角色之间复杂的联系。通过绘制不同类型的图(如状态图、类图、时序图等),并对状态周期、状态迁移、交互对象及其之间的关系进行深入分析,帮助我更好地理解系统的动态行为、数据流转和控制逻辑。这不仅提升了我在系统建模和设计方面的能力,还加深了对不同模块如何协同工作、如何处理状态变化和如何优化系统架构的理解。通过这些分析,能够更清晰地识别潜在问题并进行有效优化。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uml上级实验 5

一 实验目的  了解系统物理体系结构模型和表示方法;  了解部署图的概念及其在系统设计中的作用;  掌握使用Rational Rose绘制部署图的方法; 二 实验环境及实验准备  所需硬件环境为微机;  所需软件环境为Rational Rose、Miscrosoft Word等;  熟悉Rational Ros…

JAVA-Day 03:数据类型

数据类型 Java的数据类型分为两大类,分别是基本类型(primitive type)和引用类型(reference type)。 基本数据类型(Primitive Type)分为数值类型和boolean(布尔)类型 数值类型整数类型byte型占1个字节范围:-128~127 如图所示:short型占2个字节范围:-32768~32767 如图所示:int…

[攻防世界]不确定,再看看

[攻防世界]不确定,再看看[攻防世界]不确定,再看看 题目 做题做累了吧,给你准备了一道钢琴曲,要仔细听哦!我藏得很深。 hint1:信息隐藏一般要求载体需要有一定的冗余度,而base64编码刚好就有这个特点。 解题 下载得到音频文件 放入Audacity,并无收获解锁新工具Deepsound…

2.3结构伪类选择器

2.3结构 伪类选择器

python爱心代码大全

python爱心代码 详细分析这段代码实现了一个用Python的Tkinter库绘制跳动爱心的程序,其中包括了一个弹窗来询问是否做一个人的女朋友,如果同意则会显示跳动的爱心,如果拒绝则会重新询问。(无法解决,只能同意哦~) 下面对代码进行详细分析: 1.导入必要的库首先,导入了一…

C#使用Tesseract C++ API过程记录

Tesseract Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献。Tesseract 可以识别多种语言的文字,广泛应用于将图片或扫描文档中的文本内容转换成可编辑的文本格式。随着深度学习技术的发展…

[攻防世界]信号不好先挂了

[攻防世界]信号不好先挂了[攻防世界]信号不好先挂了 分析 又是图片隐写我也先挂了…… 解题save bin 保存后的zip还需要修复一下才能解压缩……怎么里面又是这张图片 Misc隐写术 - Scr1pt? - 博客园两张一样图片还可在stegslove合成图片 用BlindWaterMark这个工具一直报错(麻…

10. 组合框控件

一、组合框控件组合框控件主要以列表形式为用户提供选择的项目,用户可以从中选择项。PySide6 中常用的列表类控件主要有 QComboBox(下拉组合框控件)、QFontComBox(字体组合框控件)。我们可以在终端中使用 pip 安装 pyside6 模块。 pip install pyside6二、下拉组合框控件下…

git review错误: is not registered in your account, and you lack forge committer permission

肉眼看上去,远端的邮箱和自己输入的邮箱是一致的 罪魁祸首是 git commit --amend 里面的邮箱带了中文引号,导致本地和远端邮箱名称不一致 从git review 命令报错email address那一行的奇怪字符可以看出端倪如上图所示,引号不是标准的linux字符

2.1基本选择器

选择器: 作用:选择页面上的某一个或者某一类元素 2.1基本选择器:1.标签选择器:选择一类标签 2.类选择器 class:选中所有class属性一致的标签(可以跨标签) .class名称{} 3.id选择器:id全局唯一 #id名称{} 不遵循就近原则:id>class>标签

痞子衡嵌入式:MCUXpresso for VS Code开发环境搭建及SDK工程导入

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpresso for VS Code开发环境搭建及SDK工程导入。MCUXpresso IDE(包括其前身 LPCXpresso IDE、Kinetis Design Studio)是恩智浦软件团队持续开发了十多年的免费集成开发环境,现在功能已经相当完善,IDE…

3.选择器

选择器: 作用:选择页面上的某一个或者某一类元素 3.1基本选择器:1.标签选择器:选择一类标签 2.类选择器 class:选中所有class属性一致的标签(可以跨标签) .class名称{} 3.id选择器:id全局唯一 #id名称{} 不遵循就近原则:id>class>标签