0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于UML的嵌入式軟件實現(xiàn)自動取款機系統(tǒng)模型的設(shè)計

電子設(shè)計 ? 來源:單片機與嵌入式系統(tǒng)應用 ? 作者:倪紅軍;趙紹剛;朱 ? 2020-10-25 10:30 ? 次閱讀

作者:倪紅軍;趙紹剛;朱美強

引言

隨著嵌入式應用的不斷增長,嵌入式系統(tǒng)需求的復雜性、不確定性不斷提高,系統(tǒng)規(guī)模也逐步擴大;而產(chǎn)品的研發(fā)周期又在很快地縮短,給嵌入式應用軟件的開發(fā)帶來了新的挑戰(zhàn)。同時,嵌入式軟件開發(fā)者必須面對由于芯片性能的增長、嵌入式操作系統(tǒng)平臺等技術(shù)方面不斷變化所帶來的各種壓力。嵌入式軟件開發(fā)環(huán)境的發(fā)展,使一直“深埋”于系統(tǒng)的嵌入式應用軟件變得開放而易于開發(fā),從而促進了嵌入式技術(shù)的廣泛應用。

1 基于UML的嵌入式軟件開發(fā)環(huán)境結(jié)構(gòu)

圖1所示為一種支持基于UML(Unified Modeling Language,統(tǒng)一建模語言)的迭代式開發(fā)方法的開發(fā)環(huán)境的結(jié)構(gòu),虛框部分為基于UML的軟件開發(fā)環(huán)境。

基于UML的嵌入式軟件實現(xiàn)自動取款機系統(tǒng)模型的設(shè)計

圖1 基于UML嵌入式軟件開發(fā)環(huán)境的結(jié)構(gòu)

系統(tǒng)分析和設(shè)計用UML來描述,對系統(tǒng)建模;實現(xiàn)過程利用代碼自動生成技術(shù)來實現(xiàn);測試過程將依賴于生成的代碼,通過在代碼中拆裝一些用于支持模型調(diào)試的調(diào)試信息來實現(xiàn);而代碼的編譯、鏈接則采用目標系統(tǒng)的操作系統(tǒng)開發(fā)環(huán)境來完成,代碼的運行與源程序級的調(diào)試仍然采用一般的嵌入式軟件調(diào)試環(huán)境。

Rhapsody是一個基于UML的面向嵌入式實時應用開發(fā)的集成、可視化環(huán)境。軟件開發(fā)者可以在這個環(huán)境里進行分析、設(shè)計、實現(xiàn)及驗證。 Rhapsody支持基于模型的調(diào)試;提供專門為實時嵌入式應用設(shè)計的可執(zhí)行的框架,可以產(chǎn)生基于VxWorks、POS、OSE等多種操作系統(tǒng)的C語言C++語言、Java語言的源程序。本文所給出的自動取款機系統(tǒng)的模型正是基于Rhapsody設(shè)計的。

2 自動取款機系統(tǒng)模型的設(shè)計

2.1 需求分析

我們設(shè)計的自動取款機系統(tǒng)要滿足如下要求:

在自動取款機系統(tǒng)中,當顧客在自動取款機操作面板上插入信用卡并輸入密碼和現(xiàn)金支取數(shù)額(每次最多只能取一千元)后,由自動取款機讀取卡上的內(nèi)容,并把相應信息傳送到銀行。銀行把自動取款機送來的信息與銀行帳號上的信息進行比較,如果兩者一致,則銀行傳送確認信息到自動取款機,由自動取款機輸出現(xiàn)金,然后顧客取出卡和現(xiàn)金;如果兩者不一致,則要求顧客再次輸入密碼和現(xiàn)金支取數(shù)額,然后重復上述操作;若密碼輸入三次不正確,自動取款機就會吞掉信用卡,顧客就不能取出信用卡和現(xiàn)金。

該自動取款機系統(tǒng)包括1個鍵盤(10個數(shù)字鍵、ENTER鍵和CANCEL鍵)、1個LCD液晶顯示屏、1個插卡孔和1個現(xiàn)金出口;通過雙絞線與銀行中的電腦進行串行通信。該自動取款機系統(tǒng)不包括銀行中的電腦,只是通過軟件與銀行中的上位機進行串行通信。

2.2 可視化建模

