電梯系統的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.pswp.cn/web/67482.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67482.shtml
英文地址,請注明出處:http://en.pswp.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;主要有以下三…