陶明 江西省信息中心 南昌市 330046
唐路其 南昌大學 南昌市 330031
隨著后PC時代的到來,嵌入式系統(tǒng)的應(yīng)用范圍日益擴大,人們對嵌入式系統(tǒng)需求的日益增加,與此同時用戶對嵌入式系統(tǒng)的功能、可靠性、體積、功耗等方面也有了更高的標準,正因如此,現(xiàn)如今的嵌入式系統(tǒng)變得更加復(fù)雜。那么如何高效率的開發(fā)一個嵌入式系統(tǒng),是一個當前急需解決的課題。UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言[1]。它即融入了軟件工程領(lǐng)域的思想同時又能很好的建立硬件系統(tǒng)模式,所以如今借助UML來建立軟件與硬件的整合設(shè)計的公司越來越來多。
UML(Unified Modeling Language)統(tǒng)一建模語言是用來設(shè)計整個軟件系統(tǒng)藍圖的可視化建模語言,支持基于OO系統(tǒng)的分析、設(shè)計、實現(xiàn)和交付等各個環(huán)節(jié),對系統(tǒng)的理解、設(shè)計、瀏覽、維護和信息控制等方面都有著不小幫助。
在應(yīng)用方面,采用OO技術(shù)設(shè)計系統(tǒng)時,采用用例圖來刻畫用戶的需求;使用類圖、對象圖、包圖、構(gòu)件圖和部署圖此5種靜態(tài)圖來描述系統(tǒng)的靜態(tài)結(jié)構(gòu);使用順序圖、合作圖、活動圖和狀態(tài)圖這4種圖來顯化系統(tǒng)的動態(tài)行為。即在系統(tǒng)開發(fā)的各個階段UML都能發(fā)揮作用:
1.1、需求:用例圖來刻畫客戶的需求,通過用例建模,發(fā)掘是誰與系統(tǒng)打交道、系統(tǒng)的主要功能、系統(tǒng)與外部的交互是是如何進行的。通過商業(yè)過程和用戶需要構(gòu)建的系統(tǒng)進行分析,可以準確把握住用戶的需求,保證最終完成的系統(tǒng)完全符合用戶的需要。
1.2、分析:此階段主要是對用戶給出的需求進行進一步的分析,明確問題的細節(jié)。UML中的類圖能很好描述系統(tǒng)的靜態(tài)結(jié)構(gòu),而順序圖、合作圖、狀態(tài)圖則能用于描述系統(tǒng)的動態(tài)行為。
1.3、設(shè)計:根據(jù)分析提出具體的解決方案。將UML中的類圖、包圖把分析類和分析包轉(zhuǎn)化成設(shè)計類和設(shè)計包。
1.4、實現(xiàn):根據(jù)UML中詳細設(shè)計的類圖進行實際的編碼。
1.5、集成:應(yīng)用UML的構(gòu)件圖、包圖、部署圖來對系統(tǒng)進行集成和部署。
1.6、測試:根據(jù)類圖來實現(xiàn)單元測試,根據(jù)類和包進行集成測試。最后對整個系統(tǒng)進行系統(tǒng)測試。
嵌入式系統(tǒng)作為一種專用的計算機系統(tǒng),相較于桌面操作系統(tǒng)和服務(wù)器操作系統(tǒng)(即通用操作系統(tǒng))下的軟件系統(tǒng)開發(fā)有著很大的不同,為嵌入式系統(tǒng)開發(fā)不是僅限于應(yīng)用程序,它的開發(fā)常常需深入到操作系統(tǒng),甚至深入到硬件。按照一般工程開發(fā)過程,嵌入式系統(tǒng)的開發(fā)大體分為4個過程:
2.1、分析過程:類似于軟件工程中的需求階段,與客戶交流,明確需要解決的問題。在客戶給出的各種約束條件,理性的分析項目是否具有可行性。
2.2、設(shè)計過程:開發(fā)的關(guān)鍵階段。此過程關(guān)注的是如何在給出的各種約束條件下給出恰當?shù)捻椖拷鉀Q方案,涉及到生成具體的抽象類及軟硬件平臺的選擇,這個階段好壞直接影響實現(xiàn)階段任務(wù)的完成也在很大程度上決定著開發(fā)成本的大小。
2.3、實現(xiàn)過程:此過程就是在已選定的平臺基礎(chǔ)上進行軟、硬件協(xié)調(diào)從而實現(xiàn)所指定的系統(tǒng)。這個階段主要涉及到具體代碼的編程、使用交叉編譯器、宿主機與目標板的連接以及目標板中程序的調(diào)試等具體工作。
2.4、測試維護過程:開發(fā)的最終過程。首先檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能,再整合各個模塊結(jié)合需求進行整個系統(tǒng)的測試,最后在將經(jīng)過確認的系統(tǒng)納入實際運行環(huán)境中進行最終測試。
由以上針對嵌入式系統(tǒng)開發(fā)的分析可知,在分析階段需要有一套體系能夠把客戶的需求形象化的表述出來;在設(shè)計階段針對五花八門的軟、硬件整合方案也需要一套體系來選擇與實際需求相適應(yīng)的軟、硬件平臺;在實現(xiàn)階段,就更需要一套體系來促進開發(fā)團隊中各開發(fā)人員之間的溝通,以及把具體工程模塊化、標準化,從而提高開發(fā)效率;最后在測試階段中需要一套體系能夠提供之前開發(fā)過程中的各項模塊框圖及說明文檔,便于縮短測試周期[2]。UML就是這樣可應(yīng)用于嵌入式系統(tǒng)開發(fā)各個過程體系的建模語言。
基于消費者對嵌入式系統(tǒng)的諸多方面嚴格的要求,現(xiàn)如今的嵌入式系統(tǒng)也一直再往尺寸大幅減小、性能更快、更可靠、更低功耗的方向快速發(fā)展。市場的需求千變?nèi)f化而對于嵌入式技術(shù)來說,其系統(tǒng)架構(gòu)的多樣性,軟、硬件組合的多變性,技術(shù)密集等諸多技術(shù)難點恰巧也成為了其適應(yīng)市場的優(yōu)勢。而嵌入式產(chǎn)品開發(fā)的標準化、平臺化已成為了諸多廠商開發(fā)的一大難題。但挑戰(zhàn)與機遇是并存的,若是誰能率先提供標準化的嵌入式開發(fā)過程,使嵌入式系統(tǒng)開發(fā)更加簡單,那就等于獲得了市場的先機。
眾所周知,嵌入式系統(tǒng)的復(fù)雜度日益增加,靠個人的能力是難以完成整個系統(tǒng)的開發(fā)的。團隊開發(fā)才更有效率,而團隊開發(fā)的基礎(chǔ)就是設(shè)立統(tǒng)一的體系讓成員之間的合作、軟件模塊和軟硬件之間的協(xié)同開發(fā),以及具體化客戶需求的過程都更加規(guī)范。當前主流的UML正是這樣一種標準化的建模語言,它所提供的各種模型圖能很好的闡述系統(tǒng)的內(nèi)容及工作方法,先建模而后編碼,在開發(fā)的起始階段就讓團隊每個成員對系統(tǒng)有整體的認識,也就保證了系統(tǒng)結(jié)構(gòu)的合理性[3]。通過UML中的不同框圖,各開發(fā)小組能夠從多個角度來了解整個系統(tǒng)。其次,借助UML用統(tǒng)一的形式來描述整合軟件和硬件,支持循環(huán)迭代并能夠多次修改軟硬件方案直至符合客戶的要求,即可實現(xiàn)軟硬件的協(xié)同設(shè)計。以UML模型來驅(qū)動實現(xiàn)嵌入式系統(tǒng)開發(fā)方法可以大大降低系統(tǒng)的復(fù)雜性和開發(fā)難度,從而提高開發(fā)效率使開發(fā)過程具有可擴充性、可重用性。使用UML進行系統(tǒng)建模在得到各種模型框圖的同時還能生成大量豐富的說明文檔,非常利于系統(tǒng)后期的測試和維護[4-5]。所以我們可以嘗試結(jié)合UML語言而提出一套針對嵌入式系統(tǒng)的開發(fā)方法,以求為嵌入式系統(tǒng)開發(fā)的標準化提供一條新的途徑。
數(shù)碼相框是一種特殊的“相框”,相較于放入圖片的方式來展示相片的傳統(tǒng)相框,數(shù)碼相框通常會提供與外部存儲設(shè)備的接口,從而通過連接的方式獲得圖片數(shù)據(jù),最后使用一個顯示屏來顯示系統(tǒng)已獲得的圖片數(shù)據(jù)。數(shù)碼相框具有設(shè)置顯示方式、特效等諸多功能,使得其使用起來非常靈活。按照本文上述,以下將借助UML建模工具Rational Rose 2003來為數(shù)碼相框系統(tǒng)建模。
4.1 分析過程(需求階段)
經(jīng)過分析可知系統(tǒng)所要具備的功能有:1.開機后出現(xiàn)歡迎界面并提示用戶插入存儲設(shè)備2.當用戶插入設(shè)備后自動開始播放位于設(shè)備中的所有圖片3.每張相片的特效顯示4.用戶通過按鍵可以控制所有相片播放的暫停及繼續(xù)用戶拔出存儲設(shè)備時出現(xiàn)提示信息并自動回到開機后的歡迎界面。
系統(tǒng)的參與者只有用戶一個角色,通過以上分析可以識別出3個主要用例:設(shè)備啟動,相片控制,存儲設(shè)備控制。通過逐步分解得到以下系統(tǒng)用例圖:
圖1 數(shù)碼相框系統(tǒng)用例圖
4.2 設(shè)計過程
以需求階段得出的結(jié)果為基礎(chǔ),通過用例圖大致可得出系統(tǒng)需要的類、對象及其相互關(guān)系,再加上對硬件信息的整合,我們可以得到本系統(tǒng)的類圖,如圖二:
圖2 數(shù)碼相框系統(tǒng)類圖
類圖很好的描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)以及邏輯層次,但為了更好的理解系統(tǒng)的動態(tài)行為,順序圖,狀態(tài)圖,活動圖等都是十分必要的。對于嵌入式系統(tǒng)來說,狀態(tài)圖和時序圖的設(shè)計尤為重要。以下就是相片控制類的之間狀態(tài)轉(zhuǎn)化的描述。
圖3 系統(tǒng)顯示相片狀態(tài)圖
為了符合客戶對系統(tǒng)實時性的要求,就必須建立起能夠清晰描述對象間消息傳遞的時間順序的順序圖。以下就是在用戶插入存儲設(shè)備到相片播放整個系統(tǒng)的順序圖:
圖4 系統(tǒng)顯示相片過程順序圖
4.3 實現(xiàn)過程
4.3.1 物理建模
結(jié)合用戶的需求,問了能在限定條件下更好的完整系統(tǒng)功能,本項目硬件采用ARM7開發(fā)板,使用Ubuntu(宿主機)與嵌入式Linux(目標機)的軟件設(shè)計平臺。以下是系統(tǒng)部署圖:
圖5 數(shù)碼相框系統(tǒng)部署圖
4.3.2 編碼過程
Rational Rose可根據(jù)先前生成的各種模型框圖自動生成C++代碼,而基于嵌入式系統(tǒng)的頻繁操作硬件的特點使用C編碼的效率將會更高。那么要將軟件生成的C++代碼稍作修改,由于所有對象都是靜態(tài)的,所以必須將每個對象的方法都修改成一個獨立的函數(shù)。
如:void DeviceControl::InsertDevice(){} 修改為void DeviceControl_InsertDevice(){}
再將DeviceControl_InsertDevice()函數(shù)放入Device_Control.c文件中去即可。當然,變量的定義也要放入源文件中去,而后就是具體的編寫各功能函數(shù)及調(diào)用過程了[6-7]。
4.4 測試過程
用戶對數(shù)碼相框的可靠性、實時性、穩(wěn)定性都有著較高的要求。那么按照一般嵌入式系統(tǒng)的測試過程,本系統(tǒng)也將按照4階段進行,即:模塊測試、集成測試、系統(tǒng)測試、軟/硬件集成測試[8]。測試方式也跟軟件測試相同即:白盒測試,黑盒測試。通過以上UML建模過程中的大量說明文檔,在宿主機上進行前三階段的白盒測試,目標機則結(jié)合具體的目標環(huán)境進行第四階段的黑盒測試。
UML在軟件工程中已有了非常寬廣的應(yīng)用,可由于嵌入式系統(tǒng)編碼的非面向?qū)ο笮允沟肬ML在嵌入式領(lǐng)域的應(yīng)用很少。但諸如:抽象、功能模塊化、增量開發(fā)等思想在嵌入式系統(tǒng)開發(fā)過程中也應(yīng)是同樣適用的。但嵌入式系統(tǒng)的結(jié)構(gòu)復(fù)雜、規(guī)模龐大、開發(fā)周期長,導(dǎo)致其具體的建模細節(jié)也是一個不斷修改完善的過程[9-10]。通過在實際項目開發(fā)中應(yīng)用UML,我們得到了不錯的效果。這表明在嵌入式系統(tǒng)的開發(fā)中引入UML,采用先建模后編碼的開發(fā)方式是很實用的,它既可以優(yōu)化程序結(jié)構(gòu)、又能縮短系統(tǒng)開發(fā)周期,成功實現(xiàn)了快速開發(fā)又不降低系統(tǒng)效率的目標。
[1]徐寶文等.UML與軟件建模.北京:清華大學出版社,2006.
[2]何宗奎,康積濤.基于UML的嵌入式系統(tǒng)設(shè)計[J].計算機系統(tǒng)應(yīng)用.2009(10)
[3]唐慶,謝康林.基于UML的嵌入式系統(tǒng)設(shè)計[J].微型電腦應(yīng)用.2007(08)
[4]王道乾,張楊.基于UML的嵌入式系統(tǒng)模型設(shè)計[J].計算機科學.2006(11)
[5]賈麗娜.基于UML的嵌入式軟件開發(fā)[J].科技信息(學術(shù)研究).2007(27)
[6]王翠娥.淺析嵌入式C程序設(shè)計的優(yōu)化[J].信息與電腦(理論版).2009(12)
[7]王小平,宣樂飛,張蔚.基于UML的嵌入式實時控制系統(tǒng)的建模與實現(xiàn)[J].計算機技術(shù)與發(fā)展.2006(07)
[8]段盛,李仁發(fā),謝桂芳.基于UML的嵌入式系統(tǒng)建模及模型驗證機制研究[J].計算機工程與科學.2007(08)
[9]周末.基于UML的嵌入式軟件開發(fā)[J].世界電子元器件.2006(11)
[10]張承杰,蔣興浩.基于UML的嵌入式系統(tǒng)設(shè)計分析[J].信息安全與通信保密.2007(03)