- 相關(guān)推薦
SWEBOK的軟件工程知識分類(lèi)模型及算法
摘要:軟件組織內部智慧資產(chǎn)的有效組織和管理一直是一個(gè)懸而未決的問(wèn)題。將文本分類(lèi)技術(shù)引入到軟件工程知識分類(lèi)領(lǐng)域,首先綜合分析了軟件工程領(lǐng)域知識的基本類(lèi)型和特性:之后依據這些特性結合軟件工程知識體系(SWEBOK:Software Engineering Body of Knowledge),提出了一個(gè)軟件工程知識的分類(lèi)模型和算法;最后通過(guò)實(shí)驗驗證了提出的模型和算法的有效性。實(shí)驗結果表明,該模型和算法具有良好的分類(lèi)性能,為軟件工程知識的有效分類(lèi)提供了一種途徑。
關(guān)鍵詞:軟件工程知識體系;知識分類(lèi);軟件工程;文本分類(lèi);分類(lèi)算法
引言
軟件的開(kāi)發(fā)是人類(lèi)有史以來(lái)最為復雜的知識高密集活動(dòng)之一,其最終的輸出產(chǎn)品只是IT知識和應用領(lǐng)域知識的高度凝聚,更多的個(gè)人技能、應用解決方案、最佳實(shí)踐、經(jīng)驗和教訓、設計模式等相關(guān)知識都堙滅于軟件開(kāi)發(fā)過(guò)程中,或者隱藏和散落在冗長(cháng)、雜亂的(電子)文檔和數據庫中。如何促使這些隱藏著(zhù)的知識顯性化?如何合理地組織和有效地管理這些智慧資產(chǎn)來(lái)形成一個(gè)企業(yè)內部的智慧資產(chǎn)庫以供將來(lái)重用?這些一直是軟件工程中的知識管理所關(guān)注的重點(diǎn)12J。
就軟件工程領(lǐng)域來(lái)說(shuō),與之相關(guān)的研究已經(jīng)持續了10多年,已有的工作可以總結為以下幾個(gè)方面(1)基于人工智能的專(zhuān)家系統;(2)基于過(guò)程經(jīng)驗的軟件工程知識庫,如CBR、BORE和經(jīng)驗工廠(chǎng)(Experience Factory)等:(3)與單項軟件開(kāi)發(fā)活動(dòng)相結合的知識獲取工具等。這些研究從不同層面、不同程度上解決了上述問(wèn)題。然而仍有以下幾點(diǎn)需要深入探討:(1)缺乏有效的手段來(lái)對軟件組織相關(guān)智慧資產(chǎn)進(jìn)行有效地、合理地組織和分類(lèi);(2)完整性問(wèn)題:未能對軟件工程知識進(jìn)行全面地分析和覆蓋:(3)相關(guān)自動(dòng)化支持工具的缺乏。
要實(shí)現軟件工程領(lǐng)域知識的有效組織和管理,其核心點(diǎn)之一就是要有一個(gè)骨干分類(lèi)體系(Backbone Taxonomy)以作為相關(guān)知識組織和分類(lèi)的基本依據,而事實(shí)上這個(gè)骨干分類(lèi)體系目前已經(jīng)存在,這就是軟件工程知識體系(SWEBOK-Software Engineering Body of Knowledge)。它由IEEE.CS和ACM發(fā)起并聯(lián)合全球軟件工程專(zhuān)家而制定,目前已成為國際標準(ISO/IEC TR 19759)。SWEBOK將軟件工程分為11個(gè)知識域,每個(gè)知識域再細分為若干知識子域,以此類(lèi)推共形成四級的骨干分類(lèi)樹(shù)。它共涵蓋178個(gè)分類(lèi)標識,數萬(wàn)條軟件工程領(lǐng)域術(shù)語(yǔ)。但迄今為止,卻鮮見(jiàn)將其應用到知識分類(lèi)的相關(guān)報導。
本文旨在利用SwEBOK作為骨干分類(lèi)體系,結合文本分類(lèi)技術(shù),研究軟件工程相關(guān)智慧資產(chǎn)的有效組織和分類(lèi)問(wèn)題。首先概括了軟件工程的領(lǐng)域知識的基本類(lèi)型,并對其特性進(jìn)行了分析;之后結合SWEBOK和文本分類(lèi)技術(shù),提出了一個(gè)軟件工程知識的分類(lèi)模型;最后給出了分類(lèi)算法并對其分類(lèi)性能的驗證。
1軟件工程領(lǐng)域知識的基本類(lèi)型及其特性理論上,~切在軟件開(kāi)發(fā)過(guò)程中用到和產(chǎn)生的知識都可以被歸結為軟件工程知識。盡管其表現形式多種多樣,但基本上可以歸結為三類(lèi):(1)過(guò)程經(jīng)驗(Process Experiences),軟件開(kāi)發(fā)的整體過(guò)程即是~種實(shí)踐案例知識(Practice Case):
(2)個(gè)人技能(Personal Skills),留存在軟件組織成員的頭腦之中;(3)軟件工程的知識$,]品(Knowledge Artifacts),表現形式是一些顯性化的文檔。
1.1過(guò)程經(jīng)驗記錄軟件開(kāi)發(fā)的過(guò)程經(jīng)驗是必要的,一個(gè)不能吸取過(guò)去失敗教訓的團隊勢必要犯同樣的錯誤;一個(gè)不能重用過(guò)去成功經(jīng)驗的組織則會(huì )重復地發(fā)明輪子?疾燔浖^(guò)程經(jīng)驗,其主要特性包括:(1)依賴(lài)性:高度依賴(lài)于特定的軟件項目;(2)不規范性:很難找到一個(gè)共用的模型適用于所有的軟件項目;(3)重用性:相似的軟件項目,其過(guò)程經(jīng)驗可以高度的重用?。
依據上述特性,可以使用下述方法捕獲之:(1)綜合參照CMMI、RUP等軟件過(guò)程模型制定一個(gè)通用模板;(2)將每一新的軟件項目生成為此模板的一個(gè)實(shí)例。
1.2個(gè)人技能軟件組織成員的個(gè)人技能是軟件組織最為寶貴的財富,軟件的開(kāi)發(fā)歸根結底就是相關(guān)人員個(gè)人技能的綜合應用。它的主要特性包括:(1)隱性:所有的個(gè)人技能都隱藏在組織成員的頭腦中,不易捕獲;(2)高價(jià)值性:組織成員的知識水平直接決定了軟件產(chǎn)品的質(zhì)量;(3)不穩定性:隨著(zhù)組織成員的離開(kāi),此智慧資產(chǎn)也會(huì )隨之流失。正是這些特性使得個(gè)人技能顯性化和有效捕獲成為最為棘手的問(wèn)題之一。
對個(gè)人技能的捕獲方式等同于過(guò)程經(jīng)驗:(1)制定一個(gè)人技能描述模板;(2)將每一組織成員的個(gè)人技能生成為此模板的一個(gè)實(shí)例。
1.3知識制品軟件開(kāi)發(fā)過(guò)程中產(chǎn)生的各種以電子方式存在的模型、圖表、文檔、代碼、方案以及組織內部的圖書(shū)等等各種文本文檔皆可被視作知識制品。它們是組織中最為直接、最易管理的智慧資產(chǎn),因為它們已經(jīng)被顯性化了。對其處理方式,我們直接以文本形式進(jìn)行表示。
2基于SwEBoK的軟件工程知識分類(lèi)模型
2.1 SWEBOK作為骨干樹(shù)的分類(lèi)體系知識分類(lèi)的一個(gè)重要檢驗標準就是其分類(lèi)體系中類(lèi)別標識的共識性和共享性,因為如果分出一個(gè)大家都不認同的類(lèi)還不如不分類(lèi)。由于SWEBOK的概念體系經(jīng)過(guò)了全球軟件工程專(zhuān)家lO多年的反復校驗和核準,以其作為骨干分類(lèi)體系具有廣泛的共享性和共識性。其前兩級的分類(lèi)體系如圖l所示。
2.2軟件工程知識分類(lèi)模型知識分類(lèi)是知識管理領(lǐng)域最為重要的研究?jì)热葜,它可以被看作是分?lèi)技術(shù)在知識管理研究領(lǐng)域的應用和深化?梢钥吹结槍Σ煌(lèi)型的軟件工程知識,它們遵循不同的分類(lèi)過(guò)程。對于過(guò)程經(jīng)驗和個(gè)人技能,經(jīng)過(guò)知識表示之后,它們直接被歸入SWEBOK骨干分類(lèi)體系的某一類(lèi)別下。而知識制品則遵循著(zhù)預處理、特征選擇和分類(lèi)器分類(lèi)的一般過(guò)程。首先要將待分類(lèi)的知識制品進(jìn)行預處理,從而生成特征向量的集合;特征選擇算法則對特征向量的全集進(jìn)行降維處理,從而得到較小規模的特征向量子集;最后,分類(lèi)器根據降維后的特征子集,將知識制品歸入到SWEBOK骨干分類(lèi)體系的某一類(lèi)別下。此分類(lèi)模型可被分解為以下四個(gè)部分:
SWEBOK骨干分類(lèi)樹(shù):依據SWEBOK 2004(Iron)版所提供的178個(gè)具有分類(lèi)繼承關(guān)系(Hierarchical)的軟件工程概念術(shù)語(yǔ),組織形成一個(gè)骨干分類(lèi)樹(shù),作為領(lǐng)域知識最終歸屬類(lèi)別的基本框架。此外,軟件組織還可以根據自身的具體情況對此骨干分類(lèi)樹(shù)進(jìn)行靈活的定制。
待分類(lèi)知識源:如第1節所述,軟件工程領(lǐng)域知識總體上可被分為三個(gè)基本類(lèi)型,不同類(lèi)型的知識會(huì )有不同的處理模式(見(jiàn)2.3節)。
訓練集:用以對分類(lèi)器進(jìn)行訓練以提高其學(xué)習能力,訓練集的選擇對分類(lèi)器的分類(lèi)效果有著(zhù)重要的影響(具體訓練集的選擇見(jiàn)第4節)。
知識分類(lèi)過(guò)程:包括訓練過(guò)程(圖2中虛線(xiàn)所示)和應用過(guò)程(圖2中實(shí)線(xiàn)所示),詳見(jiàn)2.3節。
2.3三種類(lèi)型知識的分類(lèi)方式就過(guò)程經(jīng)驗和個(gè)人技能來(lái)說(shuō),由于其在知識表示的過(guò)程中已經(jīng)以結構化的方式得以組織,因而它們的分類(lèi)方式較為簡(jiǎn)單。定義E={月,...,P}為過(guò)程經(jīng)驗的全集,其中刀=搗,磊?..量)∈E為一具體的項目實(shí)例,5為一項目實(shí)例中的具體信息,如:項目名稱(chēng)、項目經(jīng)理、活動(dòng)名稱(chēng)、流程信息和體系結構等。
那么過(guò)程經(jīng)驗的分類(lèi)算法(1)為:
f:E-'巳(1)其中c疊為SWEBOK骨干分類(lèi)體系中一固定的類(lèi)別一過(guò)程經(jīng)驗類(lèi),亦即:將過(guò)程經(jīng)驗直接映射到分類(lèi)體系中。
個(gè)人技能的處理方式與過(guò)程經(jīng)驗等同。
最為復雜也是最為核心的是知識制品的分類(lèi),其處理方法我們采用文本分類(lèi)技術(shù),總體上分為訓練過(guò)程和應用過(guò)程。在訓練過(guò)程中,訓練集經(jīng)過(guò)預處理被表示成特征向量,特征向量經(jīng)過(guò)降維(本文采用特征選擇的方式)后被分類(lèi)器處理,完成一個(gè)訓練的周期。而在應用過(guò)程中,文本經(jīng)過(guò)預處理生成的特征向量直接被分類(lèi)器處理。分類(lèi)器將其與訓練過(guò)程得到的類(lèi)別模式逐一比較,依據分類(lèi)算法計算出文本最終所屬的類(lèi)別。
3知識分類(lèi)算法3.1預處理計算機能夠自動(dòng)分類(lèi)的前提是待分類(lèi)文本已經(jīng)被表示成可被計算的數據。向量空間模型(VSM)是使用較多且效果較好的表示方法之--[51,在該模型中,一個(gè)文本d被看作是由一組正交向量組成的向量空間:
y(田={(^,Ⅵ),...,(,%)},其中(巧,M)表示一個(gè)特征^的二元組,w表示此特征在文本d中的權重。特征tl可以是字、詞或者其組合,但目前普遍認為詞作為特征項要優(yōu)于字和詞組。由于一個(gè)特征向量對應著(zhù)高維空間中的一個(gè)點(diǎn),因而上式又可以簡(jiǎn)化為:y(d)={wj,...,%)對于知識制品的表示,我們也采用VSM方法,但在其被表示成空間向量之前,還要進(jìn)行一些預處理,如去掉一些低頻詞、去掉停llZii-](Stop word)、去掉一些標記信息(如網(wǎng)頁(yè)標簽)等。由于中文文本的特殊性,還要進(jìn)行分詞,我們采用北航軟件所開(kāi)發(fā)的中文分詞系統BUAASEISEGt61,它在穩定性和新詞識別能力上具有一定的優(yōu)勢。
特征的權重Ⅵ計算方法主要運用TF*IDF公式,目前存在多種TF*IDF公式,本文采用了一種比較普遍的TF*DF[71算法(2): 即力=磚蒜器。
3.2基于互信息的特征選擇經(jīng)過(guò)預處理后的知識制品,其特征向量的維數依然很高(動(dòng)輒數十萬(wàn)),需要在盡量不損失分類(lèi)信息的情況下生成一個(gè)新的低維向量,這個(gè)過(guò)程稱(chēng)作降維。常用的降維方法有特征選擇和特征抽取,由于特征選擇的計算復雜性較低,因而被大量的采用。
常用的特征選擇方法有:文檔頻率(DocumentFrequency)、互信息(Mutual Information)、Chi平方(f),信息增益(1G:Information Gain)等。Yang等人對各種特征選擇算法進(jìn)行了廣泛的研究,結果發(fā)現f和信息增益方法相較于其他方法,其特擇效果最優(yōu)用。在本文的研究中,我們采用信息增益方法來(lái)進(jìn)行降維,它實(shí)際上反映的是特征在文本中出現與否能為確定當前文檔所屬類(lèi)別做出的貢獻值。其算法(3)具體描述如下:
輸入:文本的特征向量r(d);分類(lèi)體系c:
輸出:降維后的特征向量r(d);步驟:
1)按如下公式計算每個(gè)特征向量的信息增益值:
G(f)=一Σ:,P(c。)Ioge(cJ)+P(f)Σ:.£(c,It)logP,(c,I,)+只(了)Σ:.P[T)logP,(c,li) (3)其中:只Q)表示一篇文本屬于類(lèi)別cj概率;eat)標識特征項t在一篇文本中出現的概率;e∽標識特征項t不在一篇文本中出現的概率;P(c。If)表示特征項t在屬于類(lèi)別白的文本中出現的概率;只(q I丁)表示特征項t在屬于類(lèi)別島的文本中出現的概率。
2)將文本特征按照式(3)計算出的信息增益值由大到小排列,取其前K個(gè)特征向量構成最終的特征空間,這樣就達到了降維的目的,其維數為K。
3.3基于k-NN的分類(lèi)算法基于機器學(xué)習的分類(lèi)算法目前已有數十種,而以Rocchio、KNN和SVM性能最為突出I習。Yang等人對這些算法進(jìn)行了全面的比較,結果表明KNN和SVM算法無(wú)論是分類(lèi)性能還是算法的健牡性、可擴展性都較其他算法有顯著(zhù)的優(yōu)j判51。我們采用KNN算法來(lái)構建軟件工程領(lǐng)域知識的分類(lèi)器。
rA7N(K Nearest Neighbor)算法的基本思路是:在給定新的文本后,考慮在訓練集中與該新文本距離最近(最相似)的K篇文本,根據這K篇文本所屬的類(lèi)別判定新文本所屬的類(lèi)別,具體的算法(4)描述如下:
輸入:訓練集出分類(lèi)體系C;待分類(lèi)的文本集d;輸出:待分類(lèi)文本的類(lèi)別;步驟:
1)對待分類(lèi)的文本進(jìn)行預處理,并使用式(2)計算其權重,得到待分類(lèi)文本的向量表示V(d7);2)在訓練文本集中選出與新文本最相似的K個(gè)文本,計算公式為:
Sim(d.,d』)=Σ既x%其中,K值的確定目前沒(méi)有很好的方法,一般采用先定一個(gè)初始值,然后根據實(shí)驗測試的結果調整K值,一般初始值定為幾百到幾千之問(wèn)。3)在新文本的K個(gè)鄰居中,依次計算每類(lèi)的權重,計算公式如下:
p(j,G)2藝Sim(i,4)y(4,c:) (5)af扣州其中,i為新文本的特征向量,Sire(,2,i)為相似度計算公式,與(4)式相同。而y窿,£)為類(lèi)別屬性函數,即。如果黿屬于類(lèi)G,那么函數值為l,否則為0。
4)比較類(lèi)的權重,將文本分到權重最大的那個(gè)類(lèi)別中。
4實(shí)驗結果我們對本文提出的知識分類(lèi)算法進(jìn)行了實(shí)驗驗證,選用的數據集包括:(1)用手工方式創(chuàng )建的數10項過(guò)程經(jīng)驗和個(gè)人技能;(2)SWEBOK中所給出的169篇參考文獻、NASAC2004(全國軟件與應用學(xué)術(shù)會(huì )議)的197篇論文以及從美國CMU大學(xué)提供了935篇計算機科研論文數據,算法性能的評價(jià)則采用精確度和召回率以及結合兩者的FlMeasure。
對于訓練集和測試集的選擇,其方法如下:將這些數據集按照所屬類(lèi)別進(jìn)行手工分類(lèi),然后平均分成十份,選擇其中九份作為訓練集,選擇其中一份作為測試集。運行分類(lèi)算法,共執行10次分類(lèi)操作,計算其平均值,實(shí)驗結果如表1所示。
知識類(lèi)型準確率召劇率FI度量過(guò)程經(jīng)驗100% 100% 100%個(gè)人技能100% 100% 100%知識制品879%8208%84.38%觀(guān)察表1的結果數據,我們可以發(fā)現過(guò)程經(jīng)驗和個(gè)人技能的分類(lèi)準確率、召回率和F1度量值都很高(皆為100%)。
通過(guò)定性分析我們可以得知產(chǎn)生這種現象的原因:這兩種類(lèi)型的軟件工程知識皆采用了直接映射的分類(lèi)算法。輸出很好的分類(lèi)效果是必然的。對于知識制品來(lái)說(shuō),它的F1度量值也超過(guò)了84%.這表明以SWEBOK為骨干分類(lèi)樹(shù)來(lái)進(jìn)行軟件工程知識的組織和分類(lèi)是可行,旦采用文本分類(lèi)算法進(jìn)行知識制品的分類(lèi)也是行之有效的。
5結論
軟件組織內部智慧資產(chǎn)的有效組織和管理仍舊是一個(gè)開(kāi)放的課題,就目前來(lái)看尚未有一個(gè)銀彈(Silver Bullet)以解決這個(gè)問(wèn)題。本文的創(chuàng )新之處就在于將文本分類(lèi)技術(shù)引入到軟件工程領(lǐng)域。以SWEBOK作為骨干分類(lèi)體系,為軟件工程知識的自動(dòng)分類(lèi)提供了一種新的解決途徑,并通過(guò)實(shí)驗驗證了所提出的模型和算法的有效性。
事實(shí)上,文本分類(lèi)的技術(shù)和方法是通用的,本文提出的模型和算法也是通用的,如果我們將SWEBOK骨干分類(lèi)體系換作其他領(lǐng)域的分類(lèi)體系,將過(guò)程經(jīng)驗模板和個(gè)人經(jīng)驗模板換作其他模板,則可以構造一個(gè)面向其他領(lǐng)域的知識分類(lèi)器。
就軟件組織來(lái)說(shuō),其內部智慧資產(chǎn)的規模遠沒(méi)有Web上的資源那樣巨大。但是它對分類(lèi)的準確率和召回率的要求卻非常高。就目前來(lái)說(shuō),改進(jìn)算法仍然是提高分類(lèi)準確率和召回率的最為有效的途徑。因此,我們下一步的工作就是通過(guò)引入更為綜合的特征賦權函數、改進(jìn)特征選擇算法和通過(guò)對領(lǐng)域知識的運用以改進(jìn)分類(lèi)算法等,來(lái)迸~步提高其分類(lèi)的性能。此外,在更大規模知識集上的訓練和測試也是我們努力的方向。

【SWEBOK的軟件工程知識分類(lèi)模型及算法】相關(guān)文章:
基于大氣物理模型的快速視覺(jué)優(yōu)化去霧算法03-17
改進(jìn)logit多路徑分配模型及其求解算法研究03-07
利用中心點(diǎn)信息的活體指紋分類(lèi)算法03-19