999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向軟件開發信息庫的數據挖掘綜述

2008-01-01 00:00:00李春平
計算機應用研究 2008年1期

摘要:總結了近年來挖掘軟件開發信息庫的研究工作,主要包括研究內容和采用的數據挖掘方法,最后討論了軟件開發信息庫研究的未來發展前景。

關鍵詞:軟件工程;軟件開發信息庫;數據挖掘;軟件開發信息庫挖掘

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2008)01-0022-07

很多大的軟件開發組織、軟件項目均建立了集合軟件開發過程所有數據的軟件開發信息庫,但大部分軟件開發信息庫僅用于軟件項目的維護以及缺陷狀態的跟蹤等[1]。20世紀90年代以來,許多軟件從業者和研究人員逐漸意識到,軟件開發信息庫中包含許多豐富的、隱藏的信息,于是開始采用數據挖掘的方法理解這些潛在的信息。近年來,這方面的研究得到了更多關注。從2004年的第26屆IEEE軟件工程國際會議(IEEE International Conference on Software Engineering,ICSE)開始,每屆均有一個軟件開發信息庫挖掘的會議。在這些會議上討論了采用數據挖掘方法深入理解軟件開發信息庫的多個方面,如軟件過程建模、軟件開發演進和模式的理解、軟件缺陷的分析、軟件系統關聯修改、軟件模塊復用等。這三屆會議促使研究者和軟件從業者更進一步嘗試如何利用軟件開發信息庫理解軟件開發實踐過程。

1軟件開發信息庫

軟件開發信息庫是軟件開發過程中所有相關數據的總和,通常包括以下數據:

a)項目開發過程數據,包括項目開發的里程碑、任務細化、資源等信息。

b)源代碼數據,如項目開發的源代碼以及版本修改過程。

c)項目開發的相關文檔,如需求文檔、設計文檔、測試相關文檔等。

d)項目開發人員的交流歷史信息,如e mail存檔、論壇交流歷史記錄等。

e)缺陷跟蹤信息,包括項目開發過程中缺陷狀態、類型、修改歷史等。

軟件開發信息庫中不同性質的數據采取不同的數據源存儲。一般包括以下方式:

a)軟件配置管理系統(software configuration management system,SCMS),也稱版本控制系統(version control systems)。它將軟件開發過程中的源代碼數據、項目開發的相關文檔及開發人員的交流歷史信息存檔,對這些數據進行管理和版本控制。常用的配置管理系統有CVS、SVN、visual SourceSafe (VSS)和rational ClearCase。

b)缺陷跟蹤系統(defect tracking system)。通常來講,軟件項目組會記錄項目的缺陷信息及其修改過程,最簡單的形式就是缺陷報告。如今大部分的軟件開發組織均會采用一個軟件系統對缺陷進行具體的記錄、狀態跟蹤,如最常用的開源軟件缺陷管理系統Bugzilla。

c)項目管理系統(project management system)。軟件項目的計劃、資源分配、過程執行等數據通常存儲在項目管理軟件系統中。例如微軟公司的project軟件是項目管理規劃、開發、跟蹤的重要工具,可制訂軟件進度計劃、分配資源并預算各種項目成本。

2數據挖掘理論

數據挖掘又稱為數據庫中的知識發現(knowledge discovery in database,KDD)。它是一個從大量數據中抽取挖掘出從前未知、但有很多潛在信息(如知識規則、約束、規律)的復雜過程。

如圖1所示,數據挖掘的過程分為數據抽取、數據預處理、知識發現以及知識表示四個步驟[1]。

1)數據抽取數據抽取是從數據源中選取進行研究所需的數據。在數據抽取過程中,通常要根據研究目的確定所需要的數據內容和數據來源,得到獲取數據的權限,了解數據類型和結構并導出數據。

2)數據預處理抽取得到的數據可能存在數據質量問題或不符合研究的需要,在這種情況下,需要進行數據預處理。通常數據預處理需要完成的任務有數據清洗、數據轉換、數據歸約以及數據離散化。

3)知識發現在得到了可以進行數據挖掘的數據集,知識發現就是應用具體的數據挖掘技術發現潛在的、未知的、有用的信息。具體來講,知識發現的具體任務可能有估算和預測、分類、關聯規則的發現、聚類、數據分析和數據可視化。

4)知識表示將第三步分析挖掘得到的知識進行整理,將其進行具體應用。例如在采用關聯規則發現實體間的關系后,知識表示就是利用關聯分析的結果進行具體的關聯推薦。

3軟件開發信息庫的數據挖掘

軟件開發信息庫的數據挖掘采用數據挖掘的方法發現軟件開發信息庫中存在的不明顯、潛在的信息。這一部分從軟件開發信息庫的不同研究領域和具體應用角度分析了軟件開發信息庫數據挖掘近年來的研究內容以及相應的研究方法。

3.1軟件開發信息庫數據的獲取

事實上,軟件開發信息庫數據獲取方面的困難使很多研究者望而卻步。本節將數據挖掘理論中的數據抽取和數據預處理結合起來,介紹了軟件開發信息庫數據獲取方面的工作。

3.1.1軟件開發信息庫研究的數據來源

目前,國際上進行源代碼挖掘研究的數據主要來源有以下三種:

