李高杰
摘? ?要:傳統(tǒng)軟件工程領(lǐng)域的數(shù)據(jù)處理缺陷使得軟件運行容易出現(xiàn)卡頓和錯誤、信息傳輸不穩(wěn)定的現(xiàn)象。將數(shù)據(jù)挖掘技術(shù)融入軟件工程的開發(fā)能避免該問題,同時也保障了信息數(shù)據(jù)的正常傳輸、過濾和整合,從而有效提升數(shù)據(jù)處理能力,確保數(shù)據(jù)的準確性和來源的安全性,提升文檔安全性,過濾危險和無用信息。文章對軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用及其發(fā)展進行了研究。
關(guān)鍵詞:軟件工程;數(shù)據(jù)挖掘技術(shù);代碼;數(shù)據(jù)
隨著科學(xué)技術(shù)不斷發(fā)展、網(wǎng)絡(luò)通信技術(shù)不斷進步,海量的數(shù)據(jù)信息需要有匹配的軟件進行過濾和整合。傳統(tǒng)軟件工程領(lǐng)域的數(shù)據(jù)處理缺陷使得軟件運行容易出現(xiàn)卡頓和錯誤、信息傳輸不穩(wěn)定,日常生活中對信息數(shù)據(jù)的要求不斷提高,數(shù)據(jù)挖掘技術(shù)能更好地滿足用戶需求。數(shù)據(jù)挖掘技術(shù)融入軟件工程的開發(fā)能避免該問題,同時保障了信息數(shù)據(jù)的正常傳輸、過濾和整合數(shù)據(jù),從而提升數(shù)據(jù)處理能力,確保數(shù)據(jù)的準確性和來源的安全性。軟件工程中利用數(shù)據(jù)挖掘技術(shù)可挖掘、收集有效數(shù)據(jù)存放在數(shù)據(jù)庫中,整理數(shù)據(jù)、提升文檔安全性、過濾危險和無用信息。
1? ? 軟件工程與數(shù)據(jù)挖掘技術(shù)
數(shù)據(jù)挖掘(Data Mining,DM)是一種在海量數(shù)據(jù)集中挖掘有效信息數(shù)據(jù)的技術(shù)。軟件工程數(shù)據(jù)挖掘技術(shù)(Data Mining for Software Engineering,DMSE)是應(yīng)用在軟件工程領(lǐng)域的一種數(shù)據(jù)挖掘技術(shù),主要指開發(fā)新的或者利用現(xiàn)有的數(shù)據(jù)挖掘技術(shù),經(jīng)過表示、分析和提取等步驟挖掘?qū)浖_發(fā)者有用的信息數(shù)據(jù)[1]。軟件工程數(shù)據(jù)挖掘技術(shù)廣泛應(yīng)用于軟件工程、人工智能、數(shù)據(jù)挖掘和模式識別等領(lǐng)域。軟件工程中的數(shù)據(jù)挖掘技術(shù)與傳統(tǒng)的數(shù)據(jù)挖掘具有相似之處,又在處理和提取軟件工程數(shù)據(jù)、采用合適算法挖掘軟件工程之間的應(yīng)用數(shù)據(jù)、為軟件開發(fā)者提供有價值的數(shù)據(jù)信息等方面存在特色。
軟件開發(fā)過程積累大量數(shù)據(jù),包括可行性分析、設(shè)計文檔、軟件代碼、需求分析、軟件版本、測試數(shù)據(jù)和結(jié)果、用戶反饋等。一般情況下,軟件工程數(shù)據(jù)是軟件開發(fā)者獲得信息的唯一渠道。隨著軟件日漸工程化和大型化,軟件工程中的數(shù)據(jù)復(fù)雜性和數(shù)量在飛速增加,軟件開發(fā)者通過瀏覽代碼、文檔等傳統(tǒng)的方式難以獲取能滿足軟件開發(fā)所需信息。
2? ? 軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用
軟件開發(fā)和軟件工程是相輔相成的,軟件工程是軟件開發(fā)必須遵循的操作原則,軟件開發(fā)是軟件工程的具體實現(xiàn)。軟件開發(fā)的每個階段都需要特定信息來開展工作,但單個開發(fā)者難以具備開發(fā)過程中所需的一切信息數(shù)據(jù),且缺乏從軟件工程的數(shù)據(jù)中搜索有效信息的方法,導(dǎo)致軟件開發(fā)者陷于卡頓。軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用顯得越發(fā)重要,其應(yīng)用主要表現(xiàn)在以下幾方面。
2.1? 開源軟件數(shù)據(jù)挖掘技術(shù)的應(yīng)用
開源軟件主要是指一種源代碼是開放式的應(yīng)用,由于其具有開放性,通常該類軟件都是免費的,擁有廣大的用戶群。但大量的用戶群給該類軟件帶來了管理的問題,從而拖累軟件的使用。由于開源軟件存在缺陷,因此可以有針對性地把數(shù)據(jù)挖掘技術(shù)融入開源軟件中,提升軟件質(zhì)量,使得該類軟件既具有基本數(shù)據(jù)處理功能,又能在數(shù)據(jù)挖掘技術(shù)支持下挖掘、篩選整合大規(guī)模的數(shù)據(jù),為復(fù)雜的軟件提供數(shù)據(jù)處理功能,提升軟件的使用效率,有效管理用戶群體。
2.2? 軟件項目數(shù)據(jù)挖掘技術(shù)的應(yīng)用
數(shù)據(jù)挖掘技術(shù)應(yīng)用在軟件項目中主要有兩種,分別是挖掘組織關(guān)系和挖掘版本控制信息。軟件項目管理相對復(fù)雜,要挖掘項目中人員的組織關(guān)系就需要分配和協(xié)調(diào)好軟件項目中的人力資源。大型的軟件工程項目參與人員可達到成百上千,在軟件項目研發(fā)過程中將會產(chǎn)生大量的信息數(shù)據(jù),如參與者之間相互溝通交流的文檔、電子郵件等數(shù)據(jù),沒有過濾、整合就容易造成數(shù)據(jù)混亂,影響軟件項目中的正常秩序。軟件項目工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用能有效地區(qū)分參與者的組織關(guān)系和過濾無用數(shù)據(jù),整合有效數(shù)據(jù),確保軟件項目的順利開展。
2.3? 代碼中數(shù)據(jù)挖掘技術(shù)的應(yīng)用
數(shù)據(jù)挖掘技術(shù)應(yīng)用在代碼中主要體現(xiàn)在代碼搜索和克隆代碼檢測兩方面:(1)代碼搜索工具主要是以用戶接受的一組關(guān)鍵字作為輸入,輸入關(guān)鍵字匹配和向用戶返回的一組代碼段。目前的代碼搜索引擎把注釋和代碼看作文本,把每個程序文件認作文檔,對代碼庫執(zhí)行搜索命令,以文檔為單位返回結(jié)果。大多數(shù)編程語言主要用標識符對函數(shù)、變量等命名,強調(diào)注釋和標識符對程序可讀性的關(guān)鍵作用。但由于編程風格不統(tǒng)一等,在實現(xiàn)中,直接對注釋和標識符進行搜索難以返回正確結(jié)果。數(shù)據(jù)挖掘技術(shù)融入代碼搜索能更準確地搜索、提取關(guān)鍵字。提取關(guān)鍵字的過程在數(shù)據(jù)挖掘中就是理解程序的過程,也是采用關(guān)鍵字對程序準確表述的過程[2]。(2)克隆代碼檢測與代碼搜索相類似,是用代碼本身來描述軟件行為。用戶輸入一段已知行為代碼,克隆代碼檢測會向用戶返回與該代碼相似的代碼段,且已知行為代碼的特征皆可用于描述與之相近的代碼段。目前克隆代碼檢測是軟件工程中數(shù)據(jù)挖掘技術(shù)的最熱門應(yīng)用之一。
2.4? 軟件故障的數(shù)據(jù)挖掘技術(shù)應(yīng)用
數(shù)據(jù)挖掘技術(shù)在應(yīng)用過程中不但要完成挖掘任務(wù),還需挖掘出實際程序執(zhí)行記錄具體說明,挖掘出的數(shù)據(jù)能夠測定和判斷軟件發(fā)生的故障。數(shù)據(jù)挖掘過程中要先明確挖掘的目的和目標,及時跟蹤和了解信息,根據(jù)實際問題處理信息,以確保后續(xù)工作的順利開展,提升對應(yīng)用程序的熟悉度。在種類繁多的挖掘工具中,自動化類和基于規(guī)則廣泛應(yīng)用在實際生活中。在各類實際因素的推動下,軟件在運行過程中會發(fā)生故障,采用傳統(tǒng)的定位技術(shù)能夠解決故障問題,但傳統(tǒng)定位技術(shù)存在效率較低、使用繁瑣和定位精準度不穩(wěn)定等問題。在數(shù)據(jù)挖掘技術(shù)中采用程序譜對程序運行軌跡實行抽象定位,利用對比排查方式排出故障,找出源頭,有效地提升了故障排查的效率和故障檢測的準確性。
3? ? 軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用發(fā)展研究
軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用主要是為了提升軟件的質(zhì)量和開發(fā)效率。相對而言,軟件工程是純腦力勞動,要實現(xiàn)該應(yīng)用目標,需要便捷、準確和高效地給軟件開發(fā)者提供有效信息。目前,軟件工程中數(shù)據(jù)挖掘技術(shù)難以滿足軟件工程各個領(lǐng)域的需求,同時,由于軟件工程中數(shù)據(jù)挖掘技術(shù)的各個要素都隨著技術(shù)的發(fā)展不斷更新,如軟件工程的方法、數(shù)據(jù)量和結(jié)構(gòu)、數(shù)據(jù)挖掘的算法和方式等,促使軟件工程中數(shù)據(jù)挖掘技術(shù)的研究和應(yīng)用必然會隨之不斷革新變化,主要體現(xiàn)在以下幾點。
3.1? 根據(jù)目前軟件工程中數(shù)據(jù)挖掘存在的缺陷,研發(fā)高性能挖掘算法
針對目前存在的問題,軟件工程數(shù)據(jù)挖掘技術(shù)關(guān)鍵要采用高效軟件,重用規(guī)則檢索和發(fā)現(xiàn),軟件規(guī)則檢索由關(guān)鍵詞向自然語言檢索和模糊檢索發(fā)展。檢索返回內(nèi)容從原始簡單語句向完全文檔發(fā)展。同時,根據(jù)目前存在缺陷的檢測工具僅能檢測一些違反給定程序動態(tài)或靜態(tài)規(guī)則造成的缺陷,根據(jù)軟件的執(zhí)行信息和結(jié)構(gòu)統(tǒng)計出容易出現(xiàn)的缺陷,研發(fā)能夠檢測原因范圍更廣泛的復(fù)雜缺陷的缺陷檢測工具。由于軟件行為模型和程序規(guī)則之間的聯(lián)系,開發(fā)出用自然語言表述行為的模型和方法,將微觀和宏觀的軟件行為模型整合,使得軟件在各個粒度和層次上的行為信息表述更豐富和準確[3]。采用更高效的軟件設(shè)計評價工具和標準,與軟件工程領(lǐng)域相結(jié)合使其實現(xiàn)更豐富的可視化表示。
3.2? 研發(fā)應(yīng)對海量軟件工程中數(shù)據(jù)的挖掘算法和高效預(yù)處理
軟件工程規(guī)模擴大,軟件需求將增加,軟件開發(fā)工具細化,軟件開發(fā)參與者增加,開發(fā)周期延長。為了應(yīng)對這一問題,軟件工程中數(shù)據(jù)挖掘使用者或者研發(fā)者應(yīng)圍繞數(shù)據(jù)降維和特征提取開發(fā)具有更高效里的數(shù)據(jù)處理方式,同時針對動態(tài)數(shù)據(jù)流、在線挖掘算法等研發(fā)效率更高的挖掘算法,充分利用機器學(xué)習、人工智能等數(shù)據(jù)挖掘新技術(shù),開發(fā)更高效的軟件工程數(shù)據(jù)挖掘技術(shù)。
4? ? 結(jié)語
軟件工程中數(shù)據(jù)挖掘技術(shù)應(yīng)用廣泛,各個領(lǐng)域都引入該技術(shù)。目前軟件工程中的數(shù)據(jù)挖掘技術(shù)被不斷研發(fā)和投入使用,但主要是以軟件開發(fā)工具插件的形式或者原型系統(tǒng)發(fā)布出來,很多技術(shù)問題還有待解決,并沒有完全實現(xiàn)商業(yè)化應(yīng)用。軟件工程中數(shù)據(jù)挖掘技術(shù)應(yīng)用的處理方法和數(shù)據(jù)提取、挖掘結(jié)果和算法等方面仍存在很大的研究空間。軟件工程中利用數(shù)據(jù)挖掘技術(shù)可挖掘、收集有效數(shù)據(jù)存放在數(shù)據(jù)庫中,整理數(shù)據(jù)、提升文檔安全性、過濾危險和無用信息。隨著技術(shù)的不斷發(fā)展,軟件工程中數(shù)據(jù)挖掘技術(shù)應(yīng)用將越來越廣泛、實用和智慧化。
[參考文獻]
[1]LAPORTE C Y,MUNOZ M,MIRANDA J M,et al.Applying software engineering standards in very small entities from start-ups to grownups[J].IEEE Software, 2018(1):99-103.
[2]CHEN Y.A method of mining association rules of big data based on cloud computing[J].Radio Engineering,2017(3):8-11.
[3]SUN X.Design of association rules data mining system based on improved ant colony algorithm[C].New York:International Conference on Education,Management,Information and Mechanical Engineering,2017.
Application and research of data mining technology in software engineering
Li Gaojie
(Zhengzhou Instituse of Finance and Economics, Zhengzhou 450000, China)
Abstract:The defects of data processing in the field of traditional software engineering make the operation of software prone to Catton and error, and the instability of information transmission. Integrating data mining technology into the development of software engineering can avoid this problem, and at the same time ensure the normal transmission, filtering and integration of information data, so as to effectively improve the ability of data processing, ensure the accuracy and source security of data, improve the security of documents, filter dangerous and useless information. In this paper, the application and development of data mining technology in software engineering are studied.
Key words:software engineering; data mining technology; code; data