电梯系统的UML文档13

5.2.6 CarPositionControl 的状态图

图 24: CarPositionControl 的状态图

5.2.7 Dispatcher 的状态图

图 25: Dispatcher 的状态图

5.3 填补从需求到状态图鸿沟的实用方法

状态图能对类的行为,一个用例,或系统整体建模。在本文中,状态图被用于每个对象的行为建模。在系统后面的阶段,如实施阶段和测试阶段,每个对象的状态机都将用到。

UML 中没有提供详细的方法,即该如何从需求文档或UML 图表如类图画出状态图。我尝试在这里从课程上的项目经验总结一些从需求文档画出状态图实用的方法,如下:

第 1 步:

如果你想画出每个对象的状态图,应该完成对象结构和系统架构的分析。在我们的课程项目中,这部份工作在我们开始自己的项目之前由老师完成了。

第 2 步:

仔细读系统中每一个类或对象的需求。

状态图的大部分需要的信息都可以通过这个方法找到,提供好的充足的需求文档就可以了。我不确定需求文档有没有任何格式标准。

举一个我们课堂中的例子来说用,我们的电梯系统需求文档中有一些方面应给于不同的关注。

· 回答: 这个部份简述主要功能和特殊对象的存在条件。画状态图的时候这个部份用处不大,但是当状态图完成时可以用来检查功能实现了没有。

·初始化:初始状态由给出的信息决定。以HallButtonControl 为例,初始状态是 " 所有的 HallCalls 初值是false " 和 " 所有的HallLights 初值是关"。从这些描述中我们至少能得出结论:初始状态是"门厅呼叫是False " 或 " 门厅 Light is off 灯是False ",但这还不完全,让我们继续。

· 输入介面: 这个对象将会从其他的对象中取得的输入信息。

输入变量将触发状态变化,例如状态图中的过渡。

在 HallButtonControl 例子中,DesiredFloor 和 HallCall 的数值变化,建立一组事件,触发我们未来状态图中所有的状态变化。

· 输出介面:这些信息帮助建立状态图中的状态。在我们的例子中,HallLight 是这个对象的处理的单一输出。我们可以想象一下HallLight 可以处于多少个状态。凭直觉门厅灯能打开和关闭,因此它在状态图中可能有两个状态 :

开和关。

让我们看看还有没有别的东西需要加入。

· 状态: 这里的状态和状态图无关,在这些项中一些记号用来速记描述行为。

· 约束和行为:都将用来检查这个对象的状态机是否实现了系统的功能需求而不打破约束。我们从行为描述知道状态机的变化如何被触发,这很重要。

第 3 步:

现在我们有来自需求的一些想法。现在可以产生最初的状态机。

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

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

相关文章

自动化运维在云环境中的完整实践指南

随着云计算的普及,越来越多的企业将业务迁移到云上。云环境的高动态性和复杂性使得传统的手动运维方式难以应对,自动化运维成为提升效率、降低成本、保障系统稳定性的关键。本文将详细介绍如何在云环境中实施自动化运维,涵盖工具选择、实施步骤和最佳实践。 © ivwdcwso…

性能测试丨分布式性能监控系统 SkyWalking

软件测试领域,分布式系统的复杂性不断增加,如何保证应用程序的高可用性与高性能,这是每一个软件测试工程师所面临的重大挑战。幸运的是,现在有了一些强大的工具来帮助我们应对这些挑战,其中之一便是Apache SkyWalking。…

Ollama windows安装

Ollama 是一个开源项目,专注于帮助用户本地化运行大型语言模型(LLMs)。它提供了一个简单易用的框架,让开发者和个人用户能够在自己的设备上部署和运行 LLMs,而无需依赖云服务或外部 API。这对于需要数据隐私、离线使用…

留学生scratch计算机haskell函数ocaml编程ruby语言prolog作业VB

您列出了一系列编程语言和技术,这些可能是您在留学期间需要学习或完成作业的内容。以下是对每个项目的简要说明和它们可能涉及的领域或用途: Scratch: Scratch是一种图形化编程语言,专为儿童和初学者设计,用于教授编程…

C++二叉树进阶

1.二叉搜索树 1.1二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者具有以下性质的二叉树 若它的左子树不为空,则左子树上所有结点的值小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值…

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal,选择版本后点击“install”执行安装

2. Java-MarkDown文件解析-工具类

2. Java-MarkDown文件解析-工具类 1. 思路 读取markdown文件的内容&#xff0c;根据markdown的语法进行各个类型语法的解析。引入工具类 commonmark 和 commonmark-ext-gfm-tables进行markdown语法解析。 2. 工具类 pom.xml <!-- commonmark 解析markdown --> <d…

常用符号的英语表达

plus 加号&#xff1b;正号 -  minus 减号&#xff1b;负号  plus or minus 正负号  is multiplied by 乘号  is divided by 除号 &#xff1d; is equal to 等于号 ≠ is not equal to 不等于号 ≡ is equivalent to 全等于号 ≌ is equal to or approximatel…

