亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種采用聚類方式進(jìn)行軟件重構(gòu)的方法

文檔序號(hào):6516942閱讀:178來源:國(guó)知局
一種采用聚類方式進(jìn)行軟件重構(gòu)的方法
【專利摘要】本發(fā)明提供一種采用聚類方式進(jìn)行軟件重構(gòu)的方法,屬于軟件工程【技術(shù)領(lǐng)域】,包括:形成語(yǔ)法規(guī)則庫(kù);建立領(lǐng)域規(guī)則庫(kù);讀取軟件的源代碼信息;對(duì)源代碼信息進(jìn)行解析;在領(lǐng)域規(guī)則下,對(duì)源代碼信息中的冗余信息進(jìn)行過濾;建立包含程序?qū)嶓w及其描述的事實(shí)庫(kù),確定程序?qū)嶓w之間相似度;采集聚類分析方法進(jìn)行實(shí)體分析,將關(guān)聯(lián)系數(shù)高于閾值的程序?qū)嶓w聚類到一個(gè)簇中,每一個(gè)簇形成一個(gè)新的軟件模塊,通過對(duì)軟件模塊的重新劃分完成軟件重構(gòu);可以根據(jù)需要對(duì)領(lǐng)域規(guī)則庫(kù)進(jìn)行調(diào)整,重新進(jìn)行軟件重構(gòu)。本發(fā)明采用聚類方式進(jìn)行軟件重構(gòu),將系統(tǒng)的模塊進(jìn)行重新構(gòu)建后代碼將具有良好的可重用性;每個(gè)模塊內(nèi)程序?qū)嶓w相關(guān)度較高,解決代碼分散和混亂問題。
【專利說明】一種采用聚類方式進(jìn)行軟件重構(gòu)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于軟件工程【技術(shù)領(lǐng)域】,具體是一種采用聚類方式進(jìn)行軟件重構(gòu)的方法。
【背景技術(shù)】
[0002]重構(gòu)是一個(gè)程序轉(zhuǎn)換的過程,該過程改進(jìn)了軟件需求的實(shí)現(xiàn),且保持程序行為不變。軟件在其生命周期內(nèi),不可避免的發(fā)生變化,這些變化可能是用戶需求的改變,也可能為了糾正軟件本身的錯(cuò)誤。為了降低軟件的維護(hù)成本,延長(zhǎng)其使用壽命,軟件維護(hù)人員經(jīng)常面臨軟件重構(gòu)的問題。但隨著軟件系統(tǒng)的規(guī)模和復(fù)雜度增加,系統(tǒng)各個(gè)功能模塊之間的相互影響變得更加復(fù)雜。特別是那些缺少文檔的遺留系統(tǒng),如何進(jìn)行重構(gòu),是當(dāng)前軟件維護(hù)急需解決的問題。
[0003]為了解決這一問題,專利號(hào)為200810163396.6的“基于語(yǔ)法重構(gòu)的代碼級(jí)構(gòu)件組裝方法”,其在將構(gòu)件作為具有相對(duì)獨(dú)立功能和可復(fù)用的軟件模塊基礎(chǔ)上,公開了一種軟件工程【技術(shù)領(lǐng)域】?jī)?nèi),基于語(yǔ)法重構(gòu)的代碼級(jí)構(gòu)件組裝方法。該方法從程序語(yǔ)言的語(yǔ)法規(guī)范中分離出抽象語(yǔ)法和具體語(yǔ)法,并建立符合所述新語(yǔ)法規(guī)范的代碼級(jí)構(gòu)件,然后進(jìn)行構(gòu)件組裝,使軟件復(fù)用時(shí)具有語(yǔ)言獨(dú)立的優(yōu)點(diǎn)。但這種重構(gòu)只是代碼級(jí)的,缺乏對(duì)程序結(jié)構(gòu)的改善。特別是,在系統(tǒng)中存在大量基于功能的核心業(yè)務(wù)關(guān)注點(diǎn),其邏輯關(guān)系具有強(qiáng)弱之分,且這些核心業(yè)務(wù)關(guān)注點(diǎn)可能分布在不同的模塊中。例如,程序中需要對(duì)生產(chǎn)制造中的庫(kù)存控制功能進(jìn)行修改,而這部分功能散布于原料庫(kù)存管理模塊、成品庫(kù)存管理模塊和材料供應(yīng)模塊等多個(gè)模塊,按照上述專利方法,代碼的修改將涉及這多個(gè)模塊,這無疑將會(huì)增加修改的成本和出錯(cuò)的概率。正因?yàn)楹诵臉I(yè)務(wù)關(guān)注點(diǎn)可能要跨越多個(gè)模塊,同是又必須便于修改、維護(hù)和更新,軟件維護(hù)人員在進(jìn)行軟件重構(gòu)時(shí),應(yīng)分析程序核心業(yè)務(wù)關(guān)注點(diǎn)之間的依賴關(guān)系及耦合特性,單純的基于語(yǔ)法重構(gòu)代碼級(jí)構(gòu)件,重構(gòu)后的系統(tǒng)將無法得到本質(zhì)改善。

