电梯系统的UML文档14

对于 HallButtonControl,我们有二个状态:

"门厅灯开 " 和 " 门厅灯关"。
从给出的初始信息,初始的状态应该是"门厅灯关"。行为定义: " 当 HallCall[f,d]是真,则指令
HallLight[f,d] 为 On ",这是第一个状态变化从on 到off;同样地,"如果DesiredFloor.d 是Stop,则命令两个 HallLight 切换到off",改变状态从on 到off。在此,状态机停下来等一个新的门厅呼叫。

第 4 步:
我们决定增加每个状态机的前置条件、 后置条件、行动、入口码和退出码,这些状态机是从约束和行为相关的需求文档得到。
第 5 步:
检查事件的组合是否覆盖所有状态。
第 6 步:
检查是否有死状态,没有 ( 组合) 事件可以使状态机从该状态变换到其他状态。
第 7 步:
一项项地按照行为运行状态机,确定所有的需求条件被覆盖,而且状态机改变状态,采取行动,正确地修改变量。确定没有遗漏和冗余。第 8 步:
正确地画出每一个对象的状态图、标示状态、守卫条件、进出码和过渡,记录用于跟踪的相应需求。

6 结论

在这份报告中,给出了一个模拟电梯控制系统详细的 UML 文档。这个文档中用到的 UML 图包括用例图、类图表、顺序图和状态图。在课程项目设计过程中,实时系统中如何使用UML 图得到了大量的关注,我们项目的成功对这个问题给出了一个很好的答案。由于当前UML 版本的流行和广泛的符号化,OO 技术可以在实时系统开发中得到适度的发展。

目前面向对象分析和设计方法重心只是在系统的软件。对于实时系统不是完全合适,实时系统需要对系统开发作出整体苛刻的要求而不仅仅是软件。

实时系统的一些方面:
·硬件元件的定义和他们的特性·任务的定义和任务的通信·时间限制·网络的建模。

如果适当地注意系统的实时特征和不同点的组合,对实时系统的设计和分析有很大的帮助。
为了描述硬件元素和对网络建模,我们用三种不同的视图对系统结构建模。对象构造和软件结构都将重点放在系统的软件结构上,而从系统结构角度给出了一个系统硬件的略图和系统组件间的通信方法。为了描述时间约束给出了顺序图和协作图,通过消息和对象的名称标识时间约束标识系统的实时特征。每个图表仅仅是系统的一些方面的一个图形表示。没有单个图表可以覆盖一个系统设计的所有东西。图表结合起来表达实时系统的完全描述。系统类图的三个不同的视图有助于了解系统的结构。

本文给出的一些我的项目经验实用方法,可能有助于填补需求和设计之间的间隙。当建立系统的图表的时,已经存在一些组件,如系统结构和状态图。不清楚上面总结的方法在一般系统的分析和设计过程中是否仍会有效。

举例来说,系统架构 -类图是以Phil Koopman的电梯架构为基础的 (这个报告的附件),它使用非标准的UML语言。

这里的问题是:UML语言有没有好到,在没有架构图时仍然可以设计系统架构 ?
本文中电梯系统的功能描述仍然限制在课程项目。而在真实世界中更可能需要一些其他特征,例如一个火警按钮、或一个风扇锁。然而,给出了系统的框架,这些附加的功能可以被毫不费力的增加到系统的静态和动态的描述中。

7 参考文献
[1] Hermann Kopetz. Real-Time Systems,Design Principles for Distributed Embedded Applications.
[2] Grady Booch,James Rumbaugh and Ivar Jacobson. The Unified Modeling Language User Guide.
[3] Perdita Stevens and Rob Pooley. Using UML,Software Engineering with Objects and Components.
[4] Martin Fowler and Kendall Scott. UML Distilled,A Brief Guide to the Standard Object Modeling Language.
[5] Bruce Powel Douglass. Doing Hard Time: Developing Real-time Ssystems with UML,Objects,Frameworks,and Patterns.
[6] Desmond F. D’Souza and Ala n Cameron Wills. Objects,Components,and Frameworks with UML.
[7] Alan Moore and Niall Cooling. Developing Real-Time Systems using Object Technology,A white paper from Artisan Software Tools.

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

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

相关文章

关于安卓greendao打包时报错问题修复

背景 项目在使用greendao的时候,debug安装没有问题,一到打包签名就报了。 环境 win10 jdk17 gradle8 项目依赖情况 博主的greendao是一个独立的module项目,项目目前只适配了java,不支持Kotlin。然后被外部集成。greendao版本…

SQL server 数据库使用整理

标题:SQL server 数据库使用整理 1.字符串表名多次查询 2.读取SQL中Json字段中的值:JSON_VALUE(最新版本支持,属性名大小写敏感) 1.字符串表名多次查询 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…

一文讲解Java中的BIO、NIO、AIO之间的区别

BIO、NIO、AIO是Java中常见的三种IO模型 BIO:采用阻塞式I/O模型,线程在执行I/O操作时被阻塞,无法处理其他任务,适用于连接数比较少的场景;NIO:采用非阻塞 I/O 模型,线程在等待 I/O 时可执行其…

分布式系统架构怎么搭建?

