張惟慎
摘 要:隨著科學技術(shù)的發(fā)展,計算機信息技術(shù)在當下得到了較為廣泛地應用,相應地,軟件開發(fā)技術(shù)也得到了較大的發(fā)展。軟件開發(fā)信息庫的數(shù)據(jù)挖掘技術(shù),成為當下軟件開發(fā)的一個重要環(huán)節(jié),其可以更好地促進軟件性能提升,滿足人們的實際需求。軟件開發(fā)過程中,軟件開發(fā)組織構(gòu)成了軟件開發(fā)信息庫,實現(xiàn)了資源共享,可以將相關(guān)技術(shù)手段進行廣泛傳播。這樣一來,軟件開發(fā)技術(shù)將得到極大程度的提升。文章對面向軟件開發(fā)信息庫的數(shù)據(jù)挖掘的研究,將從軟件開發(fā)信息庫的數(shù)據(jù)獲取、軟件發(fā)展、應用以及軟件開發(fā)過程中存在的問題等幾個方面對這一問題進行探討和分析,為軟件開發(fā)信息庫的數(shù)據(jù)挖掘技術(shù)提供一些參考和建議,以期促進這一技術(shù)的發(fā)展和進步。
關(guān)鍵詞:軟件開發(fā);信息庫;數(shù)據(jù)挖掘
前言
數(shù)據(jù)挖掘,即Data mining,是在海量數(shù)據(jù)信息中提取有效信息,滿足人們實際需要的一種技術(shù)手段,該技術(shù)手段隨著社會經(jīng)濟的發(fā)展以及科學技術(shù)的應用,得到了較大的發(fā)展和進步。軟件工程數(shù)據(jù)挖掘,即Data minging for software engineering側(cè)重于軟件信息挖掘領(lǐng)域,是對軟件信息進行資源共享的一種技術(shù)手段,該手段的關(guān)鍵領(lǐng)域在于對軟件技術(shù)的研究和應用。軟件開發(fā)信息庫的數(shù)據(jù)挖掘,注重于數(shù)據(jù)挖掘、人工智能、模式識別等領(lǐng)域的研究,這三大領(lǐng)域又是軟件實現(xiàn)智能化、高科技化的關(guān)鍵。軟件開發(fā)信息庫的數(shù)據(jù)挖掘,近幾年來,以ICSE(International Conference on software engineering)會議提出的相關(guān)數(shù)據(jù)挖掘信息為研究對象,分析了軟件數(shù)據(jù)信息庫在軟件開發(fā)過程中的重要作用。文章在對軟件開發(fā)信息庫的數(shù)據(jù)挖掘技術(shù)分析過程中,探討了數(shù)據(jù)挖掘技術(shù)在軟件工程領(lǐng)域的重要作用,以及數(shù)據(jù)挖掘與軟件開發(fā)之間的密切聯(lián)系,注重對軟件開發(fā)特色的分析以及數(shù)據(jù)挖掘作用的闡述,突出了數(shù)據(jù)挖掘在軟件開發(fā)算法選擇過程中的重要作用。
1 軟件開發(fā)信息庫數(shù)據(jù)挖掘的基本概念與面臨的挑戰(zhàn)
1.1 軟件開發(fā)信息庫
軟件開發(fā)信息庫主要是指軟件開發(fā)過程中的相關(guān)數(shù)據(jù)總和,體現(xiàn)出了“數(shù)據(jù)化”這一特征。關(guān)于軟件開發(fā)信息庫的具體內(nèi)容,我們可以從以下幾點看出:
(1)項目開發(fā)過程中的“項目數(shù)據(jù)”,包括了項目開發(fā)的過程、細化的任務以及相關(guān)資源信息等?!绊椖繑?shù)據(jù)”是軟件開發(fā)的關(guān)鍵環(huán)節(jié)和基礎(chǔ)環(huán)節(jié),是后續(xù)開發(fā)的起點。“項目數(shù)據(jù)”的有效記載和日后的有效分析,將直接影響到軟件開發(fā)的最終性能。
(2)源代碼數(shù)據(jù)。源代碼數(shù)據(jù)是軟件程序執(zhí)行的關(guān)鍵,主要包括了“項目”開發(fā)的源代碼以及軟件版本升級和修改過程中的代碼。
(3)項目開發(fā)的相關(guān)文檔信息。軟件項目開發(fā)過程中,需要的文檔信息主要包括了需求文檔、測試文檔、設(shè)計文檔等,這些文檔能夠為軟件開發(fā)提供相應的數(shù)據(jù)支撐,確保軟件開發(fā)的目標得以實現(xiàn)。
(4)項目開發(fā)的歷史信息。這一部分包括了E-mail存檔、論壇交流的歷史記錄等。
(5)軟件存在缺陷的信息。軟件缺陷信息是軟件開發(fā)信息庫中的一個重要組成部分,同時,這一部分也是完善軟件相關(guān)信息,提升軟件整體性能的關(guān)鍵。軟件缺陷跟蹤信息,在后續(xù)的軟件修改和維護過程中,具有指導性意義。
軟件開發(fā)信息庫是軟件開發(fā)的重要組成部分,其對數(shù)據(jù)信息進行有效存儲。一般來說,軟件開發(fā)信息庫在數(shù)據(jù)存儲過程中,會根據(jù)信息的不同分類,有針對性地進行信息存儲。
(1)軟件配置管理系統(tǒng)。該系統(tǒng)是軟件開發(fā)中的一個重要組成部分,英文表示為“sofware configuration management system”,即“SCMS”,也就是版本控制系統(tǒng)。SCMS關(guān)系到了軟件開發(fā)過程中的源代碼數(shù)據(jù)信息控制,可以保證項目開發(fā)的相關(guān)文檔能夠進行有效存儲,并對相關(guān)歷史信息進行有效存檔。應用于軟件配置管理系統(tǒng)的軟件系統(tǒng)主要有:CVS、SVN等。
(2)Defect tracking system,即“缺陷跟蹤系統(tǒng)”,該系統(tǒng)是軟件進行修改的主要依據(jù),其在軟件開發(fā)過程中,最主要的功能就是軟件缺陷報告。目前來看,在進行軟件開發(fā)過程中,利用缺陷跟蹤系統(tǒng),可以對軟件開發(fā)過程中存在的問題進行有效分析,并采取有針對性的措施進行解決,保證軟件開發(fā)的可靠性和質(zhì)量性。在應用中,以“Bugzilla”系統(tǒng)為主。
(3)Project management system,即“項目管理系統(tǒng)”,該系統(tǒng)在軟件開發(fā)過程中,具有著重要地位,并且在實際應用過程中,發(fā)揮著重要作用。項目管理系統(tǒng)主要保證了軟件開發(fā)的項目計劃、資源分配、程序執(zhí)行,能夠按照相關(guān)要求進行,更好地提升軟件開發(fā)的效率。在實際應用過程中,例如微軟的Project軟件,就是利用了項目管理系統(tǒng)實現(xiàn)了對軟件計劃、資源分配的有效安排,提升了軟件開發(fā)的效率,并降低了軟件開發(fā)的成本。
1.2 數(shù)據(jù)挖掘
數(shù)據(jù)挖掘,即是利用數(shù)據(jù)庫內(nèi)的相關(guān)信息,更好地滿足人們的實際需要。數(shù)據(jù)挖掘,又稱數(shù)據(jù)庫中的知識發(fā)現(xiàn),是從一個巨大的數(shù)據(jù)信息庫中,對一些關(guān)鍵性知識的發(fā)掘,從而更好地解決實現(xiàn)問題。關(guān)于數(shù)據(jù)挖掘的內(nèi)容,我們可以從圖1看出。
圖1 數(shù)據(jù)挖掘過程
如圖1所示,我們可以看出,數(shù)據(jù)挖掘的步驟主要包括了以下幾個步驟:
(1)數(shù)據(jù)抽取。數(shù)據(jù)挖掘中的數(shù)據(jù)抽取,主要是以人們的實際需要為主,即在大的數(shù)據(jù)信息庫中提取有效信息,這些信息可以為人們的實踐活動提供有效指導,保證人們能夠?qū)ο嚓P(guān)問題進行有效解決。數(shù)據(jù)提取過程中,需要對數(shù)據(jù)信息內(nèi)容以及來源進行把握,同時也需要對數(shù)據(jù)類型和相關(guān)結(jié)構(gòu)進行有效分析,這樣一來,才能夠保證數(shù)據(jù)信息得到更好地應用;
(2)數(shù)據(jù)預處理。數(shù)據(jù)預處理主要是根據(jù)提取的相關(guān)數(shù)據(jù)信息,根據(jù)實際需要,對數(shù)據(jù)進行有效處理,將一些不必要的信息進行有效剔除,使留下的信息能夠更好地指導實踐活動;
(3)知識發(fā)現(xiàn)。知識發(fā)現(xiàn)是數(shù)據(jù)挖掘的一個關(guān)鍵環(huán)節(jié),同時,這一步驟也是數(shù)據(jù)信息得到有效應用的關(guān)鍵。知識發(fā)現(xiàn)主要是發(fā)現(xiàn)知識數(shù)據(jù)中,一些潛在的、未知的、有用的信息,將這些信息能夠提煉出來,更好地在實踐中進行運用;
(4)知識表示。知識表示是數(shù)據(jù)挖掘技術(shù)的最后階段,也就是理論應用于實踐中的一個表現(xiàn)。隨著大數(shù)據(jù)挖掘技術(shù)的發(fā)展和進步,知識表現(xiàn)的形式呈現(xiàn)一種多樣化的發(fā)展特征,通過關(guān)鍵規(guī)則,可以對知識進行開拓性的處理,使知識得到更好地應用。
綜上所述,我們不難看出,數(shù)據(jù)挖掘技術(shù)在軟件開發(fā)信息庫中的應用,主要分為四個步驟,即數(shù)據(jù)抽取、數(shù)據(jù)預處理、知識發(fā)現(xiàn)以及知識表示。數(shù)據(jù)挖掘技術(shù)與軟件開發(fā)信息庫有著密切的關(guān)聯(lián)性,軟件開發(fā)信息庫實現(xiàn)了信息資源的共享,是數(shù)據(jù)挖掘的基礎(chǔ)和前提,同樣地,數(shù)據(jù)挖掘也在很大程度上促進了軟件開發(fā)的發(fā)展和進步,二者之間,存在著一種相輔相成的關(guān)系。
1.3 軟件工程數(shù)據(jù)挖掘面臨的挑戰(zhàn)
軟件工程數(shù)據(jù)挖掘面臨的挑戰(zhàn),是影響軟件開發(fā)的主要因素,在實際發(fā)展過程中,如何有效應對這一挑戰(zhàn),更好地促進軟件開發(fā)技術(shù)的發(fā)展和進步,成為當下軟件開發(fā)面臨的一個重要議題。
(1)數(shù)據(jù)信息復雜化。隨著科學技術(shù)的發(fā)展,人們對高性能軟件有著更加迫切的需求,這樣一來,數(shù)據(jù)信息復雜化特征,成為當下軟件開發(fā)和數(shù)據(jù)挖掘面臨的一個主要問題。數(shù)據(jù)信息復雜化,主要包括了代碼、注釋、文檔的復雜化,三者之間在應用過程中,對算法選擇上,有著較大的差別,并且對算法的要求,表現(xiàn)出一種“苛刻”的特點。
(2)分析形式的變化。隨著電子商務時代的到來,軟件開發(fā)過程中,面臨著更大的挑戰(zhàn),對相關(guān)數(shù)據(jù)的分析,也變得更加復雜和困難。數(shù)據(jù)挖掘的最終步驟是將知識提交給用戶,而在數(shù)據(jù)信息提交完成后,如何對圖表、文字信息進行分析,如何對其作出有效評價,將成為一個較大的難題。
(3)數(shù)據(jù)挖掘的效果評價。數(shù)據(jù)挖掘技術(shù)在應用過程中,形成了一定的結(jié)果表示和評價體系,但是面臨著新的發(fā)展形勢,傳統(tǒng)的效果評價呈現(xiàn)出一種滯后性,無法在當下得到有效應用。這樣一來,效果評價成為當下探究的熱門議題。
2 軟件開發(fā)信息庫的數(shù)據(jù)挖掘綜述
2.1 軟件開發(fā)信息庫的數(shù)據(jù)獲取
軟件開發(fā)信息庫的數(shù)據(jù)獲取,是數(shù)據(jù)挖掘的前提和基礎(chǔ),一般來說,軟件開發(fā)信息庫的數(shù)據(jù)來源,主要包括了以下幾點:
(1)軟件開發(fā)商自身建立了軟件開發(fā)信息庫。軟件開發(fā)商在進行軟件開發(fā)過程中,勢必會對自身對軟件信息的研究進行有效地總結(jié),并將這些信息進行存儲,為日后的發(fā)展提供有效依據(jù);
(2)軟件開發(fā)機構(gòu)對軟件信息的存儲。一些權(quán)威機構(gòu)為了更好地促進軟件開發(fā)技術(shù)的發(fā)展,會將一些研究成果進行信息存儲,并且對相關(guān)技術(shù)進行信息共享,更好地促進軟件開發(fā)技術(shù)的發(fā)展和進步;
(3)自由軟件的軟件開發(fā)數(shù)據(jù)。自由軟件的軟件開發(fā)數(shù)據(jù)是最容易獲得的軟件開發(fā)信息,是研究項目的主要數(shù)據(jù)來源之一。關(guān)于自由軟件的軟件開發(fā)數(shù)據(jù),最具代表性的則是Source Forge提供的軟件開發(fā)數(shù)據(jù),包括了源代碼、缺陷數(shù)據(jù)以及相關(guān)交流信息等。
軟件開發(fā)信息庫獲取了相關(guān)數(shù)據(jù)信息后,會根據(jù)軟件開發(fā)的實際需要,對一些重要的軟件信息進行有效提取,這一提取過程,是軟件開發(fā)數(shù)據(jù)庫形成的關(guān)鍵環(huán)節(jié)。一般來說,在進行數(shù)據(jù)庫信息抽取時,主要包括了源代碼、項目數(shù)據(jù)信息、缺陷數(shù)據(jù)信息的提取。關(guān)于軟件開發(fā)信息庫問題的處理,CVS系統(tǒng)在應用過程中,具有代表性意義。CVS管理系統(tǒng)在應用過程中,注重對相關(guān)信息的結(jié)構(gòu)轉(zhuǎn)化,將相關(guān)信息進行有效提取,并能夠?qū)ζ溥M行有效保存,更好地滿足實際需要。
2.2 軟件開發(fā)信息庫數(shù)據(jù)的預處理
面向軟件開發(fā)信息的數(shù)據(jù)挖掘技術(shù)應用,對數(shù)據(jù)庫內(nèi)的信息進行預處理是一個關(guān)鍵環(huán)節(jié),在上文中,我們對這一問題也進行了相關(guān)闡述。接下來,我們將對這一問題進行具體的研究和分析。一般來說,軟件開發(fā)信息庫數(shù)據(jù)的預處理,主要包括了以下內(nèi)容:
(1)對配置系統(tǒng)進行有效管理。配置系統(tǒng)的數(shù)據(jù)信息處理,主要是對一些無效信息進行去除,并將重要信息和所需要的信息進行提取,并對其進行有效性分析,將提取的信息進行存儲,以便更好地進行應用;
(2)對缺陷數(shù)據(jù)進行處理。缺陷數(shù)據(jù)的處理,注重對缺失屬性值的分析,包括了類別、狀態(tài)、級別等相關(guān)缺陷的有效分析。缺陷數(shù)據(jù)的處理,還包括了對一些缺失信息的處理,對數(shù)據(jù)的屬性值進行有效地補充;
(3)項目過程數(shù)據(jù)中存在一定的噪聲數(shù)據(jù)的處理。項目過程數(shù)據(jù)中的噪聲污染,將會對軟件的整體性能產(chǎn)生主要的影響,“除噪”步驟必不可少。噪聲去除過程中,主要是為了更好地保證軟件開發(fā)的可靠性和穩(wěn)定性,可采取分箱、聚類以及回歸分析的方式對這一問題進行解決。
2.3 軟件的演進分析
軟件演進分析是軟件開發(fā)信息數(shù)據(jù)挖掘的一個重要環(huán)節(jié),在實際應用過程中,要對軟件的代碼演進進行有效分析。關(guān)于軟件代碼演進分析,較為常用的方法則是對程序語義進行有效分析,并且對軟件的具體結(jié)構(gòu)進行考慮,包括了方法、類型定義以及相關(guān)變量等內(nèi)容。關(guān)于軟件的演進分析,較為代表性的有D.Jackson和D.A.Ladd采用的語義分析方法,可以對內(nèi)容變量和外部變量的變化進行有效分析,并能夠?qū)ο嚓P(guān)信息進行正確識別。除此之外,M.W Godfrey等人則針對于開源軟件的演進過程中進行了分析,驗證了軟件演進法則。文章對軟件的演進分析,則基于軟件靜態(tài)程序進行了相關(guān)分析。
在分析過程中,由于軟件開發(fā)過程中的架構(gòu)演進較難控制,我們需要在開發(fā)過程中,對軟件源代碼進行有效設(shè)計,并對源代碼的修改進行慎重考慮,對其架構(gòu)演進情況進行合理把握。在分析時,可采用Zinmer mann提出的“關(guān)聯(lián)規(guī)則”方法,對演進過程中的模塊關(guān)系進行合理、有效把握。
2.4 軟件缺陷分析和動態(tài)建模方法
面向軟件開發(fā)信息庫的數(shù)據(jù)挖掘技術(shù)中,軟件缺陷分析和動態(tài)建模方法,是數(shù)據(jù)挖掘必須注意的一個重要議題。
2.4.1 軟件缺陷分析
軟件缺陷分析主要是根據(jù)實際情況,對不同屬性的軟件缺陷情況進行研究和分析,包括了決策樹、回歸分析以及神經(jīng)網(wǎng)絡(luò)等三種方法。其中,Patrick Knab等人,則應用了決策樹方法對軟件缺陷問題進行了分析。Patrick Knab等人分析的方面在于源代碼缺陷密度問題,對代碼行數(shù)、源代碼密度選擇問題展開了研究,為源代碼的選用,提供了有效依據(jù)。而針對于軟件缺陷數(shù)據(jù)和缺陷位置的研究,則主要以二項回歸模型方法為主,能夠?qū)浖毕輸?shù)據(jù)進行有效分析和統(tǒng)計。
2.4.2 動態(tài)建模方法
軟件開發(fā)信息庫的數(shù)據(jù)挖掘技術(shù)中,動態(tài)建模方法應用,能夠更好地對軟件開發(fā)過程中的事件動態(tài)關(guān)系進行有效把握。關(guān)于這一問題的研究,具有代表性的是Jonathan.E.Cook和A lexander L.Wolf在上個世紀末提出的語義推論方法,并應用神經(jīng)網(wǎng)絡(luò)算法建立動態(tài)模型,更好地實現(xiàn)了對軟件事件的動態(tài)監(jiān)控。同時,該方法在應用過程中,能夠利用動態(tài)建模方法,為用戶提供一個有效的軟件開發(fā)過程中,并且這一過程的提出,主要基于歷史事件的關(guān)聯(lián)分析基礎(chǔ)上。
3 結(jié)束語
綜上所述,我們可以看出,軟件開發(fā)數(shù)據(jù)在軟件開發(fā)中將發(fā)揮著日益重要的作用。這樣一來,把握軟件開發(fā)信息庫數(shù)據(jù)挖掘技術(shù)的應用,使其在軟件開發(fā)過程中發(fā)揮應有作用,成為當下軟件開發(fā)過程中必須把握的一個重要議題。同時,數(shù)據(jù)挖掘技術(shù)在軟件開發(fā)信息庫中的應用,對未來軟件開發(fā)領(lǐng)域,也將產(chǎn)生更為積極的作用。
參考文獻
[1]高強,賈志淳.面向軟件開發(fā)信息庫的數(shù)據(jù)挖掘綜述[J].電子制作,2014,19:110-111.
[2]郁抒思,周水庚,關(guān)佶紅.軟件工程數(shù)據(jù)挖掘研究進展[J].計算機科學與探索,2012,1:1-31.
[3]王輝,杜慶峰.基于軟件信息庫挖掘的軟件缺陷預測方法[J].計算機工程與設(shè)計,2012,8:3094-3098.