【發(fā)明內(nèi)容】

[0004]針對(duì)現(xiàn)有技術(shù)存在的不足,本發(fā)明提供一種采用聚類方式進(jìn)行軟件重構(gòu)的方法。
[0005]本發(fā)明的技術(shù)方案是:
一種采用聚類方式進(jìn)行軟件重構(gòu)的方法,包括以下步驟:
步驟1:根據(jù)軟件的編程語(yǔ)言建立語(yǔ)法規(guī)則,形成語(yǔ)法規(guī)則庫(kù);
步驟2:根據(jù)不同的應(yīng)用領(lǐng)域知識(shí)建立領(lǐng)域規(guī)則庫(kù):不同的應(yīng)用領(lǐng)域,領(lǐng)域?qū)嶓w的同一屬性具有不同的關(guān)聯(lián)特征,根據(jù)領(lǐng)域?qū)嶓w的屬性之間的依賴關(guān)系、耦合特性,確定不同應(yīng)用領(lǐng)域的規(guī)則,建立用于描述不同應(yīng)用領(lǐng)域功能的領(lǐng)域規(guī)則庫(kù);
應(yīng)用領(lǐng)域規(guī)則包括:程序?qū)嶓w編號(hào)、所屬領(lǐng)域、版本號(hào)、功能描述、業(yè)務(wù)對(duì)象、備份、所具有的屬性及各屬性之間的關(guān)聯(lián)系數(shù);
步驟3:讀取軟件的源代碼信息;
步驟4:根據(jù)語(yǔ)法規(guī)則對(duì)源代碼信息進(jìn)行解析;
步驟4.1:對(duì)源代碼信息進(jìn)行語(yǔ)法解析; 步驟4.2:提取源代碼信息的語(yǔ)法樹;
步驟4.3:對(duì)源代碼信息的語(yǔ)法樹進(jìn)行語(yǔ)義解析,得到源代碼信息中的程序?qū)嶓w和實(shí)體屬性;
所述程序?qū)嶓w包括:類、函數(shù)和業(yè)務(wù)流程;
所述實(shí)體屬性包括:包、文件、功能、數(shù)據(jù)庫(kù)和測(cè)試用例;
步驟5:在領(lǐng)域規(guī)則下,對(duì)源代碼信息中的冗余信息進(jìn)行過濾,即篩除源代碼信息中多余的信息;
步驟6:建立包含程序?qū)嶓w及其描述的事實(shí)庫(kù),程序?qū)嶓w的描述包括:程序?qū)嶓w編號(hào)、接口名稱、核心業(yè)務(wù)關(guān)注點(diǎn)、輸入?yún)?shù)、輸出參數(shù)、返回值、程序?qū)嶓w提供者、版本號(hào)、關(guān)鍵字、所具有的屬性及各屬性之間的關(guān)聯(lián)系數(shù);
步驟7:確定程序?qū)嶓w之間相似度,即計(jì)算程序?qū)嶓w之間的關(guān)聯(lián)系數(shù);
步驟8:采集聚類分析方法進(jìn)行實(shí)體分析,將關(guān)聯(lián)系數(shù)高于閾值的程序?qū)嶓w聚類到一個(gè)簇中,每一個(gè)簇形成一個(gè)新的軟件模塊,通過對(duì)軟件模塊的重新劃分完成軟件重構(gòu);
步驟9:可以根據(jù)需要對(duì)領(lǐng)域規(guī)則庫(kù)進(jìn)行調(diào)整,返回步驟5重新進(jìn)行軟件重構(gòu)。
[0006]有益效果:
(1)采用聚類方式進(jìn)行軟件重構(gòu),其改善的目標(biāo)是基于功能的核心業(yè)務(wù)關(guān)注點(diǎn),將系統(tǒng)的模塊進(jìn)行重新構(gòu)建后代碼將具有良好的可重用性;
(2)經(jīng)過聚類分析后,每個(gè)模塊內(nèi)程序?qū)嶓w的相似或相關(guān)度較高,解決代碼分散和混亂問題,系統(tǒng)易于理解和維護(hù);
(3)不同的應(yīng)用領(lǐng)域,程序?qū)嶓w的同一屬性具有不同的關(guān)聯(lián)特征,可以通過修改領(lǐng)域規(guī)則庫(kù)中屬性的關(guān)聯(lián)系數(shù),這樣產(chǎn)生的聚類結(jié)果也將不同,這使得本專利具有更好的通用性。
【專利附圖】