建模是面向?qū)ο蠓治龊驮O(shè)計的核心,也是分析和設(shè)計過程中最基本和最關(guān)鍵的活動之一。UML不僅適用于以面向?qū)ο蠹夹g(shù)描述的任何類型的系統(tǒng),而且適用于系統(tǒng)開發(fā)的不同階段。根據(jù)開發(fā)過程中不同階段的具體要求,利用UML不同類型的圖來描述系統(tǒng)的各種靜態(tài)結(jié)構(gòu)模型和動態(tài)行為模型。下面介紹如何利用基于UML的面向嵌入式實時應用開發(fā)的集成可視化環(huán)境Rhapsody創(chuàng)建自動取款機系統(tǒng)的模型。

第一步:根據(jù)要求建立用例圖。

圖2所示為用例圖。圖中給出了自動取款機系統(tǒng)的主要用途,并表明由誰使用自動取款機系統(tǒng)。有一個主要成員——顧客。一個用例圖應該具有這樣的系統(tǒng)功能:對操作者而言,它返回可觀察的結(jié)果但并不顯示系統(tǒng)的內(nèi)在結(jié)構(gòu)。

圖2 自動取款機系統(tǒng)的用例圖

自動取款機系統(tǒng)的主要用途是“取出現(xiàn)金” 用例。顧客參與其中的兩個實例是“輸入密碼”和“取出現(xiàn)金”。這兩個實例都包含了另一個用例“讀取卡上內(nèi)容并驗證”。對每一個用例而言,我們都可以增加文本描述。假如需要的話,這些用例能夠被細化成另一張更多用例的圖。這些用例并沒有顯示任何內(nèi)在的結(jié)構(gòu),僅是一個功能性的視圖。

第二步:設(shè)計黑匣子場景。

建立了一個用例圖后,下一步便是細化用例,即設(shè)計一些黑匣子場景。這些黑匣子場景的主要作用是表明模型和對象之間的相互關(guān)系。把整個系統(tǒng)看作一個整體,對 “取出現(xiàn)金” 用例,我們細化為圖3所示的場景。(由于每次最多只能取一千元,所以最多只需要按鍵4次。)

圖3 取出現(xiàn)金的黑匣子場景

圖3所示的場景能被MSD(消息序列表)捕獲,用來描述在顧客和自動取款機系統(tǒng)之間的通信行為。當創(chuàng)建這樣的圖表時,關(guān)于系統(tǒng)的更多細節(jié)被隱藏了;同時,這些場景幫助我們更好地理解使用者如何使用報警系統(tǒng)以及需要做哪些事情。總而言之,每一用例都有很多的場景需要捕獲,每一個場景都是用例的一個有效的實例。

第三步:設(shè)計子系統(tǒng)圖。

下一步是如何把模型分割成子系統(tǒng)。在UML中,一個子系統(tǒng)作為一個封裝顯示,即主要是一個類的集合。圖4的子系統(tǒng)圖表明自動取款機系統(tǒng)已經(jīng)被分解成兩個基本的部分:自動柜員機封裝(AtmerPkg)和硬件封裝(HardharePkg)。同時也表明:自動柜員機封裝是完全獨立于實際的硬件和硬件封裝的,并且實現(xiàn)了Ihardware接口能夠用于連接自動柜員機封裝。接口類Ihardware描述了對自動柜員機封裝的所有必需的操作,實現(xiàn)了應用與硬件環(huán)境的隔離。

圖4 自動取款機系統(tǒng)的子系統(tǒng)

一旦在自動柜員機封裝和硬件封裝之間定義了接口類,每一個子系統(tǒng)就能同步和獨立地細化為更多的子系統(tǒng)。每一個子系統(tǒng)都知道它和其它子系統(tǒng)之間的接口。例如,我們可以開始分析自動柜員機子系統(tǒng)圖,而不需要知道關(guān)于硬件的更多情況。

第四步:設(shè)計對象模型圖。

對自動柜員機封裝而言,我們設(shè)想有一個AtmerController類,其中包含Keypad類、Card類、LCD類和Cash類,這些類表示如圖5所示。

圖5 AtmerController類的對象模型

