摘 要:在二十一世紀(jì),人們每天要面對大量的信息。如何對這些信息進(jìn)行處理,從中找到對自己有用的知識和信息是一個重要的問題。只有從海量的信息中篩選出自己需要的信息和知識,才能有效的提高人們的工作質(zhì)量和工作效率,這就需要用到數(shù)據(jù)挖掘技術(shù)。在軟件工程中尤其需要應(yīng)用數(shù)據(jù)挖掘技術(shù)來促進(jìn)軟件的開發(fā)和管理。
關(guān)鍵詞:數(shù)據(jù)挖掘技術(shù);軟件工程;應(yīng)用;
文章編號:1674-3520(2015)-07-00-01
在軟件工程的軟件項目管理、開源軟件開發(fā)、軟件故障檢測、程序代碼分析等方面都要用到數(shù)據(jù)挖掘技術(shù)。數(shù)據(jù)挖掘技術(shù)有利于對軟件工程的管理和控制進(jìn)行提高。本文對數(shù)據(jù)挖掘技術(shù)進(jìn)行了簡要的介紹,并對數(shù)據(jù)挖掘技術(shù)在軟件工程中的應(yīng)用進(jìn)行了綜述。
一、數(shù)據(jù)挖掘技術(shù)
數(shù)據(jù)挖掘指的是從大量的模糊、無序數(shù)據(jù)中有效的信息挖掘出來。數(shù)據(jù)挖掘技術(shù)能夠?qū)崿F(xiàn)聚類和分類信息,并且對信息進(jìn)行偏差分析。數(shù)據(jù)挖掘過程主要有四個步驟。首先,要選擇軟件庫中的數(shù)據(jù);其次,要對被選擇的數(shù)據(jù)進(jìn)行預(yù)處理,將其轉(zhuǎn)化為格式化數(shù)據(jù)。第三,要挖掘格式化信息;最后,將其中的有用信息挖掘出來并加以利用[1]。
在軟件工程的管理和開發(fā)過程中往往要面對大量的數(shù)據(jù)和信息,這也加大了軟件工程的管理和開發(fā)的工作量。軟件工程必須在短時間內(nèi)從眾多的信息中找出有用的信息。軟件工程的數(shù)據(jù)挖掘工作主要有三個方面:首先,探查交互式可視數(shù)據(jù);其次,提取自動模式;最后,將模型構(gòu)建起來。提取自動模式和構(gòu)建模型要以可視數(shù)據(jù)探查為基礎(chǔ),而構(gòu)建模型又可以指導(dǎo)模式的提取和可視數(shù)據(jù)探查工作。
一般情況下,軟件工程中應(yīng)用數(shù)據(jù)挖掘技術(shù)主要是通過統(tǒng)計分析、預(yù)測、聚類和分析技術(shù)將對人們有用的、潛在的信息從眾多的資源中挖掘出來,并向軟件系統(tǒng)進(jìn)行反饋。
二、在軟件工程中應(yīng)用數(shù)據(jù)挖掘技術(shù)
上世紀(jì)九十年代軟件工程中開始應(yīng)用數(shù)據(jù)挖掘技術(shù),經(jīng)過二十余年來的發(fā)展,數(shù)據(jù)挖掘技術(shù)的應(yīng)用范圍越來越廣泛,技術(shù)也在不斷的進(jìn)步。應(yīng)用數(shù)據(jù)挖掘技術(shù)的領(lǐng)域有零售、保險、銀行、交通等等。在軟件系統(tǒng)中應(yīng)用數(shù)據(jù)挖掘技術(shù)可以使系統(tǒng)的安全性和穩(wěn)定性得到有效的提高,并對軟件系統(tǒng)的維護(hù)效率進(jìn)行提高。
(一)數(shù)據(jù)挖掘技術(shù)在開源軟件開發(fā)中的應(yīng)用
源代碼為開放的軟件被稱為開源軟件,開源軟件絕大多數(shù)是免費(fèi)向客戶開放的,這也造成了一定的管理和控制困難。通過數(shù)據(jù)挖掘技術(shù)能夠有效地提高開源軟件的質(zhì)量。牛津大學(xué)和大阪大學(xué)都曾經(jīng)在軟件開發(fā)中應(yīng)用數(shù)據(jù)挖掘技術(shù)。例如牛津大學(xué)設(shè)計了一個能夠?qū)κ褂谜吆烷_發(fā)者進(jìn)行跟蹤管理的數(shù)據(jù)挖掘系統(tǒng),從而使開源軟件的使用率和質(zhì)量得到了有效的提高。
(二)數(shù)據(jù)挖掘技術(shù)在軟件項目管理中的應(yīng)用
數(shù)據(jù)挖掘技術(shù)在軟件項目管理中的應(yīng)用主要有兩個方面。一方面是挖掘版本控制信息,另一方面是挖掘組織關(guān)系[2]。軟件的項目管理非常復(fù)雜,挖掘組織關(guān)系主要是為了分配和協(xié)調(diào)人力資源。這是由于一個工程項目涉及到的工作人員可能有幾百人甚至上千人,這就很容易造成人員之間的文檔和電子郵件的交互,從而影響正常的工作秩序。需要使用數(shù)據(jù)挖掘技術(shù)來區(qū)分工作人員的組織關(guān)系,使軟件項目管理能夠有序進(jìn)行。
除此之外,在挖掘版本控制信息時也需要利用數(shù)據(jù)挖掘技術(shù)。版本控制主要是對文件內(nèi)容的變化進(jìn)行記錄,用戶可以對版本的修訂情況進(jìn)行查看。在版本信息控制中應(yīng)用數(shù)據(jù)挖掘技術(shù)能夠降低系統(tǒng)的維護(hù)成本。與此同時也可以對軟件系統(tǒng)的維護(hù)進(jìn)行警示,甚至還能夠?qū)⑾到y(tǒng)修復(fù)記錄中的錯誤清晰的查找出來。軟件設(shè)計者能夠通過對錯誤記錄的查找來了解和避免一些錯誤,從而使軟件項目的管理水平得到提高。
(三)數(shù)據(jù)挖掘技術(shù)在程序代碼和機(jī)構(gòu)中的應(yīng)用
在軟件工程中,將克隆代碼稱為程序代碼,也就是通過復(fù)制和粘貼對代碼進(jìn)行反復(fù)使用[3]。在軟件工程中,數(shù)據(jù)挖掘技術(shù)在克隆代碼中應(yīng)用的比較廣泛。當(dāng)前檢測克隆代碼的主要方式有運(yùn)用潛在語義搜索、基于程序結(jié)構(gòu)表示的方法、基于度量的方法、基于標(biāo)識符對比方法、基于文本對比方法等等。但是當(dāng)前數(shù)據(jù)挖掘技術(shù)主要是對于發(fā)信息進(jìn)行考慮,沒有考慮到挖掘語義,造成了數(shù)據(jù)挖掘技術(shù)在克隆代碼中的應(yīng)用具有一定的局限性。
數(shù)據(jù)挖掘技術(shù)還用在挖掘橫切關(guān)注點(diǎn)上。由于在程序中一些關(guān)注點(diǎn)的代碼為同一代碼段或者比較相似,這就需要對橫切關(guān)注點(diǎn)進(jìn)行挖掘。挖掘橫切關(guān)注點(diǎn)的主要方式有很多。例如基于自然語言的分析方法、基于聚類分析方法、形式概念分析方法、基于類型和文本的分析方法等等??梢允褂媒橛诜椒▓?zhí)行關(guān)系法和形式概念分析法兩種方法來進(jìn)行執(zhí)行模式的挖掘。與此同時還要挖掘數(shù)據(jù)庫中的可用構(gòu)件和代碼。
(四)數(shù)據(jù)挖掘技術(shù)在軟件故障檢測中的應(yīng)用
軟件故障檢測中對數(shù)據(jù)挖掘技術(shù)的應(yīng)用主要是挖掘程序的執(zhí)行記錄中的交互模式和程序說明。通過跟蹤信息并進(jìn)行逆向建模來挖掘程序說明,從而對程序進(jìn)行后續(xù)維護(hù)。主要有兩種軟件故障檢測中的挖掘方式:基于自動化的挖掘方式和基于規(guī)則的挖掘方式。
程序切片是傳統(tǒng)的軟件故障定位技術(shù),該技術(shù)的缺點(diǎn)在于定位不準(zhǔn)確、技術(shù)過于復(fù)雜。當(dāng)前用比較多的是將程序的執(zhí)行軌跡用程序譜抽象表示出來,從而比較成功運(yùn)行和故障運(yùn)行將故障的來源找出來。這樣一來軟件故障檢測的準(zhǔn)確性和效率都能夠得到有效的提高。
三、結(jié)語
在軟件工程的軟件故障檢測、程序代碼分析、軟件項目管理和開源軟件開發(fā)等環(huán)節(jié)中都要運(yùn)用數(shù)據(jù)挖掘技術(shù)。數(shù)據(jù)挖掘技術(shù)可以使軟件工程的控制和管理得到有效的提高。當(dāng)前我國對數(shù)據(jù)挖掘技術(shù)的研究還在不斷深入,積極促進(jìn)數(shù)據(jù)挖掘技術(shù)在軟件工程中的應(yīng)用。
參考文獻(xiàn):
[1]李新,張曉靜,米燕濤.軟件開發(fā)過程中的數(shù)據(jù)挖掘[J].石家莊職業(yè)技術(shù)學(xué)院學(xué)報,2012(02).
[2]趙麗坤,陳立文,張國宗.基于數(shù)據(jù)挖掘技術(shù)的軟件項目管理體系[J].經(jīng)營與管理,2012(12).
[3]鄒丈東,張立厚.數(shù)據(jù)挖掘在水環(huán)境分析信息化中的應(yīng)用[J].圖書館論壇,2012(05).