專利名稱::一種用于檢測組合服務(wù)中并發(fā)安排不當(dāng)?shù)幕锇榉?wù)的方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于基于服務(wù)的軟件開發(fā)過程的軟件質(zhì)量保障領(lǐng)域,是一種用于輔助查錯的靜態(tài)分析方法。
背景技術(shù):
:面向服務(wù)的軟件體系結(jié)構(gòu)(S0A),因其具有異構(gòu)系統(tǒng)互操作性、遺留系統(tǒng)重用性與松耦合性,而得到業(yè)界普遍接受?;赪eb服務(wù)的軟件開發(fā)作為S0A具體實(shí)現(xiàn)也已成為常見的軟件開發(fā)方法。在這種軟件開發(fā)方法中,服務(wù)組合是生成新服務(wù)與構(gòu)建應(yīng)用的重要方式。服務(wù)組合方式之一是用Web服務(wù)業(yè)務(wù)流程執(zhí)行語言(WS-BPEL)將多個(gè)稱為伙伴服務(wù)的服務(wù)組裝成組合服務(wù),該組合服務(wù)作為服務(wù)可與其它服務(wù)構(gòu)成新的組合服務(wù),組合服務(wù)所提供的服務(wù)由這些伙伴服務(wù)之間合作完成?;锇榉?wù)可分布在具有自主計(jì)算能力的不同系統(tǒng)中,為提高組合服務(wù)的服務(wù)質(zhì)量,應(yīng)盡可能安排相關(guān)的伙伴服務(wù)并發(fā)執(zhí)行?;锇榉?wù)之間可能存在復(fù)雜關(guān)系,從而導(dǎo)致描述組合服務(wù)的程序結(jié)構(gòu)復(fù)雜。另外由于流程執(zhí)行語言本身特點(diǎn),通常用業(yè)務(wù)流程執(zhí)行語言描述的組合服務(wù)的程序可讀性很差,服務(wù)開發(fā)人員很難直接用業(yè)務(wù)流程執(zhí)行語言編寫組合服務(wù)。目前設(shè)計(jì)組合服務(wù)大都借助于圖形設(shè)計(jì)工具,這些工具能自動將設(shè)計(jì)結(jié)果轉(zhuǎn)化成由業(yè)務(wù)流程執(zhí)行語言所描述的程序;然而在現(xiàn)存的圖形設(shè)計(jì)工具中,人工編排多個(gè)伙伴服務(wù)執(zhí)行順序、設(shè)置伙伴服務(wù)屬性、及指定它們間各種約束關(guān)系通常涉及多個(gè)視圖區(qū),合理正確地安排好所涉及的伙伴服務(wù)實(shí)屬不易,不合理安排可能導(dǎo)致所得程序存在諸如死鎖、活鎖、執(zhí)行不可達(dá)活動、接收消息沖突、將不能并發(fā)執(zhí)行的伙伴服務(wù)安排成并發(fā)執(zhí)行(可能導(dǎo)致錯誤發(fā)生)、以及將可并發(fā)執(zhí)行的伙伴服務(wù)沒有安排成并發(fā)執(zhí)行(可能導(dǎo)致該組合服務(wù)質(zhì)量下降)等錯誤;人工檢查這些不當(dāng)?shù)姆?wù)安排代價(jià)很大。為方便見,本文后面將不能并發(fā)執(zhí)行的伙伴服務(wù)安排成并發(fā)執(zhí)行、以及將可并發(fā)執(zhí)行的伙伴服務(wù)沒有安排成并發(fā)執(zhí)行的稱為與并發(fā)相關(guān)的伙伴服務(wù)不當(dāng)安排。學(xué)術(shù)界用模型檢測的方法(如C.Ouyang,E.Verbeek,W.M.P.vanderAalst,S.Breutel,M.Dumas,andA.H.M.terHofstede.FormalsemanticsandanalysisofcontrolflowinWS-BPEL.ScienceofComputerProgramming,67(2-3)162-198,2007.)檢測用業(yè)務(wù)流程執(zhí)行語言所描述的組合服務(wù)是否存在死鎖、活鎖、執(zhí)行不可達(dá)活動、接收消息沖突等錯誤。目前沒有解決并發(fā)相關(guān)的伙伴服務(wù)不當(dāng)安排的技術(shù)。
發(fā)明內(nèi)容本發(fā)明旨在檢測用WS-BPEL描述組合服務(wù)中與并發(fā)相關(guān)的伙伴服務(wù)不當(dāng)安排,即檢測將不能并發(fā)執(zhí)行的伙伴服務(wù)安排成并發(fā)執(zhí)行、以及將可并發(fā)執(zhí)行的伙伴服務(wù)沒有安排成并發(fā)執(zhí)行的安排?;趯M合服務(wù)消息流的靜態(tài)分析導(dǎo)出伙伴服務(wù)的依賴關(guān)系,據(jù)此得到伙伴服務(wù)安排正確與合理的判別依據(jù),從而有效地解決了檢測組合服務(wù)中與并發(fā)相關(guān)的伙伴服務(wù)安排不當(dāng)?shù)膯栴}。本發(fā)明的主流程如圖4所示,具體包括如下四個(gè)步驟第一步構(gòu)造組合服務(wù)的消息傳播圖(MPG)。其流程如圖5所示。消息傳播圖是一個(gè)有向圖,用于表示在不同伙伴服務(wù)中通信的消息之間一種依賴關(guān)系,其頂點(diǎn)表示消息,有向邊表示其所連接的兩消息之間直接傳播關(guān)系。組合服務(wù)中消息直接傳播關(guān)系有四種1.消息A部分或全部信息復(fù)制到消息B,則稱消息A直接傳播到消息B。2.組合服務(wù)同步調(diào)用一個(gè)伙伴服務(wù)。在過程執(zhí)行語言中用帶有一個(gè)輸入消息與輸出消息(Invoke類型)的活動(Activity)完成同步調(diào)用,若輸入消息為A且輸出消息為B,則稱消息A直接傳播到消息B。3.組合服務(wù)異步調(diào)用一個(gè)伙伴服務(wù)。在過程執(zhí)行語言中用具有相同的伙伴鏈接的兩個(gè)活動來實(shí)現(xiàn)異步調(diào)用一個(gè)伙伴服務(wù),其中一個(gè)活動只有一個(gè)輸入消息(Invoke類型),另一個(gè)只有輸出消息(Receive類型);若輸入消息為A,輸出消息為B,則稱消息A直接傳播到消息B。4.組合服務(wù)為其用戶(其它服務(wù))提供異步服務(wù)。在過程執(zhí)行語言中用具有相同的伙伴鏈接的兩個(gè)活動來提供異步服務(wù),其中一個(gè)活動只有一個(gè)輸出消息(Receive類型),另一個(gè)活動只有輸人消息(R印Iy類型);若輸出消息為A,輸人消息為B,則稱消息A直接傳播到消息B。若消息A直接傳播到B,則在消息傳播圖中存在一條有向邊由表示消息A的頂點(diǎn)指向表示消息B的頂點(diǎn)。通過解析描述組合服務(wù)的WS-BPEL程序,可以得到所有上述四種直接傳播關(guān)系,這些直接傳播關(guān)系及與傳播關(guān)系相關(guān)聯(lián)的所有消息構(gòu)成該組合服務(wù)的消息傳播圖。第二步構(gòu)造與伙伴服務(wù)相關(guān)的活動之間依賴關(guān)系圖(ADG)。處理流程如圖6所7J\ο以下提到的活動都僅跟伙伴服務(wù)相關(guān),與之無關(guān)的其它活動都不在所要構(gòu)造的ADG中?;顒右蕾囮P(guān)系圖(ADG)是一個(gè)有向圖,用于表示在不同活動之間一種因數(shù)據(jù)耦合或其它約束而存在的一種依賴關(guān)系,其頂點(diǎn)表示活動,有向邊表示其所連接的兩個(gè)活動之間執(zhí)行時(shí)間順序關(guān)系,有向邊的起始頂點(diǎn)所表示的活動必須先于該邊終點(diǎn)所表示的活動運(yùn)行。組合服務(wù)中與伙伴服務(wù)有關(guān)的活動存在兩種依賴關(guān)系1.若活動S輸出消息為A,活動T輸入消息為B,且在組合服務(wù)的消息傳播圖MPG中存在一條有向路徑P,P的起始點(diǎn)是消息A所對應(yīng)的頂點(diǎn),終點(diǎn)是消息B所對應(yīng)的頂點(diǎn),則稱活動T依賴于活動S。2.若活動S與活動T存在鏈接(LINK)關(guān)系,且活動S是鏈接的源(SOURCE),T是鏈接的目標(biāo)(TARGET),則稱活動T依賴于活動S。若活動T依賴于活動S,則在活動依賴關(guān)系圖中存在一條有向邊由表示活動S的頂點(diǎn)指向表示活動T的頂點(diǎn)。通過解析描述組合服務(wù)的WS-BPEL程序,可以得到上述兩種依賴關(guān)系所有關(guān)系,這些依賴關(guān)系及與依賴關(guān)系相關(guān)聯(lián)的所有活動構(gòu)成該組合服務(wù)的活動依賴關(guān)系圖ADG。第三步構(gòu)造可并發(fā)運(yùn)行的活動序列組的隊(duì)列Q。其處理流程如圖7所示。隊(duì)列Q包含若干活動序列組,每一活動序列組G包含若干個(gè)活動序列,每一活動序列L包含若干與伙伴服務(wù)有關(guān)的活動。隊(duì)列Q具有如下性質(zhì)1.屬不同活動序列組中的活動不能并發(fā)運(yùn)行;2.同一活動序列組中不同活動序列間的活動可以并發(fā)運(yùn)行;3.同一活動序列組中屬同一活動序列中的活動只能順序運(yùn)行。通過對第二步所得活動依賴關(guān)系圖ADG作若干遍如下處理直至ADG為空時(shí)即可得隊(duì)列Q,其中每一遍處理可得到一個(gè)活動序列組G,每一遍處理過程如下1.將集合G置為空;2.對于ADG中每一個(gè)入度為零的頂點(diǎn)U,在ADG中求一條有向路徑P,P中的頂點(diǎn)所代表的活動依有向邊的方向組成一活動序列L,將L并入G中;所求的有向路徑P滿足條件[1]若U的出度不等于1,P只包含一個(gè)頂點(diǎn)U;[2].若U的出度等于1,則路徑P=UV1-VnV滿足Vk的入度與Vk的出度都等于1;V的入度等于1且V的出度大于1,或V的入度與出度都等于1但V后繼頂點(diǎn)的入度大于1;3.將2所得G插入隊(duì)列Q,并將G中頂點(diǎn)及與之相連的邊從ADG中刪除掉,得到新ADG。第四步檢測并發(fā)相關(guān)不當(dāng)安排的活動。檢查描述組合服務(wù)的WS-BPEL程序中,被安排成并發(fā)運(yùn)行的活動中是否存在若干活動分屬不同活動序列組,或雖屬同一個(gè)活動序列組但卻在同一活動序列中;若存在,則這些活動即屬于把不能并發(fā)執(zhí)行伙伴服務(wù)安排成并發(fā)執(zhí)行,從而可能導(dǎo)致錯誤發(fā)生。同樣,檢查描述組合服務(wù)的WS-BPEL程序中,被安排成順序運(yùn)行的活動中是否存在若干活動屬同一活動序列組,若存在,則這些活動即屬于把可并發(fā)執(zhí)行的伙伴服務(wù)沒有安排成并發(fā)執(zhí)行,從而可能導(dǎo)致該組合服務(wù)質(zhì)量下降。本發(fā)明的有益效果本方法可單獨(dú)作為一款工具或一個(gè)插件集成到基于業(yè)務(wù)流程執(zhí)行語言的服務(wù)開發(fā)集成開發(fā)環(huán)境,輔助開發(fā)人員自動檢測組合服務(wù)中可能存在并發(fā)相關(guān)的伙伴服務(wù)不當(dāng)安排,即時(shí)排除因?qū)⒉荒懿l(fā)執(zhí)行伙伴服務(wù)安排成并發(fā)執(zhí)行而可能導(dǎo)致錯誤、以及將可并發(fā)執(zhí)行的伙伴服務(wù)沒有安排成并發(fā)執(zhí)行而可能導(dǎo)致該組合服務(wù)質(zhì)量下降等失誤,以提高所設(shè)計(jì)服務(wù)的質(zhì)量。圖1=Travel的消息傳播圖(MPG);圖2=Travel的活動依賴圖(ADG);圖3=Travel的可并發(fā)運(yùn)行的活動序列組的隊(duì)列Q;圖4主流程圖;圖5解析BPEL程序并構(gòu)造消息傳播關(guān)系集合的流程圖;圖6解析BPEL程序并根據(jù)MPG構(gòu)造活動依賴關(guān)系圖的流程圖;圖7構(gòu)造并發(fā)運(yùn)行的活動序列組的隊(duì)列Q流程圖;其中圖1圖3為實(shí)施例中所使用的圖形。具體實(shí)施例下面通過一個(gè)具體的例子對本發(fā)明作進(jìn)一步的說明,但本發(fā)明并不僅適用于以下例子。下面是一個(gè)Travel服務(wù),它是一個(gè)提供旅游服務(wù)的組合服務(wù),當(dāng)它接收到一個(gè)包含公司某員工信息的客戶請求時(shí),Travel向名為Employee的伙伴服務(wù)發(fā)出查詢該員工可享受旅行等級(travelclass)的服務(wù)請求,隨后它根據(jù)Employee返回的旅行等級分別向AmericanAirline與DeltaAirline伙伴服務(wù)查詢滿足旅行等級的機(jī)票信息,并根據(jù)查詢結(jié)果,將票價(jià)低的機(jī)票信息返回給客戶。下面代碼是服務(wù)Travel用WS-BPEL實(shí)現(xiàn)的核心片段。1.<sequence>2.〈receivepartnerLink=“client“3.portType=“trvTravelApprovalPT“4.operation=“TravelApproval“5.variable=“TravelRequest“createlnstance=“yes“/>6.<assignXcopyXfromvariable=“TraveIRequest“part=“employee“/>7.<tovariable=“EmployeeTravelStatusRequest“part=“employee“/>8.</copy></assign>9.<invokepartnerLink=“employeeTravelStatus“10.portType=“empEmployeeTravelStatusPT“11.operation=“EmployeeTravelStatus“12.inputVariable=“EmployeeTravelStatusRequest“13.outputVariable=“EmployeeTravelStatusResponse“/>14.<assign><copy>15.<fromvariable=“TravelRequest“part=“flightData"/>16.<tovariable=“FlightDetails"part="flightData"/></copy><copy>17.<fromvariable="EmployeeTravelStatusResponse"part="travelClass"/>18.<tovariable="FlightDetails"part="travelClass"/></copy></assign>19.<fIowXinvokepartnerLink="AmericanAirlines"20.portType="aln:FlightAvaiIabilityPT"21.operation="FlightAvailability"22.inputVariable="FlightDetails"/>23.〈receivepartnerLink="AmericanAirlines"24.portType="aln:FlightCalIbackPT〃25.operation="FlightTicketCallback"26.variable="FlightResponseAA"/></flow>27.<invokepartnerLink=〃DeltaAirlines"28.portType="aln:FlightAvaiIabilityPT"29.operation="FlightAvailability“30.inputVariable=“FlightDetails"/>31.〈receivepartnerLink=“DeltaAirlines“32.portType=“aln:FlightCalIbackPT"33.operation=“FlightTicketCallback"34.variable=“FlightResponseDA"/>35.<switch><casecondition=“...“>36.<assign><copy><fromvariable=“FlightResponseAA"/>37.<tovariable=“TravelResponse“/></copyX/assignX/case><otherwise>38.<assign><copy><fromvariable="FlightResponseDA"/>39.<tovariable="TravelResponse"/></copyX/assignX/otherwiseX/switch>40.<invokepartnerLink=〃client"41.portType="trv:ClientCalIbackPT"42.operation="ClientCallback"43.inputVariable="TravelResponse"/>44.</sequence>下面應(yīng)用本方案檢測來Travel中不當(dāng)安排的伙伴服務(wù)。1.構(gòu)造組合服務(wù)Travel的消息傳播圖(MPG)為便于描述,用記號(A,B)表示消息A直接傳播到消息B。解析Travel程序可得所有消息如表1所示表1.Trave1中消息及編號消息編號I消息名V1TravelRequestV2EmployeeTravelStatusRequestV3EmployeeTraveIStatusResponseV^FlightDetailsV5FlightResponseAAV6FlightResponseDAV7TravelResponse根據(jù)本方法第一步中四種情形,通過檢查Travel程序中所有的消息對,可得如下的所有消息傳播關(guān)系集合{(V1,v2),(v2,V3),(V1,V4),(v3,V4),(ν4,ν5),(v4,v6),(ν5,ν7),(ν6,ν7)}該關(guān)系可用消息傳播圖(MPG)來表示,如圖1。2.構(gòu)造Travel中與伙伴服務(wù)相關(guān)的活動之間依賴關(guān)系圖(ADG)為便于描述,用記號(S,T)表示活動T依賴于活動S。解析Travel程序可得所有活動如表2所示。表2.活動及其編號<table>tableseeoriginaldocumentpage9</column></row><table>根據(jù)本方法第二步中兩種情形及步驟1所得消息傳播圖(MPG),通過檢查Travel程序中所有的活動對,可得如下的所有活動依賴關(guān)系集合<formula>formulaseeoriginaldocumentpage9</formula>該關(guān)系可用活動依賴圖(ADG)來表示,如圖2。3.構(gòu)造Travel可并發(fā)運(yùn)行的活動序列組的隊(duì)列Q根據(jù)本方法第三步,可得如下的可并發(fā)運(yùn)行的活動序列組的隊(duì)列QKa1M,{<a2>},{<a3,a4>,<a5,a6>},{<a7>}該結(jié)果可用圖3直觀地表示。該隊(duì)列表示DTravel中各活動必需依其所在的組的先后順序依次執(zhí)行,即依I,II,III,IV次序執(zhí)行。2)組內(nèi)各活動序列間可并發(fā)運(yùn)行,如活動序列<a3,a4>與序列<a5,a6>可并發(fā)執(zhí)行。3)活動序列內(nèi)部各活動只能按順序執(zhí)行,如活動a3執(zhí)行才能執(zhí)行a4。4.檢測Travel中并發(fā)相關(guān)不當(dāng)安排的伙伴服務(wù)。根據(jù)步驟3所得結(jié)果,檢查Travel程序可得如下結(jié)果DTravel中19行到26行所包含的兩個(gè)活動(它們分別對應(yīng)于a3與a4)安排可能有誤,即這兩個(gè)活動不能安排成并發(fā)執(zhí)行。2)Travel中19行到26行所包含的兩個(gè)活動(它們分別對應(yīng)于a3與a4)與27行到34行所包含的兩個(gè)活動(它們分別對應(yīng)于a5與a6)安排可能不當(dāng),即這兩個(gè)活動序列能安排成并發(fā)執(zhí)行。根據(jù)服務(wù)Travel描述,容易驗(yàn)證上述結(jié)論是正確。雖然通過實(shí)施例詳細(xì)描述了本發(fā)明用于檢測組合服務(wù)中并發(fā)安排不當(dāng)?shù)幕锇榉?wù)的方法,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明并不限于實(shí)施例中所公開的內(nèi)容和范圍,在不脫離本發(fā)明的實(shí)質(zhì)和精神范圍內(nèi),可以對本發(fā)明進(jìn)行各種變換、修改和替換。權(quán)利要求一種用于檢測WS-BPEL的組合服務(wù)中并發(fā)安排不當(dāng)?shù)幕锇榉?wù)的方法,主要包括以下步驟第一步構(gòu)造組合服務(wù)的消息傳播圖;第二步構(gòu)造與伙伴服務(wù)相關(guān)的活動之間依賴關(guān)系圖;第三步構(gòu)造可并發(fā)運(yùn)行的活動序列組的隊(duì)列;第四步檢測并發(fā)相關(guān)不當(dāng)安排的活動。2.如權(quán)利要求1所述的方法,其特征在于消息傳播圖是一個(gè)有向圖,用于表示在不同伙伴服務(wù)中通信的消息之間一種依賴關(guān)系,其頂點(diǎn)表示消息,有向邊表示其所連接的兩消息之間直接傳播關(guān)系。3.如權(quán)利要求1或2所述的方法,其特征在于,組合服務(wù)中消息直接傳播關(guān)系有四種a)消息A部分或全部信息復(fù)制到消息B,則稱消息A直接傳播到消息B;b)組合服務(wù)同步調(diào)用一個(gè)伙伴服務(wù),若輸入消息為A且輸出消息為B,則稱消息A直接傳播到消息B;c)組合服務(wù)異步調(diào)用一個(gè)伙伴服務(wù),若輸入消息為A,輸出消息為B,則稱消息A直接傳播到消息B;d)組合服務(wù)為其用戶提供異步服務(wù),若輸出消息為A,輸人消息為B,則稱消息A直接傳播到消息B;通過對WS-BPEL程序進(jìn)行解析,能夠得到上述四種傳播關(guān)系,從而構(gòu)建出完整的消息傳播圖。4.如權(quán)利要求1或2所述的方法,其特征在于活動依賴關(guān)系圖是一個(gè)有向圖,用于表示在不同活動之間一種因數(shù)據(jù)耦合或其它約束而存在的一種依賴關(guān)系,其頂點(diǎn)表示活動,有向邊表示其所連接的兩個(gè)活動之間執(zhí)行時(shí)間順序關(guān)系,有向邊的起始頂點(diǎn)所表示的活動必須先于該邊終點(diǎn)所表示的活動運(yùn)行。5.如權(quán)利要求4所述的方法,其特征在于,組合服務(wù)中與伙伴服務(wù)有關(guān)的活動存在兩種依賴關(guān)系I)若活動S輸出消息為A,活動T輸入消息為B,且在組合服務(wù)的消息傳播圖中存在一條有向路徑P,P的起始點(diǎn)是消息A所對應(yīng)的頂點(diǎn),終點(diǎn)是消息B所對應(yīng)的頂點(diǎn),則稱活動T依賴于活動S;II)若活動S與活動T存在鏈接關(guān)系,且活動S是鏈接的源,T是鏈接的目標(biāo),則稱活動T依賴于活動S;通過解析描述組合服務(wù)的WS-BPEL程序,能夠得到上述兩種依賴關(guān)系所有關(guān)系,這些依賴關(guān)系及與依賴關(guān)系相關(guān)聯(lián)的所有活動構(gòu)成該組合服務(wù)的活動依賴關(guān)系圖。6.如權(quán)利要求1或2所述的方法,其特征在于,可并發(fā)運(yùn)行的活動序列組的隊(duì)列包括以下性質(zhì)屬不同活動序列組中的活動不能并發(fā)運(yùn)行;同一活動序列組中不同活動序列間的活動可以并發(fā)運(yùn)行;同一活動序列組中屬同一活動序列中的活動只能順序運(yùn)行。7.如權(quán)利要求6所述的方法,其特征在于,可并發(fā)運(yùn)行的活動序列組隊(duì)列的獲取方法如下1)將集合G置為空;2)對于活動依賴關(guān)系圖中每一個(gè)入度為零的頂點(diǎn)U,在活動依賴關(guān)系圖中求一條有向路徑P,P中的頂點(diǎn)所代表的活動依有向邊的方向組成一活動序列L,將L并入G中;所求的有向路徑P滿足條件若U的出度不等于1,P只包含一個(gè)頂點(diǎn)U;若U的出度等于1,則路徑P=mv"vnv滿足vk的入度與vk的出度都等于1;v的入度等于1且v的出度大于1,或V的入度與出度都等于1但V后繼頂點(diǎn)的入度大于1;3)將2)所得G插入隊(duì)列Q,并將G中頂點(diǎn)及與之相連的邊從原活動依賴關(guān)系圖中刪除掉,得到新的活動依賴關(guān)系圖;4)循環(huán)執(zhí)行上述步驟,直至活動依賴關(guān)系圖為空,即可得到所需隊(duì)列。8.如權(quán)利要求1或2所述的方法,其特征在于檢查并發(fā)不當(dāng)安排的方法是,檢查描述組合服務(wù)的WS-BPEL程序中,被安排成并發(fā)運(yùn)行的活動中是否存在若干活動分屬不同活動序列組,或雖屬同一個(gè)活動序列組但卻在同一活動序列中,若存在,則這些活動即屬于把不能并發(fā)執(zhí)行伙伴服務(wù)安排成并發(fā)執(zhí)行;同時(shí),檢查描述組合服務(wù)的WS-BPEL程序中,被安排成順序運(yùn)行的活動中是否存在若干活動屬同一活動序列組,若存在,則這些活動即屬于把可并發(fā)執(zhí)行的伙伴服務(wù)沒有安排成并發(fā)執(zhí)行。全文摘要本發(fā)明提供了一種用于檢測組合服務(wù)中并發(fā)安排不當(dāng)?shù)幕锇榉?wù)的方法,屬于基于服務(wù)的軟件開發(fā)過程的軟件質(zhì)量保障領(lǐng)域,是一種用于輔助查錯的靜態(tài)分析方法。該方法包括首先,構(gòu)造組合服務(wù)的消息傳播圖;其次,構(gòu)造與伙伴服務(wù)相關(guān)的活動之間依賴關(guān)系圖;再次,構(gòu)造可并發(fā)運(yùn)行的活動序列組的隊(duì)列;最后,檢測并發(fā)相關(guān)不當(dāng)安排的活動。本方法可單獨(dú)作為一款工具或一個(gè)插件集成到基于業(yè)務(wù)流程執(zhí)行語言的服務(wù)開發(fā)集成開發(fā)環(huán)境,輔助開發(fā)人員自動檢測組合服務(wù)中可能存在并發(fā)相關(guān)的伙伴服務(wù)不當(dāng)安排,以提高所設(shè)計(jì)服務(wù)的質(zhì)量。文檔編號G06F11/00GK101833481SQ20101017236公開日2010年9月15日申請日期2010年5月14日優(yōu)先權(quán)日2010年5月14日發(fā)明者倪一濤,張路,梅宏申請人:北京大學(xué)