1 概述
面向服務(wù)體系機(jī)構(gòu)(Service-Oriented Architecture, SOA)是一個(gè)面向服務(wù)的組件模型,從建模和設(shè)計(jì)的角度來(lái)說(shuō),SOA更多地側(cè)重在業(yè)務(wù)層次上。在業(yè)務(wù)建模上,業(yè)務(wù)流程建模標(biāo)記(Business Process Modeling Notation, BPMN)憑借其圖形化、容易被業(yè)務(wù)人員理解、支持復(fù)雜的業(yè)務(wù)流程設(shè)計(jì)并且能夠直接映射到基于XML 的業(yè)務(wù)流程執(zhí)行語(yǔ)言等特點(diǎn),成為業(yè)務(wù)分析領(lǐng)域的主要流程建模規(guī)范之一。
針對(duì)SOA系統(tǒng)的規(guī)模估算方面,至今還沒(méi)有一個(gè)有效的解決方案。IFPUG 功能點(diǎn)方法在估算SOA系統(tǒng)規(guī)模上也沒(méi)有取得良好的效果。全功能點(diǎn)方法是一種逐漸被廣泛采用的規(guī)模估算方法。文獻(xiàn)[3]提出使用全功能點(diǎn)方法估算SOA系統(tǒng)的規(guī)模,但是它僅從理論上闡述了用全功能點(diǎn)估算SOA系統(tǒng)規(guī)模的可行性和定界問(wèn)題,并沒(méi)有給出具體的解決方案。
本文在以上研究成果的基礎(chǔ)上,根據(jù)全功能點(diǎn)和BPMN的特點(diǎn),建立一套從全功能點(diǎn)到BPMN 的映射規(guī)則,給出全功能點(diǎn)估算SOA系統(tǒng)規(guī)模的步驟,并通過(guò)一個(gè)實(shí)例說(shuō)明具體的估算過(guò)程。
2 軟件規(guī)模估算與全功能點(diǎn)方法
功能點(diǎn)方法就是估算軟件功能性用戶需求的大小,是針對(duì)代碼行的缺點(diǎn)而提出的一種規(guī)模估算方法,獨(dú)立于具體的開(kāi)發(fā)技術(shù)和平臺(tái),適應(yīng)軟件開(kāi)發(fā)周期早期。在眾多功能點(diǎn)方法中, IFPUG 功能點(diǎn)(International Function Point UserGroup)和COSMC 全功能點(diǎn)(Common Software MeasurementInternational Consortium)已成為ISO 國(guó)際標(biāo)準(zhǔn),并且是目前被廣泛應(yīng)用的2 種功能點(diǎn)估算方法。
IFPUG 功能點(diǎn)方法的主要思想是將軟件分解成基本功能組件(內(nèi)部邏輯文件、外部接口文件、外部輸入、外部輸出、外部查詢),并對(duì)每個(gè)基本功能組件計(jì)算其復(fù)雜度,折算成未調(diào)整的功能點(diǎn)個(gè)數(shù),求和得到軟件總的未調(diào)整功能點(diǎn)數(shù)。這種方法的“基本功能組件”很難與SOA中的“服務(wù)”建立映射關(guān)系,因此不適合估算SOA系統(tǒng)的規(guī)模,文獻(xiàn)[3]也闡述了這一點(diǎn)。
全功能點(diǎn)方法的主要思想是將系統(tǒng)分解成層次,每個(gè)層次分解成若干對(duì)等組件,每個(gè)對(duì)等組件又分解成若干功能流程。每個(gè)功能流程包含若干數(shù)據(jù)移動(dòng),一個(gè)數(shù)據(jù)移動(dòng)是一個(gè)數(shù)據(jù)組的傳輸,一個(gè)數(shù)據(jù)移動(dòng)記為一個(gè)功能點(diǎn)。如圖1 所示,有4 種類型的數(shù)據(jù)移動(dòng):輸入(Entry),輸出(Exit),讀(Read)和寫(Write)。全功能點(diǎn)方法中“層次”、“對(duì)等組件”可以與SOA中的“服務(wù)”建立映射,而且功能點(diǎn)的“功能流程”可以很容易地與BPMN 中“業(yè)務(wù)流程”建立映射;谝陨戏治,認(rèn)為全功能點(diǎn)方法最適于估算SOA系統(tǒng)軟件的規(guī)模。
圖1 全功能點(diǎn)方法的數(shù)據(jù)移動(dòng)
全功能點(diǎn)方法的主要核心元素是與BPMN 映射的關(guān)鍵,可參照度量手冊(cè)。這些核心元素包含層次、對(duì)等組件、功能用戶、邊界、功能流程、事件、數(shù)據(jù)組、數(shù)據(jù)移動(dòng)等。
3 SOA系統(tǒng)與BPMN 建模
在SOA體系結(jié)構(gòu)中,服務(wù)是最核心的抽象手段,其中一個(gè)簡(jiǎn)化的SOA體系結(jié)構(gòu)如圖2 所示。
圖2 簡(jiǎn)化的SOA體系結(jié)構(gòu)
從建模和設(shè)計(jì)的角度講,SOA更多地側(cè)重于業(yè)務(wù)層次上,業(yè)務(wù)被劃分為一系列粗粒度的業(yè)務(wù)服務(wù)和業(yè)務(wù)流程。業(yè)務(wù)服務(wù)有多種實(shí)現(xiàn)方式,其中最流行的實(shí)現(xiàn)技術(shù)是Web 服務(wù)。Web 服務(wù)定義了如何在異構(gòu)系統(tǒng)之間實(shí)現(xiàn)通信的標(biāo)準(zhǔn)化方法,使得服務(wù)可以跨平臺(tái)和具體語(yǔ)言實(shí)現(xiàn)。業(yè)務(wù)流程被定義為一個(gè)由各種不同功能的活動(dòng)相連的一組有相互關(guān)系的任務(wù),它們依照一定的業(yè)務(wù)邏輯和順序依次執(zhí)行,業(yè)務(wù)流程有起點(diǎn)和終點(diǎn),并且它們都是可重復(fù)的,業(yè)務(wù)流程可以按一定邏輯將“服務(wù)”組裝起來(lái),形成功能更豐富的服務(wù),稱為組合服務(wù)。
BPMN 通過(guò)一套繪圖元素為業(yè)務(wù)流程建模,既能提供給用戶直觀的模型界面,又能表示復(fù)雜的業(yè)務(wù)流程。其能同時(shí)被業(yè)務(wù)人員和技術(shù)人員理解的特點(diǎn),使之成為溝通業(yè)務(wù)流程設(shè)計(jì)和流程實(shí)現(xiàn)的橋梁。BPMN 與全功能映射的主要繪圖元素包含事件、活動(dòng)、網(wǎng)關(guān)、序列流、消息流、泳池、泳道,數(shù)據(jù)對(duì)象等完整的繪圖元素可參考BPMN 規(guī)范。
4 全功能點(diǎn)與BPMN 的映射關(guān)系
4.1 映射規(guī)則
映射的主要任務(wù)就是把全功能點(diǎn)的核心元素映射到BPMN 的繪圖元素中,目的是估算出以BPMN 圖形表示的業(yè)務(wù)流程包含的全功能點(diǎn)數(shù),從而估算出SOA系統(tǒng)的規(guī)模。通過(guò)分析研究,是把全功能點(diǎn)方法的核心元素映射到BPMN 主要繪圖元素中,如表1 所示。
表1 全功能點(diǎn)與BPMN 的映射關(guān)系
為了說(shuō)明表1 的映射關(guān)系,補(bǔ)充了如下映射規(guī)則。
規(guī)則1 全功能點(diǎn)的層次(Layer)是與軟件的體系結(jié)構(gòu)相關(guān)的,層次的粒度特別大,通常將整個(gè)BPMN 圖形表示的功能流程映射為一個(gè)層次。
規(guī)則2 全功能點(diǎn)的對(duì)等組件(Peer Component)和BPMN中的活動(dòng)(Activity)的共同點(diǎn)是都完成了一部分的功能性用戶需求,對(duì)等組件可以由多個(gè)組件組合而成,活動(dòng)也可以由多個(gè)活動(dòng)組合而成。從概念上講,對(duì)等組件是粗粒度的,完成相對(duì)獨(dú)立的、較復(fù)雜的、有價(jià)值的功能;顒(dòng)既可以完成復(fù)雜的功能,也可以完成相對(duì)簡(jiǎn)單的功能,這與業(yè)務(wù)功能的“粒度”相關(guān)。活動(dòng)分為流程(Process)、子流程(Sub-process)和任務(wù)(Task),通常在任務(wù)中引用Web 服務(wù)。對(duì)等組件和活動(dòng)能否直接映射,取決于活動(dòng)能不能提供一個(gè)相對(duì)獨(dú)立的、復(fù)雜的、有價(jià)值的功能。若某個(gè)子流程或任務(wù)不滿足這個(gè)條件,那么可以將幾個(gè)子流程或任務(wù)組合起來(lái)形成一個(gè)更大的流程,使這個(gè)流程能完成一部分功能性用戶需求,從而映射為一個(gè)對(duì)等組件。
BPMN 中的泳池(Pool)主要用于2 個(gè)獨(dú)立的實(shí)體或者參與者之間的物理劃分,泳池內(nèi)部是一個(gè)流程,一般完成較復(fù)雜的業(yè)務(wù)功能。若泳池所代表的實(shí)體是系統(tǒng)內(nèi)的元素,那么這個(gè)泳池可以映射為一個(gè)對(duì)等組件;若泳池所代表的實(shí)體是系統(tǒng)以外的用戶或軟硬件設(shè)備,則這個(gè)泳池所代表的實(shí)體可以映射為一個(gè)全功能點(diǎn)的功能用戶。
規(guī)則3 全功能點(diǎn)的功能用戶(Function User)除了可以映射為BPMN 的泳池或泳道所代表的實(shí)體外,也可以映射為系統(tǒng)外任意與系統(tǒng)交互的事物。因此,若某個(gè)活動(dòng)已經(jīng)被映射為全功能點(diǎn)的對(duì)等組件,則任何與該活動(dòng)交互的事物都可以映射為全功能點(diǎn)的功能用戶(這個(gè)事物可以是另一個(gè)活動(dòng))。
規(guī)則4 全功能點(diǎn)的邊界(Boundary)是功能用戶與待估算軟件的交界處,若2 個(gè)泳池交互,其中一個(gè)泳池為待估算軟件,另一個(gè)泳池為功能用戶,則2 個(gè)泳池的交界就映射成邊界。若不存在泳池,則整個(gè)業(yè)務(wù)流程中,被估算的業(yè)務(wù)流程與其他業(yè)務(wù)流程交互的界限就是邊界。
規(guī)則5 全功能點(diǎn)的事件(Event)與BPMN 中的事件都是觸發(fā)一個(gè)功能流程或任務(wù)的執(zhí)行。全功能點(diǎn)的事件可以與BPMN 中的消息、時(shí)鐘、錯(cuò)誤、取消、補(bǔ)償、信號(hào)等各種事件(Event)相映射。另外,一個(gè)任務(wù)的結(jié)束、序列流(SequenceFlow)、消息流(Message Flow)、網(wǎng)關(guān)(Gateway)可以觸發(fā)一個(gè)任務(wù)的執(zhí)行,也可以與全功能點(diǎn)的事件映射。
規(guī)則6 與對(duì)等組件的概念相似,全功能點(diǎn)的功能流程(Function Process)也是功能性用戶需求的子集,但功能流程的粒度比對(duì)等組件小得多,它通常包含在對(duì)等組件中。功能流程通常完成較簡(jiǎn)單的功能,可以與BPMN 中任務(wù)相映射,若任務(wù)的粒度較大,則功能流程可以與任務(wù)分解出來(lái)的流程相映射,這與任務(wù)的粒度是相關(guān)的。若任務(wù)的粒度較小,則功能流程可以與幾個(gè)任務(wù)相映射。
規(guī)則7 全功能點(diǎn)的數(shù)據(jù)組(Data Group)與BPMN 中的數(shù)據(jù)對(duì)象(Data Object)都屬于交換的信息,可以映射。另外,只要是2 個(gè)事物交換的信息,都可以映射為數(shù)據(jù)組。
規(guī)則8 一般來(lái)說(shuō),全功能點(diǎn)的數(shù)據(jù)移動(dòng)都不能與BPMN中的元素直接映射,要通過(guò)分析與任務(wù)相映射的功能流程才能得到數(shù)據(jù)移動(dòng)。
4.2 估算步驟
基于上述映射關(guān)系,本文定義了全功能點(diǎn)估算SOA系統(tǒng)規(guī)模的估算步驟作為參考,根據(jù)SOA中原子服務(wù)與組合服務(wù)的關(guān)系,將SOA中的業(yè)務(wù)流程組織成一個(gè)圖結(jié)構(gòu)。在BMPN中,設(shè)置業(yè)務(wù)流程中的活動(dòng)為頂點(diǎn),頂點(diǎn)的類型主要有3 種:收縮的子流程,擴(kuò)展的子流程和任務(wù)。最終,子流程又可以分為任務(wù)。通常在任務(wù)中調(diào)用Web 服務(wù),Web 服務(wù)可以自己開(kāi)發(fā),也可以調(diào)用其他組織提供的服務(wù)。估算步驟如下:
步驟1 按表2 的映射規(guī)則,識(shí)別出BPMN 圖形所表示的層次、對(duì)等組件、功能用戶和邊界。
步驟2 對(duì)于整個(gè)BPMN 圖形,確定其中一部分待估算的BPMN 圖形(通常為一個(gè)功能組件及相關(guān)功能用戶),建立圖結(jié)構(gòu)。從某頂點(diǎn)開(kāi)始遍歷整個(gè)圖結(jié)構(gòu),可以按深度優(yōu)先遍歷。步驟3 對(duì)于每一個(gè)頂點(diǎn),判斷其是子流程還是任務(wù),若該頂點(diǎn)是子流程,重復(fù)步驟1、步驟2。
若該頂點(diǎn)是任務(wù),按表1 的映射規(guī)則,識(shí)別出BPMN 圖形所表示的事件、功能流程、數(shù)據(jù)組和數(shù)據(jù)移動(dòng)。然后按全功能點(diǎn)方法提供的估算規(guī)則估算功能點(diǎn)數(shù)。
若該任務(wù)調(diào)用了Web 服務(wù),繼續(xù)判斷該Web 服務(wù)是自己開(kāi)發(fā)還是調(diào)用其他組織提供的服務(wù)。若是自己開(kāi)發(fā),對(duì)此Web 服務(wù),重復(fù)步驟1、步驟2。
步驟4 待估算的BPMN 圖形的功能點(diǎn)數(shù)就是此BPMN圖形所有頂點(diǎn)的功能點(diǎn)總和。
步驟5 回到步驟2,繼續(xù)確定剩下的待估算的BPMN 圖形,直到整個(gè)軟件估算結(jié)束。
5 案例分析
以某實(shí)驗(yàn)室開(kāi)發(fā)的一個(gè)商品購(gòu)物服務(wù)(eStore)為例,說(shuō)明如何使用上述方法估算SOA系統(tǒng)的功能點(diǎn)數(shù)。
由于篇幅有限,只能對(duì)整個(gè)過(guò)程進(jìn)行概要描述。如圖3 所示,eStore 組合了一些已發(fā)布的原子服務(wù),并添加一些自己開(kāi)發(fā)的Web 服務(wù),形成一個(gè)以各大網(wǎng)站提供的服務(wù)為基礎(chǔ)的購(gòu)物組合服務(wù)。這些原子服務(wù)包括亞馬遜、eBay 等電子商務(wù)公司發(fā)布的查詢商品、購(gòu)買商品的原子服務(wù),包括各大銀行為了方便用戶在網(wǎng)上支付購(gòu)物費(fèi)用而開(kāi)發(fā)的相應(yīng)的Web 服務(wù)。
圖3 eStore 的業(yè)務(wù)流程
按照第4 節(jié)定義的映射規(guī)則和估算步驟,對(duì)eStore 的業(yè)務(wù)流程的具體估算過(guò)程如下:
步驟1 在圖3 中,包含2 個(gè)泳道Customer 和eStore。Customer 并不是待開(kāi)發(fā)軟件,所以把eStore 映射為一個(gè)功能組件,Customer 映射為功能用戶。eStore 和Customer 都處于同一個(gè)層次,eStore 的邊界就是泳池的邊界。
步驟2 確定整個(gè)BPMN 圖形為待估算的BPMN 圖,建立圖結(jié)構(gòu),圖的頂點(diǎn)為任務(wù)(Task)圖元,如“查找商品”和“返回結(jié)果”等任務(wù)。于是從圓圈符號(hào)(開(kāi)始事件)開(kāi)始,遍歷整個(gè)圖結(jié)構(gòu)。
步驟3 首先訪問(wèn)到“查找商品”和“返回結(jié)果”任務(wù),這2 個(gè)任務(wù)一起映射為一個(gè)功能流程。Customer 的“查詢請(qǐng)求”任務(wù)映射為觸發(fā)該功能流程的事件。根據(jù)功能點(diǎn)的計(jì)算規(guī)則得出這個(gè)功能流程共有3 個(gè)功能點(diǎn)。“查找商品”任務(wù)調(diào)用了第三方提供的查找商品服務(wù),這個(gè)服務(wù)不需自己開(kāi)發(fā),因此,“查找商品”服務(wù)本身的功能點(diǎn)數(shù)不用估算。
然后用上述方法繼續(xù)遍歷后續(xù)任務(wù),直到遇到圓圈符號(hào)(結(jié)束事件),于是圖中的全部頂點(diǎn)(任務(wù))就都被訪問(wèn)了!吧捎唵巍焙汀爸Ц顿M(fèi)用”任務(wù)調(diào)用了第三方提供的服務(wù),“發(fā)貨”任務(wù)調(diào)用了組織內(nèi)部已有的服務(wù)。
步驟4 將Customer 的“登錄”任務(wù)也算在內(nèi),此BPMN圖所代表的功能點(diǎn)數(shù)為31 個(gè)。
步驟5 因?yàn)椴襟E2 已經(jīng)確定了整個(gè)BPMN 圖形為待估算的BPMN 圖,無(wú)剩余圖形,估算結(jié)束。
估算結(jié)果表明,開(kāi)發(fā)整個(gè)eStore 的業(yè)務(wù)流程需要的功能點(diǎn)數(shù)為31 個(gè),可見(jiàn),SOA體系結(jié)構(gòu)的采用減小了整個(gè)軟件項(xiàng)目的開(kāi)發(fā)規(guī)模和工作量。
6 結(jié)束語(yǔ)
本文在研究全功能點(diǎn)方法及BPMN 的基礎(chǔ)上,應(yīng)用了全功能點(diǎn)方法估算SOA系統(tǒng)的規(guī)模,從而為SOA系統(tǒng)的規(guī)模估算提供一種新的思路。本文不僅定義了全功能點(diǎn)方法到BPMN 的映射規(guī)則,給出了全功能點(diǎn)方法估算SOA系統(tǒng)規(guī)模的步驟,并且通過(guò)一個(gè)實(shí)例說(shuō)明這種方法的使用。實(shí)踐證明,該方法在SOA系統(tǒng)規(guī)模的估算上起到了良好的效果。通過(guò)更多的實(shí)踐繼續(xù)研究全功能點(diǎn)方法及BPMN 的映射關(guān)系,從而能夠更精確地估算SOA系統(tǒng)規(guī)模,為整個(gè)SOA項(xiàng)目估算奠定堅(jiān)實(shí)的基礎(chǔ)。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:全功能點(diǎn)在SOA系統(tǒng)規(guī)模估算中的應(yīng)用
本文網(wǎng)址:http://www.oesoe.com/html/support/1112155107.html