□賈淑滟
(山西旅游職業(yè)學(xué)院,山西 太原 030031)
縱觀近些年來(lái)軟件工程的發(fā)展,隨著“互聯(lián)網(wǎng)+”時(shí)代的飛速發(fā)展和技術(shù)革新,軟件工程在此良好的科學(xué)技術(shù)和經(jīng)濟(jì)發(fā)展大環(huán)境下技術(shù)進(jìn)步明顯,在社會(huì)各行各業(yè)的領(lǐng)域中應(yīng)用愈加成熟,價(jià)值日益提升。軟件工程的飛速發(fā)展,離不開(kāi)近些年來(lái)信息通信技術(shù)的飛速發(fā)展,更離不開(kāi)數(shù)據(jù)挖掘技術(shù)的日益提高。在軟件工程中,軟件在開(kāi)發(fā)、應(yīng)用及維護(hù)過(guò)程中也會(huì)出現(xiàn)大量的信息和數(shù)據(jù),如何在大量的數(shù)據(jù)里找到有用的數(shù)據(jù)、相關(guān)聯(lián)的信息就顯得尤為重要,因此應(yīng)用數(shù)據(jù)挖掘技術(shù)恰好能解決這一問(wèn)題,該技術(shù)不僅能夠使得軟件工程的應(yīng)用越來(lái)越廣泛,如在銀行、保險(xiǎn)、交通、電商及娛樂(lè)等行業(yè),而且能使得軟件工程中的軟件項(xiàng)目管理、程序代碼分析、軟件故障檢測(cè)、用戶(hù)體驗(yàn)等方面大大提升。因此,在軟件工程的發(fā)展過(guò)程中,數(shù)據(jù)挖掘技術(shù)的應(yīng)用勢(shì)在必行。
近二十年來(lái),計(jì)算機(jī)軟件發(fā)展迅速,不再僅僅局限于研究和解決一些工程問(wèn)題,更多的是服務(wù)于一些管理部門(mén)、生產(chǎn)機(jī)構(gòu)和服務(wù)行業(yè),與人們的日常生活息息相關(guān)。軟件工程是指通過(guò)工程化的方式方法來(lái)構(gòu)建和維護(hù)軟件的實(shí)效性、穩(wěn)定性和高質(zhì)量性,最后生產(chǎn)出具有正確性、能夠滿(mǎn)足用戶(hù)需求、遵循軟件工程原則并且達(dá)到工程目標(biāo)的軟件產(chǎn)品。
數(shù)據(jù)挖掘技術(shù)是指挖掘存儲(chǔ)于數(shù)據(jù)庫(kù)中的龐大體量的信息數(shù)據(jù)中有用的部分?jǐn)?shù)據(jù),最終形成有用的知識(shí)的操作過(guò)程。軟件工程中的數(shù)據(jù)挖掘主要包括以下三個(gè)程序:第一,數(shù)據(jù)挖掘首先要對(duì)數(shù)據(jù)進(jìn)行收集、分類(lèi)、匯總的預(yù)先處理。第二,對(duì)數(shù)據(jù)進(jìn)行深入挖掘,應(yīng)用科學(xué)合理的方法進(jìn)行總結(jié),確定應(yīng)用的挖掘算法。第三,數(shù)據(jù)模式評(píng)價(jià),即最終對(duì)于數(shù)據(jù)結(jié)果進(jìn)行評(píng)價(jià)與知識(shí)表示[1]。
數(shù)據(jù)挖掘技術(shù)的發(fā)展是一直伴隨著互聯(lián)網(wǎng)和大數(shù)據(jù)技術(shù)、云計(jì)算技術(shù)等新科技的進(jìn)步的,數(shù)據(jù)挖掘技術(shù)從本質(zhì)上來(lái)說(shuō),其主要功能是通過(guò)各種先進(jìn)計(jì)算機(jī)技術(shù)和邏輯算法來(lái)提取信息數(shù)據(jù)庫(kù)中重要信息的數(shù)據(jù)資源。數(shù)據(jù)挖掘技術(shù)從其概念和定義的提出到逐漸投入行業(yè)實(shí)踐,再到逐漸走向多樣化、多功能化以及高價(jià)值化,其在人類(lèi)社會(huì)中的重要應(yīng)用越來(lái)越廣泛。
在軟件工程的發(fā)展過(guò)程中,數(shù)據(jù)挖掘技術(shù)的應(yīng)用理念首次提出是在一九六七年,自從數(shù)據(jù)挖掘技術(shù)的應(yīng)用理念提出之后,軟件工程的發(fā)展如虎添翼,具有了更加適用于社會(huì)各行各業(yè)的本領(lǐng),不僅在應(yīng)用過(guò)程中更加穩(wěn)定和高效[2],也在很大程度上減少了人力的反復(fù)工作量,讓工作效率大大地提高。數(shù)據(jù)挖掘技術(shù)在軟件工程的發(fā)展過(guò)程中,以多樣化的視角來(lái)看,在軟件工程的各個(gè)領(lǐng)域中具有更加深刻的價(jià)值,其應(yīng)用范圍越來(lái)越廣泛,深入到人們生活的方方面面,為生活提供了極大的便利和快捷;以多功能化的視角來(lái)看,數(shù)據(jù)挖掘技術(shù)在軟件工程中的應(yīng)用使得軟件工程的功能逐漸拓寬,為人類(lèi)社會(huì)的生產(chǎn)和生活提供了更加廣闊的應(yīng)用意義;以高價(jià)值化的視角來(lái)看,數(shù)據(jù)挖掘技術(shù)的應(yīng)用使得軟件工程在很多方面打破了原有的生產(chǎn)和生活模式,有相關(guān)的替代品來(lái)簡(jiǎn)化和提高人們的生產(chǎn)和生活,從而提高了軟件工程的應(yīng)用價(jià)值。但是數(shù)據(jù)挖掘技術(shù)在軟件工程的應(yīng)用過(guò)程中,必須以需求引導(dǎo)應(yīng)用方法和應(yīng)用范圍的升級(jí),從而促進(jìn)軟件工程的發(fā)展。
在被大數(shù)據(jù)充斥著的時(shí)代背景下,傳統(tǒng)的信息處理技術(shù)已經(jīng)不能精確地處理和存儲(chǔ)大量的數(shù)據(jù)了,但是數(shù)據(jù)挖掘技術(shù)卻可以非常高效地解決這一問(wèn)題。近幾年內(nèi),軟件工程行業(yè)也獲得了較快的發(fā)展,這與數(shù)據(jù)挖掘技術(shù)在軟件工程中的應(yīng)用密不可分,在軟件工程中數(shù)據(jù)挖掘的有效應(yīng)用有以下幾個(gè)方面:
數(shù)據(jù)挖掘技術(shù)在軟件工程的應(yīng)用過(guò)程中,首先應(yīng)用到的是數(shù)據(jù)需求和設(shè)計(jì)階段。數(shù)據(jù)需求和設(shè)計(jì)是指通過(guò)對(duì)軟件工程設(shè)計(jì)的發(fā)展需求進(jìn)行深入分析,應(yīng)用數(shù)據(jù)挖掘技術(shù)能夠確定一個(gè)科學(xué)合理的數(shù)據(jù)概念方案。軟件工程中數(shù)據(jù)需求和設(shè)計(jì)階段,軟件工程的發(fā)展需求一直處于一個(gè)動(dòng)態(tài)變化的過(guò)程中,具有一定的發(fā)展性。當(dāng)軟件工程中的數(shù)據(jù)發(fā)展需求發(fā)生變化時(shí),數(shù)據(jù)需求和設(shè)計(jì)階段應(yīng)用數(shù)據(jù)挖掘技術(shù)的方式方法以及概念模型方案都需要進(jìn)行變革。這就要求軟件工程中數(shù)據(jù)挖掘技術(shù)人員需要具有較高的專(zhuān)業(yè)素質(zhì)和技能水平,能夠根據(jù)軟件工程的需求變化采用適宜的數(shù)據(jù)挖掘方法,促進(jìn)軟件工程行業(yè)的長(zhǎng)遠(yuǎn)發(fā)展。
軟件工程中,迭代開(kāi)發(fā)階段是數(shù)據(jù)挖掘技術(shù)應(yīng)用最為頻繁的階段,在此階段中,數(shù)據(jù)挖掘技術(shù)的合理應(yīng)用對(duì)于軟件工程的發(fā)展至關(guān)重要。數(shù)據(jù)挖掘技術(shù)在軟件工程的迭代開(kāi)發(fā)階段的應(yīng)用分為以下幾種:
1.軟件工程的程序代碼開(kāi)發(fā)。數(shù)據(jù)挖掘技術(shù)在軟件工程的迭代開(kāi)發(fā)階段,對(duì)于程序軟件編發(fā)過(guò)程,主要是根據(jù)軟件工程迭代開(kāi)發(fā)的主要需求,對(duì)于對(duì)象數(shù)據(jù)程序進(jìn)行記錄和儲(chǔ)存,進(jìn)而分析程序代碼和軟件之間的關(guān)系[3]。而程序代碼開(kāi)發(fā)是軟件工程中的一項(xiàng)主要工作,因?yàn)樵陂_(kāi)發(fā)代碼時(shí)會(huì)用到較多的數(shù)據(jù)信息,因此,應(yīng)用數(shù)據(jù)挖掘技術(shù)可以精準(zhǔn)、高效地挖掘出在代碼開(kāi)發(fā)過(guò)程中所需的數(shù)據(jù)信息,這樣不僅降低了開(kāi)發(fā)代碼的難度,同時(shí)也提高了效率和準(zhǔn)確率。
2.軟件工程的數(shù)據(jù)調(diào)試。軟件工程的迭代開(kāi)發(fā)階段,數(shù)據(jù)調(diào)試一般要依靠相關(guān)的軟件開(kāi)發(fā)人員來(lái)完成。軟件工程中數(shù)據(jù)調(diào)試一般工作量巨大,需要軟件開(kāi)發(fā)人員花費(fèi)大量時(shí)間和精力在此階段,當(dāng)數(shù)據(jù)調(diào)試難度增大時(shí),調(diào)試的進(jìn)度會(huì)更加難以推進(jìn)。因此,在軟件工程的數(shù)據(jù)調(diào)試中應(yīng)用數(shù)據(jù)挖掘技術(shù),對(duì)于軟件工程中的數(shù)據(jù)能夠進(jìn)行針對(duì)性分析,能夠及時(shí)發(fā)現(xiàn)數(shù)據(jù)錯(cuò)誤信息,幫助軟件工程數(shù)據(jù)調(diào)試人員高效修復(fù)數(shù)據(jù)中心的漏洞,加快數(shù)據(jù)調(diào)試階段的進(jìn)程。
3.軟件工程的故障檢測(cè)。軟件工程的發(fā)展和應(yīng)用過(guò)程中,錯(cuò)誤和故障出現(xiàn)是在所難免的。軟件工程中的數(shù)據(jù)若有故障出現(xiàn),往往會(huì)引發(fā)嚴(yán)重的后果,甚至可能會(huì)導(dǎo)致整個(gè)系統(tǒng)面臨崩潰,給用戶(hù)帶來(lái)巨大的損失。因此,將數(shù)據(jù)挖掘技術(shù)引入到軟件工程的故障檢測(cè)中進(jìn)行應(yīng)用實(shí)踐,能夠從軟件源代碼中推斷和分析出錯(cuò)誤數(shù)據(jù),并且對(duì)可能出現(xiàn)的故障和錯(cuò)誤進(jìn)行檢測(cè),此外,在檢測(cè)故障和錯(cuò)誤時(shí),數(shù)據(jù)挖掘技術(shù)還能夠搜集與分析故障和錯(cuò)誤信息,并詳細(xì)準(zhǔn)確地描述出軟件中存在的故障和漏洞,從而幫助軟件工程相關(guān)工作人員針對(duì)不同的故障和錯(cuò)誤開(kāi)展不同的補(bǔ)救措施,及時(shí)修復(fù)故障、修正錯(cuò)誤,從而使問(wèn)題的錯(cuò)誤及修復(fù)的工作效率得到很大提高,降低甚至避免給用戶(hù)帶來(lái)一切損失,確保軟件系統(tǒng)的穩(wěn)定運(yùn)行。
4.軟件工程的執(zhí)行記錄。在軟件工程的執(zhí)行記錄的過(guò)程中,通過(guò)對(duì)軟件系統(tǒng)的運(yùn)行數(shù)據(jù)、程序在工作時(shí)的交互方式、安裝位置等信息進(jìn)行挖掘,并且使用合理的數(shù)據(jù)分析方式來(lái)分析這些信息,從而掌握軟件的整體運(yùn)行情況并做出評(píng)價(jià)。此外,還可以應(yīng)用數(shù)據(jù)挖掘技術(shù)對(duì)軟件的執(zhí)行記錄進(jìn)行挖掘分析,有助于軟件管理人員更加高效準(zhǔn)確地開(kāi)展工作,維護(hù)軟件系統(tǒng)。
5.軟件工程的系統(tǒng)維護(hù)。在長(zhǎng)期的使用過(guò)程中,對(duì)于軟件的系統(tǒng)維護(hù)是一個(gè)非常重要的環(huán)節(jié)。在軟件工程的系統(tǒng)維護(hù)中,應(yīng)用數(shù)據(jù)挖掘技術(shù)精準(zhǔn)的搜集和分析用戶(hù)使用數(shù)據(jù),以此能夠幫助維護(hù)工作人員及時(shí)發(fā)現(xiàn)和修正軟件系統(tǒng)程序中出現(xiàn)的錯(cuò)誤信息,并且改進(jìn)程序運(yùn)行環(huán)境,同時(shí)還能根據(jù)用戶(hù)應(yīng)用需要對(duì)系統(tǒng)進(jìn)行程序增設(shè)、刪改等,從而不僅能夠維護(hù)系統(tǒng)的安全穩(wěn)定運(yùn)行,還能極大地提高用戶(hù)的使用率和良好的體驗(yàn)感,也能減少后期維護(hù)管理人員的人工成本。
數(shù)據(jù)的挖掘無(wú)異于一項(xiàng)大海撈針的工作,而完整的數(shù)據(jù)挖掘過(guò)程一般由以下四個(gè)階段組成:選擇、預(yù)處理、挖掘和吸收。選擇是對(duì)軟件庫(kù)里的數(shù)據(jù)進(jìn)行選擇,由于數(shù)據(jù)的更新往往需要對(duì)數(shù)據(jù)重新做出選擇;預(yù)處理是將被選擇的數(shù)據(jù)格式化成適合挖掘的形式;挖掘是將處理后的數(shù)據(jù)進(jìn)行分類(lèi)、聚類(lèi)和異常檢測(cè)等工作,使得在大量的數(shù)據(jù)里找出最能反映本質(zhì)的信息與知識(shí);吸收即結(jié)果評(píng)估,將有用的信息數(shù)據(jù)進(jìn)行整合展示給用戶(hù)。
在軟件工程中應(yīng)用數(shù)據(jù)挖掘技術(shù)就是使“大海撈針”變得更加容易,能夠在大量的數(shù)據(jù)中快速找到有用的信息并反饋給軟件系統(tǒng)是二者結(jié)合的最終目的。因此,在軟件工程的各個(gè)領(lǐng)域運(yùn)用恰當(dāng)?shù)臄?shù)據(jù)挖掘技術(shù)來(lái)完成軟件工程任務(wù)成了重中之重。常用的挖掘技術(shù)有關(guān)聯(lián)發(fā)現(xiàn)、分類(lèi)方法、聚類(lèi)分析等,此外還有統(tǒng)計(jì)分析、回歸建模等以下介紹幾種常用的方法。
在軟件工程的發(fā)展過(guò)程中,應(yīng)用數(shù)據(jù)挖掘技術(shù)最為基本的方式方法就是關(guān)聯(lián)的方法。關(guān)聯(lián)方法的應(yīng)用要點(diǎn)是通過(guò)數(shù)據(jù)挖掘技術(shù)發(fā)現(xiàn)龐大體量的信息數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)與數(shù)據(jù)之間的微妙關(guān)聯(lián)。而且不僅可以對(duì)現(xiàn)有的數(shù)據(jù)進(jìn)行分析處理,還能對(duì)新的數(shù)據(jù)加以預(yù)測(cè)。
關(guān)聯(lián)方法的應(yīng)用特征主要有以下兩個(gè)方面:第一,數(shù)據(jù)的支持度。當(dāng)數(shù)據(jù)集合中數(shù)據(jù)子集A與數(shù)據(jù)子集B二者出現(xiàn)相交,即表明兩個(gè)子集在本數(shù)據(jù)集合中出現(xiàn)和被檢索到的概率是相同的。第二,數(shù)據(jù)的真實(shí)度。同樣以數(shù)據(jù)集合中數(shù)據(jù)子集A與數(shù)據(jù)子集B之間的關(guān)系為例,當(dāng)出現(xiàn)數(shù)據(jù)集合P(B|A),則表明數(shù)據(jù)子集A在數(shù)據(jù)集合中出現(xiàn)時(shí),數(shù)據(jù)子集B也一定會(huì)出現(xiàn),這一特征也稱(chēng)為數(shù)據(jù)的置信度。通過(guò)關(guān)聯(lián)方法可以在大量的數(shù)據(jù)中找到某些數(shù)據(jù)之間所存在的關(guān)系,再對(duì)這些數(shù)據(jù)進(jìn)行進(jìn)一步的研究發(fā)現(xiàn),可以得知其中所隱藏的相關(guān)關(guān)系或者因果關(guān)系,進(jìn)而對(duì)軟件開(kāi)發(fā)過(guò)程起到一定指導(dǎo)作用。
在軟件工程的發(fā)展過(guò)程中,應(yīng)用數(shù)據(jù)挖掘技術(shù)的另一種重要方法是分類(lèi)的方法。分類(lèi)可以讓雜亂無(wú)章的事務(wù)變得井然有序起來(lái),應(yīng)用到數(shù)據(jù)中也亦然。分類(lèi)方法是指通過(guò)對(duì)數(shù)據(jù)庫(kù)中離散值和各種分類(lèi)標(biāo)號(hào)進(jìn)行匯總、分析和處理等數(shù)據(jù)挖掘操作,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)信息進(jìn)行分類(lèi)。
分類(lèi)方法的應(yīng)用過(guò)程中,一般在進(jìn)行數(shù)據(jù)挖掘時(shí),要先建立一個(gè)分析模型,然后才能根據(jù)模型對(duì)數(shù)據(jù)庫(kù)中的信息數(shù)據(jù)進(jìn)行描述,這樣不僅可以使大量的數(shù)據(jù)分門(mén)別類(lèi)系統(tǒng)化,還能在分類(lèi)過(guò)程中掌握某些數(shù)據(jù)之間的規(guī)律,進(jìn)而為軟件工程的發(fā)展起到推進(jìn)作用。
聚類(lèi)分析的用途非常廣泛,數(shù)據(jù)挖掘技術(shù)中聚類(lèi)方法在軟件工程中的應(yīng)用,對(duì)于軟件工程的行業(yè)的進(jìn)一步發(fā)展具有重要意義[4]。如在商業(yè)上,聚類(lèi)分析可以從消費(fèi)者數(shù)據(jù)中區(qū)分出不同的消費(fèi)者群體,每一種群體有相似的消費(fèi)習(xí)慣,而不同的群體之間消費(fèi)習(xí)慣的差異較大,如此可以分析概括每一個(gè)群體的特點(diǎn)、喜好和模式,也可以針對(duì)其中的某一個(gè)或某幾個(gè)群體做進(jìn)一步的分析,輔助商業(yè)行為做出正確的決策。
數(shù)據(jù)挖掘技術(shù)中聚類(lèi)方法的應(yīng)用是指首先對(duì)數(shù)據(jù)庫(kù)中的信息數(shù)據(jù)進(jìn)行分組,將挖掘?qū)ο髷?shù)據(jù)分成不同組別的簇或者類(lèi),每一個(gè)數(shù)據(jù)組別種類(lèi)或者簇的對(duì)象數(shù)據(jù)都是高度相似的,不同簇或者不同類(lèi)之間的對(duì)象數(shù)據(jù)具有相當(dāng)明顯的差異。選擇合適的聚類(lèi)算法循環(huán)多次使各類(lèi)本身盡可能地緊湊,各類(lèi)之間盡可能地分開(kāi)。
遺傳算法相對(duì)于上文中的幾種數(shù)據(jù)挖掘技術(shù)方法,具有一定的應(yīng)用優(yōu)勢(shì)。遺傳算法是指通過(guò)生物的自然選擇和遺傳激勵(lì)的機(jī)理衍生出來(lái)的一種對(duì)數(shù)據(jù)進(jìn)行隨機(jī)檢索的算法。遺傳算法在軟件工程中的應(yīng)用優(yōu)勢(shì)是在數(shù)據(jù)模型之間能夠通過(guò)此種方法找到平時(shí)難以檢索到的相關(guān)性,在數(shù)據(jù)模型之間建立起聯(lián)系,從而實(shí)現(xiàn)對(duì)象數(shù)據(jù)的深入挖掘。而且遺傳算法覆蓋面大,減少陷入局部最優(yōu)解的風(fēng)險(xiǎn),利于尋找全局最優(yōu)解,但是遺傳算法的效率通常比其他算法低。
綜上所述,隨著近些年來(lái)計(jì)算機(jī)數(shù)據(jù)庫(kù)技術(shù)升級(jí)和更新速度逐漸加快,應(yīng)用于軟件工程中的數(shù)據(jù)挖掘技術(shù)方式也應(yīng)該與時(shí)俱進(jìn),不斷變革使其更加符合人們的生活實(shí)際。但是在發(fā)展過(guò)程中也會(huì)遇到很多難題,比如數(shù)據(jù)信息量過(guò)大,并且過(guò)于復(fù)雜,在數(shù)據(jù)挖掘的初始階段就會(huì)是最大的障礙,數(shù)據(jù)挖掘結(jié)果的不準(zhǔn)確會(huì)直接導(dǎo)致后續(xù)一系列工作發(fā)生偏差甚至是錯(cuò)誤。此外,沒(méi)有統(tǒng)一的評(píng)價(jià)標(biāo)準(zhǔn)來(lái)公平的衡量和評(píng)價(jià),盡管數(shù)據(jù)挖掘技術(shù)應(yīng)用在人們的生活和工作的方方面面,但是在處理大量的復(fù)雜信息時(shí),也會(huì)增加軟件工程的復(fù)雜性。
數(shù)據(jù)挖掘技術(shù)應(yīng)用于軟件工程時(shí),相關(guān)技術(shù)人員要在軟件工程的數(shù)據(jù)需求和設(shè)計(jì)、迭代開(kāi)發(fā)、故障檢測(cè)以及系統(tǒng)維護(hù)等多個(gè)方面尋求數(shù)據(jù)挖掘技術(shù)的應(yīng)用價(jià)值,讓軟件工程在數(shù)據(jù)挖掘技術(shù)的應(yīng)用中變得更加高效,給用戶(hù)使用帶來(lái)更好的體驗(yàn)。同時(shí),隨著社會(huì)的不斷進(jìn)步和發(fā)展,二者結(jié)合所帶來(lái)的經(jīng)濟(jì)效益的大大提升不僅是機(jī)遇,更是挑戰(zhàn)。