a)組織自身建立的軟件開發信息庫。這種知識庫的數據由軟件開發組織自己整理、匯總,也就比較容易理解、抽取、分析、處理。但一般的開發組織很難有足量的項目開發數據,從而不能提供非常有效的數據挖掘樣本;而且這些數據本身的質量在很大程度上受到組織軟件過程管理水平的局限。

b)由一些權威機構建立的多個組織軟件過程開發數據的集合。文獻[2]中的研究成果就是利用日本信息技術促進代理處軟件工程中心建立的包括253個企業的軟件項目數據庫。這種數據通常擁有較高的數據量,數據的質量也較容易得到保證。

c)自由/開源軟件的軟件開發數據。作為最容易得到的軟件開發信息庫,自由/開源軟件的軟件開發信息庫成為很多研究項目的數據來源。SourceForge[3]提供了豐富的開源軟件的軟件開發數據,包括一些軟件的源代碼、項目缺陷數據、文檔、開發成員之間的交流信息等,很多學者的軟件工程研究均是在其數據集的基礎上完成的。但是自由軟件開發信息庫存在數據完整性得不到保證、數據抽取困難等問題。

3.1.2軟件開發信息庫數據的抽取

進行數據抽取首先需要明確研究目標,有針對性地獲得所需要的數據源。例如,進行源代碼的關聯修改通常需要得到軟件配置管理系統中的代碼以及版本修改歷史;若要根據代碼從前的缺陷信息預測以后的缺陷密度,還需要進一步得到缺陷報告數據。

軟件開發信息庫數據源的多樣性和復雜性為數據的抽取增加了困難。進行數據抽取工作需要獲得數據源的訪問權限,了解數據源內容、形式、結構等,這要花費很多精力。

由于很多學者致力于開源軟件開發信息庫挖掘,從開源軟件常用的配置管理系統CVS中抽取數據的研究很多,一般方法是將CVS中更新文件的事件流轉換為結構化或半結構化的數據。例如,Thomas Zimmermann等人[4]將CVS中的版本信息映射為數據庫中的表,內容包括CVS中的文件、目錄、發布的不同版本以及版本分支。Robert J. Walker等人[5]從CVS中抽取軟件的結構依賴關系和修改歷史,并將結構依賴關系映射為圖的格式,采用XML格式記錄軟件修改歷史。在此基礎上,出現了一些進行CVS數據抽取的免費工具,如GlueTheos[6]和Kenyon[7]。

3.1.3軟件開發信息庫數據的預處理

數據預處理是軟件挖掘工作中非常重要的一部分,數據的預處理質量將直接影響到研究成果。針對不同的研究目的,要采用不同的預處理策略。對于不可模擬的、人為因素較高的軟件開發信息庫來講,數據清理需要更多的時間和精力。

a)針對配置管理系統,可能需要去掉一些重復的數據,如項目在開發過程中有一些文件被中途刪除。如果進行軟件演進的分析,這些刪除的文件還是有研究價值的;但是如果研究軟件系統的關聯修改關系,若文件被刪除,它之前相關的關聯修改內容都不需要研究了,這就需要把該文件從處理的數據集中清除。

b)對于缺陷數據,需要處理很多缺失的屬性值。對于缺陷記錄來講,缺陷系統包括很多屬性值,如缺陷所描述的模塊、提交時間、級別、類別、狀態等,但是有些用戶提交缺陷信息時不一定填補了完整的信息。這時需要對這些缺失的屬性進行處理,通過回歸分析、分類、手工操作等途徑填補可能的數據,甚至需要去掉一些缺失太多數據的屬性值。

c)項目過程數據中可能存在很多缺少的、不一致的甚至是噪聲的數據。例如項目里程碑的時間不一致,后面的里程碑甚至比前一個里程碑發生的時間還早,這時可能需要利用里程碑前后任務的發生時間來填補可能的時間點;或者某一個開發任務的完成時間明顯比其他任務長很多,可以采用分箱、聚類、回歸分析的方法處理這種噪聲點。

數據轉換是將數據轉換為方便進行研究的形式。它包括:

a)配置管理系統的數據轉換。例如,由于CVS系統中不包括事務信息,很多學者需要聚合文件修改記錄,提取事務信息。Zimmermann等人[4]采用了滑動時間窗口的方法來獲得事務信息;Daniel T[8]介紹了固定時間窗口與滑動時間窗口相結合的方法。另外,研究者也可能需要對得到的事務數據進行相應的處理,將過于龐大的事務進行切割或將過于小的事務合并[4]。軟件配置管理系統記錄的修改信息是文件級別的。為了具體研究源代碼修改的關聯影響,很多研究者將修改信息細化,得到方法、類、屬性以及它們之間的層次關系[9,10]。

b)缺陷數據的數據轉換工作。包括缺陷數據的聚集(將缺陷數據按照所屬模塊、提交的月份、解決缺陷持續的時間、缺陷的級別或缺陷的類別聚集)。

c)項目過程數據中的數據轉換。包括新屬性值的構造(構造每個開發階段所持續的時間等)、數據聚集(按照開發階段、月份、任務類型等將完成任務的月數聚集)等。

由于軟件開發信息庫的數據往往非常龐大,數據歸約也是非常重要的工作。針對任何一個軟件開發信息庫和不同的研究目的,可能需要去掉一些屬性值進行維歸約、數值規約等。

