亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種軟件易變性預測模型的構建方法與流程

文檔序號:12120642閱讀:435來源:國知局

本發(fā)明涉及軟件度量領域,更具體地,涉及一種軟件易變性預測模型的構建方法。



背景技術:

軟件易變性:在軟件工程中,軟件的一些外部質(zhì)量特性,比如軟件缺陷、軟件可維護性等,在整個軟件的生命周期中是十分重要的特性,有研究表明,一般情況下軟件的維護成本占總成本的40-70%。軟件易變性,也叫軟件構件易變性,是指軟件中的部件有較大的概率發(fā)生變化。對軟件易變性的預測能夠幫助我們重點關注軟件的可能變化的區(qū)域,在很大程度上減少維護成本。

面向?qū)ο筌浖攘浚憾攘?,指的是將?shù)值或符號賦給實體的屬性的過程。進一步地,面向?qū)ο筌浖攘恐傅氖菍σ粋€基于面向?qū)ο笳Z言開發(fā)的軟件系統(tǒng),在面向?qū)ο筇匦陨系亩攘俊F渲?,比較有代表性的面向?qū)ο筌浖攘坑蠧&K度量。Chidamber和Kemerer在1994年發(fā)表論文提出了一套面向?qū)ο蠖攘?,簡稱C&K度量,其中包括6個方面的度量指標,分別是:類加權方法個數(shù)(WMC)、繼承樹深度(DIT)、直接子類數(shù)(NOC)、類耦合程度(CBO)、類響應集合(RFC)、類內(nèi)聚度缺乏度(LCOM)。除此之外,也有不少研究者在此基礎上,提出新的一系列度量指標。目前這些度量指標大致可以劃分為四類度量:規(guī)模類度量、耦合度度量、內(nèi)聚度度量、繼承類度量。

前饋多層感知算法:前饋多層感知器算法,又稱前饋神經(jīng)網(wǎng)絡,是一種機器學習分類算法,能夠解決線性不可分問題。一個神經(jīng)網(wǎng)絡由一個輸入層、一個或多個隱藏層和一個輸出層組成,其中各層中的節(jié)點是全連接的。訓練一個神經(jīng)網(wǎng)絡用于分類,最重要的是確定神經(jīng)網(wǎng)絡的規(guī)模,以及使用合適的代價函數(shù),通過訓練數(shù)據(jù)學習神經(jīng)網(wǎng)絡中的各個突觸的權重。

雖然面向?qū)ο筌浖攘勘旧硎且环N描述軟件在某個方面上的特征,但是由于目前缺乏對所有度量的認知,直接使用若干種面向?qū)ο筌浖攘孔鳛樘卣?,可能會遺漏軟件在某些方面的特性,但是如果把更多的度量加進特征集合內(nèi),卻會因為某些特征的高度相關,導致信息冗余,反而影響預測模型的性能。



技術實現(xiàn)要素:

本發(fā)明提供一種軟件易變性預測模型的構建方法,該方法用于預測軟件部件的變化,同時可得到軟件系統(tǒng)的維護成本的評估意見。

為了達到上述技術效果,本發(fā)明的技術方案如下:

一種軟件易變性預測模型的構建方法,包括以下步驟:

S1:以面向?qū)ο筌浖到y(tǒng)中的類為研究對象,提取軟件源代碼的結構信息;

S2:通過S1中提取到的源代碼結構信息,計算面向?qū)ο筌浖攘?,包括?guī)模類度量、耦合度度量、內(nèi)聚度度量、繼承類度量;

S3:通過對比在軟件演化中不同版本所對應的類的變化情況,通過類相似度來定義并解析出類的易變性信息,該易變性信息包括分類標簽;

S4:對S2中計算得到的面向?qū)ο筌浖攘?,對得到的度量進行分類,分別對各類度量做進一步的特征提取和選擇,得到新的特征集合;

S5:使用S3中得到的分類標簽與S4中得到的特征集合,生成軟件易變性預測模型的訓練集,使用前饋多層感知器算法訓練出預測模型。

進一步地,所述的軟件源代碼的結構信息包括程序的抽象語法樹、程序的符號表,以及類間方法屬性調(diào)用關系。

進一步地,通過Eclipse JDT得到程序的抽象語法樹,通過遍歷抽象語法樹得到符號表,進而得到相應類的方法屬性間的調(diào)用關系。

進一步地,所述類的相似度是:相對于基線版本,在對比版本的對應的類中的字段、方法,以及繼承關系等的相似情況;對于類中的字段,相似度考察的是該字段的類型,變量名是否相同;對于類中的方法,相似度考察的是該方法的方法名、參數(shù)類型、返回值類型,以及拋出異常類型是否相同。

進一步地,對S2中計算得到的面向?qū)ο筌浖攘窟M行特征提取和選擇,分別分析規(guī)模類、內(nèi)聚度、耦合度、繼承類度量與軟件易變性的相關性,選擇相關度較高的度量組成度量集合,對該度量集合進行主成分分析進行數(shù)據(jù)降維,去除冗余信息,得到一組新的特征集合,以該組特征集合作為前饋多層感知器算法的輸入即前饋神經(jīng)網(wǎng)絡的輸入層,使用收集到的訓練數(shù)據(jù)集,選擇特定的參數(shù),訓練得到軟件易變性預測模型。

與現(xiàn)有技術相比,本發(fā)明技術方案的有益效果是:

本發(fā)明方法使用相似度來定義軟件易變性,符合軟件外部屬性,如需求、功能變化時,體現(xiàn)在源代碼上的變化,使用了目前所能定義的大部分度量,得到的度量信息更為全面,并對這些原始度量使用特征提取與選擇的技術,提高了模型的計算性能,減少了因特征過多造成的信息冗余。即能夠使用更多的度量信息,又能夠避免過多的特征而影響模型性能。

