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