嵌入式系統設計是一個(gè)軟、硬件結合的協(xié)同設計(Hardware/Software Co-design),需要不同技術(shù)背景的人共同開(kāi)發(fā)。 這就帶來(lái)了一個(gè)問(wèn)題,如何使這些具有不同技術(shù)背景和專(zhuān)長(cháng)的人聯(lián)合開(kāi)發(fā)、協(xié)同設計。在軟、硬件設計領(lǐng)域中,統一建模語(yǔ)言UML(Unified Modling Language)采用一種簡(jiǎn)單而直觀(guān)的圖形化方式描述系統設計中的各個(gè)問(wèn)題和細節。不同技術(shù)背景的設計師只需懂得簡(jiǎn)單的 UML 符號就可以輕易地與對方交流、共同設計。正是因為這些特點(diǎn),在嵌入式系統設計中使用 UML 建模并書(shū)寫(xiě)文檔通?梢云鸬绞掳牍Ρ兜男Ч。 本文將重點(diǎn)討論如何在嵌入式系統設計中使用 UML 技術(shù),并用車(chē)載 GPS 終端項目作為實(shí)例來(lái)具體演示采用 UML 的嵌入式系統設計過(guò)程。 1 統一建模語(yǔ)言 UML 及其特點(diǎn) 1.1統一建模語(yǔ)言 UML 統一建模語(yǔ)言 UML 是可視化建模語(yǔ)言中的一種。它將模型中的信息用標準圖形元素直觀(guān)地顯示,使用戶(hù)、開(kāi)發(fā)人員、測試人員、管理人員和其他涉及項目的人員可以更好地交流。最常用的可視建模語(yǔ)言有 Booch 法、對象建模技術(shù)(OMT)和統一建模語(yǔ)言 UML。其中 UML 是 ANSI 和 OMG 所采用的標準,被世界上絕大多數公司所接受。 UML 是 Grady Booch、James Rumbaugh 和 Ivar Jacobson 等許多科學(xué)家的集體智慧結晶?梢詫θ魏戊o態(tài)結構和動(dòng)態(tài)行為進(jìn)行系統的建模,適用于系統開(kāi)發(fā)的不同階段。采用UML進(jìn)行設計具有以下優(yōu)勢: 不同背景的開(kāi)發(fā)人員和設計師可以互相交流; 可視化描述比較直觀(guān); 簡(jiǎn)單易學(xué)、易用; 是行業(yè)標準,被絕大多數業(yè)內人士認同; 有利于保存系統設計的精髓以供下次開(kāi)發(fā)使用(而不僅僅是一堆電路圖和代碼); 有利于項目的回溯、測試。 1.2 UML 框圖 作為一種可視化建模語(yǔ)言,UML 中的所有語(yǔ)素是一個(gè)個(gè)框圖。設計人員就是用這一個(gè)個(gè)框圖描述整個(gè)系統的設計。UML 模型的框圖主要有以下幾種: Business Use Case框圖和Use Case框圖,前者主要描述整個(gè)機構的功能,后者主要從用戶(hù)的角度描述系統的功能。所以后者通常用于與系統客戶(hù)交流,提取用戶(hù)的需求。 Class 框圖,這一種是靜態(tài)圖,描述系統中的類(lèi)。在此框圖中可以體現類(lèi)的主要內容和功能、類(lèi)之間的結構和相互關(guān)系。 State Chart 框圖提供了建模對象的各種狀態(tài)及它們之間的轉換關(guān)系。它提供建模系統的動(dòng)態(tài)功能。這些框圖廣泛用于建立實(shí)際的系統,將會(huì )生成系統的全部代碼。 Activity 框圖與 State Chart 框圖同樣描述系統的動(dòng)態(tài)功能,但它著(zhù)重于顯示系統的功能流,顯示 Use Case 框圖中某個(gè)案例(Case)的事件流。它定義了工作流從何時(shí)開(kāi)始、哪里開(kāi)始、按什么順序發(fā)生、最終在哪結束。 Sequence 框圖顯示了 Use Case 框圖中各對象的具體功能流程。Sequence 框圖演示了業(yè)務(wù)過(guò)程的細節。值得注意的是,這個(gè)框圖只顯示對象,不顯示類(lèi)。即 Sequence 框圖是針對某個(gè)特定情況、特定對象進(jìn)行的描述。 Collaboration 框圖與 Sequence 框圖同樣描述對象間的相互關(guān)系。但它并不像 Sequence 框圖那樣以時(shí)間順序描述,而是著(zhù)重顯示對象與角色之間的交互。其目的是讓質(zhì)量保證工程師和系統建筑師分析對象之間處理過(guò)程的分布情況。如果分布不合理,系 統建筑師可能考慮重新分配處理工作。 Component 框圖顯示模型的物理視圖,也顯示系統中軟、硬件組件及其相互關(guān)系。 Deployment 框圖則顯示了系統的物理布局和各組件的位置及配置方法。 這些框圖為系統的分析、設計、建模提供了多種圖形表達形式,可應用于開(kāi)發(fā)的不同階段。它們的有機結合可以構建一個(gè)完整而一致的系統。下面針對于車(chē)載 GPS 終端這個(gè)具體項目說(shuō)明 UML 在嵌入式系統設計中的具體應用。 2、UML 在車(chē)載 GPS 終端設計中的應用 2.1 車(chē)載GPS終端系統簡(jiǎn)介 車(chē)載 GPS 終端是置于機動(dòng)車(chē)內的實(shí)時(shí)定位裝置,如圖1所示。它的應用對象是需要定位、調度的車(chē)隊,例如:運輸車(chē)隊和出租車(chē)等。車(chē)輛可以通過(guò)終端和 GPS衛星進(jìn)行實(shí)時(shí)、準確的定位,并通過(guò)無(wú)線(xiàn)通訊網(wǎng)絡(luò )上報遠程的中心系統。中心可以通過(guò)終端遠程監視車(chē)行軌跡,甚至在特殊情況下通過(guò)終端控制車(chē)輛。同時(shí), 終端還可以起到車(chē)載電話(huà)的作用,并可在車(chē)輛遇險時(shí)進(jìn)行報警。另外,通過(guò)終端車(chē)輛還可以接收少量的調度信息。 2.2 需求分析 在對系統進(jìn)行需求分析時(shí),可以使用 Use Case 圖進(jìn)行功能上的需求分析。Use Case 圖分角色(Actor)和案例(Case)兩部分。角色是與系統交互的人或物,而案例是系統提供的功能塊。使用 Use Case 觀(guān)察系統能夠將系統實(shí)現與系統目標分開(kāi),有助于開(kāi)發(fā)人員了解最重要的部分,滿(mǎn)足用戶(hù)需求,而不會(huì )沉浸于實(shí)現細節。 對于車(chē)載 GPS 終端,主要的角色有兩種:車(chē)載終端用戶(hù)和監控中心用戶(hù)。終端用戶(hù)可以報警,打車(chē)載電話(huà)等;而監控中心可以查詢(xún)車(chē)輛位置,發(fā)送調度信息。其 Use Case 框圖如圖2所示。 2.3 規格說(shuō)明 規格說(shuō)明比需求分析更詳細,通過(guò)UML設計可以使規格說(shuō)明更直觀(guān)、更清晰。首先,使用 Class 框圖描述系統處理的數據結構。例如在車(chē)載GPS終端的規格說(shuō)明設計時(shí)可以使用 Class 框圖描述需要接收的 GPS 衛星信號,如圖3所示。 第二,在規格說(shuō)明階段,還需要識別出系統的對象。首先以功能塊劃分,廣泛地找出系統的主要對象;然后使用 Collaboration 框圖描述它們之間的關(guān)系。圖4描述了車(chē)載 GPS 終端的主要對象,根據框圖可以進(jìn)行進(jìn)一步的細化。 最后,在規格說(shuō)明階段進(jìn)行系統的業(yè)務(wù)描述。即規范系統完成一定功能的主要流程。這可以利用 Activity 框圖進(jìn)行。圖5顯示了 GPS 數據到達時(shí),車(chē)載 GPS 終端系統所進(jìn)行的處理流程。 2.4 系統設計 規格說(shuō)明完成后,需要對系統的各個(gè)模塊及模塊之間的關(guān)系仔細地分析,從而確定哪些部分使用硬件完成,哪些部分使用軟件實(shí)現。在本例中,需要硬件實(shí)現的模塊有:GPS 接收模塊、電源模塊、用戶(hù)控制模塊、LCD 顯示模塊和 GSM 通訊模塊。所有的控制邏輯和數據計算全部由主控制器的軟件實(shí)現。 隨后,系統設計分為兩個(gè)分支:硬件設計及軟件設計。使用 UML 的 Collaboration 圖和 Component 圖對系統的硬、軟件分別進(jìn)行系統設計。圖6用 Component 框圖描述了車(chē)載 GPS 終端系統的軟件系統架構。 2.5構件設計 接下來(lái)對每一個(gè)系統構件進(jìn)行詳細的設計。對于某些大型工程,甚至需要把每一個(gè)構件作為一個(gè)項目,重 新以需求分析、規格說(shuō)明開(kāi)始展開(kāi)構件設計循環(huán)。在構件設計中,除了可以使用前文介紹過(guò)的各種 UML 框圖外,通常還需要使用 State Chart、Sequence 這兩種框圖描述具體的系統流程細節。 在本例中,GSM 模塊共有四個(gè)狀態(tài):待命、有問(wèn)題、通話(huà)中、短消息通訊中。使用 State Chart 框圖描述它們之間的轉換關(guān)系,如圖7所示。 Sequence 框圖顯示了一個(gè)特定對象進(jìn)行特定操作時(shí)所遇到的流程。圖8顯示了車(chē)載終端用戶(hù)甲在遇到危險按下報警按鈕后系統的處理過(guò)程。 2.6 集成測試和部署 在集成測試時(shí),可以聯(lián)合使用所有的 UML 框圖認真分析每個(gè)構件的原理,針對每一個(gè)系統功能、每一個(gè)可能發(fā)生錯誤的過(guò)程寫(xiě)出相應的測試程序,進(jìn)行完整而可靠的程序測試。 利用 UML 和系統的設計方法可以使傳統的嵌入式系統設計告別“手工作坊”的開(kāi)發(fā)方式,大大提高嵌入式系統的開(kāi)發(fā)速度和產(chǎn)品質(zhì)量,增強設計的可復用性。 但是 UML 是圖形化描述語(yǔ)言,比較適用于面向對象的程序設計;對于精確的規格設計或非面向對象的語(yǔ)言設計來(lái)說(shuō)就不盡如人意了。在具體應用中,靈活應用注釋功能,把框圖對應模塊所需的具體規格要求以注釋的形式寫(xiě)在框圖中,充分利用 State Chart 和 Sequence 這些框圖來(lái)完成面向過(guò)程部分的設計。 |