劉麗娟 楊 一 張 胤
(國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心上海分中心 上海 201315)
基于設(shè)計文檔的組件提取研究
劉麗娟 楊 一 張 胤
(國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心上海分中心 上海 201315)
為了從目標系統(tǒng)有效提取構(gòu)件,達到軟件復(fù)用的目的,文章提出了一種基于設(shè)計文檔的組件提取技術(shù)。該方法通過借助計算機輔助軟件工程工具設(shè)計目標系統(tǒng),針對該設(shè)計文檔提取概念組件及系統(tǒng)的體系結(jié)構(gòu),并使用可擴展標記語言元素和特征元匹配度驗證提取結(jié)果的準確性,為軟件復(fù)用提供了依據(jù)。實驗通過兩個實例:產(chǎn)品資源管理平臺和轉(zhuǎn)專業(yè)系統(tǒng),說明該方法的應(yīng)用,其中文件上傳概念組件和數(shù)據(jù)轉(zhuǎn)儲概念組件得到提取和驗證,并成功復(fù)用實現(xiàn)系統(tǒng)功能。結(jié)果表明,該方法不僅提供可重用的構(gòu)件框架,而且提高了軟件復(fù)用的成功率。
組件提?。桓拍罱M件;語義分析;軟件復(fù)用
20 世紀 60年代以來的“軟件危機”,讓人們明白了軟件批量生產(chǎn)和提高質(zhì)量的重要性。軟件復(fù)用是提高軟件生產(chǎn)力和質(zhì)量的一種重要技術(shù):通過吸收和借鑒以往項目開發(fā)的知識與積累的經(jīng)驗,既充分利用了已有開發(fā)成果,又消除了開發(fā)過程的重復(fù)性工作,提高軟件開發(fā)效率和軟件質(zhì)量,大大減輕維護工作。
然而軟件復(fù)用過程并不順利,具體存在以下三個問題:(1)系統(tǒng)需要哪些構(gòu)件;(2)構(gòu)件以何種形式存在,提供了什么功能和接口;(3)如何建立映射關(guān)系,查找匹配構(gòu)件。現(xiàn)有工作中,復(fù)用過程較多地關(guān)注構(gòu)件檢索與裝配方面,即問題(3);而對于問題(1)和(2),如何提取構(gòu)件,往往缺少深入的研究。
可復(fù)用構(gòu)件的提取直接影響著軟件復(fù)用的效率?,F(xiàn)階段,常用的組件提取方法有領(lǐng)域分析法[1]和面向服務(wù)分析與設(shè)計(Service Oriented Analysis,SOA)方法[2]。領(lǐng)域分析法借鑒知識,較依賴于領(lǐng)域?qū)<襾頉Q策組件的切分,應(yīng)用不具備普遍性;SOA 法盡管能從底層對復(fù)用構(gòu)件進行分割,但要求有中立的接口,組件切分粒度較難把握;此外,Caldiera 等[3]提出的軟件度量學(xué)方法對組件進行權(quán)值評估,其結(jié)果具有較大的主觀性。這些方法靈活性上受到很大限制,造成復(fù)用成功率較低,都未能從根本上給出通用的組件提取實際方案。
目前計算機輔助軟件工程(Computer Aided Software Engineering,CASE)工具應(yīng)用廣泛,用于對系統(tǒng)開發(fā)的規(guī)范設(shè)計,如 Rational Rose、Powerdesigner。本文提出了一種基于設(shè)計文檔的組件提取方法。遵循基于構(gòu)件的軟件開發(fā)思想,首先借助 CASE 工具描述目標系統(tǒng),在統(tǒng)一建模語言(Unified Modeling Language,UML)圖基礎(chǔ)上提取概念組件及系統(tǒng)體系結(jié)構(gòu);其次用可擴展標記語言(Extensible Markup Language,XML)元素和特征元匹配度指標衡量語義分析的準確性。
本文第 2 節(jié)介紹基于構(gòu)件的軟件開發(fā)的基本概念;第 3 節(jié)介紹了基于設(shè)計文檔得到概念組件的方法;第4節(jié)闡述了使用 XML元素和特征元匹配度指標進行驗證的過程;第 5 節(jié)結(jié)合實例闡明該方法的應(yīng)用;第 6 節(jié)總結(jié)全文并給出下一步的工作設(shè)想。
基于構(gòu)件的軟件開發(fā)[4]能夠提高軟件復(fù)用效率。它包含以下幾個階段的生命周期:第一階段為需求獲取,采用仿真辦法描述客觀世界的人工系統(tǒng);第二階段是領(lǐng)域分析,分析客觀系統(tǒng),設(shè)計出邏輯系統(tǒng);第三階段為系統(tǒng)集成,找到合適構(gòu)件類,將其生成實例,用過程控制語言描述出系統(tǒng)中的各子系統(tǒng),生成各種輸入輸出構(gòu)件實例等;最后集成系統(tǒng),通過實際運行不斷修改,直到用戶完全滿意為止。
構(gòu)件是指在軟件系統(tǒng)中可獨立部署、接口由契約指定且多由第三方提供的可組裝軟件實體。它具有相對獨立功能,可以明確辨識,和語境有明顯依賴關(guān)系。一般構(gòu)件的內(nèi)涵包含如下三部分:
(1)構(gòu)件實體:包括代碼、服務(wù)和系統(tǒng)三方面內(nèi)容;
(2)構(gòu)件文檔:包括需求規(guī)約、系統(tǒng)構(gòu)架、設(shè)計文檔和測試案例等各種具有復(fù)用價值的軟件資源;
(3)對軟件構(gòu)件的要求:分為對外部接口、內(nèi)部封裝(支持復(fù)用)的要求,可提供技術(shù)文檔的支持。
可復(fù)用性是軟件構(gòu)件的本質(zhì)特征,是評價構(gòu)件質(zhì)量好壞的重要因素。組件準確提取是查找與組裝的前提,提取過程主要是針對目標系統(tǒng)(待開發(fā)的應(yīng)用系統(tǒng)),目的是得到概念組件(滿足業(yè)務(wù)需求的組件),提取是為了成功的復(fù)用。提取包括系統(tǒng)分解與度量兩個主要步驟,二者在實施過程中相互依存。系統(tǒng)分解需要一種構(gòu)件識別手段,度量用于驗證分解結(jié)果。
3.1 設(shè)計文檔
CASE 是一套規(guī)范化的工具,包含圖形工具、代碼生成器等。CASE 工具覆蓋軟件開發(fā)生命周期各階段,能夠加快開發(fā)速度,保證軟件的質(zhì)量。目前主流的 CASE 語言規(guī)范是UML[5],UML 用于系統(tǒng)可視化建模,是對產(chǎn)品進行說明、可視化和文檔編制的一種標準語言。使用 UML 描述系統(tǒng),一方面,形成了可視化標準圖對系統(tǒng)規(guī)范建模,幫助全面理解系統(tǒng);另一方面,CASE 中的組件圖有助于提取概念組件。設(shè)計文檔主要指 CASE 工具用于系統(tǒng)建模的文檔。
3.2 抽取概念組件
概念組件是指設(shè)計文檔中描述的組件,要求符合業(yè)務(wù)需求[6]。
借助 CASE 工具 ArgoUML 建模,能夠得到存儲為 XML 格式的 UML 圖。以產(chǎn)品資源管理平臺為目標系統(tǒng),該平臺通過聚合產(chǎn)品資源(文檔、安裝文件等),以達到管理產(chǎn)品的目的。其中文件系統(tǒng)是平臺核心子系統(tǒng),提供產(chǎn)品資源文件的上傳、格式轉(zhuǎn)換和下載等功能。實現(xiàn)功能包括文件管理(fileManage)、文件上傳(fileUpload)、用戶信息管理(userManaInfo)、登錄(login)等。圖1組件圖中,fileManage 與 userItemInfo 組件都依賴fileUpload 組件;buyHandle 組件與 userItemInfo組件相互依賴,并依次與 userManaInfo、login 組件形成了層次的依賴關(guān)系。
圖1 產(chǎn)品資源平臺組件圖Fig. 1 Component diagram for education resources platform
為了準確理解并分割出復(fù)用構(gòu)件,遵循組件劃分原則[7]:(1)類與其他類的交互方式;(2)服務(wù)類單獨劃分;(3)類與其他類的依賴。概念組件從組件名稱(name)、輸入?yún)?shù)(Input para)、輸出參數(shù)(Output para)、返回值(Return value)、提供接口(Interface)等方面進行描述。借助 ArgoUML 工具將CASE 設(shè)計文檔保存為 XML 格式,并解析 XML文檔,對照功能描述、接口等抽取概念組件。
以 fileManage 類為例,其 Upload、Transfer接口因涉及到上傳功能,據(jù)此原則將其劃分到fileUpload 組件類。如圖2 所示,fileUpload 組件包含 id、size 等屬性及 Upload、FileShow、FileTransfer 等方法。
圖2 FileUpload 組件的類圖Fig. 2 Class diagram for FileUpload component
3.3 抽取體系結(jié)構(gòu)
體系結(jié)構(gòu)表明概念組件之間存在的關(guān)系。兩個概念組件間可建立組裝關(guān)系,也可不具備組裝關(guān)系[8]。在 ArgoUML 生成的 XML 文檔(UML圖)中,包含了組件的語義特征:name 標識和incoming 標識。
(1)name 標識
XML 文檔會為 UML 圖中的每個類自動分配一個 name 標識,作為劃分 XML 文檔中的標識對象的特征。例如:在 XML 文檔中,name = 'manage_item' 表明這是一個 manage_item 名稱的標識對象,代碼中 visibility、isSpecification 分別表明可見性與規(guī)格屬性,具體如圖3 所示。
圖3 XML 文檔中的 “name” 標識Fig. 3 “name” in XML documentation
(2)incoming 標識
XML 文檔中,標識反映了元素 A 與 B 依賴特征。例如:在XML 片斷中(圖4),體現(xiàn)了 manage_item 與 add_ item 依賴關(guān)系。
圖4 XML 文檔中的 “incoming” 標識Fig.4“incoming” in XML documentation
根據(jù)組件的語義特征,定義六元組
由于體系結(jié)構(gòu)刻畫的是概念組件間的調(diào)用依賴關(guān)系[9],所以重點考察 XML 文檔的時序圖部分。為了得到 XML 文檔中的體系結(jié)構(gòu),本文提出基于上下文約束的 UML 序列圖分析法進行分析,步驟如下:
(1)記概念組件集合為 C={C1, C2,…, Ck};記XML 文檔中具有 name 標識的對象集合為 X={X1,X2,…, Xn},Xn為第 n 個對象的標識符;記體系結(jié)構(gòu)集合為 G,初始 G 為空集;
(2)遍歷概念組件集合 C,在集合 X 中,如果查找到標識對象 Xn的 name 標識與概念組件 Ci的名稱 cName 一致,并存在從概念組件 Ci到 Cj的 r聯(lián)系,組件間傳遞的參數(shù)是 p,則記為
(3)重復(fù)步驟(2),直到集合 C 為空,得到體系結(jié)構(gòu)集合 G。
上述過程的體系結(jié)構(gòu)的抽取流程如圖5 所示。最終得到包含六元組的體系結(jié)構(gòu)集合 G。
本文提出的方法,將概念組件作為構(gòu)件復(fù)用的目標,賦予了概念組件在體系結(jié)構(gòu)下的領(lǐng)域含義,為后續(xù)的系統(tǒng)構(gòu)建、軟件復(fù)用提供依據(jù)。
在以上設(shè)計文檔的分析基礎(chǔ)上,接著對其進行語義驗證,以衡量語義分析的準確性,提高復(fù)用成功率。
4.1 可擴展標記語言元素驗證
XML元素驗證是指通過解析 XML 文檔,驗證對應(yīng)組件符號的 XML元素??紤]組件圖在Argo UML 工具下轉(zhuǎn)換成為 XML 文檔,提取得到的概念組件同樣用 XML 語言進行描述,所以二者具有共同的語言基礎(chǔ)[10]。XML元素代表了組件的特征。這樣,通過編寫 XML parser 解析器[11]解析 XML 文檔,運用 matcher 迭代進行匹配,在包含組件名稱的字符串中判斷 XML元素與組件符號是否一致對應(yīng)。解析器 XML parser 的部分代碼如下:
圖5 分析體系結(jié)構(gòu)的流程Fig. 5 Process of system architecture analysis
4.2 特征元匹配度
特征元是屬性、方法、功能的集合。以屬性為例,包含構(gòu)件類型(cType)、參數(shù)類型(pType)等基本元素;以方法為例,包含前繼(pre)、返回值(returnType)等基本元素;以功能為例,包含功能描述(funcDes)、對象格式(objectFormat)基本元素。表1 給出了屬性、方法、功能的語法和語義特征元素。
表1 屬性、方法和功能的特征元素Table 1 Characteristic element of property, method and function
本文用匹配度衡量元素的聯(lián)系程度,分為精確匹配和部分匹配兩種情況。
(1)精確匹配:上述元素中,若兩個屬性所有的元素都匹配成功,則匹配度為 1;
(2)部分匹配:若兩個屬性中部分元素匹配成功,則匹配度由公式(1)計算:
其中,MF表示基本元素的語法匹配度;MY表示基本元素的語義匹配度;pj代表屬性中的語法元素;pk代表屬性中的語義元素;n 為語義元素的個數(shù)。
這樣得到概念組件的各部分特征元匹配度。
按照各個組件圖中的組件重要性,分配權(quán)值Wi,由公式(2)計算整體概念組件的匹配度 MA:
最后將 MA與閾值比較,如果 MA在閾值范圍內(nèi),則通過驗證,說明語義分析的概念組件結(jié)果符合設(shè)計者的要求;如果 MA不在閾值范圍內(nèi),則結(jié)束,需要重新進行組件提取。根據(jù)統(tǒng)計學(xué)規(guī)律,當閾值取 0.7(推薦閾值)[12]時,匹配度結(jié)果與設(shè)計預(yù)期較為符合,因此閾值一般采用 0.7。
實驗通過兩個實際系統(tǒng)說明基于設(shè)計文檔的組件提取方法的應(yīng)用。實際系統(tǒng)為產(chǎn)品資源管理平臺和轉(zhuǎn)專業(yè)系統(tǒng)。產(chǎn)品資源管理平臺的文件子系統(tǒng)中,需文件入庫和批量導(dǎo)出操作,含文件格式轉(zhuǎn)換功能。轉(zhuǎn)專業(yè)平臺中,涉及課程信息批量錄入,需打印學(xué)生信息的操作。綜合以上實際業(yè)務(wù),提取概念組件 fileUpload 和數(shù)據(jù)轉(zhuǎn)儲dataDump,分別如表2 和表3 所示。
表2 fileUpload 概念組件Table 2 Concept component of FileUpload
表3 dataDump 概念組件Table 3 Concept component of DataDump
經(jīng)過分析,文件子系統(tǒng)的體系結(jié)構(gòu)如圖6 所示,fileManage 包含 fileUpload 和 fileCategory,概念組件 fileUpload 依賴 fileTransfer 組件。
圖6 文件子系統(tǒng)體系結(jié)構(gòu)Fig. 6 System architecture of file subsystem
提取概念組件和分析體系結(jié)構(gòu)后,接下來對語義分析結(jié)果進行驗證:首先對 XML元素進行驗證,得到結(jié)果{fileManage,fileUpload,fileTransfer},結(jié)果與組件圖(圖2)中的組件名稱一致,符合 XML元素驗證;然后計算各個概念組件的特征元匹配度,如表4所示。
表4 各個概念組件特征元素的匹配度Table4 Matching degree of each concept component by its Characteristic element
結(jié)果表明,上述概念組件(fileManage、fileUpload、fileCategory、fileTransfer)的整體特征元匹配度與閾值 0.7(這里取推薦閾值)進行比較,大于 0.7,驗證得到了通過。該方法的實際結(jié)果為下一步軟件復(fù)用提供基礎(chǔ),反映了設(shè)計者的意圖。
在接下來的軟件復(fù)用中,運用本文提出的方法得到兩個概念組件的實際需求后,通過在構(gòu)件庫中(如上海構(gòu)件庫)進行查找并結(jié)合自行開發(fā)的方式,獲得相應(yīng)的實體構(gòu)件,進行系統(tǒng)裝配。由于接口設(shè)計規(guī)范且具有良好通用性[13],最終,兩個系統(tǒng)都成功實現(xiàn)了文件入庫和數(shù)據(jù)存儲的功能,重用了文件上傳、數(shù)據(jù)轉(zhuǎn)儲。整個過程提供可重用的構(gòu)件框架,消除了軟件開發(fā)的重復(fù)勞動,同時,構(gòu)件接口相對獨立,避免重復(fù)編碼可能引入的錯誤,從整體上提高了軟件復(fù)用效率。
為比較本文方法的效果,將本文方法與領(lǐng)域?qū)<曳椒ㄟM行對比。考慮 SOA 方法針對大數(shù)量的組件分析不具備可操作性,軟件度量方法采用標準不一,難以通用,因此不予比較。分別運用兩種方法,對 10 個、20 個、…、100 個構(gòu)件進行提取,統(tǒng)計復(fù)用成功率情況,結(jié)果如圖7 所示。由圖7 可以看到,本文方法整體的復(fù)用成功率都較領(lǐng)域?qū)<曳椒ǜ?。領(lǐng)域?qū)<曳椒ㄓ捎谟幸欢ǖ闹饔^性,因此裝配復(fù)用效果不理想。而本文方法提供通用的可重用構(gòu)件框架,成功率較高,基本在 0.6 左右,更符合實際需求。
圖7 兩種方法下的復(fù)用成功率情況Fig. 7 Reuse success rate of two methods
基于構(gòu)件的軟件開發(fā)是軟件復(fù)用關(guān)注的重點。本文提出了基于設(shè)計文檔的組件提取方法,該方法將概念組件作為軟件復(fù)用目標,建立概念組件及體系結(jié)構(gòu)分析模型。較前人的組件提取研究工作,本文的方法摒棄了主觀性評估,增強了可操作性與通用性。本文的主要貢獻在于:(1)提出一套完善系統(tǒng)的組件提取方法;(2)提出一種完備的體系結(jié)構(gòu)分析法(基于上下文約束的UML 序列圖分析法);(3)提出一種針對概念組件的通用驗證方法,采用 XML元素驗證和特征元匹配度對提取結(jié)果進行衡量;(4)構(gòu)建一套規(guī)范的組件描述框架;(5)通過與領(lǐng)域?qū)<曳椒ㄟM行比較,證明本文方法具備較高的復(fù)用成功率。
下一步的工作將關(guān)注復(fù)用過程的后期,考慮如何實現(xiàn)目標系統(tǒng)到構(gòu)件檢索的準確定位,加強對構(gòu)件裝配的適應(yīng)性,以便高效地實現(xiàn)軟件復(fù)用。
[1] Wang D,Huang N,Ye M.Reliability anaysis of component-based software based on relationships of components [C] // IEEE International Conference on Web Services,2008:814-815.
[2] Meilicke C,Stuckenschmidt H. Analyzing mapping extraction approaches [C] // Proceedings of ISWC'2007 Workshop on Ontology Matching,2007: 25-36.
[3] Caldiera G,Basili VR.Identifying and qualifying reusable software components [J].Computer,1991, 24(2): 61-70.
[4] Farrugia J. Model-theoretic semantics for the web [C] // Proceedings of the 12th International Conference on World Wide Web, 2003: 29-38.
[5] He KQ,Jiang H, He F. Extended UML with role modeling [J]. Wuhan University Journal of Natural Science, 2001, 6(1-2): 175-182.
[6] Chen XH, Liu J, Liu ZM. Requirements monitoring for internetware: an interaction based approach [J]. Science China Information Sciences, 2013, 56(8):1-15.
[7] Wei B,Jin Z,Zowghi D, et al. Implementation decision making for internetware driven by quality requirements [J]. Science China Information Sciences, 2014, 57(7):1-19.
[8] Korthaus A,Schwind M, Seedorf S. Leveraging semantic web technologies for business component specification [J]. Web Semantics: Science, Services and Agents on the World Wide Web, 2007, 5(2):130-141.
[9] Zhang XY,Zheng L,Sun C.The research of the component-based software engineering [C] // The Sixth International Conference on Information Technology:New Generations,2009:1590-1591.
[10] Liu L,Yang C,Wang JM,et al. Requirements model driven adaption and evolution of internetware [J].Science China Information Sciences, 2014, 57(6):1-19.
[11] 葉品菊, 胡遠望. MIS 系統(tǒng)可復(fù)用軟部件研究與設(shè)計 [J]. 價值工程, 2014,33(36):215-216.
[12] Li Y,Sun KW, Yang J,et al. Model-based system configuration approach for internetware [J].Science China Information Sciences, 2013, 56(8):1-20.
[13] 邵飛, 彭蓉.一種基于領(lǐng)域知識的非功能需求建模輔助方法 [J]. 計算機學(xué)報, 2013,36(1):39-54.
Component Extraction Based on Design Documents
LIU Lijuan YANG Yi ZHANG Yin
( Shanghai Branch, Computer Network Emergency Response Technical Team/Coordination Center of China, Shanghai 201315, China )
In order to extract components from the target system effectively and achieve the goal of software reuse, a component extraction method based on design documents was proposed in this paper. Computer aided software engineering tools were used to design the target system, then concept components and system architecture were extracted from this design documents. After the accuracy of extract result was verified by extensible markup language element and matching degree of characteristic element, foundation for software reuse was provided in this way. The application of this method was illustrated through two practical applications: product resource management platform and change-major student system. During this process,concept components of fileUpload and dataDump were extracted and verified, and components which match these concept components were reused successfully for the system. The result shows that the proposed method not only provides a framework of reusable components, but also improves the success rate of software reuse.
component extraction; concept component; semantic analysis; software reuse
TP 311
A
2015-06-21
2015-07-15
劉麗娟(通訊作者),碩士,研究方向為軟件工程、數(shù)據(jù)挖掘,E-mail:liulijuan123job@126.com;楊一,碩士,研究方向為計算機網(wǎng)絡(luò)、知識發(fā)現(xiàn);張胤,學(xué)士,研究方向為信息處理、語義分析。