如今,在軟件開發信息庫數據的獲取和預處理方面的研究很多,大部分研究人員需要自己完成復雜的數據預處理過程。盡管出現了一些抽取軟件開發信息庫數據的工具,但使用這些工具還要對軟件開發信息庫的結構、內容有一定的了解,也需要很多精力;而且即使利用這些工具,仍需面對研究上的困難和不確定風險,即軟件開發信息庫中的數據可能不完全或某些軟件開發數據不連續。針對這些問題,Sunghun Kim等人[11]提出建立TA RE數據集合,在其中包括從配置管理系統中直接得到的數據、對數據進一步分析的結果以及采用啟發式得到的總結數據。這一設想的提出及實現將會為軟件開發信息庫的研究提供更全面、更準確的數據源。

3.2軟件系統關聯修改的研究

很多大的軟件系統中存在一些潛在的、沒有文本記錄的依賴關系。這些關系正是一個大的軟件系統最復雜的部分,也是維護系統耗費成本最高的一個問題。鑒于此,很多學者致力于軟件關聯修改的數據挖掘方法研究,而且這種關聯修改的研究已涉及到軟件代碼的不同層次,包括模塊級[12]、文件級[13]、類的級別[14]、方法的級別[15]甚至代碼行級別[16]。

目前,這些關聯研究的應用主要有:提供系統關聯修改建議,給出最直接、最重要的相關修改的推薦;避免不完全的修改,給出所有可能需要修改的建議,包括不同格式的其他文件,如HTML文件的相應修改;幫助新的開發人員迅速了解軟件系統;為軟件項目的修改和改進方案提供建議。

3.2.1關聯修改的分類研究方法

很多學者將軟件的關聯修改看做一個分類問題,即給定一個文件的修改,將其他文件分類:需要進行關聯修改或不需要修改。

Shirabad等人[17]采用決策樹的方法給出與指定文件相關聯的文件列表。他們將文件匹配為文件對(兩個文件為一組,其中一個文件是給定的文件),提取相同引用文件的個數、文件名相同前綴的長度、公用方法等文件對屬性,采用決策樹方法分析每一組文件中的另一個文件是否與給定文件相關。Shirabad等人[18]還提出了采用機器學習的分類方法對一個遺留電話系統源代碼知識庫進行研究。針對一組文件的集合,提取文件組向量的屬性(文件組向量第一個文件的類型、文件組向量的文件個數等),給出一些標記的對象,利用歸納算法給出這組文件相關或無關的分類[9]。

3.2.2關聯修改的聚類研究方法

還有學者采用聚類方法分析可能同時進行的修改。Uwe Krohn和Cornelia Boldyreff[19]將是否影響特定模塊作為每一個修改的屬性,利用這些屬性對修改進行聚類。筆者進行了多種聚類方法的實驗,最后表明中心法(centroid method)和類平均法(average linkage)具有良好的效果。

3.2.3關聯修改的關聯規則研究方法

更多學者采用關聯規則的方法進行軟件系統內部實體的關聯研究。不論是內容還是方法,關聯規則的研究均取得了不少成果。

關聯規則最主要的研究內容是利用軟件系統修改的歷史記錄數據進行文件關聯修改分析,給開發者一些相關建議。Zimmermann等人介紹了關聯修改推薦的工具——ROSE,它利用軟件配置管理系統中的代碼修改歷史研究實體的關聯修改關系。他們將改動分為修改(alter)、增加(add_to)、刪除(del_from)三種,利用支持數(support count)和置信度(confidence)兩個參數,采用apriori算法和數據挖掘關聯規則的研究方法得到實體之間的修改關聯。例如,當用戶修改A方法,ROSE會給出在B文件中增加相應程序段的建議[9]。加拿大UBC大學Annie T.T. Ying等人[20]進行了與Zimmermann相似的研究工作。不同的是,他們采用的是頻繁模式樹(FP tree)方法,而且只用到了支持數,沒有置信度參數。這是為了避免一些頻繁改動的內容影響關聯規則的準確性。

還有一些學者利用關聯的修改內容為參加項目的新人提供幫助。D. Cubranic等人[21]開發的Hipikat可以推薦文件關聯修改及獲得幫助的歷史開發人員列表。Hipikat需要更多的輸入數據,除了源代碼版本歷史,它還需要修改任務的報告、e mail、小組內部的消息及一些文檔。不同于前面兩個學者的工作,Hipikat需要完全相同的錯誤修改記錄才能進行相應的關聯文件推薦。Masao Ohira等人[22]開發的GRAPHMANIA也可以給出軟件開發參照資源以及求得幫助人員方面的建議。但他們采用的是協同過濾(collaborative filtering)和社會網絡(social networks)分析方法。Ahmed E. Hassan和Richard C. Holt[10]采用啟發式方法研究了源代碼修改的傳播情況。其研究目的是讓軟件開發組織在進行任何修改前了解這種修改會帶來的后果,為是否進行修改提供一定的參考。他們中采用修改傳播圖(change propagation graph)顯示了對某種源代碼實體(類、方法、屬性)的修改帶來的傳播影響,即所有受到直接或間接影響的代碼實體圖。

