UML系統(tǒng)分析與設(shè)計教程(第2版) 課件 第14、15章 銀行系統(tǒng)的分析與設(shè)計、嵌入式系統(tǒng)設(shè)計_第1頁
UML系統(tǒng)分析與設(shè)計教程(第2版) 課件 第14、15章 銀行系統(tǒng)的分析與設(shè)計、嵌入式系統(tǒng)設(shè)計_第2頁
UML系統(tǒng)分析與設(shè)計教程(第2版) 課件 第14、15章 銀行系統(tǒng)的分析與設(shè)計、嵌入式系統(tǒng)設(shè)計_第3頁
UML系統(tǒng)分析與設(shè)計教程(第2版) 課件 第14、15章 銀行系統(tǒng)的分析與設(shè)計、嵌入式系統(tǒng)設(shè)計_第4頁
UML系統(tǒng)分析與設(shè)計教程(第2版) 課件 第14、15章 銀行系統(tǒng)的分析與設(shè)計、嵌入式系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

UML系統(tǒng)分析與設(shè)計SystemAnalysis&Design冀振燕北京交通大學(xué)

第十四章銀行系統(tǒng)的分析與設(shè)計系統(tǒng)需求分析問題領(lǐng)域靜態(tài)結(jié)構(gòu)模型動態(tài)行為模型物理模型UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi2系統(tǒng)需求域描述:銀行是與人們?nèi)粘I罹o密相關(guān)的一個機構(gòu),銀行可提供存款、取款、轉(zhuǎn)賬等業(yè)務(wù)。在銀行設(shè)立賬戶的個人或機構(gòu)通常被稱為銀行的客戶。一個客戶可以在銀行開多個賬戶,客戶可以存錢到賬戶中,也可以從自己的賬戶中取錢,還可以將存款從一個賬戶轉(zhuǎn)到另一個賬戶。另外,客戶還可以隨時查詢自己的賬戶情況,以及查詢以前所進行的存款、取款等交易記錄。客戶也有權(quán)利要求關(guān)閉自己的賬戶。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi3系統(tǒng)需求在對上述銀行系統(tǒng)的基本需求進行分析后,可知這個簡化的銀行系統(tǒng)至少應(yīng)該具有如下功能:一個銀行可以有多個賬戶一個銀行可以有多個客戶一個客戶可以持有多個賬戶一個賬戶可以有多個持有者可以開戶可以注銷賬戶可以取錢可以存錢可以在銀行內(nèi)的賬戶之間轉(zhuǎn)賬可以在不同銀行的賬戶之間轉(zhuǎn)賬UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi4分析問題領(lǐng)域識別參與者(1)Clerk(銀行職員)。描述:Clerk可以創(chuàng)建、刪除賬戶,并可以修改賬戶信息。示例:銀行的工作人員。(2)CustomerActor(客戶)。描述:CustomerActor可以存錢、取錢,還可以在不同的賬戶之間轉(zhuǎn)賬。示例:任何在銀行中開有賬戶的個人或組織。(3)BankActor(銀行)。描述:客戶可以在BankActor中設(shè)立或關(guān)閉賬戶。示例:任意一個提供存款、取款、轉(zhuǎn)賬等業(yè)務(wù)的銀行。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi5分析問題領(lǐng)域識別用例(1)Login(登錄)。本用例提供了驗證用戶身份的功能。(2)Depositfund(存款)。本用例提供了存錢到賬戶的功能。(3)Withdrawfund(取款)。本用例提供了從賬戶中取錢的功能。(4)MaintainAccount(管理賬戶)。本用例提供了創(chuàng)建、刪除賬戶,以及修改賬戶信息的功能。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi6分析問題領(lǐng)域識別用例(5)Transferfundwithinabank(在銀行內(nèi)轉(zhuǎn)賬)。本用例提供了在屬于同一銀行的賬戶之間轉(zhuǎn)賬的功能。(6)Transferfundbetweenbanks(在不同的銀行之間轉(zhuǎn)賬)。本用例提供了在屬于不同銀行的賬戶之間轉(zhuǎn)賬的功能。(7)Transferfund(轉(zhuǎn)賬)。本用例描述了轉(zhuǎn)賬的通用行為,是用例(5)與(6)的父用例。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi7系統(tǒng)用例圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi8分析問題領(lǐng)域用例的事件流描述—登錄1“Login”(登錄)1.1簡單描述本用例描述了用戶如何登錄到系統(tǒng)中。1.2前置條件(Pre-Conditions)無。1.3后置條件(Post-Conditions)如果用例成功,則用戶登錄到系統(tǒng)中。否則,系統(tǒng)狀態(tài)不變。1.4擴充點(ExtensionPoints)無。1.5事件流1.5.1基流(BasicFlow)當(dāng)用戶想登錄到銀行信息系統(tǒng)中時,用例啟動。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi9分析問題領(lǐng)域用例的事件流描述—登錄(1)系統(tǒng)提示用戶輸入用戶名和密碼。(2)用戶輸入自己的用戶名和密碼,提交。(3)系統(tǒng)驗證輸入的名字和密碼(E-1),用戶登錄系統(tǒng)成功。1.5.2替代流(AlternativeFlow)E-1:如果輸入的用戶名和/或密碼無效,系統(tǒng)提示錯誤信息,用戶可以重新輸入或終止該用例。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi10“登錄”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi11分析問題領(lǐng)域用例的事件流描述—存款2“Depositfund”(存款)2.1簡單描述本用例允許客戶通過Clerk存款到賬戶中。2.2前置條件(Pre-Conditions)在本用例開始前,Clerk必須登錄到系統(tǒng)中。2.3后置條件(Post-Conditions)如果用例成功,則客戶CustomerActor賬戶中存款的金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變。2.4擴充點(ExtensionPoints)無。2.5事件流UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi12分析問題領(lǐng)域用例的事件流描述—存款2.5.1基流(BasicFlow)當(dāng)CustomerActor想存錢到自己的賬戶時,要向Clerk提交存款單和現(xiàn)金,用例啟動。(1)系統(tǒng)提示Clerk輸入用戶姓名、用戶的id號、賬號和所存款項的金額。(2)Clerk輸入相關(guān)信息后提交,系統(tǒng)確認(rèn)賬戶是否存在并有效(當(dāng)用戶名、用戶id與賬戶的戶主信息一致,且賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1)。(3)系統(tǒng)建立存款事件記錄,并更新賬戶的相關(guān)信息。2.5.2替代流(AlternativeFlow)E-1:賬戶不存在或無效,顯示提示信息,用戶可以重新輸入信或終止該用例。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi13“存款”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi14分析問題領(lǐng)域用例的事件流描述—取款3“Withdrawfund”(取款)3.1簡單描述本用例允許Clerk按照客戶的要求從客戶的賬戶中取款。3.2前置條件(Pre-Conditions)在本用例開始前,用戶必須登錄到系統(tǒng)中。3.3后置條件(Post-Conditions)如果用例成功,則客戶CustomerActor賬戶中存款的金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變。3.4擴充點(ExtensionPoints)無。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi15分析問題領(lǐng)域用例的事件流描述—取款3.5事件流3.5.1基流(BasicFlow)當(dāng)Customer想從自己的賬戶中取錢時,要向Clerk提交取款單,用例啟動。(1)系統(tǒng)提示Clerk輸入用戶姓名、用戶的id號、賬號和取款金額。(2)Clerk輸入相關(guān)信息后提交,系統(tǒng)確認(rèn)賬戶是否存在并有效(當(dāng)用戶名、用戶id與賬戶的戶主信息一致,且賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1),以及賬戶中的存款金額是否足夠支付所取款項(E-2)。(3)系統(tǒng)建立取款事件記錄,并更新賬戶的相關(guān)信息。3.5.2替代流(AlternativeFlow)E-1:若賬戶不存在或無效,顯示提示信息,用戶可以重新輸入或終止該用例。E-2:若賬戶中的存款金額不足,顯示提示信息,用戶可以重新輸入金額或終止該用例。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi16“取款”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi17分析問題領(lǐng)域用例的事件流描述—轉(zhuǎn)賬4“Transferfund”(轉(zhuǎn)賬)4.1簡單描述本用例允許Clerk按照客戶的要求將指定數(shù)量的資金從一個賬戶轉(zhuǎn)到另一個賬戶。4.2前置條件(Pre-Conditions)在本用例開始前,用戶必須登錄到系統(tǒng)中。4.3后置條件(Post-Conditions)如果用例成功,則客戶CustomerActor賬戶中存款的金額發(fā)生變化。否則,系統(tǒng)狀態(tài)不變。4.4擴充點(ExtensionPoints)無。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi18分析問題領(lǐng)域用例的事件流描述—轉(zhuǎn)賬4.5事件流4.5.1基流(BasicFlow)當(dāng)Customer要求轉(zhuǎn)賬時,用例啟動。(1)系統(tǒng)提示Clerk輸入用戶姓名、用戶的id號、賬戶號碼和轉(zhuǎn)賬金額。(2)Clerk輸入相關(guān)信息后提交。(資金轉(zhuǎn)入賬戶所在的銀行只能在所提供的銀行列表中選擇。)(3)系統(tǒng)確認(rèn)資金轉(zhuǎn)出賬戶是否存在并有效(當(dāng)用戶名、用戶id與賬戶的戶主信息一致,且賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1),并確認(rèn)資金轉(zhuǎn)出賬戶中的金額是否足夠支付所轉(zhuǎn)款項(E-2)。(4)更新資金轉(zhuǎn)出賬戶的相關(guān)信息。(5)為資金轉(zhuǎn)出賬戶建立轉(zhuǎn)賬記錄。(6)存儲轉(zhuǎn)賬記錄。(7)判斷資金轉(zhuǎn)入賬戶是否屬于同一銀行。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi19分析問題領(lǐng)域用例的事件流描述—轉(zhuǎn)賬如果資金轉(zhuǎn)入賬戶與資金轉(zhuǎn)出賬戶屬于同一銀行,則執(zhí)行分支流S-1:在同一銀行的賬戶間轉(zhuǎn)賬。如果資金轉(zhuǎn)入賬戶與資金轉(zhuǎn)出賬戶屬于不同銀行,則執(zhí)行分支流S-2:在不同銀行的賬戶間轉(zhuǎn)賬。4.5.2分支流(Subflows)S-1:在同一銀行的賬戶間轉(zhuǎn)賬(1)系統(tǒng)確認(rèn)資金轉(zhuǎn)入賬戶是否存在并有效(當(dāng)賬戶處于非凍結(jié)狀態(tài)時,賬戶有效)(E-1)。(2)更新資金轉(zhuǎn)入賬戶的相關(guān)信息。(3)為資金轉(zhuǎn)入賬戶建立轉(zhuǎn)賬記錄。(4)存儲轉(zhuǎn)賬記錄。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi20分析問題領(lǐng)域用例的事件流描述—轉(zhuǎn)賬S-2:在不同銀行的賬戶間轉(zhuǎn)賬發(fā)送轉(zhuǎn)賬通知給另一個銀行。4.5.3替代流(AlternativeFlow)E-1:賬戶不存在或無效,顯示提示信息,用戶可以重新輸入或終止該用例。E-2:賬戶中的存款金額不足,顯示提示信息,用戶可以修改所轉(zhuǎn)款項的金額或終止該用例。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi21“轉(zhuǎn)賬”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi22分析問題領(lǐng)域用例的事件流描述—管理賬戶5MaintainAccount(管理賬戶)5.1前置條件(Pre-Conditions)在這個用例開始前,Clerk必須登錄到系統(tǒng)中。5.2后置條件(Post-Conditions)如果這個用例成功,新賬戶會被創(chuàng)建,或者賬戶信息被更新(修改),或賬戶從系統(tǒng)中被刪除。否則,系統(tǒng)的狀態(tài)沒有變化。5.3擴充點(ExtensionPoints)沒有5.4事件流5.4.1基流(BasicFlow)當(dāng)Clerk想創(chuàng)建、修改或刪除賬戶信息時,用例啟動。系統(tǒng)要求Clerk選擇所要執(zhí)行的操作(創(chuàng)建賬戶、修改賬戶信息或刪除賬戶)。如果所選的操作是“創(chuàng)建賬戶”,則執(zhí)行分支流S-1:創(chuàng)建賬戶。如果所選的操作是“刪除賬戶”,則執(zhí)行分支流S-2:刪除賬戶。如果所選的操作是“修改賬戶”,則執(zhí)行分支流S-3:修改賬戶信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi23分析問題領(lǐng)域用例的事件流描述—管理賬戶5.4.2分支流(Subflows)S-1:創(chuàng)建賬戶(1)系統(tǒng)要求Clerk輸入客戶信息(姓名、id號、地址、存儲金額等)(2)Clerk輸入所要求的信息后提交。(3)系統(tǒng)為客戶建立賬戶。(4)將賬戶信息存儲到數(shù)據(jù)庫中。S-2:刪除賬戶(1)系統(tǒng)提示Clerk輸入賬號(E-1)。(2)Clerk輸入賬號后提交。(3)系統(tǒng)檢索賬戶信息(E-2)。(4)顯示賬戶信息。(5)Clerk確認(rèn)刪除賬戶(E-3)。(6)關(guān)閉賬戶。(7)從系統(tǒng)中刪除賬戶。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi24分析問題領(lǐng)域用例的事件流描述—管理賬戶S-3:修改賬戶信息(1)系統(tǒng)提示Clerk輸入賬號(E-1)。(2)Clerk輸入賬號后提交。(3)系統(tǒng)檢索賬戶信息(E-2)。(4)顯示賬戶信息。(5)Clerk修改賬戶信息。(6)Clerk修改完畢后提交。(7)系統(tǒng)更新賬戶信息。5.4.3替代流(AlternativeFlow)E-1:輸入無效的賬號,Clerk可以重新輸入或終止該用例。E-2:賬戶不存在,系統(tǒng)顯示錯誤信息,Clerk重新輸入賬號或取消操作(用例終止)。E-3:取消刪除,刪除賬戶操作被取消,用例終止。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi25“創(chuàng)建賬戶”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi26“刪除賬戶”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi27“修改賬戶”活動圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi28靜態(tài)結(jié)構(gòu)模型定義系統(tǒng)對象類(1)類Bank。類Bank代表物理存在的銀行。類Bank應(yīng)該具有下列私有屬性。bankCode:String