圖5表明:AtmerController類作為一個聚合類,包含了其它類的實例。我們也能看出,我們能選擇顯示“Keypad”類的不同的操作和屬性。在上面的例子中,假如一個實例被AtmerControlle類創(chuàng)建,那么它將創(chuàng)建Keypad類的一個實例theKeypad、LCD類的一個實例theLCD、Cash類的一個實例theCash以及Card類的一個實例theCard。假如AtmerController類的實例被刪除,這些包含的實例也同時被刪除。

Ihardware類也有一些純虛函數(shù),所以為了測試AtmerController類,必須忽略這些操作。圖6表示:ATM包含了 AtmerController類的一個實例和從Ihardware類繼承并忽略了其操作的Hw類的一個實例。

圖6 ATM對象模型圖

第五步:生成白匣子場景。

生成了一個新類AtmerController后,就可以開始為每一個黑匣子場景生成白匣子場景。消息序列表將用于獲取以上不同場景的類的實例之間的通信行為。例如,圖7消息序列描述了顧客輸入支取現(xiàn)金數(shù)額并取出現(xiàn)金的場景。

圖7 顧客輸入支取現(xiàn)金數(shù)額并取出現(xiàn)金的場景

消息通常對應于對象模型中操作和操作的返回值。消息值對應于類的屬性或是類操作的返回值。消息可以是同步的,也可以是異步的。從圖中可以看出,這些類都有動態(tài)行為:它們正在處理定時事件;調(diào)用其它類的操作;接受事件。對UML來說,這些動態(tài)行為都可以用一個狀態(tài)圖來表示。

第六步:創(chuàng)建狀態(tài)圖。

以顧客輸入密碼過程為例,創(chuàng)建狀態(tài)圖,如圖8所示。通常,當一個問題很復雜時,它往往被分解成一些簡單的問題,這也正是對顧客輸入密碼過程要做的事情。圖8所示的狀態(tài)圖描述了顧客輸入密碼過程中的行為。

圖8 顧客輸入密碼過程的狀態(tài)圖

2.3 屬性、操作和事件

屬性來源于需求文檔中定義的數(shù)據(jù),應該簡單,不考慮設(shè)計和實現(xiàn)的細節(jié)。每個類都可能有定義在其上的事件和操作。事件對應于明確的瞬時發(fā)生的影響類的動態(tài)行為。操作對應于類的服務和功能。Rhapsody中有3種事件。

信號事件:對應于實例間的異步通信。

② 時間事件:這種事件在進入一個狀態(tài)并且經(jīng)過一個指定的時間后觸發(fā)。

③ 觸發(fā)操作:觸發(fā)操作是同步的操作,通過能夠迅速得到響應的事件得到執(zhí)行。觸發(fā)操作沒有實現(xiàn)代碼,卻可以作為類的狀態(tài)圖轉(zhuǎn)移的觸發(fā)器。當調(diào)用觸發(fā)操作時,同時產(chǎn)生響應的事件。

2.4 生成代碼

一般嵌入式應用中有60%~90%的代碼用于內(nèi)務處理(如狀態(tài)圖的實現(xiàn)、任務間的通信等),這些代碼在設(shè)計新的系統(tǒng)時一般都可以重用。這種重用一般是通過實時框架來實現(xiàn)的。Rhapsody就提供了這樣一個實時框架,它提供了一套嵌入式和實時應用專門選擇和優(yōu)化的設(shè)計模板。嵌入式應用程序一般都運行在嵌入式操作系統(tǒng)的平臺上,而實時框架就是一個在操作系統(tǒng)之上應用程序之下的中間件。應用程序的編寫或自動產(chǎn)生都基于有統(tǒng)一接口的實時框架,這樣就使應用軟件的開發(fā)與具體的平臺無關(guān),解決了嵌入式應用軟件的移植問題。

一旦畫出其余的圖表并創(chuàng)建好不同類的實例后,就能進行代碼的生成和模型的測試工作。在Rhapsody中,需要進行一些配置,以告訴 Rhapsody從哪些類生成代碼及使用什么樣的環(huán)境。首先,使用Microsoft環(huán)境(Windows操作環(huán)境和Visual C++編譯器)。然后,代碼在Rhapsody中生成和編譯,以產(chǎn)生可執(zhí)行程序。

2.5 使UML模型有效