【附圖說明】
[0007]圖1是本發(fā)明【具體實(shí)施方式】的采用聚類方式進(jìn)行軟件重構(gòu)的方法流程圖;
圖2是本發(fā)明【具體實(shí)施方式】的源代碼解析器結(jié)構(gòu)示意圖;
圖3是本發(fā)明【具體實(shí)施方式】的有向圖實(shí)例示意圖;
圖4是本發(fā)明【具體實(shí)施方式】的聚類實(shí)例示意圖。
【具體實(shí)施方式】
[0008]下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】做詳細(xì)說明,但本發(fā)明的保護(hù)范圍不受【具體實(shí)施方式】所限制,在不違背本發(fā)明技術(shù)方案的前提下,對(duì)本發(fā)明所作的本領(lǐng)域普通技術(shù)人員容易實(shí)現(xiàn)的任何改動(dòng)或改變都屬于本發(fā)明的保護(hù)范圍。
[0009]本實(shí)施方式的采用聚類方式進(jìn)行軟件重構(gòu)的方法,流程如圖1所示,包括以下步驟:
步驟1:根據(jù)軟件的編程語(yǔ)言建立語(yǔ)法規(guī)則,形成語(yǔ)法規(guī)則庫(kù);
語(yǔ)法規(guī)則庫(kù)為語(yǔ)法分析提供語(yǔ)法規(guī)則,進(jìn)而能通過語(yǔ)法分析將特定編程語(yǔ)言的上下文無關(guān)文法翻譯成該編程語(yǔ)言的語(yǔ)法樹;
步驟2:根據(jù)不同的應(yīng)用領(lǐng)域知識(shí)建立領(lǐng)域規(guī)則庫(kù):不同的應(yīng)用領(lǐng)域,領(lǐng)域?qū)嶓w的同一屬性具有不同的關(guān)聯(lián)特征,根據(jù)領(lǐng)域?qū)嶓w的屬性之間的依賴關(guān)系、耦合特性,確定不同應(yīng)用領(lǐng)域的規(guī)則,建立用于描述不同應(yīng)用領(lǐng)域功能的領(lǐng)域規(guī)則庫(kù);
應(yīng)用領(lǐng)域規(guī)則包括:程序?qū)嶓w編號(hào)、所屬領(lǐng)域、版本號(hào)、功能描述、業(yè)務(wù)對(duì)象、備份、所具有的屬性及各屬性之間的關(guān)聯(lián)系數(shù);
不同的應(yīng)用領(lǐng)域,程序?qū)嶓w的同一屬性具有不同的關(guān)聯(lián)特征,參考領(lǐng)域因素,根據(jù)目標(biāo)代碼所在領(lǐng)域的實(shí)體屬性之間依賴關(guān)系、耦合特性,給定本系統(tǒng)各相關(guān)屬性的關(guān)聯(lián)系數(shù),其中與核心業(yè)務(wù)關(guān)注點(diǎn)關(guān)聯(lián)的屬性,其關(guān)聯(lián)系數(shù)值較高,以保證核心業(yè)務(wù)關(guān)注點(diǎn)獲得較高的聚集性。領(lǐng)域知識(shí)是該領(lǐng)域功能的描述集,對(duì)每個(gè)功能的描述包括:程序?qū)嶓w編號(hào)、所屬領(lǐng)域、版本號(hào)、功能描述、業(yè)務(wù)對(duì)象、備份、所具有的相關(guān)屬性及關(guān)聯(lián)系數(shù);
步驟3:讀取軟件的源代碼信息;
步驟4:根據(jù)語(yǔ)法規(guī)則對(duì)源代碼信息進(jìn)行解析;本實(shí)施方式中,根據(jù)語(yǔ)法規(guī)則對(duì)源代碼信息進(jìn)行解析可通過圖2所示的解析器來實(shí)現(xiàn);
步驟4.1:對(duì)源代碼信息進(jìn)行語(yǔ)法解析;
步驟4.2:提取源代碼信息的語(yǔ)法樹;
步驟4.3:對(duì)源代碼信息的語(yǔ)法樹進(jìn)行語(yǔ)義解析,得到源代碼信息中的程序?qū)嶓w和實(shí)體屬性;
程序?qū)嶓w包括:類、函數(shù)和業(yè)務(wù)流程;
實(shí)體屬性包括:包、文件、功能、數(shù)據(jù)庫(kù)和測(cè)試用例;
步驟5:在領(lǐng)域規(guī)則下,對(duì)源代碼信息中的冗余信息進(jìn)行過濾,即篩除源代碼信息中多余的信息;
步驟6:建立包含程序?qū)嶓w及其描述的事實(shí)庫(kù),程序?qū)嶓w的描述包括:程序?qū)嶓w編號(hào)、接口名稱、核心業(yè)務(wù)關(guān)注點(diǎn)、輸入?yún)?shù)、輸出參數(shù)、返回值、程序?qū)嶓w提供者、版本號(hào)、關(guān)鍵字、所具有的屬性及各屬性之間的關(guān)聯(lián)系數(shù);
事實(shí)庫(kù)是在領(lǐng)域規(guī)則下對(duì)源代碼信息過濾后得到的,是軟件的核心業(yè)務(wù)關(guān)注點(diǎn)描述集,對(duì)每個(gè)程序?qū)嶓w的描述包括:程序?qū)嶓w編號(hào)、接口名稱、核心業(yè)務(wù)關(guān)注點(diǎn)、輸入?yún)?shù)、輸出參數(shù)、返回值、程序?qū)嶓w提供者、版本號(hào)、關(guān)鍵字、所具有的相關(guān)屬性及關(guān)聯(lián)系數(shù);
步驟7:確定程序?qū)嶓w之間相似度,即計(jì)算程序?qū)嶓w之間的關(guān)聯(lián)系數(shù);
程序?qū)嶓w之間存在多個(gè)相關(guān)屬性,根據(jù)公式(I ),進(jìn)行相似度計(jì)算(計(jì)算中采用的屬性系數(shù),來源于事實(shí)庫(kù)),確定程序?qū)嶓w之間的關(guān)聯(lián)系數(shù);
【權(quán)利要求】
1.一種采用聚類方式進(jìn)行軟件重構(gòu)的方法,其特征在于:包括以下步驟: 步驟1:根據(jù)軟件的編程語(yǔ)言建立語(yǔ)法規(guī)則,形成語(yǔ)法規(guī)則庫(kù); 步驟2:根據(jù)不同的應(yīng)用領(lǐng)域知識(shí)建立領(lǐng)域規(guī)則庫(kù):不同的應(yīng)用領(lǐng)域,領(lǐng)域?qū)嶓w的同一屬性具有不同的關(guān)聯(lián)特征,根據(jù)領(lǐng)域?qū)嶓w的屬性之間的依賴關(guān)系、耦合特性,確定不同應(yīng)用領(lǐng)域的規(guī)則,建立用于描述不同應(yīng)用領(lǐng)域功能的領(lǐng)域規(guī)則庫(kù); 應(yīng)用領(lǐng)域規(guī)則包括:程序?qū)嶓w編號(hào)、所屬領(lǐng)域、版本號(hào)、功能描述、業(yè)務(wù)對(duì)象、備份、所具有的屬性及各屬性之間的關(guān)聯(lián)系數(shù); 步驟3:讀取軟件的源代碼信息; 步驟4:根據(jù)語(yǔ)法規(guī)則對(duì)源代碼信息進(jìn)行解析; 步驟4.1:對(duì)源代碼信息進(jìn)行語(yǔ)法解析; 步驟4.2:提取源代碼信息的語(yǔ)法樹; 步驟4.3:對(duì)源代碼信息的語(yǔ)法樹進(jìn)行語(yǔ)義解析,得到源代碼信息中的程序?qū)嶓w和實(shí)體屬性; 所述程序?qū)嶓w包括:類、函數(shù)和業(yè)務(wù)流程; 所述實(shí)體屬性包括:包、文件、功能、數(shù)據(jù)庫(kù)和測(cè)試用例; 步驟5:在領(lǐng)域規(guī)則下,對(duì)源代碼信息中的冗余信息進(jìn)行過濾,即篩除源代碼信息中多余的信息; 步驟6:建立包含程序?qū)嶓w及其描述的事實(shí)庫(kù),程序?qū)嶓w的描述包括:程序?qū)嶓w編號(hào)、接口名稱、核心業(yè)務(wù)關(guān)注點(diǎn)、輸入?yún)?shù)、輸出參數(shù)、返回值、程序?qū)嶓w提供者、版本號(hào)、關(guān)鍵字、所具有的屬性及各屬性之間的關(guān)聯(lián)系數(shù); 步驟7:確定程序?qū)嶓w之間相似度,即計(jì)算程序?qū)嶓w之間的關(guān)聯(lián)系數(shù); 步驟8:采集聚類分析方法進(jìn)行實(shí)體分析,將關(guān)聯(lián)系數(shù)高于閾值的程序?qū)嶓w聚類到一個(gè)簇中,每一個(gè)簇形成一個(gè)新的軟件模塊,通過對(duì)軟件模塊的重新劃分完成軟件重構(gòu); 步驟9:可以根據(jù)需要對(duì)領(lǐng)域規(guī)則庫(kù)進(jìn)行調(diào)整,返回步驟5重新進(jìn)行軟件重構(gòu)。
【文檔編號(hào)】G06F9/44GK103593182SQ201310521139
【公開日】2014年2月19日 申請(qǐng)日期:2013年10月27日 優(yōu)先權(quán)日:2013年10月27日
【發(fā)明者】曹陽(yáng), 王永會(huì), 王守金, 李孟歆 申請(qǐng)人:沈陽(yáng)建筑大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1