附圖說明

圖1為本發(fā)明流程圖。

具體實施方式

附圖僅用于示例性說明,不能理解為對本專利的限制;

為了更好說明本實施例,附圖某些部件會有省略、放大或縮小,并不代表實際產(chǎn)品的尺寸;

對于本領域技術人員來說,附圖中某些公知結構及其說明可能省略是可以理解的。

下面結合附圖和實施例對本發(fā)明的技術方案做進一步的說明。

實施例1

本發(fā)明一種軟件易變性預測模型的構建方法,包括以下步驟:

(1)提取面向?qū)ο筌浖创a的結構信息

本方法提取軟件源代碼結構信息,為了支持一系列面向?qū)ο筌浖攘慷O計。首先,使用Eclipse JDT得到Java程序的抽象語法樹;然后通過遍歷得到的抽象語法樹節(jié)點,獲得程序中的名字定義和名字引用,進而得到管理程序?qū)嶓w的符號表。進一步地,通過對符號表的訪問,可以得到類的方法引用矩陣、方法屬性引用矩陣等信息。

(2)計算面向?qū)ο筌浖攘?/p>

通過得到的符號表、方法引用矩陣和方法屬性引用矩陣等軟件結構信息,可以對目前提出的大部分度量值進行計算,其中大致可以分為以下四類度量:

1)規(guī)模類度量

規(guī)模類度量,指的是衡量對面向?qū)ο髮嶓w的在數(shù)量和規(guī)模上的大小。通常認為,規(guī)模越大,軟件出現(xiàn)錯誤的可能性越大,維護的難度越大。其中比較有代表性的度量有:有效代碼行數(shù)(ELOC)、類字段數(shù)(FLD)、類方法數(shù)(MTHD)、局部變量數(shù)(LOCV)等。

2)耦合度度量

耦合度度量用于衡量當前模塊與其他模塊的聯(lián)系的緊密程度。通常認為耦合度較低的模塊較易理解和維護。其中比較有代表性的度量有:耦合類個數(shù)(CBO)、類的響應集合(RFC)、類屬性為類類型個數(shù)(DAC)、類中方法調(diào)用中,非該類實現(xiàn)方法的個數(shù)(MPC)等。

3)內(nèi)聚度度量

內(nèi)聚度度量主要關注類的方法之間,方法與屬性之間的交互。主要有以下度量:類內(nèi)聚缺乏度(LCOM)、方法對相似度之和與方法對數(shù)的比值(CC)、所有方法信息流之和(ICH)等。

4)繼承類度量

繼承類度量主要表示類的深度以及子類父類個數(shù)的度量。主要有:繼承深度(DIT),也就是類到繼承樹的根節(jié)點的最長路徑長度、類的子類個數(shù)(NOC)。類的祖先類個數(shù)(NOA)等。

(3)定義并收集軟件易變性歷史信息

本發(fā)明使用類的相似度(Similarity)的值定義軟件易變性,具體地:

其中對于相似度的計算,具體地:

其中,NSST為classA在版本間相同超類的個數(shù),NSF為相同字段數(shù),NSM為相同方法數(shù),NA為基線版本的屬性個數(shù),當classA在兩個版本的類名相同時,Θ為1,否則為0。

假設當前軟件有n(n>=5)個版本,根據(jù)當前軟件的具體情況,一般地,隨機抽樣n/2個版本序號,按升序排列得到{Version_1,Version_2,……,Version_n/2}。接著,以步長為1依次選擇基線版本和對比版本。

對于選定的基線版本Version_base和對比版本Version_contrast,分別構建相應版本的符號表NameTable_base和NameTable_contrase,通過對應版本的符號表的匹配操作,得到類的綁定關系,進一步計算類的相似度最后得到類的易變性信息。

(4)度量分類以及特征提取與選擇

使用得到的四大類面向?qū)ο筌浖攘颗c軟件易變性分別進行相關性分析,在每類度量集合中,依次選取與軟件易變性最相關的前k個度量,組成新的度量集合M,|M|=4*k,接著對M中的度量使用主成分分析法(PCA)對特征集合進行降維,得到新的特征集合M’。

(5)軟件易變性預測模型構建

使用Python語言、R語言等編程調(diào)用實現(xiàn)前饋多層感知器算法,或者使用Weka等機器學習工具包實現(xiàn)。根據(jù)(2)、(3)和(4)得到的特征值與類標簽,構造用于模型構建的訓練數(shù)據(jù)集。建立前饋神經(jīng)網(wǎng)絡,具體地:

1)以(4)得到的特征維數(shù)作為神經(jīng)網(wǎng)絡的輸入層神經(jīng)元個數(shù);

2)定義神經(jīng)網(wǎng)絡隱藏層個數(shù)為:(attributes+classes)/2;

3)使用反向傳播算法學習神經(jīng)網(wǎng)絡中各個突觸的權重,其中用于加速收斂的動量系數(shù)為0.2,算法迭代500次。

通過上述操作,各個突觸的權重將收斂到穩(wěn)定的值,得到的神經(jīng)網(wǎng)絡將可以用于對軟件易變性進行預測,不同的軟件對應不同的數(shù)據(jù)集,所以突觸的權重、神經(jīng)網(wǎng)絡的規(guī)模也會有所不同。

相同或相似的標號對應相同或相似的部件;

附圖中描述位置關系的用于僅用于示例性說明,不能理解為對本專利的限制;

顯然,本發(fā)明的上述實施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明權利要求的保護范圍之內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1