Rhapsody能使用自動生成的代碼,所以,當實際的代碼運行時,它能返回一些信息給調(diào)試工具,以便Rhapsody進行模型的測試。通過模型級調(diào)試、驗證,可以盡早發(fā)現(xiàn)系統(tǒng)的設(shè)計錯誤或缺陷,從而較早地確定或降低項目的風險。

2.6 測試模型

一旦自動柜員機封裝被手工產(chǎn)生的事件測試通過并觀察發(fā)生的情況后,就可以利用如微軟的Visual C++產(chǎn)生一個GUI。用于創(chuàng)建GUI的類從Ihardware類繼承而來,選中set選項,當按鈕被按下時,調(diào)用ON操作。GUI也能促使模型在模型級再次被調(diào)試。

3 在VxWorks上運行

模型是系統(tǒng)整體的抽象。軟件開發(fā)的最終形式必須生成程序代碼,模型畢竟是一些漂亮的藍圖。雖然它對軟件的設(shè)計有很大的作用,但用戶的最終目的是希望得到可執(zhí)行的程序。對于嵌入式實時系統(tǒng),代碼與系統(tǒng)要求(時間約束、資源的限制等)是緊密聯(lián)系的,用最終形式的源程序驗證系統(tǒng)的模型更準確。

Rhapsody可利用軟件自動生成技術(shù)的成果,根據(jù)模型可以自動生成具有產(chǎn)品質(zhì)量的代碼。這種代碼既可以作為系統(tǒng)模型驗證的代碼,也是系統(tǒng)最后提交的代碼。所以產(chǎn)生的代碼是基于某個具體平臺的代碼,通過編譯即可運行在該平臺上。本文采用的是美國 Wind River System 公司推出的一個實時操作系統(tǒng)VxWorks。它是一個運行在目標機上的高性能、可裁剪的嵌入式實時操作系統(tǒng)。

一旦自動取款機系統(tǒng)被設(shè)計、實現(xiàn)和測試后,它就能在實時多任務操作系統(tǒng)VxWorks上實現(xiàn)。1個鍵盤、1個LCD液晶顯示屏、1個插卡孔、1 根與銀行的上位機相連的雙絞線和1個輸出現(xiàn)金口經(jīng)由I/O板連接到1個目標板上。

從Ihardware類繼承而來并選中set選項而創(chuàng)建新類HwIrq。這些操作的實例可以被寫進Rhapsody中。為了寫到I/O板中,使用VxWorks系統(tǒng)的操作sysOutByte。

HwIrq類已經(jīng)被設(shè)置成一個活動類,所以它能在自己的線程運行,線程的參數(shù)被配置如下:線程名為tRhpHw,堆棧長度為4096字節(jié),優(yōu)先級為180。

HwIrq.cpp的部分程序見本文附件。

4 結(jié)論

本文運用基于UML的嵌入式實時應用軟件開發(fā)環(huán)境Rhapsody來設(shè)計和實現(xiàn)自動取款機系統(tǒng)的模型。與傳統(tǒng)的嵌入式軟件開發(fā)方法相比,具有明顯的優(yōu)勢。它大大縮短了產(chǎn)品的開發(fā)周期,解決了嵌入式應用軟件的移植問題,使軟件的開發(fā)工作主要集中在高層的建模和模型的測試及驗證上,從而使軟件開發(fā)工作的焦點從編碼轉(zhuǎn)到了設(shè)計上。