分布式系统架构 互联网企业的业务飞速发展,促使系统架构不断变化。总体来说,系统架构大致经历了单体应用架构—垂直应用架构—分布式架构—SOA架构—微服务架构的演变,很多互联网企业的系统架构已经向服务化网格(Service Mesh&am…

Effective C++ 规则50:了解 new 和 delete 的合理替换时机

1、背景 在 C 中,new 和 delete 是动态分配内存的核心操作符。然而,直接使用它们有时会增加程序的复杂性,甚至导致内存泄漏和其他问题。因此,了解何时替换 new 和 delete 并选择更适合的内存管理策略,是编写高效、健壮…

Effective Python:(10)

Effective Python提供90条新颖的Python3编程技巧,可以让我们写程序更加灵活,代码更加整洁而易于维护,这对于商业化系统代码的重要性不言而喻。 前面两条主要介绍切片的实用好玩的用法,这一条里反而建议不用切片,这是什…

高效学习方法分享

高效学习方法分享 引言 在信息高速发展的今天,学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫,信息的爆炸让你无从下手?今天,我们将探讨几种高效的学习方法,帮助你从中找到适合自己的学习之道。关于学…

数据库备份、主从、集群等配置

数据库备份、主从、集群等配置 1 MySQL1.1 docker安装MySQL1.2 主从复制1.2.1 主节点配置1.2.2 从节点配置1.2.3 创建用于主从同步的用户1.2.4 开启主从同步1.2.4 主从同步验证 1.3 主从切换1.3.1 主节点设置只读(在192.168.1.151上操作)1.3.2 检查主从数…

代码随想录_栈与队列

栈与队列 232.用栈实现队列 232. 用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 思路: 定义两个栈: 入队栈, 出队栈, 控制出入…

AJAX综合案例——图书管理

黑马程序员视频地址: AJAX-Day02-10.案例_图书管理AJAX-Day02-10.案例_图书管理_总结_V1.0是黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖的第25集视频&#xff0c…

【编译原理实验二】——自动机实验:NFA转DFA并最小化

本篇适用于ZZU的编译原理课程实验二——自动机实验:NFA转DFA并最小化,包含了实验代码和实验报告的内容,读者可根据需要参考完成自己的程序设计。 如果是ZZU的学弟学妹看到这篇,那么恭喜你,你来对地方啦! 如…

【redis进阶】分布式锁

目录 一、什么是分布式锁 二、分布式锁的基础实现 三、引入过期时间 四、引入校验 id 五、引入lua 六、引入 watch dog (看门狗) 七、引入 Redlock 算法 八、其他功能 redis学习🥳 一、什么是分布式锁 在一个分布式的系统中,也会涉及到多个节点访问同一…

wordpress每隔24小时 随机推荐一个指定分类下的置顶内容。

在WordPress中实现每隔24小时随机推荐一个指定分类下的置顶内容,可以通过以下步骤实现: 1. 创建自定义函数 在主题的functions.php文件中添加以下代码,用于创建一个定时任务,每隔24小时随机选择一个置顶文章并存储到选项中&…

Blazor-@bind

数据绑定 带有 value属性的标记都可以使用bind 绑定&#xff0c;<div>、<span>等非输入标记&#xff0c;无法使用bind 指令的&#xff0c;默认绑定了 onchange 事件&#xff0c;onchange 事件是指在输入框中输入内容之后&#xff0c;当失去焦点时执行。 page &qu…

RK3568 opencv播放视频

文章目录 一、opencv相关视频播放类1. cv::VideoCapture 类主要构造方法&#xff1a;主要方法&#xff1a; 2. 视频播放基本流程代码示例&#xff1a; 3. 获取和设置视频属性4. 结合 FFmpeg 使用5. OpenCV 视频播放的局限性6. 结合 Qt 实现更高级的视频播放总结 二、QT中的代码…

pytorch逻辑回归实现垃圾邮件检测

完整代码&#xff1a; import torch import torch.nn as nn import torch.optim as optim from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as…

【 CVE-2025-21298】 通过ghidriff查看完整补丁差异

ole32_dec24.dll-ole32.dll 差异 目录 视觉图表差异元数据 Ghidra 差异引擎 命令行二进制元数据差异程序选项

洛谷P3383 【模板】线性筛素数

题目链接&#xff1a;P3383 【模板】线性筛素数 - 洛谷 | 计算机科学教育新生态 题目难度&#xff1a;普及一 题目分析&#xff1a;本题是模板题&#xff0c;用到了线性筛法&#xff0c;其中原理是保证范围内的每个合数都被删掉&#xff08;在 bool 数组里面标记为非素数…

STM32标准库移植RT-Thread nano

STM32标准库移植RT-Thread Nano 哔哩哔哩教程链接&#xff1a;STM32F1标准库移植RT_Thread Nano 移植前的准备 stm32标准库的裸机代码&#xff08;最好带有点灯和串口&#xff09;RT-Thread Nano Pack自己的开发板 移植前的说明 本人是在读学生&#xff0c;正在学习阶段&a…

JVM--类加载器

概念 类加载器&#xff1a;只参与加载过程中的字节码获取并加载到内存中的部分&#xff1b;java虚拟机提供给应用程序去实现获取类和接口字节码数据的一种技术&#xff0c;也就是说java虚拟机是允许程序员写代码去获取字节码信息 类加载是加载的第一步&#xff0c;主要有以下三…