摘 要:計算機軟件規模不斷擴大,想要完全通過手工方式實現軟件開發、維護與獲取信息,具有非常大的難度。為全面滿足實際發展需求,需要對軟件開發方式進行更新,例如數據挖掘技術的應用,可以有效提高軟件開發的速度,并且能夠有效的在軟件工程眾多數據中自動尋找所需數據。文章對數據挖掘技術進行了簡要分析,并對其在軟件工程中的應用方式進行了簡單探討。
關鍵詞:軟件工程;數據挖掘技術;軟件開發
面對軟件需求不斷增加的背景,基于軟件系統規模和復雜性不斷增長的現狀,想要進一步提高軟件開發效率,就需要對傳統定性法和統計技術進行更新,利用數據挖掘技術,來有效解決軟件工程所需數據的問題。將數據挖掘技術應用到軟件工程中,通過尋找數據、文檔以及相關數據集中規律,為軟件工程的開發提供指導。
1 數據挖掘技術
1.1 神經網絡
數據挖掘技術即通過科學、有效的算法,在大量數據信息中第一時間獲取有用信息的篩選過程。而神經網絡為主要的數據挖掘技術操作方法,具有良好的魯棒性,可以實現并行處理和高度容錯,在數據挖掘方面具有較強的優勢,且不同操作模型對應的適用范圍不同[1]。常見的操作模型如離散模型、koholon模型、連續模型等,分別對應聯想記憶、聚類自組織映射、優化計算。
1.2 統計分析
數據庫字段項間存在函數關系與相關關系,通過統計分析操作方法,可以對各類信息進行有效分析,如常見的相關分析、回歸分析與差異分析。
1.3 決策樹
應用決策樹操作方法,可以對大量數據進行整理和分類,然后從中選擇對軟件工程有價值的信息。在實際應用中數據分類效率高,能夠在短時間內獲得所需信息,可用于大規模數據信息的處理。
1.4 遺傳算法
以生物自然選擇和遺傳激勵隨機搜索算法為基礎,具有隱含的并行性,可以與其他模型建立聯系,可用于大部分開發工程。
2 數據挖掘技術在軟件工程中的應用分析
軟件工程度量過程中,其中已經從大量數據中提取部分信息,但是仍然存在大量的數據隱藏在軟件工程數據庫內,而數據挖掘技術的應用,能夠有效支持和提高對軟件度量。數據挖掘技術的應用,即從數據庫中提取全新、重要且有用的信息,在軟件開發時可以從大量數據中尋找所有相關信息。隨著軟件開發需求不斷的提高,數據挖掘技術在實際應用中的優勢逐漸被體現出來[2]。并且軟件與硬件基礎設施已經具備處理發現驅動的數據分析所需的密集計算能力,且各種技術在持續更新,具有良好的實際應用效果,例如神經網絡、模式識別、決策樹等。另外,數據存儲與貯藏集成可以為軟件開發組織提供大量的數據,同時也進一步促使數據挖掘技術在軟件開發中的應用。
3 數據挖掘技術在軟件工程中的應用技術
3.1 結構與數據代碼挖掘
3.1.1 克隆代碼檢測
以復用目的為基礎,進行拷貝、粘貼的數碼段,部分情況下還會對代碼進行修改,一般情況為軟件系統代碼總數量7%~23%。對克隆代碼進行檢測,主要就是避免出現故障拷貝傳播情況,同時又可以促進軟件的維護,為軟件工程中數據挖掘技術應用最為廣泛的部分,常見基于文本對比、標識符對比、程序結構等方法。其中,文本對比即針對程序代碼內部分語句,對其進行判斷,以及后期改進,利用專業技術與工具,來提高字符串匹配率。例如通過Hash函數技術,以及相對應Duploe工具進行輔助,來提高字符串匹配率。基礎識別符對比,常見的即在構造分詞形成標識符序列前綴樹完成后進行對比,此項技術所對應的工具為Dup或CCFinder等[3]。
3.1.2 代碼檢索
復用原則在軟件開發中具有十分重要的地位,軟件復用一直專業研究要點,即在本地以及面向WEB代碼庫中檢索出與現階段項目符合的代碼之類的議題。目前應用比較廣泛的,如分類存儲并檢索、基于構件形式化描述、基于輸入-輸出映射檢索、基于代碼相似性等,主要應用到分類、聚類、語義分析等專業技術[4]。其中,就軟件開發現狀來看,Web應用范圍越來越大,不僅僅只存在于文檔內,逐漸有Mica以及Google Cod等代碼搜索引擎可用于軟件工程。
3.1.3 Aspect挖掘
軟件開發核心目的是爭取可以更好的實現數據關注點關于散列和纏結問題的處理,并提出新程序開發范型,Aspect挖掘與重構可以有效實現對遺留系統改造成面向方面軟件間問題的解決。原有應用的克隆代碼檢測技術,會在不固定時間內在程序中呈現相同或者相近代碼段,在軟件工程數據挖掘中仍然具有較大的應用優勢。其中,橫切關注點挖掘即Aspect挖掘,對于針對性比較強的方法,如基于度量分析和形式概念分析等,具有良好的應用效果。應用此種算法得到的橫切代碼候選集一般都比較大,對于候選集指導來開展面向方面重構,為現階段需要重點研究解決的問題。
3.2 程序執行記錄挖掘
3.2.1 編程挖掘
編程為軟件開發重要環節,在編寫代碼時,開發人員必須要全面理解變成代碼的結構與功能,并以自己的理解作為依據,從數據庫內選擇出具有關鍵作用的信息。一般變成所需信息可以分為三個部分:第一,軟件開發人員需要在已有代碼庫中,找出所需代碼結構、功能形似且可以重復利用的模式,如對象、數據結構、方法等。第二,軟件開發人員可以在現有數據庫內,尋找重用模式的靜態規則,例如繼承關系、類的方法等。第三,軟件開發人員應深入了解并分析重用模式的規則,例如API調用順序。
3.2.2 軟件故障檢測
根據程序執行紀律挖掘至程序規約和交互模式,可以實現準確定位,并有效進行軟件故障檢測。挖掘技術為信息跟蹤實施你想建模,進而來加強對程序的理解,并完成相應的維護工作。目前軟件工程所應用的挖掘技術,主要包括基于規則和自動化挖掘兩種形式。其中,基于規則挖掘主要是利用程序行為找尋相應規則,配合時態邏輯實現有效表達;自動化挖掘則是開發應用已經比較成熟的API規則挖掘方法。傳統定位軟件故障主要用程序切片,操作過程比較復雜,經常會發生定位不準的故障。在技術持續更新下,現在多選擇用程序譜來對程序運行軌跡進行描述,且對比正常軟件與故障運行軟件,來查找存在的故障問題。對此此類新型挖掘技術的應用,可以進一步提高軟件故障檢測率,及時發現軟件運行存在的故障,確定故障源后及時解決。
4 結束語
數據挖掘技術在軟件工程中的應用,對提高軟件開發效率和質量具有重要意義。基于數據挖掘技術的特點,對其在軟件工程中的應用方向進行分析,例如代碼分析、軟件故障檢測、軟件項目管理等多個方面,能夠進一步提升軟件工程的管理與控制能力。雖然數據挖掘技術現在應用已經比較普遍,但是研究應用并不成熟,還需要針對此方面進行更為深入的研究。
參考文獻
[1]鄭健.芻議軟件工程中數據挖掘技術的應用[J].電子技術與軟件工程,2016,1:212.
[2]張帆,沈孫園.淺談數據挖掘技術在軟件工程中的應用[J].電腦知識與技術,2009,8:1879-1881.
[3]姚文濤.試論軟件工程中數據挖掘技術的應用[J].河南科技,
2015,23:67.
[4]賀瑋.軟件工程數據挖掘技術的研究進展[J].科技風,2014,17:141+145.
作者簡介:譚薇(1984-),女,重慶,學歷:本科,研究方向:軟件工程。