大部分關聯修改方面的研究只給出了源代碼實體之間的靜態修改關聯。但修改關聯關系是有向的,是與修改時間序列有關的。Huzefa Kagdi等人[23]針對文件的修改序列進行了研究,他們將一段時間內(一天),由同一個作者修改的文件作為一個修改組,采用頻繁序列方法找到修改文件的序列關系。Michael Burch等人[24]采用可視化技術,將軟件開發信息庫中修改的關聯規則和序列規則表示出來。

3.3軟件復用的研究

通過對軟件開發信息庫的研究,學者們提出了尋找可復用軟件模塊的方法。軟件復用方面的研究往往也是通過軟件系統的關聯關系來發現潛在復用關系的,它與關聯修改研究的不同在于:

a)軟件關聯修改研究主要針對較細粒度的關聯關系,如文件、類、方法;軟件復用研究更加關注于宏觀角度的關聯關系研究——軟件模塊的關聯。

b)軟件關聯修改研究是針對某個軟件系統進行分析;軟件復用研究需要對多個軟件系統進行研究來發現潛在的可復用模塊。

c)軟件關聯修改是對軟件系統版本歷史數據(version history)的研究;軟件復用是應用于軟件系統某一個版本上的研究過程。

在軟件復用方面的研究有以下不同的分析方法。

3.3.1關聯分析的研究方法

Michail[25]采用關聯規則分析方法對圖書館系統的復用模式進行了分析,可以幫助開發者在已知軟件開發信息庫的基礎上,利用已有的模塊構造一個符合特定需求的圖書館系統。

協同過濾方法被廣泛應用于基于數據挖掘技術的推薦研究,很多學者也進行了基于協同過濾關聯分析的復用模塊推薦的研究。Frank McCarey等人[26]采用協同過濾的思想對SourceForge上的開源代碼進行研究,將每一個類映射為協同過濾思想中的用戶,每個軟件組件映射為一個項;一個類可能使用一個或多個已有組件,對應于協同過濾思想中的一個用戶可以采用一個或多個項。若兩個類采用了同樣的組件,就可以認為它們很有可能在未來使用相同的組件。利用這種思想為開發人員提供可復用模塊的建議。

3.3.2基于語義的研究方法

由于軟件開發中的屬性、方法、類的命名往往均符合語義規則,有些學者就利用基于語義的挖掘方法發現可復用的軟件模塊。

Rushikesh Amin等人[27]利用WordNet對開源應用軟件命名的研究結果表明,這些應用系統的類和方法命名都是基本符合語義規則的。在這一前提下,在代碼級別進行語義類推,從代碼庫中找到相似的類或方法。他們得到的研究成果不論進行遞階復用(hierarchical reuse)還是平行復用(parallel reuse)都具有良好的效果。Paulo Gomes等人[28]介紹了工具rebuilder,利用WordNet對軟件模塊建立索引。它提供了UML與軟件系統本身之間的映射關系,可以利用已有的設計方案類推建立一個新的軟件設計系統。

3.4軟件的演進分析

軟件系統從開發、維護到遺棄均在不斷變化。對軟件演進過程的理解有助于了解軟件的開發質量、程序員維護工作以及軟件系統的改進。很多學者通過不同層面的軟件開發信息庫研究理解軟件系統開發的演進過程。

3.4.1對軟件代碼演進的分析

Yang[29]采用解析樹方法對程序代碼的整體結構進行演進分析,但這種方法沒有考慮程序的語義,也不考慮一些具體的實體,如方法、類型定義、變量等。D. Jackson 和 D. A. Ladd[30]采用語義分析方法對程序演進過程中內部變量、外部變量和全局變量的變化進行了分析,而且可以正確識別方法名的變化。Iulian Neamtiu等人[31]在部分抽象語法樹(AST)匹配的基礎上給出了一個快速比較C語言程序不同版本的方法,該方法可以對全局變量、類型以及函數的修改進行跟蹤。他們在不同開源軟件系統上進行實驗,分析了軟件生命周期中方法、全局變量等參數的變化,試圖將代碼層的微觀分析表現到軟件系統宏觀變化的層面上來。Sunghun Kim等人[32]對函數參數的變化模式進行了細致的研究。針對Apache HTTP ser ver、GCC和 Linux 2.5 kernel等軟件系統的版本庫,他們給出了在軟件演進過程中不同類型的參數變化類型和趨勢。

以上介紹的都是對某一軟件系統的演進分析,但不能將具體的研究結果泛化擴展,應用在其他軟件系統的研究上。在2006年MSR會議上,Sunghun Kim等人[33]在軟件演進方面提出了不同的研究視角,在更抽象的層次上進行軟件演進研究——軟件微模式的演進分析。這將軟件系統的演進分析提升到自動模式抽取的層面上來。他們在ArgoUML、 Columba和 jEdit三個軟件系統上統計不同微模式發生的頻繁度,總結出最常見的微模式以及傾向于產生更多缺陷的微模式[33]。

3.4.2對軟件系統演進的分析

以上的研究是針對軟件系統的微觀層面,即代碼進行研究的,還有學者對軟件系統的宏觀變化進行了研究。比如軟件不同版本的演進、代碼規模的變化、系統架構的演進過程等。

