俞成功,羅文華,白錦表
(浙江醫(yī)藥高等專科學校 經(jīng)營管理系,浙江 寧波 315100)
隨著信息系統(tǒng)的加速發(fā)展,應用程序復雜程度不斷提高,軟件開發(fā)方法也不斷地進行著螺旋式的演進——從結構化到構件化[1]。基于構件的軟件開發(fā)CBSD(Component-Based Software Development)逐漸成為當前主流的軟件開發(fā)方法。與傳統(tǒng)軟件開發(fā)方法相比較,CBSD將軟件系統(tǒng)開發(fā)從代碼開發(fā)轉移到構件的集成與組裝,使得軟件系統(tǒng)的質量、復用率和開發(fā)效率得到大幅提高。
在基于構件的軟件開發(fā)過程中,構件組裝技術是核心技術,也是影響應用系統(tǒng)開發(fā)成敗的關鍵。圍繞構件組裝技術,學術界和商業(yè)界對構件規(guī)范、構件封裝、構件組裝描述語言、構件組裝框架和機制、構件組裝工具以及異構模型下的構件組裝等內(nèi)容進行了大量研究和實踐,取得了一系列的成果(例如 CORBA、EJB以及 COM/DCOM構件規(guī)范,青鳥軟件構件模型及其軟件產(chǎn)品線等)。但是隨著Internet的快速發(fā)展,軟件系統(tǒng)的運行環(huán)境發(fā)生了巨大的改變,由靜態(tài)、封閉、集中逐漸向動態(tài)、開放和分布式轉變[2],這對于以構件組裝為核心的CBSD提出了更多的要求:(1)構件的網(wǎng)絡化和異構化;(2)構件動態(tài)演化。
為適應當前軟件系統(tǒng)的網(wǎng)絡化發(fā)展,本文以Java、XML、Web Servicer和 Apache JUDDI[3]為基礎,設計并實現(xiàn)了具有普適性的網(wǎng)絡構件組裝平臺。該平臺具有以下特點:
(1)基于XML的數(shù)據(jù)交換和基于Java的編程實現(xiàn)語言;
(2)支持網(wǎng)絡構件和異構構件的組裝;
(3)支持用戶獨立開發(fā)構件的組裝;
(4)支持構件動態(tài)演化,包括動態(tài)組裝、動態(tài)刪除和動態(tài)替換;
(5)支持對構件服務訪問權限的管理。
采用W3C推薦的XML加密[4]、XML數(shù)字簽名[5]和XML密鑰管理規(guī)范[6],以保證構件服務訪問的安全性。
在文章最后,以本平臺為基礎,實現(xiàn)了計算機輔助教學平臺的初步開發(fā)。該教學平臺初期集成了GUI構件、基礎教學軟件構件和教務管理構件,并支持教師自主開發(fā)教學構件的集成和組裝[7],極大地幫助了教學活動的開展,一定程度上提高了專業(yè)教學質量。
Web Servicer技術是本文設計并實現(xiàn)的網(wǎng)絡構件組裝平臺的主要支撐技術。Web Service使用SOAP使服務提供者與服務使用者進行通信,使用WSDL文件描述服務,通過UDDI注冊服務,他們都是基于XML語言的[8-9]。因此,構筑 Web Service的主要技術包括 XML、SOAP、WSDL和UDDI。在將Web Servicer技術應用于網(wǎng)絡構件組裝平臺的過程中,需要重點注意以下幾個問題:(1)網(wǎng)絡構件動態(tài)演化機制,即如何處理構件的動態(tài)組裝、動態(tài)刪除和動態(tài)替換;(2)數(shù)據(jù)交換的安全機制,即數(shù)據(jù)的保密性和不可抵賴性;(3)網(wǎng)絡構件的訪問權限控制。
本文所描述的框架平臺主要功能是對用戶和構件進行管理:構件管理包括構件注冊與刪除、構件服務訪問權限管理、構件動態(tài)演化;用戶管理包括用戶(組)建立與刪除、用戶(組)信息管理、用戶(組)權限管理;同時提供統(tǒng)一的用戶界面、服務接口和安全機制,如圖1所示。用戶或外部的網(wǎng)絡構件與平臺的數(shù)據(jù)交互首先要進行安全過濾,然后才能對平臺相關服務進行訪問[10]。