name:String

address:Stringphone:String

fax:String為了設(shè)置和訪問對象的私有屬性值,類Bank應(yīng)該具有下述方法。setBankCode(code:String) setName(name:String)setAddress(address:String) setPhone(phone:String)setFax(fax:String) getBankCode():String getName():StringgetAddress():String getPhone():String getFax():StringUML系統(tǒng)分析與設(shè)計第2版ZhenyanJi29靜態(tài)結(jié)構(gòu)模型(2)類Account。在確定類Account的屬性和方法時,應(yīng)考慮如下需求。一個銀行可以有多個賬戶。一個賬戶可以有多個持有者??梢蚤_戶??梢宰N賬戶。可以取錢。可以存錢??梢栽阢y行內(nèi)的賬戶之間轉(zhuǎn)賬??梢栽诓煌y行的賬戶之間轉(zhuǎn)賬。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi30靜態(tài)結(jié)構(gòu)模型(3)類Customer。在確定類Account的屬性和方法時,應(yīng)考慮如下需求。一個銀行可以有多個客戶。一個客戶可以有多個賬戶。查詢數(shù)據(jù)庫中是否存在指定客戶名和ID號的客戶信息。創(chuàng)建客戶對象。將客戶信息存儲到數(shù)據(jù)庫中。更新數(shù)據(jù)庫中的客戶信息。判斷客戶是否還持有賬戶。刪除數(shù)據(jù)庫中的客戶信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi31靜態(tài)結(jié)構(gòu)模型(4)類Transaction。私有屬性如下。account:AccountcreateDate:Datefund:float公共方法如下。newTransaction(account:Account,fund:float,date:Date):void創(chuàng)建交易記錄。save():void將交易記錄存儲到數(shù)據(jù)庫中。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi32靜態(tài)結(jié)構(gòu)模型(5)類Deposit。繼承類Transaction。私有屬性如下。無。公共方法如下。newDeposit(account:Account,fund:float,date:Date):void創(chuàng)建存款交易記錄。save():void將存款交易記錄存儲到數(shù)據(jù)庫中。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi33靜態(tài)結(jié)構(gòu)模型(6)類Withdraw。繼承類Transaction。私有屬性如下。無。公共方法如下。newWithdraw(account:Account,fund:float,date:Date):void創(chuàng)建取款交易記錄。save():void將取款交易記錄存儲到數(shù)據(jù)庫中。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi34靜態(tài)結(jié)構(gòu)模型(7)類Transfer。繼承類Transaction。私有屬性如下。transferAccountNo:StringtransferBank:Bank公共方法如下。newTransfer(account:Account,transferAccountNo:String,transferBank:Bank,fund:float,date:Date):void創(chuàng)建轉(zhuǎn)賬交易記錄。save():void將轉(zhuǎn)賬交易記錄存儲到數(shù)據(jù)庫中。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi35靜態(tài)結(jié)構(gòu)模型定義用戶界面類(1)類BankGUI。BankGUI是系統(tǒng)的主界面,系統(tǒng)的主界面含有幾個按鈕,當(dāng)選擇不同按鈕時,系統(tǒng)可以執(zhí)行不同的操作。當(dāng)程序退出時,主界面窗口關(guān)閉。(2)類QueryDialog。界面類QueryDialog是用來根據(jù)賬戶的賬號查找賬戶的對話框。當(dāng)按下主窗口BankGUI中的“刪除賬戶”按鈕和“修改賬戶信息”按鈕時,對話框QueryDialog彈出,銀行職員填寫賬號并提交,然后系統(tǒng)查詢數(shù)據(jù)庫中具有指定賬號的賬戶信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi36靜態(tài)結(jié)構(gòu)模型(3)類DWDialog。界面類DWDialog是客戶在存款或取款時所需的對話框,其界面如圖14.9所示。當(dāng)按下主窗口BankGUI中的“存款”按鈕或“取款”按鈕時,該對話框彈出,對話框中第1個按鈕的標(biāo)簽根據(jù)操作的不同顯示為“存款”或“取款”。(4)類AccountDialog。界面類AccountDialog是用來填寫或顯示賬戶信息的對話框UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi37靜態(tài)結(jié)構(gòu)模型(5)類TransferDialog。界面類TransferDialog是用來填寫轉(zhuǎn)賬信息的對話框。當(dāng)按下主窗口BankGUI中的“轉(zhuǎn)賬”按鈕時,該對話框彈出,銀行職員填寫資金轉(zhuǎn)出賬戶、轉(zhuǎn)賬金額、資金轉(zhuǎn)入賬戶等信息,然后單擊“OK”按鈕確認(rèn)操作,系統(tǒng)執(zhí)行轉(zhuǎn)賬操作。(6)類LoginDialog。界面類LoginDialog是用來輸入用戶名和密碼的對話框。該對話框在啟動系統(tǒng)時彈出,提示用戶輸入驗證信息,若驗證成功,則系統(tǒng)啟動;否則,用戶重新輸入驗證信息或終止操作。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi38靜態(tài)結(jié)構(gòu)模型系統(tǒng)類圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi39系統(tǒng)數(shù)據(jù)庫的邏輯模型UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi40動態(tài)行為模型登錄首先,Clerk啟動系統(tǒng),類LoginDialog的方法newLDialog()被調(diào)用,創(chuàng)建用來填寫登錄信息的對話框。Clerk填寫登錄信息后,提交信息,執(zhí)行方法validate()驗證用戶名和密碼是否正確,若正確,發(fā)送消息newBankGUI()給類BankGUI,啟動系統(tǒng),創(chuàng)建系統(tǒng)主界面;若不正確,則提示用戶重新輸入信息,對重新輸入的用戶信息進行驗證;若用戶連續(xù)三次輸入錯誤信息,系統(tǒng)終止運行。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi41“登錄”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi42動態(tài)行為模型存款客戶要求存款,Clerk發(fā)送消息deposit()給類BankGUI,類BankGUI又發(fā)送消息newDWDialog()給類DWDialog,即類DWDialog的方法newDWDialog()被調(diào)用,創(chuàng)建用于填寫存款信息的窗口。Clerk填寫必要的信息后提交信息,類DWDialog的方法deposit()被調(diào)用,發(fā)送消息deposit()給類Account。在類Account的方法deposit()的執(zhí)行過程中,首先調(diào)用類Account的方法query(),確認(rèn)數(shù)據(jù)庫中是否存在該賬戶,若存在(若賬戶不存在,則顯示提示信息),則發(fā)送消息newDeposit()給類Deposit,創(chuàng)建一個存款交易記錄,然后調(diào)用方法save()將該記錄存儲到數(shù)據(jù)庫中。調(diào)用類Account的方法newBalance()計算新的賬戶余額,最后調(diào)用方法update()更新數(shù)據(jù)庫中該賬戶的信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi43“存款”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi44動態(tài)行為模型取款客戶要求取款,類BankGUI的方法withdraw()被調(diào)用,類BankGUI發(fā)送消息newDWDialog()給類DWDialog,創(chuàng)建用于填寫取款信息的窗口。Clerk填寫必要的信息后,提交信息,類DWDialog的方法withdraw()被調(diào)用,發(fā)送消息withdraw()給類Account。在類Account的方法withdraw()的執(zhí)行過程中,首先調(diào)用類Account的方法query(),確認(rèn)數(shù)據(jù)庫中是否存在該賬戶,并確認(rèn)賬戶中的金額是否足夠支付所取款項,若賬戶存在且金額足夠(否則,若賬戶不存在或賬戶中金額不足,則顯示提示信息),則發(fā)送消息newWithdraw()給類Withdraw,并創(chuàng)建一個取款交易記錄,然后再調(diào)用方法save()將該記錄存儲到數(shù)據(jù)庫中。調(diào)用方法newBalance()計算新的賬戶余額,最后調(diào)用方法update()更新數(shù)據(jù)庫中該賬戶的信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi45“取款”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi46動態(tài)行為模型在銀行內(nèi)轉(zhuǎn)賬客戶要求在銀行內(nèi)轉(zhuǎn)賬,類BankGUI的方法transfer()被調(diào)用,類BankGUI發(fā)送信息newTDialog()給類TransferDialog,創(chuàng)建用于填寫轉(zhuǎn)賬信息的窗口。Clerk填寫必要的信息后提交信息,類TransferDialog的方法transfer()被調(diào)用,發(fā)送消息transferOut()給類Account的對象t1(資金轉(zhuǎn)出賬戶),調(diào)用方法query()查詢賬戶t1、t2是否存在且t1中資金是否足夠(即大于轉(zhuǎn)賬金額),如果賬戶t1或t2不存在,或資金不夠,發(fā)送操作失敗信息給Clerk;反之,如果賬戶t1、t2都存在且t1中資金足夠,調(diào)用方法newBalance()計算新的賬戶余額,再調(diào)用方法update()更新數(shù)據(jù)庫中t1的信息。然后發(fā)送消息newTransfer()給類Transfer,創(chuàng)建轉(zhuǎn)賬交易記錄,然后發(fā)送消息save()給類Transfer,存儲轉(zhuǎn)賬交易記錄。類TransferDialog還發(fā)送消息transferIn()給類Account的對象t2(資金轉(zhuǎn)入賬戶),調(diào)用方法newBalance()計算新的賬戶余額,再調(diào)用方法update()更新數(shù)據(jù)庫中t2的信息。最后發(fā)送消息newTransfer()給類Transfer,創(chuàng)建轉(zhuǎn)賬交易記錄,發(fā)送消息save()給類Transfer,存儲轉(zhuǎn)賬交易記錄。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi47“在銀行內(nèi)轉(zhuǎn)賬”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi48動態(tài)行為模型在銀行之間轉(zhuǎn)賬客戶要求在銀行之間轉(zhuǎn)賬,類BankGUI的方法transfer()被調(diào)用,類BankGUI發(fā)送信息newTDialog()給類TransferDialog,創(chuàng)建用于填寫轉(zhuǎn)賬信息的窗口。Clerk填寫必要的信息后提交信息,類TransferDialog的方法transfer()被調(diào)用,發(fā)送消息transferOut()給Account對象,調(diào)用方法query()查詢賬戶是否存在且賬戶資金是否足夠(大于轉(zhuǎn)賬金額),如果賬戶不存在或賬戶資金不足,發(fā)送失敗消息給Clerk;如果賬戶存在且賬戶資金足夠,調(diào)用類Account的方法newBalance(),計算新的賬戶余額,再調(diào)用方法update()更新數(shù)據(jù)庫中的賬戶信息。然后發(fā)送消息newTransfer()給類Transfer,創(chuàng)建轉(zhuǎn)賬交易記錄,發(fā)送消息save()給類Transfer,存儲轉(zhuǎn)賬交易記錄。最后給另一個銀行發(fā)送轉(zhuǎn)賬通知。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi49“在銀行之間轉(zhuǎn)賬”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi50動態(tài)行為模型創(chuàng)建新賬戶客戶要求創(chuàng)建新賬戶,Clerk發(fā)送消息newAccount()給類BankGUI,類BankGUI發(fā)送消息newADialog()給類AccountDialog,創(chuàng)建用于填寫賬戶信息的窗口。Clerk填寫必要的信息后提交信息,類AccountDialog的方法newAccount()被調(diào)用,發(fā)送消息newAccount()給類Account,創(chuàng)建Account對象。在方法newAccount()執(zhí)行過程中,要調(diào)用方法query()查詢該客戶是否已存在于數(shù)據(jù)庫中(該客戶可能已在銀行開設(shè)其他賬戶,因此數(shù)據(jù)庫中已有該客戶信息),若該客戶信息已在數(shù)據(jù)庫中存在,類Account發(fā)送消息update()給類Customer,更新數(shù)據(jù)庫中該客戶的信息;反之,若數(shù)據(jù)庫中不存在該客戶信息,則類Account發(fā)送消息newCustomer()給類Customer,創(chuàng)建Customer對象,然后調(diào)用方法save()將客戶信息存儲到數(shù)據(jù)庫中。最后,調(diào)用類Account的方法save()將Account信息存儲到數(shù)據(jù)庫中。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi51“創(chuàng)建新賬戶”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi52動態(tài)行為模型刪除賬戶客戶要求刪除賬戶,類BankGUI的方法delAccount()被調(diào)用,類BankGUI發(fā)送消息newQDialog()給類QueryDialog,創(chuàng)建用于填寫賬號的窗口。Clerk填寫賬號后提交信息,類QueryDialog的方法query()被調(diào)用,發(fā)送消息getAccount()給類Account,返回匹配指定賬號的賬戶信息,若賬戶信息為空,發(fā)送消息給Clerk;反之,若賬戶信息存在,調(diào)用方法newADialog()創(chuàng)建窗口并將賬戶信息顯示在窗口中。Clerk確認(rèn)刪除,類AccountDialog的方法delAccount()被調(diào)用,發(fā)送消息remAccount()給類Account。在方法remAccount()被執(zhí)行的過程中,首先調(diào)用類Account的方法closeAccount()結(jié)清賬戶的利息和余額,關(guān)閉賬戶,然后調(diào)用方法delete()從數(shù)據(jù)庫中刪除該賬戶,發(fā)送消息update()給類Customer,更新數(shù)據(jù)庫中Customer的相關(guān)信息。然后調(diào)用類Customer的方法hasAccount()判斷是否還有與Customer相關(guān)的賬戶存在,若沒有,調(diào)用方法delete()刪除數(shù)據(jù)庫中的客戶信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi53“刪除賬戶”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi54動態(tài)行為模型修改賬戶信息類BankGUI的方法modAccount()被調(diào)用,類BankGUI發(fā)送消息newQDialog()給類QueryDialog,創(chuàng)建用于填寫賬號的窗口。Clerk填寫賬號后提交信息,類QueryDialog的方法query()被調(diào)用,發(fā)送消息getAccount()給類Account,返回匹配指定賬號的賬戶信息,如果賬戶不存在,給出失敗提示信息;如果賬戶存在,調(diào)用方法newADialog()創(chuàng)建窗口并將賬戶信息顯示在窗口中。Clerk修改賬戶信息后提交信息,類AccountDialog的方法modAccount()被調(diào)用,發(fā)送消息update()給類Customer,更新數(shù)據(jù)庫中客戶信息;發(fā)送消息update()給類Account,更新數(shù)據(jù)庫中賬戶信息。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi55“修改賬戶”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi56物理模型系統(tǒng)部署圖如下頁圖所示,它有4個節(jié)點,即“BankServer”(銀行系統(tǒng)服務(wù)器)、“DBServer”(數(shù)據(jù)庫服務(wù)器)、“InternalClient”(內(nèi)部客戶端)、“ExternalClient”(外部客戶端)?!癇ankServer”為客戶提供了存款、取款、轉(zhuǎn)賬的服務(wù),為銀行職員提供了創(chuàng)建賬戶、刪除賬戶、修改賬戶信息的服務(wù)?!癉BServer”保存系統(tǒng)中的持久數(shù)據(jù),它是一個舊系統(tǒng),因此衍型為<<legacy>>,“DBServer”與“BankServer”通過銀行局域網(wǎng)連接。銀行職員通過“BankClient”為客戶提供存款、取款、轉(zhuǎn)賬服務(wù),并維護賬戶信息,“BankClient”通過銀行局域網(wǎng)與“BankServer”連接。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi57物理模型系統(tǒng)的部署圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi58小結(jié)本章以“銀行系統(tǒng)”的面向?qū)ο蠓治雠c設(shè)計過程為例,介紹了如何用UML語言為系統(tǒng)建模。本章使用用例圖來描述系統(tǒng)的需求,并給出了系統(tǒng)用例的事件流描述。在識別系統(tǒng)對象時,首先通過尋找系統(tǒng)域描述和需求描述中的名詞的方法來進行。然后使用類圖來描述系統(tǒng)的靜態(tài)結(jié)構(gòu),用順序圖來描述用例的場景,揭示了系統(tǒng)的主要動態(tài)行為,并為識別類的操作、識別類之間的關(guān)系以及細(xì)化類做出了貢獻。最后本系統(tǒng)采用關(guān)系型數(shù)據(jù)庫模型,并給出了數(shù)據(jù)庫的邏輯模型。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi59UML系統(tǒng)分析與設(shè)計SystemAnalysis&Design冀振燕北京交通大學(xué)