Fisher等人將軟件開發信息庫與缺陷跟蹤系統相結合,研究軟件不同版本的宏觀變化過程。在文獻[34]中,他們提出了兩個啟發式公式,研究了未在版本配置管理庫記錄的分支合并操作過程,建立了軟件發布歷史數據庫(release history data base, RHDB),從而豐富了軟件演進過程信息。之后,他們又在文獻[35]中采用多維量法(multi dimensional scaling)對缺陷報告的相似性進行分析,將缺陷報告映射到軟件的不同功能塊上,再采用邏輯耦合的思想,對實現不同功能模塊的文件間關系進行分析,展示出整個軟件系統的結構關系,得到模塊之間的關系及其演進過程。

M. W. Godfrey等人[36]對一些開源軟件的演進過程進行了研究,想要驗證Lehman等人[37]提出的軟件演進法則。但是他們發現這些開源軟件中有很多不符合這一法則的現象;還得到了一個非常例外的結果——Linux系統的內核即使在超過兩百萬行之后依舊保持幾何速率的增長。而Lehman的經驗模型說明,軟件系統在變得非常龐大時,其增長速率會減緩。

通常來講,可以通過靜態程序分析進行軟件架構分析,但在軟件開發過程中的軟件架構演進更難監控和控制。很多學者通過軟件源代碼的修改過程理解軟件的架構演進。Zimmermann等人[38]采用關聯規則方法分析軟件演進過程中的模塊關聯關系,從而了解和評判系統的架構。他們通過細粒度的分析方法得到了方法、屬性的耦合關系;粗粒度研究方法分析了文件之間的依賴關系。綜合這兩種方法,他們得到了演進過程中程序的依賴關系,進而了解到軟件的架構信息。另外,他們還將演進分析與靜態分析得到的依賴關系作比較,發現兩者并非完全匹配的,將兩者比較可以發現系統中一些架構設計的缺陷。同時,通過分析實體內部及其之間的演進耦合度,還可以了解系統的模塊化情況。Yang Yao jin等人[39]將軟件架構分為設計和實現兩個層面,對軟件開發過程中的不同版本進行比較,從最底層源文件變化總結得到二進制組件、邏輯組件一直到軟件包的變化,最終得到架構的演進狀況。他們對不同的軟件修改可能帶來的架構變化進行了分析。

3.4.3對軟件產品家族演進的分析

以上介紹的成果都是針對單個軟件系統研究的成果。Michael Fischer等人[40]擴展了研究單個軟件演進過程的方法,對軟件家族進行了研究,從更高的層次了解軟件系統架構以及演進過程。他們以BSD (Berkeley software distribution)這一家族操作系統為例,給出了具體的研究成果,對比了BSD家族中的FreeBSD、NetBSD和OpenBSD共用的模塊以及關聯的修改過程,得到了這個軟件家族的關聯演進過程。

3.5軟件缺陷分析

對軟件缺陷進行分析可以為軟件可靠性研究、軟件缺陷關聯、預測軟件潛在缺陷率和預防軟件缺陷提供依據。通常的缺陷分析方法是分類方法和關聯研究方法。

3.5.1缺陷的分類研究方法

分類方法是根據軟件的不同屬性值對軟件缺陷狀況進行分類。具體來講,有決策樹、回歸分析及神經網絡三種方法。

決策樹方法是分析影響缺陷的因素。按照這些因素的影響程度(熵增益)將源代碼的不同模塊或文件按照缺陷密度分類。Patrick Knab等[41]采用決策樹的方法對源代碼文件的缺陷密度進行分析,他們利用一些可能引起高密度缺陷的因素在Mozilla網頁瀏覽器的開源數據上進行研究。這些因素包括文件的代碼行數、當前版本的缺陷個數、方法的個數、文件之間修改的關聯度等。除了說明如何建立決策樹學習器進行源代碼缺陷密度分析外,還對影響缺陷密度的因素進行了研究:大的文件不一定比小文件有更多缺陷或更高的缺陷密度;修改的關聯度并不能為缺陷個數的預測提供有效的信息。

R. M. Bell等人[42]采用負二項回歸模型對大型軟件系統的缺陷位置和數目進行預測。他將導致高錯誤率的因素作為回歸模型的變量,根據每個文件在某版本的代碼及上一版本的缺陷和修改歷史,預測該文件在下一版本中的缺陷數目,并確定缺陷密度最高的文件。

軟件缺陷并不僅是指軟件源代碼的錯誤。在軟件開發過程中產生的各種文檔,如需求規格說明、設計文檔、測試計劃等,也是軟件缺陷的研究對象。Frank Padbergd等人[43]從文檔缺陷的經驗數據得到影響缺陷數據的因素(如不同類型缺陷的總數目和每個文件中包括的缺陷數目),采用回歸技術、神經網絡的方法,根據評審得到的文件缺陷情況預測實際缺陷。

3.5.2缺陷的關聯分析方法

軟件系統中不同模塊關聯關系直接影響了其缺陷關系。對文件之間的關聯研究也為缺陷的分析、預測提供的參考。Mina Askari等人[44]介紹了三個文件修改缺陷分析模型,對比說明了考慮關聯關系的缺陷研究方法可以更加準確地預測文件的缺陷。三個模型分別是:MLE (maximum likelihood estimation),簡單地通過計算每一個文件曾經進行修改的記錄預測文件以后的缺陷個數;RED(reflexive exponential decay)模型,通過文件過去的修改記錄進行缺陷預測,基于的假設是從前修改次數較多的文件在未來被修改的可能性較大,而且這種關系是呈指數性增長的;RED Co Change,不僅考慮文件過去修改的記錄,還要考慮與其相關文件的修改歷史。結果表明第三個模型考慮了關聯關系的模型,可以提供更好的預測結果。

