摘 要:所謂的數(shù)據(jù)挖掘指的是通過搜索海量的數(shù)據(jù)信息,將有用的知識和信息挖掘出來。在數(shù)據(jù)挖掘技術(shù)中,軟件工程數(shù)據(jù)挖掘技術(shù)是一項(xiàng)重要的內(nèi)容。通過表示、分析和提取等方法,將對軟件開發(fā)有用的知識和信息挖掘出來。本文簡要介紹了軟件工程數(shù)據(jù)挖掘,并對軟件開發(fā)階段需要應(yīng)對的問題和解決方案進(jìn)行了簡要的分析。
關(guān)鍵詞:軟件工程;數(shù)據(jù)挖掘;軟件開發(fā);
文章編號:1674-3520(2015)-07-00-01
在數(shù)據(jù)挖掘技術(shù)中,軟件工程數(shù)據(jù)挖掘是一個(gè)重要的領(lǐng)域,對軟件工程的發(fā)展有著極大的影響。所謂的軟件工程數(shù)據(jù)挖掘指的是在海量的數(shù)據(jù)中將有用的知識和信息提取出來,為軟件開發(fā)服務(wù)。
一、軟件工程數(shù)據(jù)挖掘
所謂的軟件工程數(shù)據(jù)挖掘的主要特點(diǎn)有以下幾個(gè)方面。首先,其能夠解決軟件開發(fā)者的數(shù)據(jù)選擇問題;其次,能夠解決挖掘算法的選擇問題;最后,能夠解決軟件工程的數(shù)據(jù)處理和提取問題[1]。
軟件工程數(shù)據(jù)挖掘,可以分為三個(gè)階段:結(jié)果評估、數(shù)據(jù)挖掘、數(shù)據(jù)預(yù)處理。其主要任務(wù)在于提取復(fù)雜混合的信息、異常檢測、估計(jì)預(yù)測、分類等等。與傳統(tǒng)的數(shù)據(jù)挖掘相比,軟件工程數(shù)據(jù)挖掘具有一定的特殊性。
(一)軟件工程數(shù)據(jù)挖掘具有更加復(fù)雜的數(shù)據(jù),包括版本信息、軟件報(bào)告等結(jié)構(gòu)化數(shù)據(jù),以及注釋、代碼等非結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)具有緊密的聯(lián)系,但是卻不能使用同一種算法進(jìn)行計(jì)算。這也造成了軟件工程數(shù)據(jù)挖掘的數(shù)據(jù)更為復(fù)雜。
(二)結(jié)果呈現(xiàn)的方式比較特殊。文字、報(bào)表等形式是傳統(tǒng)數(shù)據(jù)挖掘結(jié)果的主要表現(xiàn)形式。然而軟件工程數(shù)據(jù)的挖掘要將具體的實(shí)例提供給軟件開發(fā)者,例如設(shè)計(jì)結(jié)構(gòu)、缺陷定位等等,因此,必須開發(fā)新型的結(jié)果提交方法和手段。
(三)難以對挖掘結(jié)果進(jìn)行統(tǒng)一評價(jià)。盡管在傳統(tǒng)數(shù)據(jù)挖掘技術(shù)領(lǐng)域已經(jīng)形成了相對完善的評價(jià)標(biāo)準(zhǔn),然而由于軟件工程數(shù)據(jù)挖掘的前兩個(gè)特殊性,難以對挖掘結(jié)果進(jìn)行統(tǒng)一的評價(jià)。
因此,挖掘結(jié)果的表述和對數(shù)據(jù)的預(yù)處理是軟件工程挖掘的重點(diǎn)和難點(diǎn)。
二、軟件工程數(shù)據(jù)挖掘在軟件開發(fā)階段的問題和解決對策
編寫程序是軟件開發(fā)階段的主要目的。在結(jié)果提交和代碼編寫方面容易出現(xiàn)一些問題,需要采取有效的方式對其進(jìn)行解決。
軟件開發(fā)者在進(jìn)行代碼編寫時(shí),首先要對代碼的功能和結(jié)構(gòu)進(jìn)行全面的了解,然后加以自己的理解為基礎(chǔ),通過軟件工程數(shù)據(jù)挖掘,在海量數(shù)據(jù)中尋找可復(fù)用的信息[2]。一般情況下,可以將編程所需的信息劃分為三個(gè)方面。第一,在已有的代碼中,開發(fā)者要將可以重用的代碼找出來。第二,開發(fā)者要將可以重用的靜態(tài)規(guī)則找出來,例如繼承關(guān)系和類的方法等等。第三,開發(fā)者要講可以重用的動態(tài)規(guī)則找出來,例如應(yīng)用程序接口的調(diào)用順序等等。
一般情況下通過求助他人、查看代碼、通過軟件的幫助文檔等方法在軟件開發(fā)的代碼編寫中比較常用,但是這些方法也會出現(xiàn)一些問題,例如重用信息量過少、代碼量大、難以保障幫助文檔的完整性和準(zhǔn)確性等等[3]。
(一)重用代碼
開發(fā)者要了解所需的方法或者類,然后才能進(jìn)行代碼的重用,對相關(guān)代碼進(jìn)行瀏覽。這需要耗費(fèi)過多的時(shí)間,可以在代碼庫中通過關(guān)鍵字來尋找可以重用的代碼,這是由于可以重用的代碼必然存在相似的模式,通過上下文結(jié)構(gòu)可以呈現(xiàn)最終的結(jié)果,例如類與類的關(guān)系。首先要將具有上下文架構(gòu)和例程的代碼庫構(gòu)建出來。其次,開發(fā)者將類的信息提交到代碼庫,并對反饋結(jié)果打分,將代碼庫組建出來。第三,按照高低分來排序查詢時(shí)的例程,開發(fā)者可以自行選用查詢結(jié)果。
(二)重用靜態(tài)規(guī)則
利用軟件工程數(shù)據(jù)挖掘來重用靜態(tài)規(guī)則,開發(fā)者可以重復(fù)利用靜態(tài)規(guī)則,在代碼庫中用類與類的關(guān)系的形式將其保存下來,可以用關(guān)聯(lián)規(guī)則來發(fā)泄這種規(guī)則。首先,搜索代碼庫中內(nèi)力的關(guān)系,在代碼庫中保存其與其余類的關(guān)系。其次,挖掘關(guān)聯(lián)規(guī)則??梢允褂肁priori算法來發(fā)現(xiàn)出現(xiàn)頻率高的規(guī)則。第三,裁剪挖掘出的結(jié)果。也就是在篩選結(jié)中將無用的關(guān)聯(lián)去掉,使開發(fā)者能夠得到更為精煉的信息。第四,根據(jù)關(guān)聯(lián)關(guān)系在代碼庫中出現(xiàn)的頻率,用列表的形式呈現(xiàn)頻率的排序。
(三)重用動態(tài)規(guī)則
首先,開發(fā)者要制定動態(tài)規(guī)則的順序。其次,將結(jié)果利用隊(duì)列等簡單的數(shù)據(jù)結(jié)構(gòu)保存起來,開發(fā)者可以在編譯器擴(kuò)展中檢查結(jié)果的順序。第三,反饋違反規(guī)則的代碼。
在動態(tài)規(guī)則的具體重用過程中,由于開發(fā)者往往不能預(yù)先設(shè)定動態(tài)規(guī)則,因此,有研究提出了自動發(fā)現(xiàn)這種規(guī)則。自動發(fā)現(xiàn)規(guī)則主要是根據(jù)軟件開發(fā)者的習(xí)慣性,以及違反規(guī)則可能出現(xiàn)的問題,發(fā)現(xiàn)兩個(gè)事件發(fā)生的順序。例如B事件必然發(fā)生在A事件之前,發(fā)現(xiàn)此類規(guī)則之后就可以規(guī)則設(shè)定為先后調(diào)用的相同函數(shù),然后驗(yàn)證每一個(gè)規(guī)則,得出每個(gè)規(guī)則成立與否。由于可能會得到數(shù)量非常多的函數(shù),為了降低函數(shù)的數(shù)目,可以使用一些函數(shù)命名規(guī)則,將不可能的函數(shù)對去除掉,然后再匹配剩下的函數(shù)對。
三、結(jié)語
當(dāng)前我國的軟件工程數(shù)據(jù)挖掘仍然處于發(fā)展的初級階段,還有非常漫長的研究路程要走。當(dāng)前我國已經(jīng)有公司開始發(fā)布軟件工程數(shù)據(jù)挖掘系統(tǒng)的框架,但是遠(yuǎn)沒有達(dá)到商業(yè)化應(yīng)用的程度。本文以軟件開發(fā)階段為例,對軟件工程數(shù)據(jù)挖掘研究中所面臨的問題和解決對策進(jìn)行簡要的分析,在軟件工程數(shù)據(jù)的修改和維護(hù)階段還會出現(xiàn)更多的問題,例如無法對搜索的結(jié)果到表示進(jìn)行統(tǒng)一,這也一定程度上的軟件工程數(shù)據(jù)挖掘技術(shù)的發(fā)展造成了阻礙。隨著軟件工程數(shù)據(jù)挖掘研究的不斷深入,將會開發(fā)出更為友好化和實(shí)用化的軟件工程數(shù)據(jù)挖掘工具,推動軟件數(shù)據(jù)挖掘技術(shù)的發(fā)展和成熟。
參考文獻(xiàn):
[1]艾迪明,齊劍鋒,涂序彥. 關(guān)于分布式、異構(gòu)、歷史遺留數(shù)據(jù)的數(shù)據(jù)挖掘研究[J]. 計(jì)算機(jī)工程與應(yīng)用. 2013(01)
[2]金光,錢家麒,黃蔚民. 公安業(yè)務(wù)信息數(shù)據(jù)挖掘研究[J]. 警察技術(shù). 2013(04)
[3]章成志.數(shù)據(jù)挖掘研究現(xiàn)狀及最新進(jìn)展[J]. 南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào). 2013(02)