第十五章嵌入式系統(tǒng)設(shè)計系統(tǒng)需求需求分析靜態(tài)結(jié)構(gòu)模型動態(tài)行為模型物理模型UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi61系統(tǒng)需求便攜式心電記錄儀是一種消費電子儀器,用來實時記錄心臟病人的心電波形,心電記錄儀的顯示器還可以回放所記錄的心電波形。心電數(shù)據(jù)由心電記錄儀的傳感器采集后,轉(zhuǎn)變?yōu)閿?shù)字信號,然后存儲在記錄儀的存儲器中。用戶可以通過心電記錄儀的顯示器,在任何時候快速回放所存儲的任何一個時間段的心電波形。心電記錄儀應(yīng)該具有體積小、重量輕、易使用、可省電(可以由電池提供電源)等特點。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi62系統(tǒng)需求按鈕“記錄”用來啟動心電信號記錄;按鈕“回放”用來回放所記錄的心電信號;按鈕“停止”用來停止系統(tǒng)的記錄或回放活動;按鈕“刪除”用來刪除所記錄的心電信號;按鈕“菜單”用來激活系統(tǒng)菜單,按鈕“上”、“下”、“左”、“右”用來選擇菜單項,按鈕“OK”用來確定選項。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi63系統(tǒng)需求主要功能可以存儲20個心電波(ECGWave),每個心電波的長度由內(nèi)存的大小來決定。具有屏幕菜單,使用方便可以設(shè)置鬧鈴,提示用戶時間到。具有LCD顯示器可以顯示心電波形、心電波形的記錄時間和記錄日期、當(dāng)前時間和當(dāng)前日期。當(dāng)前的時間和日期總是出現(xiàn)在顯示器上。顯示器還顯示電池使用情況指標(biāo)。當(dāng)電池電量不足時,系統(tǒng)發(fā)出蜂鳴聲提醒用戶。具有待用模式(Stand-byMode),這樣可以節(jié)省能量。當(dāng)不用時,系統(tǒng)關(guān)閉外設(shè);當(dāng)用戶隨便按一個按鈕時,系統(tǒng)激活,返回正常工作狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi64需求分析識別參與者系統(tǒng)的參與者只有一個,即User(用戶)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi65參與者“User”的描述需求分析識別用例記錄心電信號(RecordECG)。當(dāng)用戶按下“記錄”按鈕,記錄儀開始記錄心電信號;用戶按下“停止”按鈕或者內(nèi)存用完時,記錄儀停止記錄心電信號?;胤判碾娦盘枺≒laybackECG)。用戶可以從目錄表中選擇所要回放的心電信號,按下“回放”按鈕,心電信號片段開始在顯示器上回放,直到結(jié)束(或者當(dāng)用戶按下“停止”按鈕時,回放停止)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi66識別用例刪除心電信號(DeleteECG)。用戶可以從目錄表中選擇某個心電信號片段,然后按下“刪除”按鈕,則該心電信號片段從內(nèi)存中被刪除,其所占用的內(nèi)存空間被釋放。設(shè)置鬧鈴時間(SetAlarmTime)。用戶可以打開或關(guān)閉鬧鈴,并設(shè)置鬧鈴的時間。打開或關(guān)閉鬧鈴以及設(shè)置鬧鈴的時間是通過選擇系統(tǒng)菜單的不同選項進行的。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi67需求分析識別用例設(shè)置時鐘時間(SetClockTime)。用戶可以設(shè)置時鐘時間,或者調(diào)整時鐘的時間。顯示時間(DisplayTime)。系統(tǒng)在開機狀態(tài)下應(yīng)該一直在顯示器上顯示當(dāng)前的時間和日期,用戶可以查看當(dāng)前時間和日期。顯示電池狀態(tài)(DisplayBatteryStatus)。系統(tǒng)在開機狀態(tài)下應(yīng)該一直在顯示器上顯示電池狀態(tài)。當(dāng)電量不足時,系統(tǒng)發(fā)出蜂鳴聲,電池狀態(tài)則顯示為警告狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi68需求分析系統(tǒng)的用例圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi69需求分析回放心電信號當(dāng)用戶User按下“回放”按鈕,即發(fā)送消息“PlayECG”(回放心電信號)給系統(tǒng)時,系統(tǒng)System發(fā)送消息“StartplayingECG”(開始回放心電信號)給顯示器,系統(tǒng)通過顯示器回放心電信號,同時顯示回放進度給用戶(Showprogressindicator)。一秒過后(Nextsecond),系統(tǒng)更新顯示時間(Shownewtime),并繼續(xù)顯示回放進度(Showprogressindicator)。當(dāng)用戶按下“停止”按鈕,即發(fā)送消息“Stop”(停止)給系統(tǒng)時,顯示器停止回放心電信號(StopplayingECG)。圖中的注釋說明了響應(yīng)時間的限制(響應(yīng)時間的限制最好用兩個消息間的約束來描述,但由于本人所采用的UML建模軟件不支持消息間的約束,所以就用注釋來描述了),第一個“0.5s”表示按下“回放”按鈕和系統(tǒng)開始回放心電信號的間隔不超過0.5s;第二個“0.5s”表示按下“停止”按鈕和系統(tǒng)停止回放心電信號的間隔不超過0.5s。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi70“回放心電信號”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi71需求分析進入待用模式和從待用模式蘇醒系統(tǒng)如果在2min內(nèi)沒有任何活動,系統(tǒng)就關(guān)閉顯示器和揚聲器(Switchoff),從而進入待用模式。當(dāng)有警報發(fā)生時(Alarm),系統(tǒng)就打開顯示器和揚聲器(Switchon),即系統(tǒng)從待用模式恢復(fù),然后通過揚聲器報警(Playalarm)。1s過后(Nextsecond)或電池沒電(Nopower)時,系統(tǒng)停止通過揚聲器報警(Stopplayingalarm),系統(tǒng)重新關(guān)閉顯示器和揚聲器(Switchoff)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi72“進入待用模式和從待用模式蘇醒”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi73需求分析產(chǎn)生警報用戶發(fā)送消息“PlayECG”(回放心電信號)給系統(tǒng)System,系統(tǒng)發(fā)送“StartplayingECG”(開始回放心電信號)的消息給顯示器,系統(tǒng)通過顯示器回放心電信號,同時顯示回放進度給用戶(Showprogressindicator)。1s過后(Nextsecond),系統(tǒng)更新顯示時間(Shownewtime),并繼續(xù)顯示回放進度(Showprogressindicator)。這時有警報產(chǎn)生(Alarm),系統(tǒng)通過揚聲器報警(Playalarm),并顯示報警信號(Showalarmindicator),其中顯示報警信號和報警產(chǎn)生之間的間隔不超過0.5s。然后,用戶按下按鈕“停止”,即發(fā)送消息“Stop”(停止)給系統(tǒng),顯示器停止回放心電信號(StopplayingECG),并停止報警(Stopplayingalarm)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi74“產(chǎn)生警報”順序圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi75靜態(tài)結(jié)構(gòu)模型識別出類可以從系統(tǒng)中抽象出以下主要的類,包括類Battery、類Alarmclock、類Keyboard、類Display、類GUI、類Controller、類ECGOutput、類ECGMemory、類ECGSegment、類ECGInput、類Sensor。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi76系統(tǒng)類圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi77系統(tǒng)包圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi78靜態(tài)結(jié)構(gòu)模型下面分別對每個子系統(tǒng)進行詳細(xì)的介紹。(1)ECG子系統(tǒng)。由于每個心電波是由多個心電信號片段組成,因此在類ECGWave和類ECGSegment之間存在聚合關(guān)系,即ECGSegment是ECGWave的一部分,1個ECGWave可以由0個或多個ECGSegment組成,而1個ECGSegment只屬于1個ECGWave。另外,每個心電信號片段又由多個心電周期樣本組成,所以,類ECGSample與類ECGSegment之間存在聚合關(guān)系,ECGSample是ECGSegment的一部分,1個ECGSegment可以由0個或多個ECGSample組成,而1個ECGSample只屬于1個ECGSegment。為了節(jié)省內(nèi)存空間,采集到的心電數(shù)據(jù)需要壓縮后存儲,壓縮后的心電周期抽象為類CompressedECGBlock,類CompressedECGBlock是類ECGSegment的子類。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi79ECG子系統(tǒng)的類圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi80靜態(tài)結(jié)構(gòu)模型順序圖描述了回放心電信號過程中對象之間的交互作用。GUI的對象發(fā)送消息playECGWave()給Controller對象,Controller對象發(fā)送消息getECGSegment()給ECGWave的對象,ECGWave返回壓縮后的心電信號給Controller,然后Controller發(fā)送消息playCompressed-ECGSegment()給ECGOutput對象。ECGOutput對象發(fā)送消息playSample()給顯示器Display,心電數(shù)據(jù)開始回放,心電片段由n個心電周期樣本組成,第一個片段回放后,對于Controller重復(fù)獲取心電片段并回放的行為,直到心電片段播放完畢或者用戶按“停止”按鈕時為止。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi81UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi82靜態(tài)結(jié)構(gòu)模型(2)Memory子系統(tǒng)。類ECGMemory管理心電記錄儀的存儲空間,它保存了所記錄的所有心電波數(shù)據(jù),并分配空間給新的心電波數(shù)據(jù),還可以刪除某個心電波數(shù)據(jù)。Memory子系統(tǒng)的類圖如圖15.11所示。類ECGMemory是類Controller的一部分,它們之間存在著聚合關(guān)系,每個Controller對象有1個ECGMemory對象,每個ECGMemory只屬于1個Controller對象。類ECGSegment與類ECGMemory之間存在著關(guān)聯(lián)關(guān)系,每個ECGMemory可以存儲0個或n個ECGSegment,每個ECGSegment只屬于1個ECGMemory。類ECGWave與類ECGSegment之間也存在著聚合關(guān)系,每個ECGSegment只屬于1個ECGWave,1個ECGWave由0個或n個ECGSegment組成。類ECGWave與類ECGMemory之間也存在著關(guān)聯(lián)關(guān)系,每個ECGMemory最多可以存儲20個ECGWave,每個ECGWave只屬于1個ECGMemory。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi83Memory子系統(tǒng)的類圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi84靜態(tài)結(jié)構(gòu)模型類GUI可以通過類ECGMemory來獲取所記錄的心電波列表,但類GUI不能修改它,只有類Controller可以通過類ECGMemory來修改所記錄的心電波。如果類GUI想刪除心電波,它需要調(diào)用類Controller的方法delECGWave(),而不是直接訪問對象ECGMemory。這樣做是為了防止在控制器回放或記錄心電波時,用戶界面刪除該心電波。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi85UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi86靜態(tài)結(jié)構(gòu)模型(3)Alarm_Clock子系統(tǒng)。類AlarmClock可以提供系統(tǒng)當(dāng)前的時間、日期和鬧鈴定時時間。類AlarmClock通過計時器Timer來計時,每過去1s,就使用方法nextSecond()更新一次時間的內(nèi)部表示。當(dāng)24h過去時,使用類Date的nextDay()方法更新日期。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi87Alarm_Clock子系統(tǒng)類圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi88靜態(tài)結(jié)構(gòu)模型(4)UserInterface子系統(tǒng)。類GUI管理用戶與系統(tǒng)的交互。它接受用戶的鍵盤輸入,并通過顯示器反饋給用戶。類Keyboard是硬件鍵盤的軟件接口,類Display是硬件顯示器的軟件接口。在類GUI與類Keyboard之間存在關(guān)聯(lián)關(guān)系。類GraphicContext提供了圖形上下文,可以在顯示器上顯示點、線、字符串,以及各種圖形,每個圖形上下文都代表了顯示器的矩形區(qū)域。類GraphicContext與類Display之間也存在關(guān)聯(lián)關(guān)系。類View調(diào)用GraphicContext的方法,在顯示器上顯示時間、菜單等,類View和類GraphicContext是關(guān)聯(lián)關(guān)系。類View有3個子類,即類ClockView、類TaskView和類MenuView。類View又是類GUI的一部分,即在類View和類GUI之間存在著聚合關(guān)系,每個View都屬于1個GUI,每個GUI都可以有1個或多個View。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi89UserInterface子系統(tǒng)類圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi90動態(tài)行為模型狀態(tài)機圖(1)Controller(控制器)對象。Controller對象可以用來記錄心電信號、播放心電信號或報警。Controller對象有4個狀態(tài)。通常,Controller對象處于“Idle”(空閑)狀態(tài),如果“記錄”按鈕被按下,則事件“record”(記錄)發(fā)生,對象進入“Recording”狀態(tài),當(dāng)事件“stop”(停止)發(fā)生,系統(tǒng)停止記錄,對象返回“Idle”狀態(tài);如果“回放”按鈕被按下,事件“playback”(回放)發(fā)生,對象進入“Playing”(播放)狀態(tài),當(dāng)事件“stop”(停止)發(fā)生時,系統(tǒng)停止回放,對象返回“Idle”狀態(tài);如果警報發(fā)生,即事件“alarm”(警報)發(fā)生時,對象進入“Alarming”狀態(tài),當(dāng)事件“stop”(停止)發(fā)生時,系統(tǒng)停止回放,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi91動態(tài)行為模型Controller對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi92動態(tài)行為模型(2)ECGInput(心電輸入)對象。ECGInput對象控制心電輸入通道,該對象通過Sensor(傳感器)對象來記錄心電數(shù)據(jù)。值得注意的是,采樣得到的心電數(shù)據(jù)要經(jīng)過壓縮再存儲。ECGInput對象有3個狀態(tài)。通常,ECGInput對象處于“Idle”(空閑)狀態(tài),如果事件“recordCompressedECGSegment(ecg:ECGSegment)”(獲取壓縮心電數(shù)據(jù))發(fā)生,對象進入“Record”狀態(tài),開始記錄心電數(shù)據(jù),在進入該狀態(tài)時,需執(zhí)行入口動作“StartDMA”(啟動DMA)協(xié)助記錄。當(dāng)事件“DMAEndOfTransfer”(數(shù)據(jù)傳輸結(jié)束)發(fā)生時,對象進入“Compress”狀態(tài),壓縮心電數(shù)據(jù),壓縮完成后,ECGInput對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi93動態(tài)行為模型ECGInput對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi94動態(tài)行為模型(3)ECGOutput(心電輸出)對象。ECGOutput對象控制心電輸出通道,它可以通過顯示器來回放心電數(shù)據(jù)。ECGOutput對象有3個狀態(tài),通常ECGOutput對象處于“Idle”(空閑)狀態(tài),如果事件“PlayCompressedECGSegment(ecg:ECGSegment)”(回放壓縮的心電數(shù)據(jù))發(fā)生,對象進入“Expand”(展開)狀態(tài),開始對心電數(shù)據(jù)解壓縮,在進入該狀態(tài)時,需執(zhí)行入口動作“StartDMA”(啟動DMA)協(xié)助回放。解壓縮完成后,ECGOutput對象進入“Play”(回放)狀態(tài),回放心電數(shù)據(jù),回放結(jié)束后,ECGOutput對象返回“Idle”狀態(tài)。如果在ECGOutput對象處于“Idle”狀態(tài)時,事件“PlayECGSegment(ecg:ECGSegment)”(回放心電數(shù)據(jù))發(fā)生,則ECGOutput對象直接進入“Play”狀態(tài),回放心電數(shù)據(jù),回放結(jié)束后,ECGOutput對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi95動態(tài)行為模型

