家用报警器的UML 设计及其在C++和VxWorks 上的实现01
M.W.Richardson 著,liuweiw 译
论文描述了如何运用 UML(统一建模语言)设计一个简单的家用报警器,并实现到 VxWorks 操作系统上。本文分两个部分,第一部分描述了如何用 UML 设计和验证家用报警器的模型,以使其独立于特定的硬件和操作系统。第二部分则细节地描述如何将此模型实现于运行VxWorks 操作系统的 486 硬件平台上。模型的设计、开发和验证使用了 I-Logix 公司的可视化编程环境“Rhapsody”。
第一部分:设计一个独立于操作系统的家用报警器
一个好的面向对象设计力图将不变的东西与变化的东西相互分开。在家用报警器的设计中,一个可能的变化是实际的硬件平台。本文描述了如何用 UML 设计这个模型,以使它可以容易地应用到不同的硬件结构中去。文中也表现了如何通过“Rhapsody”工具,可以由模型产生全部代码,并通过“设计级调试”进行验证。设计级调试使我们可以运用描述模型中用到的相同图示来进行调试,基本上可以让状态图和消息序列图活动起来。这样就可以使我们快速地验证所设计的模型。
需求
我们要设计的家用报警器有如下需求:

可以通过遥控器或者简单的小键盘进入戒备/取消戒备状态。当用小键盘设置戒备时,一个四位数字密码必须输入随着要按下 ON 键。如要取消戒备时,一个四位数字密码必须输入随着要按下 OFF 键。密码应该可以改变。当在警戒时检测到情况,马上会发声报警。设置警戒时,将有一个延时供户主离开。警戒状态时开门,会有一个入门延时,这时户主可以取消警戒,如果不能消除警戒警报就要响了。
报警器要有两个 LED,一个为绿色,另一个为红色。红色的 LED 表示报警器处于激活状态,在报警器激活时或者报警器已激活且门打开时闪烁。绿色的 LED 显示报警器启动并且在密码成功修改后闪动四次。
一个未来的需求是家用报警系统应可以通过开关电灯模拟房间被闯入。
设计 UML 模型
用例图
第一步是根据需求建立用例图。下面的用例图表明了两件事:一个显示了主要用处(或用例)即试图给“家用报警器(home alarm)”建模。另一个表示谁使用家用报警器;有两个主要的角色或者用户,即户主(homeowner)和闯入者(intruder)。用例是系统功能反映给角色的可观察的结果但并不揭示系统的内部构造。