責任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19123

    瀏覽量

    305143
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6822

    瀏覽量

    123331
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68601
收藏 人收藏

    評論

    相關(guān)推薦

    自動取款機

    很有意思的自動取款機仿真
    發(fā)表于 11-23 14:28

    自助銀行取款機

    自助銀行取款機
    發(fā)表于 01-10 12:24

    自動取款機系統(tǒng)

    ` 本帖最后由 1058459755 于 2013-3-30 14:09 編輯 這是一個基于單片的Proteus的自動取款機系統(tǒng)的設(shè)計,大家可以參考學習一下!有資料大家一同分享!
    發(fā)表于 03-30 14:04

    取款機狀態(tài)匯總

    根據(jù)CLD的課程寫的取款機的邏輯。一邊看一邊改,從最簡單的狀態(tài),到事件驅(qū)動,生產(chǎn)者消費者模型,隊列狀態(tài),最后到AMC。實現(xiàn)的功能基本相同
    發(fā)表于 08-01 16:25

    簡易ATM取款機

    `自己寫的一個簡易ATM取款機,狀態(tài)模式。Labview8.5版本,歡迎下載交流學習`
    發(fā)表于 12-19 11:41

    工智能取款機將取代銀行柜員?

    ` 隨著科技的進步以及時代的快速變遷,“人工智能”這個詞匯已經(jīng)逐漸進入銀行業(yè)。日本一家企業(yè)研制出日本首臺人工智能自動取款機,有望防止銀行客戶受騙轉(zhuǎn)賬。日本共同社5日報道,這款機器由日立—立石終端
    發(fā)表于 11-09 11:32

    基于UML嵌入式軟件的指紋門禁系統(tǒng)開發(fā)應用

    ,分析設(shè)計的結(jié)果不能在開發(fā)類似項目或產(chǎn)品時重用.以上幾個問題成為多年來制約嵌入式系統(tǒng)發(fā)展的主要瓶頸,使得大部分嵌入式軟件的開發(fā)工作變得十分困難甚至無法進行.作為面向?qū)ο蠼<夹g(shù)的標準,
    發(fā)表于 07-18 07:47

    請問如何使用UML來設(shè)計嵌入式系統(tǒng)?

    UML引入到嵌入式系統(tǒng)中的可行性一種改進的通用嵌入式系統(tǒng)UML方案如何使用
    發(fā)表于 04-23 06:12

    如何入門嵌入式系統(tǒng)

    嵌入式系統(tǒng)簡單介紹(入門)嵌入式操作系統(tǒng)是一種運行在嵌入式相關(guān)產(chǎn)品中的操作系統(tǒng),它的主要作用是負
    發(fā)表于 12-17 07:31

    ATM自動取款機系統(tǒng)功能組成

    閱讀下列說明和圖,回答問題1至問題3,將答案填入答題紙的對應欄內(nèi)。【說明】ATM自動取款機系統(tǒng)功能組成如圖1-2所示。ATM自動取款機
    發(fā)表于 12-22 08:26

    基于UML嵌入式硬件系統(tǒng)模型

    闡述了統(tǒng)一建模語言UML的基本語法結(jié)構(gòu)和基本建模步驟,介紹了建模設(shè)計方法中 的層次構(gòu)架模式。參照基本建模過程,運用建模工具將UML.用于嵌入式硬件系統(tǒng)的建模, 得到了該
    發(fā)表于 04-19 15:54 ?38次下載
    基于<b class='flag-5'>UML</b>的<b class='flag-5'>嵌入式</b>硬件<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>模型</b>

    基于UML嵌入式軟件建模研究馮林

    基于UML嵌入式軟件建模研究_馮林
    發(fā)表于 03-17 08:00 ?0次下載

    基于Proteus與Keil μVision3軟件自動取款機仿真設(shè)計

    通過 Proteus 軟件成功實現(xiàn)自動取款機的仿真過程。經(jīng)仿真表明,利用Proteus軟件進行仿真設(shè)計可極大地簡化單片
    發(fā)表于 03-20 10:46 ?2676次閱讀
    基于Proteus與Keil μVision3<b class='flag-5'>軟件</b>的<b class='flag-5'>自動</b><b class='flag-5'>取款機</b>仿真設(shè)計

    ATM自動取款機的源代碼免費下載

    本文檔的主要內(nèi)容詳細介紹的是ATM自動取款機的源代碼免費下載。
    發(fā)表于 11-01 08:00 ?7次下載
    ATM<b class='flag-5'>自動</b><b class='flag-5'>取款機</b>的源代碼免費下載

    基于UML嵌入式軟件開發(fā)環(huán)境的自動取款機系統(tǒng)的應用方案

    隨著嵌入式應用的不斷增長,嵌入式系統(tǒng)需求的復雜性、不確定性不斷提高,系統(tǒng)規(guī)模也逐步擴大;而產(chǎn)品的研發(fā)周期又在很快地縮短,給嵌入式應用
    的頭像 發(fā)表于 03-22 09:01 ?3756次閱讀
    基于<b class='flag-5'>UML</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)環(huán)境的<b class='flag-5'>自動</b><b class='flag-5'>取款機</b><b class='flag-5'>系統(tǒng)</b>的應用方案