李高杰
摘? ?要:傳統(tǒng)軟件工程領(lǐng)域的數(shù)據(jù)處理缺陷使得軟件運(yùn)行容易出現(xiàn)卡頓和錯(cuò)誤、信息傳輸不穩(wěn)定的現(xiàn)象。將數(shù)據(jù)挖掘技術(shù)融入軟件工程的開發(fā)能避免該問(wèn)題,同時(shí)也保障了信息數(shù)據(jù)的正常傳輸、過(guò)濾和整合,從而有效提升數(shù)據(jù)處理能力,確保數(shù)據(jù)的準(zhǔn)確性和來(lái)源的安全性,提升文檔安全性,過(guò)濾危險(xiǎn)和無(wú)用信息。文章對(duì)軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用及其發(fā)展進(jìn)行了研究。
關(guān)鍵詞:軟件工程;數(shù)據(jù)挖掘技術(shù);代碼;數(shù)據(jù)
隨著科學(xué)技術(shù)不斷發(fā)展、網(wǎng)絡(luò)通信技術(shù)不斷進(jìn)步,海量的數(shù)據(jù)信息需要有匹配的軟件進(jìn)行過(guò)濾和整合。傳統(tǒng)軟件工程領(lǐng)域的數(shù)據(jù)處理缺陷使得軟件運(yùn)行容易出現(xiàn)卡頓和錯(cuò)誤、信息傳輸不穩(wěn)定,日常生活中對(duì)信息數(shù)據(jù)的要求不斷提高,數(shù)據(jù)挖掘技術(shù)能更好地滿足用戶需求。數(shù)據(jù)挖掘技術(shù)融入軟件工程的開發(fā)能避免該問(wèn)題,同時(shí)保障了信息數(shù)據(jù)的正常傳輸、過(guò)濾和整合數(shù)據(jù),從而提升數(shù)據(jù)處理能力,確保數(shù)據(jù)的準(zhǔn)確性和來(lái)源的安全性。軟件工程中利用數(shù)據(jù)挖掘技術(shù)可挖掘、收集有效數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,整理數(shù)據(jù)、提升文檔安全性、過(guò)濾危險(xiǎn)和無(wú)用信息。
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)過(guò)表示、分析和提取等步驟挖掘?qū)浖_發(fā)者有用的信息數(shù)據(jù)[1]。軟件工程數(shù)據(jù)挖掘技術(shù)廣泛應(yīng)用于軟件工程、人工智能、數(shù)據(jù)挖掘和模式識(shí)別等領(lǐng)域。軟件工程中的數(shù)據(jù)挖掘技術(shù)與傳統(tǒng)的數(shù)據(jù)挖掘具有相似之處,又在處理和提取軟件工程數(shù)據(jù)、采用合適算法挖掘軟件工程之間的應(yīng)用數(shù)據(jù)、為軟件開發(fā)者提供有價(jià)值的數(shù)據(jù)信息等方面存在特色。
軟件開發(fā)過(guò)程積累大量數(shù)據(jù),包括可行性分析、設(shè)計(jì)文檔、軟件代碼、需求分析、軟件版本、測(cè)試數(shù)據(jù)和結(jié)果、用戶反饋等。一般情況下,軟件工程數(shù)據(jù)是軟件開發(fā)者獲得信息的唯一渠道。隨著軟件日漸工程化和大型化,軟件工程中的數(shù)據(jù)復(fù)雜性和數(shù)量在飛速增加,軟件開發(fā)者通過(guò)瀏覽代碼、文檔等傳統(tǒng)的方式難以獲取能滿足軟件開發(fā)所需信息。
2? ? 軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用
軟件開發(fā)和軟件工程是相輔相成的,軟件工程是軟件開發(fā)必須遵循的操作原則,軟件開發(fā)是軟件工程的具體實(shí)現(xiàn)。軟件開發(fā)的每個(gè)階段都需要特定信息來(lái)開展工作,但單個(gè)開發(fā)者難以具備開發(fā)過(guò)程中所需的一切信息數(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)用,由于其具有開放性,通常該類軟件都是免費(fèi)的,擁有廣大的用戶群。但大量的用戶群給該類軟件帶來(lái)了管理的問(wèn)題,從而拖累軟件的使用。由于開源軟件存在缺陷,因此可以有針對(duì)性地把數(shù)據(jù)挖掘技術(shù)融入開源軟件中,提升軟件質(zhì)量,使得該類軟件既具有基本數(shù)據(jù)處理功能,又能在數(shù)據(jù)挖掘技術(shù)支持下挖掘、篩選整合大規(guī)模的數(shù)據(jù),為復(fù)雜的軟件提供數(shù)據(jù)處理功能,提升軟件的使用效率,有效管理用戶群體。
2.2? 軟件項(xiàng)目數(shù)據(jù)挖掘技術(shù)的應(yīng)用
數(shù)據(jù)挖掘技術(shù)應(yīng)用在軟件項(xiàng)目中主要有兩種,分別是挖掘組織關(guān)系和挖掘版本控制信息。軟件項(xiàng)目管理相對(duì)復(fù)雜,要挖掘項(xiàng)目中人員的組織關(guān)系就需要分配和協(xié)調(diào)好軟件項(xiàng)目中的人力資源。大型的軟件工程項(xiàng)目參與人員可達(dá)到成百上千,在軟件項(xiàng)目研發(fā)過(guò)程中將會(huì)產(chǎn)生大量的信息數(shù)據(jù),如參與者之間相互溝通交流的文檔、電子郵件等數(shù)據(jù),沒(méi)有過(guò)濾、整合就容易造成數(shù)據(jù)混亂,影響軟件項(xiàng)目中的正常秩序。軟件項(xiàng)目工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用能有效地區(qū)分參與者的組織關(guān)系和過(guò)濾無(wú)用數(shù)據(jù),整合有效數(shù)據(jù),確保軟件項(xiàng)目的順利開展。
2.3? 代碼中數(shù)據(jù)挖掘技術(shù)的應(yīng)用
數(shù)據(jù)挖掘技術(shù)應(yīng)用在代碼中主要體現(xiàn)在代碼搜索和克隆代碼檢測(cè)兩方面:(1)代碼搜索工具主要是以用戶接受的一組關(guān)鍵字作為輸入,輸入關(guān)鍵字匹配和向用戶返回的一組代碼段。目前的代碼搜索引擎把注釋和代碼看作文本,把每個(gè)程序文件認(rèn)作文檔,對(duì)代碼庫(kù)執(zhí)行搜索命令,以文檔為單位返回結(jié)果。大多數(shù)編程語(yǔ)言主要用標(biāo)識(shí)符對(duì)函數(shù)、變量等命名,強(qiáng)調(diào)注釋和標(biāo)識(shí)符對(duì)程序可讀性的關(guān)鍵作用。但由于編程風(fēng)格不統(tǒng)一等,在實(shí)現(xiàn)中,直接對(duì)注釋和標(biāo)識(shí)符進(jìn)行搜索難以返回正確結(jié)果。數(shù)據(jù)挖掘技術(shù)融入代碼搜索能更準(zhǔn)確地搜索、提取關(guān)鍵字。提取關(guān)鍵字的過(guò)程在數(shù)據(jù)挖掘中就是理解程序的過(guò)程,也是采用關(guān)鍵字對(duì)程序準(zhǔn)確表述的過(guò)程[2]。(2)克隆代碼檢測(cè)與代碼搜索相類似,是用代碼本身來(lái)描述軟件行為。用戶輸入一段已知行為代碼,克隆代碼檢測(cè)會(huì)向用戶返回與該代碼相似的代碼段,且已知行為代碼的特征皆可用于描述與之相近的代碼段。目前克隆代碼檢測(cè)是軟件工程中數(shù)據(jù)挖掘技術(shù)的最熱門應(yīng)用之一。
2.4? 軟件故障的數(shù)據(jù)挖掘技術(shù)應(yīng)用
數(shù)據(jù)挖掘技術(shù)在應(yīng)用過(guò)程中不但要完成挖掘任務(wù),還需挖掘出實(shí)際程序執(zhí)行記錄具體說(shuō)明,挖掘出的數(shù)據(jù)能夠測(cè)定和判斷軟件發(fā)生的故障。數(shù)據(jù)挖掘過(guò)程中要先明確挖掘的目的和目標(biāo),及時(shí)跟蹤和了解信息,根據(jù)實(shí)際問(wèn)題處理信息,以確保后續(xù)工作的順利開展,提升對(duì)應(yīng)用程序的熟悉度。在種類繁多的挖掘工具中,自動(dòng)化類和基于規(guī)則廣泛應(yīng)用在實(shí)際生活中。在各類實(shí)際因素的推動(dòng)下,軟件在運(yùn)行過(guò)程中會(huì)發(fā)生故障,采用傳統(tǒng)的定位技術(shù)能夠解決故障問(wèn)題,但傳統(tǒng)定位技術(shù)存在效率較低、使用繁瑣和定位精準(zhǔn)度不穩(wěn)定等問(wèn)題。在數(shù)據(jù)挖掘技術(shù)中采用程序譜對(duì)程序運(yùn)行軌跡實(shí)行抽象定位,利用對(duì)比排查方式排出故障,找出源頭,有效地提升了故障排查的效率和故障檢測(cè)的準(zhǔn)確性。
3? ? 軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用發(fā)展研究
軟件工程中數(shù)據(jù)挖掘技術(shù)的應(yīng)用主要是為了提升軟件的質(zhì)量和開發(fā)效率。相對(duì)而言,軟件工程是純腦力勞動(dòng),要實(shí)現(xiàn)該應(yīng)用目標(biāo),需要便捷、準(zhǔn)確和高效地給軟件開發(fā)者提供有效信息。目前,軟件工程中數(shù)據(jù)挖掘技術(shù)難以滿足軟件工程各個(gè)領(lǐng)域的需求,同時(shí),由于軟件工程中數(shù)據(jù)挖掘技術(shù)的各個(gè)要素都隨著技術(shù)的發(fā)展不斷更新,如軟件工程的方法、數(shù)據(jù)量和結(jié)構(gòu)、數(shù)據(jù)挖掘的算法和方式等,促使軟件工程中數(shù)據(jù)挖掘技術(shù)的研究和應(yīng)用必然會(huì)隨之不斷革新變化,主要體現(xiàn)在以下幾點(diǎn)。
3.1? 根據(jù)目前軟件工程中數(shù)據(jù)挖掘存在的缺陷,研發(fā)高性能挖掘算法
針對(duì)目前存在的問(wèn)題,軟件工程數(shù)據(jù)挖掘技術(shù)關(guān)鍵要采用高效軟件,重用規(guī)則檢索和發(fā)現(xiàn),軟件規(guī)則檢索由關(guān)鍵詞向自然語(yǔ)言檢索和模糊檢索發(fā)展。檢索返回內(nèi)容從原始簡(jiǎn)單語(yǔ)句向完全文檔發(fā)展。同時(shí),根據(jù)目前存在缺陷的檢測(cè)工具僅能檢測(cè)一些違反給定程序動(dòng)態(tài)或靜態(tài)規(guī)則造成的缺陷,根據(jù)軟件的執(zhí)行信息和結(jié)構(gòu)統(tǒng)計(jì)出容易出現(xiàn)的缺陷,研發(fā)能夠檢測(cè)原因范圍更廣泛的復(fù)雜缺陷的缺陷檢測(cè)工具。由于軟件行為模型和程序規(guī)則之間的聯(lián)系,開發(fā)出用自然語(yǔ)言表述行為的模型和方法,將微觀和宏觀的軟件行為模型整合,使得軟件在各個(gè)粒度和層次上的行為信息表述更豐富和準(zhǔn)確[3]。采用更高效的軟件設(shè)計(jì)評(píng)價(jià)工具和標(biāo)準(zhǔn),與軟件工程領(lǐng)域相結(jié)合使其實(shí)現(xiàn)更豐富的可視化表示。
3.2? 研發(fā)應(yīng)對(duì)海量軟件工程中數(shù)據(jù)的挖掘算法和高效預(yù)處理
軟件工程規(guī)模擴(kuò)大,軟件需求將增加,軟件開發(fā)工具細(xì)化,軟件開發(fā)參與者增加,開發(fā)周期延長(zhǎng)。為了應(yīng)對(duì)這一問(wèn)題,軟件工程中數(shù)據(jù)挖掘使用者或者研發(fā)者應(yīng)圍繞數(shù)據(jù)降維和特征提取開發(fā)具有更高效里的數(shù)據(jù)處理方式,同時(shí)針對(duì)動(dòng)態(tài)數(shù)據(jù)流、在線挖掘算法等研發(fā)效率更高的挖掘算法,充分利用機(jī)器學(xué)習(xí)、人工智能等數(shù)據(jù)挖掘新技術(shù),開發(fā)更高效的軟件工程數(shù)據(jù)挖掘技術(shù)。
4? ? 結(jié)語(yǔ)
軟件工程中數(shù)據(jù)挖掘技術(shù)應(yīng)用廣泛,各個(gè)領(lǐng)域都引入該技術(shù)。目前軟件工程中的數(shù)據(jù)挖掘技術(shù)被不斷研發(fā)和投入使用,但主要是以軟件開發(fā)工具插件的形式或者原型系統(tǒng)發(fā)布出來(lái),很多技術(shù)問(wèn)題還有待解決,并沒(méi)有完全實(shí)現(xiàn)商業(yè)化應(yīng)用。軟件工程中數(shù)據(jù)挖掘技術(shù)應(yīng)用的處理方法和數(shù)據(jù)提取、挖掘結(jié)果和算法等方面仍存在很大的研究空間。軟件工程中利用數(shù)據(jù)挖掘技術(shù)可挖掘、收集有效數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,整理數(shù)據(jù)、提升文檔安全性、過(guò)濾危險(xiǎn)和無(wú)用信息。隨著技術(shù)的不斷發(fā)展,軟件工程中數(shù)據(jù)挖掘技術(shù)應(yīng)用將越來(lái)越廣泛、實(shí)用和智慧化。
[參考文獻(xiàn)]
[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