相关文章:
家用报警器的UML 设计及其在C++和VxWorks 上的实现01
M.W.Richardson 著,liuweiw 译 论文描述了如何运用 UML(统一建模语言)设计一个简单的家用报警器,并实现到 VxWorks 操作系统上。本文分两个部分,第一部分描述了如何用 UML 设计和验证家用报警器的模型,以使…...
k8s常见面试题2
k8s常见面试题2 安全与权限RBAC配置如何保护 Kubernetes 集群的 API Server?如何管理集群中的敏感信息(如密码、密钥)?如何限制容器的权限(如使用 SecurityContext)?如何防止容器逃逸࿰…...
CSS 伪类(Pseudo-classes)的详细介绍
CSS 伪类详解与示例 在日常的前端开发中,CSS 伪类可以帮助我们非常精准地选择元素或其特定状态,从而达到丰富页面表现的目的。本文将详细介绍以下伪类的使用: 表单相关伪类 :checked、:disabled、:enabled、:in-range、:invalid、:optional、…...
将Deepseek接入pycharm 进行AI编程
目录 专栏导读1、进入Deepseek开放平台创建 API key 2、调用 API代码 3、成功4、补充说明多轮对话 总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——…...
【Ollama】一、介绍
介绍 Ollama 是一个开源项目,专注于提供本地化的大型语言模型(LLM)部署和运行解决方案。它允许用户在本地环境中轻松运行和微调各种开源语言模型(如 LLaMA、Falcon 等),而无需依赖云服务或高性能 GPU。Oll…...
ASP.NET Core JWT
目录 Session的缺点 JWT(Json Web Token) 优点: 登录流程 JWT的基本使用 生成JWT 解码JWT 用JwtSecurityTokenHandler对JWT解码 注意 Session的缺点 对于分布式集群环境,Session数据保存在服务器内存中就不合适了&#…...
查询引擎:它们是什么以及为什么重要
了解查询引擎、它们的优势以及如何简化现代应用程序的数据管理。查询引擎是高效处理和检索数据的强大工具,但并非所有查询引擎都能满足现代应用程序对速度和实时性的需求。在本文中,我们将解析查询引擎的定义、主要优势以及它们如何用于实时数据和AI应用…...
03/29 使用 海康SDK 对接时使用的 MysqlUtils
前言 最近朋友的需求, 是需要使用 海康sdk 连接海康设备, 进行数据的获取, 比如 进出车辆, 进出人员 这一部分是 资源比较贫瘠时的一个 Mysql 工具类 测试用例 public class MysqlUtils {public static String MYSQL_HOST "192.168.31.9";public static int MY…...
2025.2.7 Python开发岗面试复盘
2025.2.7 Python开发岗面试复盘 问题: 是否了解过其他语言? 了解过Java、JavaScript、C等语言,但主要技术栈是Python。 Python跟Java的区别? Python是解释型语言,Java是编译型语言 Python动态类型,Java静态类型 Python简洁易读,Java相对严谨复杂 Python GIL限制并发,Java并…...
一个sql只能有一个order by
ORDER BY 子句在 SQL 中只能出现一次,静态部分和动态部分只能写一个 ORDER BY...
Windows Docker笔记-在容器中运行项目
在文章《Windows Docker笔记-Docker容器操作》中,已经成功创建了容器,也就是建好了工厂,接下来就应该要安装流水线设备,即运行项目达到生产的目的。 在Ubuntu容器中新建项目 这里要新建一个简单的C项目,步骤如下&…...
postgreSQL16.6源码安装
1.获取源码 从PostgreSQL: File Browser获取tar.bz2或者tar.gz源码 2.解压 tar xf postgresql-version.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# tar xf postgresql-16.6.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# ll 总计 24324 drwxr-xr-x 12 ro…...
寒假2.5
题解 web:[网鼎杯 2020 朱雀组]phpweb 打开网址,一直在刷新,并有一段警告 翻译一下 查看源码 每隔五秒钟将会提交一次form1,index.php用post方式提交了两个参数func和p,func的值为date,p的值为Y-m-d h:i:s a 执行fu…...
定期删除一周前的数据,日志表的表空间会增长吗?
即使定期删除一周前的数据,日志表的表空间仍可能持续增长。原因如下: 删除操作不释放空间:DELETE 操作只会标记数据为删除状态,并不会立即释放空间。这些空间可以被后续的 INSERT 操作重用,但不会自动缩减表的总大小。…...
yum 安装mysql
sudo yum install mysql-server sudo systemctl start mysqld sudo systemctl enable mysqld 获取临时 root 密码并登录 MySQL 安装完成后,MySQL 会生成一个临时的 root 密码。你可以通过查看日志文件来找到这个密码: sudo grep ‘temporary password’…...
Servlet笔记(下)
HttpServletRequest对象相关API 获取请求行信息相关(方式,请求的url,协议及版本) | API | 功能解释 | | ----------------------------- | ------------------------------ | | StringBuffer getRequestURL(); | 获取客户端…...
Windows 中学习Docker环境准备3、在Ubuntu中安装Docker
Windows 中学习Docker环境准备1、Win11安装Docker Desktop Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu Windows 中学习Docker环境准备3、在Ubuntu中安装Docker 需要更多Docker学习视频和资料,请文末联系 步骤 1:更新系统并安装依赖…...
【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)
1. 安装必要的依赖 以 CentOS 7 系统为例,安装必要的依赖包: sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…...
Unity DoTween使用文档
DoTween 使用文档 DoTween 是 Unity 中非常流行的动画补间插件。它通过链式调用方式,让开发者可以快速创建平滑、自然的动画效果。本文将介绍 DoTween 的基础用法、缓动曲线原理(包含常见缓动曲线的数学公式与参数说明)、案例演示以及一些常…...
【办公类-99-01】20250201学具PDF打印会缩小一圈——解决办法:换一个PDF阅读器
背景需求: 2024年1月13日,快要放寒假了,组长拿着我们班的打印好的一叠教案来调整。 “前面周计划下面的家园共育有调整,你自己看批注。” “还有你这个教案部分的模版有问题,太小(窄)了。考虑…...
WarcraftHelper终极指南:魔兽争霸III现代化增强解决方案
WarcraftHelper终极指南:魔兽争霸III现代化增强解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为经典游戏…...
Xcode实战:用SwiftUI快速构建一个可交互的卡片视图(含SF Symbols使用技巧)
Xcode实战:用SwiftUI快速构建一个可交互的卡片视图(含SF Symbols使用技巧) 当你第一次看到那些精美的卡片式UI时,是否好奇它们是如何被构建出来的?在移动应用设计中,卡片视图因其清晰的视觉层次和自然的交互…...
MSG文件高效提取工具:解放双手的Outlook邮件解析方案
MSG文件高效提取工具:解放双手的Outlook邮件解析方案 【免费下载链接】msg-extractor Extracts emails and attachments saved in Microsoft Outlooks .msg files 项目地址: https://gitcode.com/gh_mirrors/ms/msg-extractor 副标题:你是否还在为…...
别再死磕大模型了!聊聊超分辨率里被低估的‘小’技术:1x1卷积与空间移位的巧妙结合
1x1卷积与空间移位:超分辨率领域被低估的轻量化技术革命 当整个计算机视觉领域都在追逐更大参数量的Transformer架构时,SCNet的出现像一股清流,用全1x1卷积空间移位的极简设计,在超分辨率任务中实现了与复杂模型媲美的效果。这不禁…...
3步搞定电子课本下载,效率提升80%:教师与家长的教育资源获取神器
3步搞定电子课本下载,效率提升80%:教师与家长的教育资源获取神器 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 在数字化教学日益普及的今…...
07_gstack并行开发:Git Worktrees与Conductor多会话管理
07_gstack并行开发:Git Worktrees与Conductor多会话管理关键字:gstack、Git Worktrees、Conductor、并行开发、多会话管理、Claude Code、并行sprint、Garry Tan、AI并行工作流“One sprint, one person, one feature — that takes about 30 minutes wi…...
清华团队发布机器人版“GPT时刻”:UniDex让机械手看懂世界,零样本操控万物!
80%成功率,碾压式超越现有方案,灵巧手操控迎来“GPT”时刻这篇论文用一种极其优雅且强大的方式,解决了机器人领域一个长期存在的根本性难题:如何让形态各异、复杂无比的灵巧手,像人类一样,看一眼就能学会使…...
突破4大硬件限制:老旧Windows设备升级Windows 11的3维优化方案
突破4大硬件限制:老旧Windows设备升级Windows 11的3维优化方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 老旧设备升级Windows 11的价值解析 在数字化快…...
不止于采集:用BrainFlow解锁DeepBCI脑电信号的进阶玩法(特征提取与简单分类)
不止于采集:用BrainFlow解锁DeepBCI脑电信号的进阶玩法(特征提取与简单分类) 当你已经能够稳定采集到DeepBCI设备的脑电信号时,那些跳动的波形背后隐藏着怎样的秘密?本文将带你跨越数据采集的门槛,探索如何…...
FPGA实战:用Verilog手搓8点FFT核心(附完整代码与仿真对比)
FPGA实战:从零构建8点FFT核心的完整指南 在数字信号处理领域,快速傅里叶变换(FFT)算法是当之无愧的"瑞士军刀"。作为一名FPGA工程师,我曾在多个项目中需要将FFT算法部署到硬件平台,期间积累了不少…...
