蔡俊亞
(湖南商學(xué)院信息學(xué)院,中國(guó) 長(zhǎng)沙 410205)
為了有效控制快速增長(zhǎng)的軟件規(guī)模,高效管理日益增加的軟件資產(chǎn),快速適應(yīng)動(dòng)態(tài)變化的運(yùn)行環(huán)境以及迅速響應(yīng)持續(xù)變化的用戶(hù)需求,要求運(yùn)行態(tài)軟件系統(tǒng)應(yīng)具備感知外部運(yùn)行環(huán)境變化并能在必要時(shí)進(jìn)行自身調(diào)整的能力,以保證軟件系統(tǒng)的服務(wù)質(zhì)量,即所謂的軟件自適應(yīng)性[1,6-7].
雖然關(guān)于軟件系統(tǒng)自適應(yīng)的研究分別在基于構(gòu)件的軟件工程領(lǐng)域和面向服務(wù)的軟件工程領(lǐng)域取得了很多有意義的成果,但OSGi既具有構(gòu)件化的特點(diǎn),又具有服務(wù)化的特性,因此傳統(tǒng)的自適應(yīng)方法都不能很好的適用于OSGi這種特定的服務(wù)構(gòu)件模型,所以本文提出了一種基于OSGi的面向語(yǔ)義的自適應(yīng)方法,即SoSCM(Semantic-oriented Service Component Method).
Cheng 和 David 等人提出了一種 3 層的適應(yīng)性軟件體系結(jié)構(gòu)[2]:即頂層是任務(wù)層,負(fù)責(zé)系統(tǒng)任務(wù)和需求管理,決定系統(tǒng)執(zhí)行的操作,并設(shè)置系統(tǒng)性能目標(biāo)和資源約束;任務(wù)層的信息將傳達(dá)給中間層,即模型層,用以指導(dǎo)系統(tǒng)達(dá)到更好的適應(yīng)性;最下層是運(yùn)行層,包括系統(tǒng)的具體實(shí)現(xiàn)代碼以及它所處的運(yùn)行環(huán)境,如圖1所示.
該方法核心在于中間的模型層,模型層又被稱(chēng)為抽象體系結(jié)構(gòu)層,用于系統(tǒng)內(nèi)所有構(gòu)件的生命周期及其關(guān)聯(lián)關(guān)系的管理,以彌補(bǔ)傳統(tǒng)的基于構(gòu)件的軟件系統(tǒng)無(wú)法滿(mǎn)足系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)增加功能構(gòu)件的問(wèn)題,從而達(dá)到自適應(yīng).
該方法不適用于OSGi的原因:(1)OSGi不僅存在構(gòu)件到構(gòu)件的關(guān)聯(lián),還存在構(gòu)件與服務(wù),服務(wù)與服務(wù)之間的關(guān)聯(lián)關(guān)系,而基于構(gòu)件的自適應(yīng)方法只能刻畫(huà)出構(gòu)件之間的關(guān)聯(lián)關(guān)系;(2)OSGi本身就具有動(dòng)態(tài)性,具有運(yùn)行時(shí)安裝、刪除構(gòu)件和服務(wù)的能力,與基于構(gòu)件自適應(yīng)方法中模型層功能沖突.
Lorenzoli和Mussino的面向服務(wù)自適應(yīng)方法[3]的工作原理如圖2所示,該方法包括三個(gè)關(guān)鍵部件:(1)監(jiān)測(cè)服務(wù)是否可用或者服務(wù)是否改變的監(jiān)測(cè)部件;(2)在監(jiān)測(cè)到可用服務(wù)后對(duì)其進(jìn)行測(cè)試,看其是否滿(mǎn)足用戶(hù)需求的測(cè)試部件;(3)當(dāng)用戶(hù)需求改變、服務(wù)實(shí)現(xiàn)更新等事件發(fā)生后,用于重配軟件以滿(mǎn)足自適應(yīng)的配置部件.
圖1 基于構(gòu)件的自適應(yīng)方法結(jié)構(gòu)圖
圖2 面向服務(wù)的自適應(yīng)原理
該方法不適用于OSGi的原因:(1)OSGi對(duì)分布式支持不夠,其本身不具備對(duì)分布式OSGi協(xié)同工作的支持;(2)該方法要求統(tǒng)一的服務(wù)注冊(cè)中心,但OSGi本身也有一套完整的服務(wù)注冊(cè)、發(fā)布、綁定機(jī)制,與傳統(tǒng)的服務(wù)計(jì)算的服務(wù)機(jī)制存在功能沖突.
綜上所述,上述方法都以其特定的軟件工程領(lǐng)域?yàn)檠芯繉?duì)象,不適用于OSGi這種兼顧構(gòu)件化和服務(wù)化的特殊的服務(wù)構(gòu)件模型,因此,本文給出了一種SoSCM自適應(yīng)方法.
圖3 SoSCM自適應(yīng)架構(gòu)圖
SoSCM自適應(yīng)方法基于OSGi內(nèi)核,并使用OSGi內(nèi)核對(duì)構(gòu)件(服務(wù))進(jìn)行動(dòng)態(tài)的生命周期管理,SoSCM不在引入傳統(tǒng)的基于構(gòu)件自適應(yīng)方法中的模型層,因此解決了傳統(tǒng)基于構(gòu)件自適應(yīng)方法應(yīng)用到OSGi中存在的管理功能沖突問(wèn)題;同時(shí),SoSCM自適應(yīng)方法在OSGi內(nèi)核層和構(gòu)件(服務(wù))層之間引入SoSCM層,SoSCM層屏蔽了底層OSGi服務(wù)機(jī)制,并適配到傳統(tǒng)的服務(wù)計(jì)算中的服務(wù)機(jī)制,因此有效解決了面向服務(wù)自適應(yīng)方法應(yīng)用到OSGi中存在的服務(wù)機(jī)制沖突的問(wèn)題,其體系結(jié)構(gòu)如圖3所示.
一個(gè)基本的運(yùn)行流程如圖3所示:(1)平臺(tái)B將所有允許被遠(yuǎn)程調(diào)用的服務(wù)發(fā)布到服務(wù)注冊(cè)中心;(2)平臺(tái)A上的應(yīng)用在無(wú)法滿(mǎn)足用戶(hù)需求和外界變化的時(shí)候,會(huì)根據(jù)相應(yīng)的策略進(jìn)行自演化過(guò)程,在這個(gè)演化的過(guò)程中就涉及到系統(tǒng)體系結(jié)構(gòu)的改變,而在OSGi中構(gòu)件是服務(wù)的載體,所以首先從OSGi平臺(tái)的服務(wù)注冊(cè)中心獲取協(xié)作的服務(wù)引用;(3)如果服務(wù)位于本地,則根據(jù)標(biāo)準(zhǔn)的OSGi服務(wù)生命周期管理的機(jī)制定位和綁定服務(wù),否則通過(guò)SoSCM擴(kuò)展的服務(wù)管理模型向SoSCM服務(wù)注冊(cè)中心查找相關(guān)服務(wù);(4)在獲得遠(yuǎn)程服務(wù)應(yīng)用后,通過(guò)綁定服務(wù)機(jī)制關(guān)聯(lián)到平臺(tái)B上相關(guān)服務(wù);(5)平臺(tái)A上的應(yīng)用根據(jù)相應(yīng)的規(guī)則進(jìn)行自適應(yīng)調(diào)整或啟動(dòng)新的聚合過(guò)程,以實(shí)現(xiàn)動(dòng)態(tài)的演化.
SoSCM是由擴(kuò)展服務(wù)管理器、需求管理器和自適應(yīng)控制器3部分組成,如圖4所示.
OSGi目前對(duì)分布式支持不夠,雖然R-OSGi能夠支持分布式系統(tǒng)間構(gòu)件的遠(yuǎn)程訪問(wèn),但其能力非常有限.為了支持遠(yuǎn)程服務(wù)的訪問(wèn),本文擴(kuò)展標(biāo)準(zhǔn)的OSGi的服務(wù)管理機(jī)制,引入統(tǒng)一中心服務(wù)注冊(cè)平臺(tái),該平臺(tái)用于發(fā)布允許分布式OSGi平臺(tái)訪問(wèn)的外部服務(wù),使其具有查詢(xún)、定位和綁定遠(yuǎn)程服務(wù)的能力,其原理如圖5所示.
圖4 SoSCM組成部件
圖5 擴(kuò)展服務(wù)管理器工作原理
圖6 需求相關(guān)要素本體
需求管理器用于管理用戶(hù)需求要素,用戶(hù)需求往往是判斷軟件系統(tǒng)是否需要自適應(yīng)的根本依據(jù),也是檢驗(yàn)自適應(yīng)效果的唯一標(biāo)準(zhǔn).對(duì)用戶(hù)需求相關(guān)要素建模的目的在于從需求分析結(jié)果中抽取和軟件自適應(yīng)相關(guān)的知識(shí),而在本文中關(guān)注的則是面向目標(biāo)的需求工程(Goal-Oriented Requirements Engineering)研究成果中的用戶(hù)需求目標(biāo)模型,如圖6所示.
目標(biāo)一般分為兩大類(lèi):功能性目標(biāo)和非功能性目標(biāo).目標(biāo)的屬性主要有名稱(chēng)、描述、優(yōu)先級(jí)、有用性和可行性.
用戶(hù)目標(biāo)允許存在多個(gè),且用戶(hù)目標(biāo)之間關(guān)系包括以下兩類(lèi):一是目標(biāo)同時(shí)滿(mǎn)足的AND關(guān)系;另一個(gè)是只需滿(mǎn)足其中一個(gè)的OR關(guān)系.
自適應(yīng)控制器負(fù)責(zé)維護(hù)和管理自適應(yīng)軟件的自適應(yīng)邏輯,并依據(jù)系統(tǒng)的運(yùn)行狀況給出合理的系統(tǒng)調(diào)整策略.控制器的結(jié)構(gòu)如圖7所示.
自適應(yīng)控制器以決策要素和推理規(guī)則為輸入,系統(tǒng)調(diào)整動(dòng)作為輸出.從圖7可以看出,自適應(yīng)決策層由 3個(gè)主要模塊構(gòu)成:決策要素管理模塊,自適應(yīng)邏輯管理模塊和自適應(yīng)決策模塊.
圖7 自適應(yīng)控制器結(jié)構(gòu)圖
自適應(yīng)邏輯管理模塊維護(hù)自適應(yīng)決策所需的推理規(guī)則.規(guī)則管理器接收來(lái)自用戶(hù)的規(guī)則數(shù)據(jù),同時(shí)采用規(guī)則模式對(duì)它進(jìn)行校驗(yàn).規(guī)則模式用于保證輸人的規(guī)則符合一定的語(yǔ)法.本文把推理規(guī)則分為2類(lèi):常駐規(guī)則和按需規(guī)則.常駐規(guī)則參與每一次自適應(yīng)決策;按需規(guī)則只在與其相關(guān)的要素發(fā)生變化時(shí)參與自適應(yīng)決策.這樣可以有效減小自適應(yīng)決策過(guò)程中用到的規(guī)則集的規(guī)模,從而提升自適應(yīng)決策的性能.
隨著電子商務(wù)日益普及,越來(lái)越多的消費(fèi)者開(kāi)始網(wǎng)上購(gòu)買(mǎi)物品和服務(wù),而網(wǎng)上購(gòu)票系統(tǒng)就是一種典型的電子商務(wù)應(yīng)用,本文采用Master/Slave體系結(jié)構(gòu)風(fēng)格構(gòu)建應(yīng)用,其中Master用于分發(fā)用戶(hù)請(qǐng)求,而Slave則是提供的票據(jù)服務(wù).
實(shí)驗(yàn)分布在一個(gè)由3臺(tái)通過(guò)100 Mb/s的以太網(wǎng)連接的Intel(R) Cor(TM)2 Duo CPU P8600 @2.40GHz工作站構(gòu)成的局域網(wǎng)上,其中一臺(tái)作為Master節(jié)點(diǎn),兩臺(tái)作為Slave節(jié)點(diǎn)并分別發(fā)布一個(gè)購(gòu)票服務(wù),實(shí)驗(yàn)?zāi)M客戶(hù)端不斷發(fā)送請(qǐng)求來(lái)觸發(fā)軟件系統(tǒng)的自適應(yīng).
4.2.1 用戶(hù)需求要素 一個(gè)很常見(jiàn)的用戶(hù)需求就是網(wǎng)站響應(yīng)速度要足夠快,本文以用戶(hù)能容忍的最長(zhǎng)等待時(shí)間2 s為例,具體代碼如圖8所示.
圖8需求相關(guān)要素rdf
4.2.2 服務(wù)發(fā)布 允許被遠(yuǎn)程訪問(wèn)的服務(wù)首先要注冊(cè)到統(tǒng)一的服務(wù)注冊(cè)中心,本文走WebServices,其代碼段如圖9所示.
圖9服務(wù)發(fā)布ticket.wsdl的代碼段
4.2.3 調(diào)整策略 調(diào)整策略是當(dāng)響應(yīng)時(shí)間大于4.2.1假設(shè)的用戶(hù)最大容忍時(shí)間2 s時(shí),觸發(fā)自適應(yīng)操作,添加新的Slave節(jié)點(diǎn)提供購(gòu)票服務(wù),圖10表示了如何用OWL查找需要的服務(wù).
圖10查找服務(wù)owl的代碼段
如4.1節(jié)描述測(cè)試過(guò)程,本實(shí)驗(yàn)在無(wú)自適應(yīng)機(jī)制和采用SoSCM自適應(yīng)機(jī)制下分別增加采取每隔3 min增加50個(gè)并發(fā)用戶(hù)的操作來(lái)測(cè)試系統(tǒng)的響應(yīng)時(shí)間隨并發(fā)量變化的關(guān)系,如圖11所示.
圖11 響應(yīng)時(shí)間的變化曲線(xiàn)圖
點(diǎn)線(xiàn)代表的是無(wú)自適應(yīng)機(jī)制下系統(tǒng)響應(yīng)時(shí)間的變化曲線(xiàn),由圖可知,當(dāng)系統(tǒng)并發(fā)量達(dá)到200時(shí),系統(tǒng)響應(yīng)時(shí)間超出了本文4.1節(jié)假設(shè)的用戶(hù)能容忍的最大限度2 s,此時(shí)繼續(xù)增加并發(fā)用戶(hù)量,系統(tǒng)響應(yīng)時(shí)間將會(huì)持續(xù)增加.
而采用了SoSCM自適應(yīng)方法的后,系統(tǒng)當(dāng)并發(fā)量超過(guò)200時(shí),系統(tǒng)響應(yīng)時(shí)間會(huì)明顯減少,然后隨著并發(fā)量達(dá)到400又逐漸達(dá)到2 s左右,出現(xiàn)響應(yīng)時(shí)間明顯下降的原因是系統(tǒng)在并發(fā)量達(dá)到200時(shí)觸發(fā)4.2.3描述的自適應(yīng)策略,從而增加了一個(gè)Slave節(jié)點(diǎn)提供購(gòu)票服務(wù).
本文針對(duì)OSGi這種特殊的服務(wù)構(gòu)件模型,提出了一種SoSCM的自適應(yīng)方法,并在購(gòu)票應(yīng)用這種典型電子商務(wù)測(cè)試中證明該方法是可行且有效的.
參考文獻(xiàn):
[1] 王千祥,申峻嶸,梅 宏.自適應(yīng)軟件初探[J].計(jì)算機(jī)科學(xué),2004(31):168-178.
[2] GARLAN D,CHENG S W,HUANG A C,etal.Rainbow: Architecture-based self-adaption with reusable infrastructure[J].IEEE Comput,2004,37(10):46-54.
[3] WRIGGERS P,SIPLIRAYA M,JOUKOVA I,etal.Intelligent support of engineering analysis using ontology and case-based reasoning[J].Eng Appl Artif Intell,2007,20(5):709-720.
[4] 愈 春,馬 賽,馬曉星,等.一種面向體系結(jié)構(gòu)的軟件自適應(yīng)機(jī)制[J].南京大學(xué)學(xué)報(bào)(自然科學(xué)),2005,42(2):120-130.
[5] HE Q,LING T W.An ontology based approach to the integration of entity-relationship schemas[J].Data Knowledge Eng,2006,58(3):299-326.
[6] 潘 健,周 宇,呂 建,等.一種基于本體的軟件自適應(yīng)機(jī)制[J].計(jì)算機(jī)科學(xué),2007(34):264-269.
[7] 梅 宏,黃 罡,蘭 靈,等.基于體系結(jié)構(gòu)的網(wǎng)構(gòu)軟件自適應(yīng)方法[J].計(jì)算機(jī)科學(xué)E輯:信息科學(xué),2008(38):901-920.