(河北農(nóng)業(yè)大學(xué) 河北 保定 071000)
每個行業(yè)的發(fā)展都離不開信息傳遞和解讀,而每一個信息的產(chǎn)生都可以看作是龐大的數(shù)據(jù)雜糅,其中的數(shù)據(jù)又分為不同的重要等級,而數(shù)據(jù)的挖掘就是在這些冗雜的數(shù)據(jù)中進(jìn)行分類,進(jìn)一步的挖掘出重要數(shù)據(jù),并將這些數(shù)據(jù)進(jìn)行加工,然后傳遞給下一級。將此技術(shù)應(yīng)用到軟件工程中必將具有很大的前景。
數(shù)據(jù)挖掘是一種技術(shù),它結(jié)合了傳統(tǒng)的數(shù)據(jù)分析方法和現(xiàn)在先進(jìn)的處理大量數(shù)據(jù)的復(fù)雜算法相結(jié)合。在大量數(shù)據(jù)中自動的發(fā)現(xiàn)有用的信息的過程。極大的挖掘出數(shù)據(jù)的潛在價值,提高數(shù)據(jù)的利用率。
一個軟件的開發(fā)大致可以分為以下幾個階段,首先要確定軟件所要面對的特定用戶,根據(jù)這些用戶的某些特性來構(gòu)思整個軟件的框架,將框架搭載完畢之后在內(nèi)部對該軟件進(jìn)行軟件測試,然后進(jìn)行用戶的模擬公測,調(diào)查用戶的滿意程度,收集用戶的實(shí)際體驗(yàn),反饋用戶的建議和意見等。這些步驟都離不開信息的收集、整理、傳輸。數(shù)據(jù)挖掘就是依靠一些特殊的工具和媒介對信息進(jìn)行收集、甄別和運(yùn)用,來滿足軟件開發(fā)的需求。
1.1數(shù)據(jù)挖掘和“爬蟲”的比較。當(dāng)前比較在信息領(lǐng)域比較流行的一個技術(shù)是“爬蟲”,大量的數(shù)據(jù)信息工作者提起數(shù)據(jù)挖掘的時候都會想到“爬蟲”,把兩者混為一談?!芭老x”和數(shù)據(jù)挖掘是兩個大小不同的概念,“爬蟲”只能稱得上是數(shù)據(jù)挖掘的前提,但是數(shù)據(jù)挖掘的前提不僅僅只依靠“爬蟲”來獲取信息,還可以依靠自媒體,小程序以及問卷調(diào)查等獲取數(shù)據(jù)信息。數(shù)據(jù)挖掘?qū)⑹占降臄?shù)據(jù)通過高端算法進(jìn)行分類、篩選、甄別和計(jì)算,獲得有效的信息數(shù)據(jù),摒棄無效的信息數(shù)據(jù),最后將這些有用信息分別送入不同的驅(qū)動器,利用這些數(shù)據(jù)直接驅(qū)動其他系統(tǒng)進(jìn)行工作。從當(dāng)前數(shù)據(jù)挖掘的技術(shù)來看,雖然數(shù)據(jù)挖掘技術(shù)的效率還不是很高,但是隨著該領(lǐng)域不同人員的共同努力,數(shù)據(jù)挖掘在以后信息領(lǐng)域絕對是一個佼佼者。
1.2數(shù)據(jù)挖掘技術(shù)對軟件開發(fā)的重要性。數(shù)據(jù)挖掘技術(shù)無論是在傳統(tǒng)的汽車電子行業(yè)還是在新興智能家居的開發(fā)等領(lǐng)域都有著十分重要的影響,而軟件工程卻是其中最大的受益者,因?yàn)閿?shù)據(jù)挖掘的整個階段和軟件工程的開發(fā)時間段十分契合,可以說數(shù)據(jù)挖掘技術(shù)就是為軟件工程量身設(shè)計(jì)的一門專業(yè)性技術(shù)。軟件工程如果借助傳統(tǒng)的方法進(jìn)行數(shù)據(jù)收集和分析,需要大量的人力物力,而利用數(shù)據(jù)挖掘技術(shù)則只需要更換不同的算法即可,大大縮短了軟件開發(fā)的周期。
1.3從數(shù)據(jù)的預(yù)處理到數(shù)據(jù)挖掘結(jié)果后處理的過程:
數(shù)據(jù)挖掘技術(shù)目前還被視為新興技術(shù),但是從長遠(yuǎn)的影響力可以看出,數(shù)據(jù)挖掘技術(shù)已經(jīng)成為軟件工程領(lǐng)域最閃耀的技術(shù),下面將從開源軟件、軟件項(xiàng)目管理和程序代碼三個方面來介紹軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用。
2.1開源軟件和代碼克隆挖掘。由于軟件工程中大多電腦軟件都處于開源狀態(tài),而且許多程序語言也為用戶提供了大量可移植的功能,用戶可以根據(jù)自身的需要對軟件進(jìn)行改進(jìn),有能力還能夠直接在原有軟件的基礎(chǔ)上進(jìn)行二次開發(fā)。正是由于開源軟件的這種特性,雖然贏得了龐大用戶的青睞,但是問題也逐漸顯現(xiàn)出來,開源軟件的良莠不齊使得該領(lǐng)域存在一定的風(fēng)險(xiǎn)。數(shù)據(jù)挖掘技術(shù)能夠?qū)@種二次開發(fā)的軟件進(jìn)行篩選,屏蔽存在巨大漏洞的軟件,大大降低了開源軟件運(yùn)行的風(fēng)險(xiǎn)。
算法是一個軟件能夠運(yùn)行的核心,而程序代碼則是算法的骨架,但是從當(dāng)前軟件工程的保護(hù)力度來看,對于代碼的保護(hù)力度是最小的,大量的軟件都是通過代碼中某些變量關(guān)系的替換把自己包裝成一個新的程序,這種實(shí)際上侵犯了原作者的權(quán)益。
2.2軟件項(xiàng)目管理。軟件項(xiàng)目管理基本上采用抽屜存放和“八叉樹”兩種方法對成員關(guān)系進(jìn)行一對多匹配,在這樣的匹配過程中有些成員隸屬于兩個或者兩個以上的組織,這樣對于軟件項(xiàng)目管理可能會存在交叉的現(xiàn)象,無論是對軟件的協(xié)調(diào)關(guān)系,還是對軟件運(yùn)行的硬件要求都會提高。為了解決這一問題,可以在軟件項(xiàng)目管理之前,利用數(shù)據(jù)挖掘技術(shù)對樣本進(jìn)行分析,利用科學(xué)的算法對樣本中的每一個成員和組織關(guān)系進(jìn)行評價,剔除影響較小的關(guān)系,就能夠保障軟件項(xiàng)目管理的良好運(yùn)行。
2.3軟件漏洞檢測挖掘。軟件漏洞存在于軟件生命周期的整個過程,有些漏洞不易發(fā)現(xiàn)且一旦爆發(fā)危害極大。利用數(shù)據(jù)挖掘技術(shù)合理的進(jìn)行軟件測試盡可能發(fā)現(xiàn)軟件漏洞,挖掘過程分為:通過對源碼的發(fā)掘發(fā)現(xiàn)代碼中可能出現(xiàn)的問題;通過對已存在的軟件漏洞進(jìn)行發(fā)掘,對比發(fā)現(xiàn)軟件開發(fā)中的漏洞;通過利用模型檢測等技術(shù)對未知的軟件漏洞進(jìn)行挖掘,搜索出分險(xiǎn)性漏洞并及時修復(fù),從而提高軟件的穩(wěn)定性、安全性、魯棒性。
數(shù)據(jù)挖掘在軟件工程中的運(yùn)用前景是十分廣闊的,只要我們能夠?qū)?shù)據(jù)挖掘技術(shù)運(yùn)用得當(dāng),就能夠使軟件工程向前跨越出創(chuàng)造性的一步。