3.6軟件過程建模

軟件開發信息庫就是軟件開發組織對軟件過程進行具體定義、量化管理的結果,而對軟件開發信息庫的進一步研究也是發現、改進軟件過程的有效途徑。軟件過程建模是對軟件開發過程中重要特征的抽象。它關注于軟件開發、維護、演進的過程,可以展示說明當前軟件的開發過程,并且可以用于計劃新軟件的開發過程。通常來講,軟件過程建模會將軟件開發過程中的每一個活動看做一個事件,分析歷史軟件過程中的事件,形成正式的軟件過程模型。

3.6.1靜態分析方法

靜態分析方法是一種概念描述的方法。將軟件過程中的事件流概念化和總結,將具體的實施過程泛化、可視化,是一種最基本的過程建模方法。例如Garg 和Bhansali[45]采用基于解釋的學習方法(explanation based learning)將具體的軟件實施過程泛化,從軟件開發過程的歷史數據發現潛在的過程模型。 

3.6.2動態建模方法

動態建模方法是與系統有交互的研究方法,可以動態展現軟件過程事件的動態關系。

Jonathan E. Cook和Alexander L.Wolf[46]在1995年采用語義推論、馬爾可夫模型及神經網絡三種算法建立過程模型。1998年,他們將過程發現方面的工作進一步深化,介紹了三種事件驅動的過程發現方法,包括純統計的方法(RNet,采用了前饋神經網絡算法)、純算法的方法(Ktail)以及混合了統計和算法的Markov方法[47]。這種動態建模方法可以通過對用戶提供的歷史事件流進行關聯分析后,向用戶提供一個據此產生的軟件開發過程。相應開發的DaGama系統提供了一種建模解決方案——根據一系列輸入的時間流產生一個直觀的過程模型。

4結束語

隨著信息化腳步的加快,軟件開發組織積累了越來越多的軟件開發數據。為了對現有的系統進行更好的維護,利用已有的軟件模塊簡化新軟件的開發,總結從前成功的開發經驗,需要對軟件開發信息庫進行更加深入和具體的分析。從前面分析可以看到,軟件開發信息庫的研究方法和研究內容均已經進展到相當的廣度和深度,但是在軟件開發信息庫的數據方面,許多內容還需要進一步深入。下面列出一些在軟件開發信息庫方面的潛在研究內容:a)抽取源代碼數據方面的工作。在3.1節介紹了源代碼數據抽取的一些技術和工具,但由于源代碼數據源的多樣性和復雜性,抽取數據方面的困難還是很多學者面臨的問題。這部分最后提到的建立TA RE數據集合是一個很好的設想。盡管這一思想剛剛提出,其中的一些設想可能還需要完善,但可以肯定,隨著源代碼數據研究工作的深入展開,提供一種靈活的源代碼抽取方法或建立一個標準化的研究數據源是非常有必要的。

b)軟件系統的內在關聯研究對文件的關聯修改建議、理解文件結構進行維護以及幫助新開發人員了解軟件系統均有重大意義。這方面還有許多值得深入的研究內容:(a)對于關聯修改的建議,研究結果提供的建議修改列表往往把最顯而易見的列在前面,而容易被忽略的文件埋沒在列表中,可能依舊被忽略。(b)如何提供一種具有更多處理能力、更加有效的關聯修改的建議也是值得進一步研究的。Hipikat擁有分析更多數據源的能力,卻在一定程度上缺少靈活性;而有些工具(如ROSE)利用關聯規則分析方法獲得了更多的靈活性,但局限在一定的數據源處理上。(c)基于序列的關聯修改內容也是需要進一步深入研究的。序列的關聯關系反映了修改的有向性,也在更大范圍內考慮了關聯的實體。

c)微模式是軟件演進分析方面的一個新的研究思路。它將演進分析提高到更加抽象的概念,試圖使這種分析具有更加普遍適用的結果,為其他軟件系統提供參考。但這種新思路需要更多地進行研究和探討,如將這種研究思路應用于更細的代碼層次,而不僅僅是類的層級。此外,微模式的提出并不是用來發現缺陷的,在缺陷發現這方面不能提供很好的依據[33]。

d)源代碼的修改過程事實上隱含著軟件過程信息。軟件開發的不同階段對源代碼的修改模式一定是不同的。將源代碼的研究與軟件過程改進結合起來的研究,目前沒有得到太大的關注。

致謝向給予本文建議和支持的討論班上的所有同學,特別是許洪志表示衷心的感謝。

參考文獻:

[1]HASSAN A E,HOLT R C,JOHNSON P M.Guest editors’ introduction: special issue on mining software repositories [J].IEEE Trans on Software Engineering,2005,31(6):426-428.

[2]TSUNODA M,MONDEN A,YADOHISA H.Productivity analysis of Japanese enterprise software development projects[C]//Proc of MSR.New York:ACM Press,2006:14 17.

[3]VA Corporation. SourceForge[EB/OL].http://sourceforge.net.

[4]ZIMMERMANN T,WEIBGERBER P.Preprocessing CVS data for fine grained analysis [C]//Proc of MSR.New York:ACM Press,2004: 2-6.