圖1 平臺用例圖
基于上述功能需求分析,平臺共包括3個組件:UI封裝構件、安全組件和控制組件。其中控制組件包括用戶管理、構件管理和權限管理3個子組件。如圖2所示,UI封裝組件提供 3類接口:Web Service接口、API接口和可視化圖形接口。

圖2 平臺組件圖
Web Service使用SOAP使服務提供者與服務使用者進行通信。SOAP消息是由一個必選的SOAP Envelope、一個可選的SOAP Header和一個必選的SOAP Body組成的XML文檔。本平臺基于W3C推薦的XML加密、XML數(shù)字簽名對SOAP消息的SOAP Body進行重定義,使用巴科斯范式BNF(BackusNaur Form)定義的SOAP消息模型如下:

其中,SOAP Body中的 xmlsignature為消息發(fā)送方對 service或者service encryption的數(shù)字簽字,滿足W3C關于XML數(shù)字簽字的規(guī)范;service encryption是對 service進行加密后的數(shù)據(jù),滿足W3C關于XML加密的規(guī)范;sp為服務提供者標識;sr為服務請求者標識;parameters為請求服務時的相關輸入?yún)?shù);rs為服務的響應結果。
UDDI主要提供基于Web服務的注冊和發(fā)現(xiàn)機制,為Web服務提供3個重要的技術支持:(1)標準、透明、專門描述Web服務的機制;(2)調用Web服務的機制;(3)可以訪問的Web服務注冊中心。
基于UDDI,本文的控制組件使用了開源項目A-pache JUDDI,并擴展了基本功能:構件服務訪問權限管理和構件動態(tài)演化。
平臺采用構件自治和平臺代理兩種方式進行構件服務訪問權限管理。
構件自治即構件自行決定是否對服務請求者提供服務,平臺只提供相關的安全認證服務。平臺代理則通過查詢構件對平臺中用戶或其他構件的授權情況決定是否提供服務,平臺維護授權模型定義如下:


圖3 構件演化狀態(tài)圖
該模型基本含義為:構件component賦予服務請求者requestor的權限為authority。其中服務請求者requestor可以是構件 component,可以是普通用戶 user,也可以是用戶組group;權限authority可以是被允許的服務列表list,也可以是具有某服務集合的角色role。
平臺支持構件動態(tài)演化,主要包括構件的動態(tài)添加、動態(tài)刪除和動態(tài)替換。如圖3所示,平臺通過維護構件狀態(tài)來支持其動態(tài)演化。
本文基于該框架平臺,實現(xiàn)了計算機輔助教學平臺的初步開發(fā),其功能結構圖如圖4所示。
本文設計并實現(xiàn)的網(wǎng)絡構件組裝平臺以Web Service技術為基礎并進行了改進:(1)對SOAP消息的重定義加強了通信的安全性;(2)對網(wǎng)絡構件的訪問權限進行了統(tǒng)一管理;(3)支持網(wǎng)絡構件的動態(tài)演化。該平臺大大提升了軟件系統(tǒng)的開發(fā)效率,適合網(wǎng)絡構件的組裝和用戶自有構件的組裝,實現(xiàn)了軟件系統(tǒng)在運行中開發(fā)的轉變,減少了軟件開發(fā)成本和風險。但是本平臺也存在不足,對網(wǎng)絡構件組裝的可靠性測試和服務效率缺乏研究,同時對于系統(tǒng)的跨操作系統(tǒng)也需要研究[11],這也是今后重點研究的方向。

圖4 教學平臺功能結構圖
[1]夏榆濱.軟件構件技術[M].北京:清華大學出版社,北京交通大學出版社,2010.
[2]楊芙清.淺論軟件技術發(fā)展[J].電子學報,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].微型機與應用,2012,31(16):9-11.
[8]徐光俠,楊丹.基于Web Service技術的異構系統(tǒng)的無縫集成[J].計算機工程與應用,2007,28(6):1409-1411.
[9]孟曉軍,張旭,寧汝新,等.基于 Web服務的企業(yè)集成平臺框架研究[J].計算機集成制造系統(tǒng),2008,14(5):891-897.
[10]李培松,劉覺夫.基于Web Service的面向服務架構(SOA)的研究[J].華東交通大學學報,2007,24(2):74-77.
[11]廖崇琦,文臣,鄧文,等.一種基于 VxWorks的可重構軟件框架設計[J].電子技術應用,2013,39(12):22-24.