青少年编程与数学 02-008 Pyhon语言编程基础 02课题、基础概念

青少年编程与数学 02-008 Pyhon语言编程基础 02课题、基础概念 一、标识符二、关键字三、字面量四、变量五、运算符1. 算术运算符2. 比较运算符3. 逻辑运算符4. 赋值运算符5. 成员运算符6. 身份运算符 六、表达式七、语句八、注释单行注释多行注释文档字符串&#xff08;Docstr…

lanqiaoOJ 2145:求阶乘 ← 二分法

【题目来源】 https://www.lanqiao.cn/problems/2145/learning/ 【题目描述】 满足 N&#xff01;的末尾恰好有 K 个 0 的最小的 N 是多少&#xff1f; 如果这样的 N 不存在输出 -1。 【输入格式】 一个整数 K。 【输出格式】 一个整数代表答案。 【输入样例】 2 【输出样…

vs2013 使用 eigen 库编译时报 C2059 错的解决方法

&#xff08;个人感觉&#xff09;vs2013 就不能使用版本大于等于 3.4 的 eigen&#xff0c;使用 3.3.9 就可以了&#xff0c;再不行就用 3.3.8 另一个博主也遇到过用 vs2013 的时候不能编译 3.4 的 eigen 的问题&#xff0c;不过我用的是 win11&#xff0c;所以感觉跟操作系统…

U盘打开提示格式化:深度解析与数据恢复全攻略

在数字化时代&#xff0c;U盘作为便捷的数据存储和传输工具&#xff0c;广泛应用于各个领域。然而&#xff0c;当我们满怀期待地插入U盘&#xff0c;却遭遇“U盘打开提示格式化”的尴尬局面时&#xff0c;那份焦虑与无助感油然而生。本文将全面剖析U盘打开提示格式化的原因、应…

智能工厂能耗管理:Python助力节能增效

智能工厂能耗管理:Python助力节能增效 在工业4.0时代,工厂能耗管理已成为制造企业降本增效的重要一环。传统的能耗管理方式往往依赖人工统计和经验决策,导致能源浪费严重。而借助人工智能与Python的强大能力,我们可以实现智能化、数据驱动的能耗优化方案。今天,我们就来聊…

MyBatis 框架:简化 Java 数据持久化的利器

Java学习资料 Java学习资料 Java学习资料 一、引言 在 Java 企业级应用开发中&#xff0c;数据持久化是一个至关重要的环节&#xff0c;它涉及到将应用程序中的数据保存到数据库&#xff0c;以及从数据库中读取数据供应用程序使用。传统的 JDBC 编程虽然可以实现数据持久化&…

[NOI1995] 石子合并

[NOI1995] 石子合并 题目描述 在一个圆形操场的四周摆放 N N N 堆石子&#xff0c;现要将石子有次序地合并成一堆&#xff0c;规定每次只能选相邻的 2 2 2 堆合并成新的一堆&#xff0c;并将新的一堆的石子数&#xff0c;记为该次合并的得分。 试设计出一个算法,计算出将 …

未来无线技术的发展方向

未来无线技术的发展趋势呈现出多样化、融合化的特点&#xff0c;涵盖速度、覆盖范围、应用领域、频段利用、安全性等多个方面。这些趋势将深刻改变人们的生活和社会的运行方式。 传输速度提升&#xff1a;Wi-Fi 技术迭代加快&#xff0c;如 Wi-Fi7 理论峰值速率达 46Gbps&#…

HTB:Forest[WriteUP]

连接至HTB服务器并启动靶机 分配IP&#xff1a;10.10.16.21 靶机IP&#xff1a;10.10.10.161 靶机Domain&#xff1a;forest.htb 目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端…

芯片AI深度实战:实战篇之vim chat

利用vim-ollama这个vim插件&#xff0c;可以在vim内和本地大模型聊天。 系列文章&#xff1a; 芯片AI深度实战&#xff1a;基础篇之Ollama-CSDN博客 芯片AI深度实战&#xff1a;基础篇之langchain-CSDN博客 芯片AI深度实战&#xff1a;实战篇之vim chat-CSDN博客 芯片AI深度…

JavaScript - Web APIs(下)

日期对象 目标&#xff1a;掌握日期对象&#xff0c;可以让网页显示日期 日期对象&#xff1a;用来表示时间的对象 作用&#xff1a;可以得到当前系统时间 学习路径&#xff1a; 实例化 日期对象方法 时间戳 实例化 目标&#xff1a;能够实例化日期对象 在代码中发…

selenium自动化测试框架——面试题整理

目录 1. 什么是 Selenium&#xff1f;它的工作原理是什么&#xff1f; 2. Selenium 主要组件 3. 常见 WebDriver 驱动 4. Selenium 如何驱动浏览器&#xff1f; 5. WebDriver 协议是什么&#xff1f; 6. Page Object 模式与 Page Factory 7. 如何判断元素是否可见&#x…