俞成功,羅文華,白錦表
(浙江醫(yī)藥高等??茖W(xué)校 經(jīng)營管理系,浙江 寧波 315100)
隨著信息系統(tǒng)的加速發(fā)展,應(yīng)用程序復(fù)雜程度不斷提高,軟件開發(fā)方法也不斷地進(jìn)行著螺旋式的演進(jìn)——從結(jié)構(gòu)化到構(gòu)件化[1]?;跇?gòu)件的軟件開發(fā)CBSD(Component-Based Software Development)逐漸成為當(dāng)前主流的軟件開發(fā)方法。與傳統(tǒng)軟件開發(fā)方法相比較,CBSD將軟件系統(tǒng)開發(fā)從代碼開發(fā)轉(zhuǎn)移到構(gòu)件的集成與組裝,使得軟件系統(tǒng)的質(zhì)量、復(fù)用率和開發(fā)效率得到大幅提高。
在基于構(gòu)件的軟件開發(fā)過程中,構(gòu)件組裝技術(shù)是核心技術(shù),也是影響應(yīng)用系統(tǒng)開發(fā)成敗的關(guān)鍵。圍繞構(gòu)件組裝技術(shù),學(xué)術(shù)界和商業(yè)界對(duì)構(gòu)件規(guī)范、構(gòu)件封裝、構(gòu)件組裝描述語言、構(gòu)件組裝框架和機(jī)制、構(gòu)件組裝工具以及異構(gòu)模型下的構(gòu)件組裝等內(nèi)容進(jìn)行了大量研究和實(shí)踐,取得了一系列的成果(例如 CORBA、EJB以及 COM/DCOM構(gòu)件規(guī)范,青鳥軟件構(gòu)件模型及其軟件產(chǎn)品線等)。但是隨著Internet的快速發(fā)展,軟件系統(tǒng)的運(yùn)行環(huán)境發(fā)生了巨大的改變,由靜態(tài)、封閉、集中逐漸向動(dòng)態(tài)、開放和分布式轉(zhuǎn)變[2],這對(duì)于以構(gòu)件組裝為核心的CBSD提出了更多的要求:(1)構(gòu)件的網(wǎng)絡(luò)化和異構(gòu)化;(2)構(gòu)件動(dòng)態(tài)演化。
為適應(yīng)當(dāng)前軟件系統(tǒng)的網(wǎng)絡(luò)化發(fā)展,本文以Java、XML、Web Servicer和 Apache JUDDI[3]為基礎(chǔ),設(shè)計(jì)并實(shí)現(xiàn)了具有普適性的網(wǎng)絡(luò)構(gòu)件組裝平臺(tái)。該平臺(tái)具有以下特點(diǎn):
(1)基于XML的數(shù)據(jù)交換和基于Java的編程實(shí)現(xiàn)語言;
(2)支持網(wǎng)絡(luò)構(gòu)件和異構(gòu)構(gòu)件的組裝;
(3)支持用戶獨(dú)立開發(fā)構(gòu)件的組裝;
(4)支持構(gòu)件動(dòng)態(tài)演化,包括動(dòng)態(tài)組裝、動(dòng)態(tài)刪除和動(dòng)態(tài)替換;
(5)支持對(duì)構(gòu)件服務(wù)訪問權(quán)限的管理。
采用W3C推薦的XML加密[4]、XML數(shù)字簽名[5]和XML密鑰管理規(guī)范[6],以保證構(gòu)件服務(wù)訪問的安全性。
在文章最后,以本平臺(tái)為基礎(chǔ),實(shí)現(xiàn)了計(jì)算機(jī)輔助教學(xué)平臺(tái)的初步開發(fā)。該教學(xué)平臺(tái)初期集成了GUI構(gòu)件、基礎(chǔ)教學(xué)軟件構(gòu)件和教務(wù)管理構(gòu)件,并支持教師自主開發(fā)教學(xué)構(gòu)件的集成和組裝[7],極大地幫助了教學(xué)活動(dòng)的開展,一定程度上提高了專業(yè)教學(xué)質(zhì)量。
Web Servicer技術(shù)是本文設(shè)計(jì)并實(shí)現(xiàn)的網(wǎng)絡(luò)構(gòu)件組裝平臺(tái)的主要支撐技術(shù)。Web Service使用SOAP使服務(wù)提供者與服務(wù)使用者進(jìn)行通信,使用WSDL文件描述服務(wù),通過UDDI注冊(cè)服務(wù),他們都是基于XML語言的[8-9]。因此,構(gòu)筑 Web Service的主要技術(shù)包括 XML、SOAP、WSDL和UDDI。在將Web Servicer技術(shù)應(yīng)用于網(wǎng)絡(luò)構(gòu)件組裝平臺(tái)的過程中,需要重點(diǎn)注意以下幾個(gè)問題:(1)網(wǎng)絡(luò)構(gòu)件動(dòng)態(tài)演化機(jī)制,即如何處理構(gòu)件的動(dòng)態(tài)組裝、動(dòng)態(tài)刪除和動(dòng)態(tài)替換;(2)數(shù)據(jù)交換的安全機(jī)制,即數(shù)據(jù)的保密性和不可抵賴性;(3)網(wǎng)絡(luò)構(gòu)件的訪問權(quán)限控制。
本文所描述的框架平臺(tái)主要功能是對(duì)用戶和構(gòu)件進(jìn)行管理:構(gòu)件管理包括構(gòu)件注冊(cè)與刪除、構(gòu)件服務(wù)訪問權(quán)限管理、構(gòu)件動(dòng)態(tài)演化;用戶管理包括用戶(組)建立與刪除、用戶(組)信息管理、用戶(組)權(quán)限管理;同時(shí)提供統(tǒng)一的用戶界面、服務(wù)接口和安全機(jī)制,如圖1所示。用戶或外部的網(wǎng)絡(luò)構(gòu)件與平臺(tái)的數(shù)據(jù)交互首先要進(jìn)行安全過濾,然后才能對(duì)平臺(tái)相關(guān)服務(wù)進(jìn)行訪問[10]。
圖1 平臺(tái)用例圖
基于上述功能需求分析,平臺(tái)共包括3個(gè)組件:UI封裝構(gòu)件、安全組件和控制組件。其中控制組件包括用戶管理、構(gòu)件管理和權(quán)限管理3個(gè)子組件。如圖2所示,UI封裝組件提供 3類接口:Web Service接口、API接口和可視化圖形接口。
圖2 平臺(tái)組件圖
Web Service使用SOAP使服務(wù)提供者與服務(wù)使用者進(jìn)行通信。SOAP消息是由一個(gè)必選的SOAP Envelope、一個(gè)可選的SOAP Header和一個(gè)必選的SOAP Body組成的XML文檔。本平臺(tái)基于W3C推薦的XML加密、XML數(shù)字簽名對(duì)SOAP消息的SOAP Body進(jìn)行重定義,使用巴科斯范式BNF(BackusNaur Form)定義的SOAP消息模型如下:
其中,SOAP Body中的 xmlsignature為消息發(fā)送方對(duì) service或者service encryption的數(shù)字簽字,滿足W3C關(guān)于XML數(shù)字簽字的規(guī)范;service encryption是對(duì) service進(jìn)行加密后的數(shù)據(jù),滿足W3C關(guān)于XML加密的規(guī)范;sp為服務(wù)提供者標(biāo)識(shí);sr為服務(wù)請(qǐng)求者標(biāo)識(shí);parameters為請(qǐng)求服務(wù)時(shí)的相關(guān)輸入?yún)?shù);rs為服務(wù)的響應(yīng)結(jié)果。
UDDI主要提供基于Web服務(wù)的注冊(cè)和發(fā)現(xiàn)機(jī)制,為Web服務(wù)提供3個(gè)重要的技術(shù)支持:(1)標(biāo)準(zhǔn)、透明、專門描述Web服務(wù)的機(jī)制;(2)調(diào)用Web服務(wù)的機(jī)制;(3)可以訪問的Web服務(wù)注冊(cè)中心。
基于UDDI,本文的控制組件使用了開源項(xiàng)目A-pache JUDDI,并擴(kuò)展了基本功能:構(gòu)件服務(wù)訪問權(quán)限管理和構(gòu)件動(dòng)態(tài)演化。
平臺(tái)采用構(gòu)件自治和平臺(tái)代理兩種方式進(jìn)行構(gòu)件服務(wù)訪問權(quán)限管理。
構(gòu)件自治即構(gòu)件自行決定是否對(duì)服務(wù)請(qǐng)求者提供服務(wù),平臺(tái)只提供相關(guān)的安全認(rèn)證服務(wù)。平臺(tái)代理則通過查詢構(gòu)件對(duì)平臺(tái)中用戶或其他構(gòu)件的授權(quán)情況決定是否提供服務(wù),平臺(tái)維護(hù)授權(quán)模型定義如下:
圖3 構(gòu)件演化狀態(tài)圖
該模型基本含義為:構(gòu)件component賦予服務(wù)請(qǐng)求者requestor的權(quán)限為authority。其中服務(wù)請(qǐng)求者requestor可以是構(gòu)件 component,可以是普通用戶 user,也可以是用戶組group;權(quán)限authority可以是被允許的服務(wù)列表list,也可以是具有某服務(wù)集合的角色role。
平臺(tái)支持構(gòu)件動(dòng)態(tài)演化,主要包括構(gòu)件的動(dòng)態(tài)添加、動(dòng)態(tài)刪除和動(dòng)態(tài)替換。如圖3所示,平臺(tái)通過維護(hù)構(gòu)件狀態(tài)來支持其動(dòng)態(tài)演化。
本文基于該框架平臺(tái),實(shí)現(xiàn)了計(jì)算機(jī)輔助教學(xué)平臺(tái)的初步開發(fā),其功能結(jié)構(gòu)圖如圖4所示。
本文設(shè)計(jì)并實(shí)現(xiàn)的網(wǎng)絡(luò)構(gòu)件組裝平臺(tái)以Web Service技術(shù)為基礎(chǔ)并進(jìn)行了改進(jìn):(1)對(duì)SOAP消息的重定義加強(qiáng)了通信的安全性;(2)對(duì)網(wǎng)絡(luò)構(gòu)件的訪問權(quán)限進(jìn)行了統(tǒng)一管理;(3)支持網(wǎng)絡(luò)構(gòu)件的動(dòng)態(tài)演化。該平臺(tái)大大提升了軟件系統(tǒng)的開發(fā)效率,適合網(wǎng)絡(luò)構(gòu)件的組裝和用戶自有構(gòu)件的組裝,實(shí)現(xiàn)了軟件系統(tǒng)在運(yùn)行中開發(fā)的轉(zhuǎn)變,減少了軟件開發(fā)成本和風(fēng)險(xiǎn)。但是本平臺(tái)也存在不足,對(duì)網(wǎng)絡(luò)構(gòu)件組裝的可靠性測(cè)試和服務(wù)效率缺乏研究,同時(shí)對(duì)于系統(tǒng)的跨操作系統(tǒng)也需要研究[11],這也是今后重點(diǎn)研究的方向。
圖4 教學(xué)平臺(tái)功能結(jié)構(gòu)圖
[1]夏榆濱.軟件構(gòu)件技術(shù)[M].北京:清華大學(xué)出版社,北京交通大學(xué)出版社,2010.
[2]楊芙清.淺論軟件技術(shù)發(fā)展[J].電子學(xué)報(bào),30(12A):1901-1906.
[3]Apache.UDDI specification version 3.1,Apache working draft[EB/OL].(2011-07-10)[2014-03-10].http://juddi.apache.org/docs/3.x/devguide/pdf/devguide.pdf.
[4]W3C.XML signature syntax and processing(second edition),W3C Working Draft[EB/OL].(2008-06-10)[2014-03-10].http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/.
[5]W3C.XML encryption syntax and processing version 1.1,W3C working draft[EB/OL].(2013-01-24)[2014-03-10].http://www.w3.org/TR/2013/PR-xmlenc-core1-20130124/.
[6]W3C.XML key management specification(XKMS 2.0),W3C working draft[EB/OL].(2005-06-28)[2014-03-10].http://www.w3.org/TR/2005/REC-xkms2-20050628/.
[7]臧影.基于組件的非線性軟件開發(fā)過程研究[J].微型機(jī)與應(yīng)用,2012,31(16):9-11.
[8]徐光俠,楊丹.基于Web Service技術(shù)的異構(gòu)系統(tǒng)的無縫集成[J].計(jì)算機(jī)工程與應(yīng)用,2007,28(6):1409-1411.
[9]孟曉軍,張旭,寧汝新,等.基于 Web服務(wù)的企業(yè)集成平臺(tái)框架研究[J].計(jì)算機(jī)集成制造系統(tǒng),2008,14(5):891-897.
[10]李培松,劉覺夫.基于Web Service的面向服務(wù)架構(gòu)(SOA)的研究[J].華東交通大學(xué)學(xué)報(bào),2007,24(2):74-77.
[11]廖崇琦,文臣,鄧文,等.一種基于 VxWorks的可重構(gòu)軟件框架設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,39(12):22-24.