摘 要:首先描述了組件產(chǎn)生的技術(shù)背景,帶來的重大影響和目前的研究情況。討論了將組件技術(shù)應(yīng)用于嵌入式系統(tǒng)開發(fā)的必要性,接著分析了為支持這種新的開發(fā)技術(shù),需要引入新的嵌入式操作系統(tǒng)體系結(jié)構(gòu)。最后以一個實例來展示基于組件的嵌入式系統(tǒng)開發(fā)。
關(guān)鍵詞:組件 嵌入式系統(tǒng) 體系結(jié)構(gòu) 微內(nèi)核
1 組件技術(shù)分析
1.1 組件技術(shù)產(chǎn)生背景
為了滿足人們對于軟件生產(chǎn)率、可靠性、易維護性、易管理等方面的更高、更快、更強的迫切需求,研究人員不僅引入了軟件工程的概念,而且也引入了面向?qū)ο筮@種不同于傳統(tǒng)軟件開發(fā)的新的開發(fā)思維,并且將它應(yīng)用于軟件生命周期的各個階段―從分析到編碼。它被認為是解決“軟件危機”的最佳對策。但隨著互聯(lián)網(wǎng)應(yīng)用時代的到來,應(yīng)用需求的不斷提高以及應(yīng)用系統(tǒng)的日趨復(fù)雜化[1],人們發(fā)現(xiàn)這種傳統(tǒng)的面向?qū)ο蠹夹g(shù)已經(jīng)不能滿足需求了,主要原因有:從抽象程度來看,面向?qū)ο蠹夹g(shù)已經(jīng)達到類級重用,但重用粒度太小,不能解決異構(gòu)互操作問題和效率更高的重用。而組件是對傳統(tǒng)面向?qū)ο蠹夹g(shù)的擴展,將抽象程度提高到了更高的層次。它是對一組相關(guān)類的組合進行封裝,并代表完成一個或多個功能的特定服務(wù)。此外,組件不僅僅是對代碼的封裝,它也可以對軟件體系結(jié)構(gòu)、測試用例、設(shè)計文檔、分析文檔和領(lǐng)域知識等進行封裝。因此,從這個意義上來講,組件本身具有更廣泛的含義,也具有更靈活的重用粒度。
1.2 組件技術(shù)產(chǎn)生的重要影響
網(wǎng)絡(luò)時代的基礎(chǔ)技術(shù)將有如下發(fā)展[2]:(1)應(yīng)用重點將由基于桌面的應(yīng)用轉(zhuǎn)移到基于網(wǎng)絡(luò)的應(yīng)用;(2)操作系統(tǒng)技術(shù)發(fā)展趨勢將由面向桌面的系統(tǒng)轉(zhuǎn)移到面向網(wǎng)絡(luò)的系統(tǒng);(3)網(wǎng)絡(luò)編程技術(shù)將由面向?qū)ο缶幊贪l(fā)展為面向組件編程。組件技術(shù)的運用將促進網(wǎng)絡(luò)應(yīng)用模型的改變。Web服務(wù)平臺將成為下一代的因特網(wǎng)計算模型,其主要特征:應(yīng)用軟件將由包含自描述信息(元數(shù)據(jù))的組件組成;系統(tǒng)根據(jù)組件的自描述信息動態(tài)生成中間件,建立用戶與組件的聯(lián)系管道,實現(xiàn)組件的自動加載;組件可以通過網(wǎng)絡(luò)獲得,可以獨立升級。網(wǎng)絡(luò)環(huán)境下以組件化軟件為基礎(chǔ)的“客戶-中間件-服務(wù)器”三層結(jié)構(gòu)可以很好地解決分布式處理、信息安全、軟件升級、軟件產(chǎn)業(yè)化等技術(shù)和工程方面的問題。基于組件的軟件開發(fā)將成為社會化的軟件開發(fā)方法,它使得開發(fā)者可以將不同語言、不同開發(fā)商提供的組件組合在一起構(gòu)造新的軟件系統(tǒng)。因此,方便地解決了開發(fā)異構(gòu)系統(tǒng)、分布式系統(tǒng)等復(fù)雜系統(tǒng)時帶來的種種難題。
傳統(tǒng)應(yīng)用軟件的開發(fā)一般包括需求分析、設(shè)計、編碼、調(diào)試、測試和維護等階段,但基于組件的軟件開發(fā)過程卻與此不同[3] ,如圖1。
[align=center]
圖1 基于組件的軟件開發(fā)過程[/align]
在需求分析階段,除了需要考慮系統(tǒng)的功能性和非功能性需求外,還必須從基于組件技術(shù)的角度出發(fā),發(fā)現(xiàn)并抽取出系統(tǒng)中的共性部分和可變部分,從而形成領(lǐng)域通用組件和專用組件。體系結(jié)構(gòu)設(shè)計階段將在前面工作的基礎(chǔ)上建立各個組件以及組件之間的聯(lián)系。然后軟件設(shè)計者通過組件庫或定制領(lǐng)域通用組件或定制領(lǐng)域?qū)S媒M件來獲得系統(tǒng)所需的組件。其中,領(lǐng)域通用組件可以為以后相同領(lǐng)域應(yīng)用程序的開發(fā)繼續(xù)提供服務(wù),從而達到復(fù)用的目的。因此,基于組件技術(shù)的軟件開發(fā)將具有更高的軟件生產(chǎn)率,將成為實現(xiàn)軟件產(chǎn)業(yè)化的最佳途徑。
1.3 組件技術(shù)研究現(xiàn)狀
近年來,組件技術(shù)的研究取得了較大進展[4] [5],對軟件系統(tǒng)的開發(fā)提供了有力的支持,出現(xiàn)了LIL、CKL等多種組件描述語言,Powerbuilder、Delphi等組件語言。目前主流的軟件組件技術(shù)標準有:微軟提出的COM/COM+、SUN公司提出的JavaBean/EJB、OMG提出的Corba。它們?yōu)閼?yīng)用軟件的開發(fā)提供了可移植性、異構(gòu)性的實現(xiàn)環(huán)境和健壯平臺,結(jié)束了面向?qū)ο笾械拈_發(fā)語言混亂的局面,解決軟件復(fù)用在通信、互操作等環(huán)境異構(gòu)的瓶頸問題。研究實踐表明,軟件復(fù)用在特定領(lǐng)域更容易獲得成功,因此特定領(lǐng)域的軟件復(fù)用研究得到了高度重視,特定領(lǐng)域的組件技術(shù)及其應(yīng)用研究也成為組件技術(shù)的研究熱點。
但是設(shè)計組件時,它的粒度該如何把握是一個值得研究的問題,它將影響整個軟件系統(tǒng)以及以后的重用[6] [7]。如果粒度太大,雖然功能較多,但接口較復(fù)雜且不易修改,因而不易重用;而如果粒度太小,雖然功能單一,接口簡單且易于修改、易于重用,但整個軟件系統(tǒng)中各個組件之間的關(guān)系將顯得更為復(fù)雜。因而,當設(shè)計一個軟件系統(tǒng)時,應(yīng)當在大粒度和小粒度的選擇和設(shè)計中進行很好的權(quán)衡。目前,已經(jīng)有這方面的研究,如可變粒度的軟件開發(fā)或管理工具。相信不久的將來,基于組件的軟件開發(fā)工具可以為開發(fā)人員提供這方面的成熟支持。
2 嵌入式系統(tǒng)開發(fā)
2.1 存在的問題[2]
互聯(lián)網(wǎng)應(yīng)用的興起使計算模式繼主機計算和桌面計算之后進入一種全新的模式―普適計算模式。這種新型計算模式的含義十分廣泛,涉及的技術(shù)包括移動通信技術(shù)、網(wǎng)絡(luò)技術(shù)、傳感器技術(shù)、分布式技術(shù)、嵌入式技術(shù)等。它主要針對移動設(shè)備,比如信息家電或某種嵌入式設(shè)備,如掌上電腦、BP機、車載智能設(shè)備、筆記本計算機、手表、智能卡、智能手機(具有掌上電腦的一部分功能)、機頂盒、POS銷售機、屏幕電話(除了普通話機的功能還可以瀏覽因特網(wǎng))等新一代智能設(shè)備。因此,嵌入式技術(shù)的發(fā)展將促進普適技術(shù)的成熟。嵌入式技術(shù)的發(fā)展主要表現(xiàn)在下列幾個方面:(1)底層硬件的設(shè)計,包括集成度、功能、能耗等;(2)嵌入式操作系統(tǒng),包括實時性、可靠性、安全性等;(3)高層應(yīng)用的開發(fā),主要包括開發(fā)工具、應(yīng)用的可重用性等。但目前嵌入式系統(tǒng)的開發(fā)存在下列問題:1、硬件系統(tǒng)根據(jù)特定的應(yīng)用進行定制,一般不能方便地應(yīng)用到其他的系統(tǒng)中;2、應(yīng)用程序的開發(fā)直接基于操作系統(tǒng)之上,缺乏跨平臺的開發(fā)工具; 3、應(yīng)用程序的開發(fā)一般是從“零”開始的。因此,導(dǎo)致了系統(tǒng)開發(fā)周期長,開發(fā)費用大,可移植性差,可靠性低等問題。尤其在Internet時代,應(yīng)用程序的功能將更加豐富和靈活,系統(tǒng)也將變得更為復(fù)雜,因此上述不足將表現(xiàn)得更為突出。
2.2 嵌入式系統(tǒng)開發(fā)的發(fā)展
為了滿足嵌入式系統(tǒng)快速增長的需要以及解決傳統(tǒng)開發(fā)方法中存在的不足,我們將組件技術(shù)引入嵌入式系統(tǒng)的開發(fā)中。但目前絕大多數(shù)的嵌入式操作系統(tǒng)存在下列問題:(1)以一體化內(nèi)核的方式來實現(xiàn),如linux將許多常用的但非基本的服務(wù)直接集成到內(nèi)核中(如tcp/ip協(xié)議等),因此將使內(nèi)核顯得過于龐大。雖然linux內(nèi)核可以通過定制來使其變得更為小巧和合理,但每次內(nèi)核的升級和功能的增加/裁減都需要對整個內(nèi)核進行重新的編譯,導(dǎo)致系統(tǒng)缺乏靈活性,無法實現(xiàn)對內(nèi)核的run-time時升級。(2)缺乏對面向組件編程方式提供直接支持。
[align=center]
圖2 新型的嵌入式操作系統(tǒng)體系結(jié)構(gòu)[/align]
為了更好地支持組件在嵌入式領(lǐng)域的應(yīng)用, 我們需要一種新的嵌入式操作系統(tǒng)的體系結(jié)構(gòu)[2] [4] [6](見圖2),具體描述如下:(1)將傳統(tǒng)的一體化內(nèi)核進行分層,形成微內(nèi)核層和系統(tǒng)擴展服務(wù)層。除了將基本服務(wù)――硬件抽象、內(nèi)存管理、進行管理與通信――集成到內(nèi)核中,其余的系統(tǒng)服務(wù),如網(wǎng)絡(luò)服務(wù)、設(shè)備驅(qū)動、文件系統(tǒng)等,將作為擴展服務(wù)。底層功能的實現(xiàn)機制決定了系統(tǒng)性能。如進程調(diào)度算法和進行之間的通信管理機制決定了系統(tǒng)的運行效率和實時性等因素。第二層使得系統(tǒng)變得更為靈活,它的改變對底層而言是透明的。因此,無論從功能升級還是新功能的加入方面來看,系統(tǒng)將變得更加靈活,內(nèi)核可以實現(xiàn)run-time時升級,而且為實現(xiàn)真正的軟硬件熱插拔和移動計算提供了可能。此外,系統(tǒng)將更加可靠、穩(wěn)定和高效。既適合于低端嵌入式應(yīng)用,也適合于高端應(yīng)用。(2)提供對通用組件運行環(huán)境的直接支持,即實現(xiàn)虛擬機[2]的概念。此時基于組件開發(fā)的應(yīng)用程序并不是直接基于底層操作系統(tǒng),因此具有很好的移植性。
3 基于組件技術(shù)的嵌入式系統(tǒng)開發(fā)過程
基于組件技術(shù)的嵌入式系統(tǒng)的開發(fā)過程如下:
?。?)系統(tǒng)需求分析
包括功能性需求與非功能性需求分析。確定哪些功能由硬件模塊實現(xiàn),哪些功能由軟件模塊實現(xiàn)。結(jié)合領(lǐng)域知識分析并提取公共的軟硬件部分以及可變的軟硬件部分。
?。?)設(shè)計系統(tǒng)體系結(jié)構(gòu)
在前一階段工作的基礎(chǔ)上進行硬件系統(tǒng)體系結(jié)構(gòu)和軟件系統(tǒng)體系結(jié)構(gòu)的設(shè)計。第一、硬件系統(tǒng)的開發(fā)同樣可以借鑒組件技術(shù)的思維,即基于硬組件技術(shù),將其設(shè)計為模塊化系統(tǒng),由硬件供應(yīng)商提供基礎(chǔ)組件,如8位/16位/32位CPU核、USB核、CAN核、DSP核,MODEM核,F(xiàn)AX核,甚至粒度更大的SoC芯片。硬件工程師將根據(jù)需要對硬組件進行選擇,或自行開發(fā)。第二、軟件系統(tǒng)的開發(fā)有:選擇支持組件技術(shù)的嵌入式操作系統(tǒng)、確定系統(tǒng)級的擴展服務(wù)組件、確定應(yīng)用級的領(lǐng)域通用組件和專用組件,確定各個組件之間的關(guān)系[2] [6]。
?。?)通用的組件開發(fā)平臺的選擇
?。?)組件的選擇、開發(fā)、集成以及測試。
由此可見,將來嵌入式系統(tǒng)的開發(fā)工作量主要集中在:1、硬件系統(tǒng)――基于硬組件、擴展組件的選擇與集成,特殊組件的開發(fā);2、系統(tǒng)軟件――擴展服務(wù)組件的選擇或開發(fā);3、應(yīng)用程序――組件的選擇或開發(fā),還有最后的集成與測試。
4 基于組件的嵌入式系統(tǒng)開發(fā)實例分析
目前,很多智能消費設(shè)備提供了一些相似的功能,如在多媒體、游戲等方面。因此這些領(lǐng)域通用功能可以在多個應(yīng)用之間實現(xiàn)共享。下面以一款智能終端為例來說明如何實現(xiàn)基于組件的體系結(jié)構(gòu),它體現(xiàn)了組件技術(shù)與嵌入式系統(tǒng)開發(fā)相結(jié)合的魅力所在,是傳統(tǒng)的嵌入式系統(tǒng)開發(fā)方法所無法比擬的,是一種更為自然的描述和設(shè)計方式。該智能終端具有如下功能性需求:(1)具有一般PDA的功能,如備忘錄、字典、電話號碼、游戲等;(2)下載/播放音樂(3)下載或在線視頻播放(4)自動下載和系統(tǒng)在線升級、收發(fā)郵件、SMS。非功能性需要有:節(jié)能保護。
根據(jù)上述需求描述,我們可以提取出下列領(lǐng)域通用組件:(1)“基于瀏覽器技術(shù)的用戶界面”組件。(2)PDA框架。(3)多媒體框架。(4)網(wǎng)絡(luò)功能框架。領(lǐng)域?qū)S媒M件有:節(jié)能保護組件。整個軟件系統(tǒng)的體系結(jié)構(gòu)如圖3。
[align=center]
圖3 基于組件的軟件體系結(jié)構(gòu)實例[/align]
該體系結(jié)構(gòu)由瀏覽器界面通用組件、PDA框架、多媒體框架和網(wǎng)絡(luò)功能框架等組成。其中,各個框架又包含若干粒度更小的組件或框架。例PAD框架既包含備忘錄組件又包含粒度更小的游戲框架。從復(fù)用角度看[7],框架本身也屬于組件,但它的粒度更大,因而整個系統(tǒng)中各部分之間的關(guān)系顯得較為簡單和清晰。尤其對于復(fù)雜的系統(tǒng),組件粒度的選擇很重要,需要在易于復(fù)用和關(guān)系簡單化這二者中進行很好的權(quán)衡。
其中以瀏覽器為交互式操作界面,既便于用戶掌握,又為程序開發(fā)提供了統(tǒng)一標準,也是將來網(wǎng)絡(luò)應(yīng)用模型的主要特征之一。在這種新的應(yīng)用模式下,“瀏覽器”實際上只是作為一個容器,它是一個可執(zhí)行文件,但本身非常簡單,不為用戶提供應(yīng)用功能,而只是提供組件運行環(huán)境。
自動下載組件可以實現(xiàn)系統(tǒng)的在線升級。例如,如果硬件系統(tǒng)支持的話,可以將SMS組件升級為MMS組件。此外,為了安全起見,可以為系統(tǒng)加入新的功能,如增加“來電防火墻”組件。
5 結(jié)束語
基于組件的軟件開發(fā)是一種全新的網(wǎng)絡(luò)編程方式。組件技術(shù)的發(fā)展與應(yīng)用將使得軟件系統(tǒng)的開發(fā)更自然、更高效、更靈活。特別地,基于組件技術(shù)進行嵌入式系統(tǒng)開發(fā)有著重要的意義,將結(jié)束其傳統(tǒng)開發(fā)各自為戰(zhàn)的時代,將促進嵌入式系統(tǒng)在網(wǎng)絡(luò)時代更為廣泛和深入的應(yīng)用。本文作者創(chuàng)新點:將組件技術(shù)應(yīng)用于嵌入式系統(tǒng)的開發(fā),使嵌入式系統(tǒng)的開發(fā)更加快捷和高效。
參考文獻
1.Crnkovic I.Component-Based software engineering——New challenges in software development[J].Software Focus.2001;2(4): 127-133
2.陳榕.中間件技術(shù)在嵌入式操作系統(tǒng)中的應(yīng)用[C]. In: Proc. of Workshop on Embedded System, In conjunction with the ICYCS 2001 (The Sixth International Conference for Young Computer Scientists), 2001:22-23
3.徐建民.軟構(gòu)件技術(shù)在信息系統(tǒng)開發(fā)中的應(yīng)用研究[J].微機發(fā)展,2003; 13(3)
4.Xia Cai, Michael R Lyu, Kam-Fai Wong, Roy Ko. Component-Based Software Engineering: Technologies, Development Frameworks, and Quality Assurance Schemes [C]. In: Proceedings of the Seventh Asia-Pacific Software Engineering Conference (APSEC. 00). 2000: 372-379.
5.Ganesan R, Sengupta S. O2BC: A technique for the design of component-based applications[C]. In: Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Language and Systems. IEEE Computer Society Press, 2001:46-55.
6.張世琨,張文娟,常欣,王立福,楊芙清.基于軟件體系結(jié)構(gòu)的可復(fù)用構(gòu)件制作和組裝[J].軟件學(xué)報,2000;12(9):1351-1359
7.楊芙清.軟件復(fù)用與軟構(gòu)件技術(shù)[J].電子學(xué)報,1999;(2):56
8. 黃布毅,張曉華 家庭網(wǎng)絡(luò)中央控制器體系結(jié)構(gòu)的研究.微計算機信息;2005.10;114-116