[5]WALKER R J,HOLMES R,HEDGELAND I,et al.A lightweight approach to technical risk estimation via probabilistic impact analysis [C]//Proc of MSR.New York:ACM Press,2006:98 104.

[6]ROBLES G,GONZLEZ BARAHONA J M, GHOSH R A.GlueTheos:automating the retrieval and analysis of data from publicly available software repositories[C]//Proc of MSR. New York:ACM Press,2004:28-31.

[7]BEVAN J,WHITEHEAD E J,KIM Jr S,et al.Facilitating software evolution with Kenyon[C]//Proc of European Software Engineering Conference and Foundations of Software Engineering. Lisbon, Portugal:[s.n.],2005:177 186.

[8]GERMAN D M.Mining CVS repositories, the softchange experience [C]//Proc of MSR. New York:ACM Press,2006:17-21.

[9]ZIMMERMANN T,WEIBGERBER P,DIEHL S,et al.Mining version histories to guide software changes [C]//Proc of Int’l Conf on Software Eng.2004:563-572.

[10]HASSAN A E,HOLT R C.Predicting change propagation in software systems[C]//Proc of ICSM.2004:284-293.

[11]KIM S H,ZIMMERMANN T,KIM M,et al.TA RE:an exchange language for mining software repositories[C]//Proc of MSR.New York:ACM Press,2006:22-25.

[12]GALL H,HAJEK K,JAZAYERI M.Detection of logical coupling based on product release history [C]//Proc ofICSM.1998:190 198.

[13]BEVAN J,WHITEHEAD E J.Identification of software instabilities[C]//Proc of WCRE.Victoria:[s.n.],2003:134 145.

[14]GALL H,JAZAYERI M,KRAJEWSKI J.CVS release history data for detecting logical couplings [C]//Proc of IWPSE.2003:13-23.

[15]ZIMMERMANN T,BREU S,LINDIG C,et al.Mining additions of method calls in ArgoUML[C]//Proc of MSR.New York:ACM Press,2006:169 170.

[16]ZIMMERMANN T,KIM S,ZELLER A,et al.Mining version archives for co changed lines[C]//Proc of MSR.New York:ACM Press,2006:72 75.

[17]SHIRABAD J S,LETHBRIDGE T C,MATWIN S.Supporting maintenance of legacy software with data mining techniques[C]//Proc of Conf on Centre for Advanced Studies on Collaborative Research.2000:11 15.

[18]SHIRABAD J S,LETHBRIDGE T C,MATWIN S.Mining the software change repository of a legacy telephony system[C]//Proc of MSR.New York:ACM Press,2004:53-57.

[19]KROHN U,BOLDYREFF C.Application of cluster algorithms for batching of proposed software changes[J].J Softw Maint,1999,11(3):151 165.

[20]YING A T T,MURPHY G C,NG R,et al.Predicting source code changes by mining change history [J].IEEE Trans on Software Engineering,2004,30(9):574-586.

[21]CUBRANIC D,MURPHY G C.Hipikat:recommending pertinent software development artifacts [C]//Proc of Int’l Conf on Software Eng.2003:408-418.

[22]OHIRA M,OHSUGI N,OHOKA T,et al.Accelerating CrossProject knowledge collaboration using collaborative filtering and social networks [C]//Proc of MSR.New York:ACM Press,2005:111 115.

[23]KAGDI H H,YUSUF S,MALETIC J I.Mining sequences of changed files from version histories [C]//Proc of MSR.New York:ACM Press,2006:47-53.

[24]BURCH M,DIEHL S,WEIBGERBER P.Visual data mining in software archives[C]//Proc of ACM Symposium on Software Visualization.New York:ACM Press,2005:37-46.

[25]MICHAIL A.Data mining library reuse patterns using generalized association rules[C]//Proc of Int’l Conf on Software Eng.2000:167 176.

[26]McCAREY F, CINNEIDE M O,KUSHMERICK N.A case study on recommending reusable software components using collaborative filtering[C]//Proc of MSR.New York:ACM Press,2004:117 121.

[27]AMIN R,CINN’EIDE M O,VEALE T,et al.LASER:a lexical approach to analogy in software reuse [C]//Proc of MSR.New York:ACM Press,2004:112 116.

[28]GOMES P,PEREIRA F C,PAIVA P,et al.Case retrieval of software designs using WordNet[C]//Proc of ECAI.2002:245-249.

[29]YANG W.Identifying syntactic differences between two programs [J].Software Practice and Experience,1991,21(7):739 755.

[30]JACKSON D,LADD D A.Semantic diff:a tool for summarizing the effects of modifications [C]//Proc of ICSM.1994:243-252.

[31]NEAMTIU I,FOSTER J S,HICKS M.Understanding source code evolution using abstract syntax tree matching [C]//Proc of MSR.New York:ACM Press,2005:2-6.

[32]KIM S H,WHITEHEAD J E,BEVAN Jr J.Analysis of signature change patterns[C]//Proc of MSR.New York:ACM Press,2005:64-68.

[33]KIM S,PAN K,WHITEHEAD J E.Micro pattern evolution[C]//Proc of MSR.New York:ACM Press,2006:40-46.

