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