吳彥彰 湖北幼兒師范高等專科學校 湖北武漢 430071
?
數據挖掘技術在軟件工程中的應用探究
吳彥彰湖北幼兒師范高等專科學校湖北武漢430071
【文章摘要】
“互聯網+”行動的實施大大促進了計算機技術的發展,實現了大數據在社會各個領域的廣泛應用,提高了軟件系統的進一步發展。數據挖掘技術是軟件工程設計的核心尤其是在軟件系統規模與復雜性日益增長的環境下,加強研究數據挖掘技術在軟件工程中的應用具有重要的現實意義。
【關鍵詞】
數據挖掘技術;軟件工程;應用;“互聯網+”
數據挖掘是將存放在數據庫中的各種數據有目的的挖掘的過程。數據挖掘一般包括三個流程:數據預處理,其主要包括對數據的收集、清洗、抽樣以及數據交換;數據挖掘,在確定具體的挖掘數據之后,就需要根據相應的方式方法比如總結、分類、關聯規則等確定具體的挖掘算法;模式評價與知識表示,也就是在確定了數據挖掘的算法之后,根據挖掘的結果,評價結果的過程。
通過對數據挖掘流程的分析,數據挖掘的主要任務就是發現隱藏在數據中的有趣模式,由于在海量的數據中用戶很難快速找到與自己有用的信息,因此這就需要數據挖掘技術尋求與用戶需求相密切聯系的信息模式,以此滿足用戶的期望與需求。描述模型與預測模型是數據挖掘的主要功能。數據挖掘技術的基礎是數據庫,因此數據挖掘技術主要是面向應用的,數據挖掘技術應用與軟件工程的時間是在二十世紀末期,隨著計算機技術的不斷發展,數據挖掘技術在軟件工程的應用越來越廣泛。
軟件工程包含許多關于軟件的資料,這些資料都會存放在軟件代碼庫中,通過運用這些數據庫可以提高軟件系統開發人員的工作效率,使得系統維護人員可以對系統的框架有一個清晰的了解,比如程序人員對軟件工程進行組化任務時,他們可以快速的了解到系統組件的獨立性。
軟件工程的每一次RUP循環的階段都會產生大量的數據,這些數據都是挖掘的對象,基于軟件工程的生命周期,我們將其分為:分析和設計階段的應用、迭代開發設計階段的應用和維護階段的應用,(具體見圖1)。
2.1需求和設計階段
需求和設計階段主要是根據軟件工程設計的要求給出一個項目的概念解決方案,在軟件工程需求和設計階段都在發生著變化,一旦需求出現變化,軟件工程設計要求也就會出現變化,因此需要程序設計人員要具有良好的設計方法,通過數據挖掘技術研究軟件代碼重構問題,實現對程序代碼的模塊抽取。
2.2迭代開發階段
迭代開發階段是應用數據挖掘技術最多的階段,該階段主要包括:編碼、調試、測試以及錯誤檢測。
(1)應用在編碼的數據挖掘技術。在軟件工程編碼過程中,基于是根據軟件工程開發的需要,對編碼程序進行記錄,以此找到程序代碼中的關聯關系。比如我們所應用的基于迭代模式挖掘的規范發現的算法,其主要是通過挖掘程序的運行軌跡數據獲得程序運行時序模式,其運行模式就是通過利用關聯規則中面向Aprior的特性挖掘頻繁閉合時序項集模式,把程序里的每一個調用定義為ei.i是這些事項組合的集合,si=(e1,e2,e3,,,,,,)其中e稱之為程序的一次運行軌跡模式。當然除了上述的算法之外,數據挖掘技術在編碼中的應用算法還包羅復用模式算法、檢測API潛在調用順序的方法等等。
(2)應用于調試的數據挖掘技術。軟件工程的調試工作主要是由軟件開發人員完成的,其目的就是提高軟件系統的實際應用價值,滿足設計需求的要求。軟件系統調試屬于高耗時工作,其需要調試人員按照規范要求一步一步的進行,尤其是當軟件工程的系統比較復雜時,就會加劇調試的難度。調試的任務就是分析bug報告、定位軟件錯誤信息,并且及時修正錯誤的程序信息,對于這些調試的任務采取數據挖掘技術則可以有效的降低調試難度。以數據挖掘技術對軟件工程漏洞的檢測調試為例,調試的主要目的就是為了盡快的找出系統的漏洞,以便應用到實際中,首先通過對軟件工程測試項目的確定,根據用戶的實際需要,確定具體的檢測方式,從而制定出具體的檢測計劃。目前我們常用的檢測方法有自動分類方法、半自動化分類(文檔分類技術)以及bug報告篩選等等;然后根據確定的具體檢測方法對軟件工程的數據進行收集與分析,按照預定的計劃對收集的數據進行清理與轉換,將多余的數據清理出去,并且對丟失的數據進行補充;最后要選擇相應的數據模型,進行檢驗以此保證系統的穩定。
(3)應用于軟件工程錯誤檢測。任何軟件工程都會存在錯誤或者bug,據不完全統計,一般軟件工程的錯誤系統會給用戶造成巨大的損失,比如美國在1996年出現的航天飛船墜毀事件就是因為系統軟件的bug所引起的。而且對于軟件系統的錯誤檢測所要消耗的時間要占到系統開發設計周期的30%左右。因此數據挖掘技術應用到軟件工程中的錯誤檢測技術主要包括:從源代碼中推斷錯誤、復制粘貼錯誤檢測和函數匹配檢測。以從源代碼中推斷錯誤為例,首先使用頻繁項集挖掘算法找出代碼中頻繁項集,找出滿足最小支持度的程序規則,然后根據程序對規則的遵守程度進行推斷,如果只有少部分不遵守程序,那么不遵守程序規則就有可能是錯誤的bug規則,比如在規則(sosi-host-alloc-scsi-add-host)→(scsiscan-hostg)的函數中出現了27次,那么只有2個函數出現了(scsi-host-alloc-scsi-addhost),那么這2個函數就是錯誤bug。
應用于維護階段。維護階段是軟件工程的重要工作,需要維護人員要對系統有一個清晰的框架認識。一般軟件維護的工作主要包括改正程序中的錯誤和缺陷、改進設計的環境以及按照實際需要增加相應的程序應用。數據挖掘技術在軟件工程維護階段的應用主要包括:一是引導的軟件修改。在軟件系統中如果修改一個代碼,那么與之關聯的代碼也就需要修改,而數據挖掘技術則是找到這些修改模式,避免出現頻繁修改模塊的可能;二是切面挖掘。也就是面向對象編程的有益補充,其主要目的就是增強系統的可理解性和維護性。
數據挖掘技術在軟件工程中應用的方法主要有:一是關聯方法。挖掘技術應用與軟件工程中的關聯方法,其規則在于發現大量數據中所具有的相關聯系及有趣關聯。并且關聯規則具有兩個重要特征,其一為支持度,表示為P (A ∪ B),表明A、B 兩個子集在事物集中出現的概率是相同的;其二為置信度,可表示為P(B | A),說明A 在事物集中所具有的概率,同樣B 也會出現;二是聚類方法。聚類方式的應用,顧名思義,便是把對象數據分為多個簇或類,并且保證統一類或簇中的數據的相似度較高,同時不同類或簇中的對象具有明顯的差別;三是分類方法。分類方式的應用,主要是對離散值和分類標號進行操作,一般情況下,首先需建立起相應的模型,對其概念集和數據類集進行描述,之后應用模型完成分類

圖1:數據挖掘技術在軟件工程應用的切入點

圖2:檢測錯誤的流程圖
總之,在軟件工程項目中合理的應用數據挖掘技術確實具備著極強的應用價值,對于軟件工程項目的發展和提升來說意義重大,并且根據其具體的應用過程來看,其涉及到的應用內容和應用環節也是比較多的,這也進一步體現出了數據挖掘技術的巨大應用價值,值得相應的研究人員在今后針對這種數據挖掘技術及其在軟件工程項目中的應用進行深入的研究和探討,進一步的提升其自身的水平及其應用的價值。
【參考文獻】
[1]馬保平,關于對軟件工程中的數據挖掘技術的探討[J].電子技術與軟件工程2015年09期
[2]許文杰,數據挖掘技術在軟件工程中的應用研究[J].電子技術與軟件工程2015年11期