[34]FISCHER M,PINZGER M,GALL H.Populating a release history database from version control and bug tracking systems [C]//Proc of ICSM. Amsterdam:[s.n.],2003:23-32.

[35]FISCHER M,GALL H.Visualizing feature evolution of large scale software based on problem and modification report data [J].Journal of Software Maintenance and Evolution,2004,16(6):385-403.

[36]GODFREY M W,TU Qiang.Evolution in open source software: a case study [C]//Proc ofICSM.2000:131 142.

[37]LEHMAN M M,RAMIL J F,WERNICK P,et al.Metrics and laws of software evolution:the nineties view [C]//Proc of IEEE METRICS.1997:20-25.

[38]ZIMMERMANN T,DIEHL S,ZELLER A.How history justifies system architecture (or not) [C]//Proc of IWPSE.2003:73-83.

[39]YANG Yao jin,RIVA C.Scenarios for mining the software architecture evolution[C]//Proc of MSR.New York:ACM Press,2005:10 13.

[40]FISCHER M,OBERLEITNER J,RATZINGER J,et al. Mining evolution data of a product family [C]//Proc of MSR.New York:ACM Press,2005:12 16.

[41]KNAB P,PINZGER M,BERNSTEIN A.Predicting defect densities in source code files with decision tree learners [C]//Proc of MSR.New York:ACM Press,2006:119 125.

[42]BELL R M, OSTRAND T J, WEYUKER E J. Predicting the location and number of faults in large software systems [J].IEEE Trans on Software Engineering,2005,31(4): 340-355.

[43]PADBERG F,RAGG T,SCHOKNECHT R.Using machine learning for estimating the defect content after an inspection[J].IEEE Trans on Software Engineering,2004,30(1):17-28.

[44]ASKARI M, HOLT W R C.Information theoretic evaluation of change prediction models for large scale software[C]//Proc of MSR.New York:ACM Press,2006:126 132.

[45]GARG P K,BHANSALI S.Process programming by hindsight[C]//Proc of the 14th International Conference on Software Engineering.Melbourne:[s.n.],1992:280-293.

[46]COOK J E,WOLF A L.Automating process discovery through event data analysis [C]//Proc of the 17th International Conference on Software Engineering.Seattle:[s.n.],1995:73-82.

[47]COOK J E,WOLF A L.Discovering models of software processes from event based data [J]. ACM Trans on Software Engineering and Methodology, 1998,7(3):215-249.

[48]AGRAWAL R,ELINSKI T I,SWAMI A.Mining association rules between sets of items in large databases[C]//Proc of ACM SIGMOD Conference on Management of Data.1993:207-216.

[49]SRINIVASAN K,FISHER D.Machine learning approaches to estimating software development effort[J].IEEE Trans on Software Engineering,1995,31(2):126 137.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 国产老女人精品免费视频| 亚洲人在线| 特黄日韩免费一区二区三区| 亚洲av日韩av制服丝袜| 高清码无在线看| 色婷婷综合在线| 久久国产高潮流白浆免费观看| 久久精品欧美一区二区| 日韩精品无码免费一区二区三区 | 日韩欧美视频第一区在线观看 | 精品视频一区在线观看| 99中文字幕亚洲一区二区| 国内精品九九久久久精品| 欧美一级99在线观看国产| 免费在线播放毛片| 国产免费黄| 在线播放精品一区二区啪视频| 久久中文字幕2021精品| 国产制服丝袜91在线| 久久午夜夜伦鲁鲁片无码免费| 69av在线| 深爱婷婷激情网| 色国产视频| 草草影院国产第一页| 亚洲人妖在线| 99re经典视频在线| 国产一区二区三区夜色 | 国产日韩欧美一区二区三区在线 | 国产精品亚洲专区一区| 欧美午夜精品| av在线人妻熟妇| 亚洲精品国产乱码不卡| 在线国产毛片| 中文字幕在线一区二区在线| 久久精品电影| 国产自在线播放| 国产伦精品一区二区三区视频优播| 色综合久久无码网| 欧美色亚洲| 97精品伊人久久大香线蕉| 亚洲日韩国产精品综合在线观看| 国产精品大白天新婚身材| 国产永久在线视频| 在线日韩一区二区| 亚洲成av人无码综合在线观看| 日本一本正道综合久久dvd | 成人午夜福利视频| 亚洲天堂在线免费| 丝袜美女被出水视频一区| 色妞www精品视频一级下载| 精品一区二区三区自慰喷水| 亚洲高清资源| 高h视频在线| 欧美一区二区三区国产精品| 日日拍夜夜操| 亚洲成a人片| 找国产毛片看| 国产18在线播放| 夜夜拍夜夜爽| 三级欧美在线| 成色7777精品在线| 欧美一级片在线| 亚洲床戏一区| 成人久久18免费网站| 免费一级成人毛片| 亚洲欧美日韩中文字幕在线| 女人18毛片水真多国产| 婷婷综合色| 欧美国产综合视频| 国产自在线拍| 55夜色66夜色国产精品视频| 久草网视频在线| 欧美视频在线播放观看免费福利资源| 22sihu国产精品视频影视资讯| 91麻豆精品国产91久久久久| 真实国产乱子伦视频| 麻豆a级片| 久久这里只有精品23| 狠狠色综合久久狠狠色综合| 国产99热| 五月丁香在线视频| 亚洲看片网|