ECGOutput對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi96動態(tài)行為模型(4)Sensor(傳感器)對象。Sensor對象是物理傳感器的接口。傳感器可以采集數(shù)據(jù)。當(dāng)SwichOn發(fā)生(打開電源)后,Sensor對象進入“Idle”(空閑)狀態(tài),如果事件“startsampling”(開始采樣)發(fā)生,對象進入“Sampling”(采樣)狀態(tài),對心電數(shù)據(jù)進行采樣,事件“intervalpassed”(采樣間隔時間過去)引起的躍遷是自躍遷,在事件發(fā)生時,執(zhí)行動作getSample()進行采樣。如果事件“stopsampling”(停止采樣)發(fā)生,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi97動態(tài)行為模型Sensor對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi98動態(tài)行為模型(5)Display(顯示器)對象。Display對象是物理顯示器的軟件接口。當(dāng)SwichOn發(fā)生(電源開通)后,Display對象進入“Idle”(空閑)狀態(tài),如果事件“PlayECG”(播放心電圖)發(fā)生,對象進入“PlayingECGWave”狀態(tài),顯示器播放心電圖。如果事件“StopPlay”(停止播放)發(fā)生,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi99動態(tài)行為模型Display對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi100動態(tài)行為模型(6)Speaker(揚聲器)對象。Speaker對象是物理揚聲器的軟件接口。當(dāng)SwichOn發(fā)生(電源開通)后,Speaker對象進入“Idle”(空閑)狀態(tài),如果事件“AlarmHappen”(警報發(fā)生)發(fā)生,對象進入“PlayingAlarm”(播放警報)狀態(tài),揚聲器播放警報。如果事件“AlarmIsOver”(警報結(jié)束或停止)發(fā)生,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi101動態(tài)行為模型Speaker對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi102動態(tài)行為模型(7)Timer(計時器)對象。Timer對象是物理計時器的軟件接口。Timer對象只有1個狀態(tài)“Timing”(計時狀態(tài)),事件“HardwareTimerInterrupt”(硬件時鐘中斷)引起的躍遷是自躍遷。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi103動態(tài)行為模型(8)用戶界面。MenuUserMode(菜單用戶模式)對象。MenuUserMode是用戶界面的主要用戶模式。用戶可以通過“上”、“下”、“左”、“右”4個按鈕來遍歷菜單項,以選擇所想要的選項?!吧稀薄ⅰ跋隆卑粹o可以用來選擇上一個菜單選項或下一個菜單選項,“OK”按鈕用來選中所需要的選項,而“左”、“右”按鈕用來選中前一個菜單或下一個菜單。UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi104MenuUserMode對象的狀態(tài)機圖UML系統(tǒng)分析與設(shè)計第2版ZhenyanJi105動態(tài)行為模型SettingTimeUserMode(設(shè)置時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論