一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法
【專利摘要】本發(fā)明涉及一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法,采用遺傳算法進行軟件體系結(jié)構(gòu)層性能演化優(yōu)化:A.進行種群初始化;B.輸入個體編碼(規(guī)則號序列)、初始軟件體系結(jié)構(gòu)和規(guī)則使用歷史表,計算種群中每個個體的適應(yīng)度值;C.采用基于精英保留的輪盤賭選擇策略進行選擇操作;D.采用帶約束檢查機制的一點交叉進行交叉操作;E.采用帶約束檢查機制的一點變異進行變異操作;F.判斷是否滿足終止條件,是則轉(zhuǎn)步驟G,否則基于步驟E得到的下一代種群,返回步驟B進行下一次迭代;步驟G.將最優(yōu)個體中出現(xiàn)的0及沒有改進效果的規(guī)則號依次刪除,獲得最優(yōu)改進方案并輸出。該方法可降低軟件體系結(jié)構(gòu)層性能的優(yōu)化成本,提高優(yōu)化質(zhì)量。
【專利說明】一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件性能優(yōu)化【技術(shù)領(lǐng)域】,特別涉及一種基于規(guī)則的軟件體系結(jié)構(gòu)層性 能演化優(yōu)化方法。
【背景技術(shù)】
[0002] 軟件的性能是衡量軟件系統(tǒng)質(zhì)量的一個重要屬性,性能的優(yōu)劣已經(jīng)成為系統(tǒng)成敗 的關(guān)鍵因素。在軟件體系結(jié)構(gòu)(Software Architecture,簡記為SA)設(shè)計階段進行性能優(yōu) 化,可以盡早發(fā)現(xiàn)資源使用率過高、響應(yīng)時間過長和吞吐量過小等性能問題,并通過相應(yīng)的 設(shè)計改進緩解或消除這些問題,從而獲得滿足性能需求的SA設(shè)計方案,進而可在軟件生命 周期的早期達到性能優(yōu)化的目的?;赟A進行性能優(yōu)化,不僅可以顯著減少軟件性能優(yōu)化 的時間,而且能夠有效降低優(yōu)化的成本。
[0003] SA層性能優(yōu)化一直是軟件工程學(xué)術(shù)界和工業(yè)界高度關(guān)注的主題。經(jīng)過多年研究 和實踐,已產(chǎn)生一些普適性的SA層性能改進知識。這些知識已被系統(tǒng)歸納和總結(jié)過,并用 自然語言描述的性能反模式進行了適當(dāng)?shù)谋硎?。為了提高SA層性能優(yōu)化的自動化程度,近 年來涌現(xiàn)出一些基于規(guī)則的優(yōu)化方法。這些方法以機器可處理的性能改進規(guī)則形式精確地 描述了 SA層性能反模式,并通過研發(fā)規(guī)則執(zhí)行引擎,使得性能優(yōu)化過程可以自動地使用這 些規(guī)則。然而這些方法在優(yōu)化過程中未充分考慮規(guī)則組合使用場景下各規(guī)則的使用次數(shù) 和使用順序不確定性的問題,使得它們只能搜索相對較小的性能改進空間,往往難以獲得 最優(yōu)的性能改進方案。例如:文獻《An approach for modeling and detecting software performance antipatterns based on first-order logics))針對文獻〈〈Performance solutions: a practical guide to creating responsive, scalable software))> 《Software Performance Antipatterns》中的12種SA層性能反模式,給出了對應(yīng)的12條 改進規(guī)則。即使不考慮規(guī)則可以重復(fù)使用的情景,由這12條規(guī)則不同組合的情況而構(gòu)成的 改進空間也將高達12 12 (近9000萬億)個改進方案。在如此龐大的SA層性能改進空間中, 如何找出最優(yōu)性能改進方案仍是一個亟待解決的問題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于提供一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法,該方 法可降低軟件體系結(jié)構(gòu)層性能的優(yōu)化成本,提高優(yōu)化質(zhì)量。
[0005] 為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演 化優(yōu)化方法,采用遺傳算法進行軟件體系結(jié)構(gòu)層性能演化優(yōu)化,包括以下步驟: 步驟A.進行種群初始化:設(shè)置種群規(guī)模、交叉概率、變異概率、最大進化代數(shù)、迭代數(shù) ?=〇,并采用一定的個體編碼方法,隨機生成初始種群PU)中的每個個體;所述個體編碼方 法為: 任意個體的編碼^^=<_:111>尤^,--_-3:^|^---,' /,,__>均采用定長自然數(shù)編碼, 碼長7,由下式定義:
【權(quán)利要求】
1. 一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法,其特征在于,采用遺傳算法進 行軟件體系結(jié)構(gòu)層性能演化優(yōu)化,包括以下步驟:
步驟A.進行種群初始化:設(shè)置種群規(guī)模、交叉概率、變異概率、最大進化代數(shù)、迭代數(shù) ^0,并采用一定的個體編碼方法,隨機生成初始種群PU)中的每個個體;所述個體編碼方 法為: 任意個體的編碼 均采用定長自然數(shù)編碼, 碼長由下式定義:
其中^表示i號規(guī)則最多可使用的次數(shù);規(guī)則號1到n表示對n條性能改進規(guī)則的依 次編號;特別地,引入〇號規(guī)則表示不做任何動作的空規(guī)則,并令:1)〇號規(guī)則最多可使用的 次數(shù)《〇=廠;2) 〇號規(guī)則作用在任何軟件體系結(jié)構(gòu)說上都沒有性能改進;3)由0號規(guī)則構(gòu) 成的單規(guī)則序列作用在任何軟件體系結(jié)構(gòu)5?上得到的改進后的軟件體系結(jié)構(gòu)仍是5? ; 的每位X%滿足下式:
其中表示自然數(shù); 中i號規(guī)則出現(xiàn)的次數(shù)記為AiCT),其滿足下式:
步驟B.適應(yīng)度計算:輸入個體編碼Z'初始軟件體系結(jié)構(gòu)SAc^P空的規(guī)則使用歷史表T_RuleUseInHis,采用solveFitness算法計算/*(()中每個個體的適應(yīng)度值fitness,并更 新T_RuleUseInHis表;T_RuleUseInHis表包括rulNum、loc、nxtRulNum、impNum、totNum五 個字段,rulNum表示規(guī)則號,Ioc表示規(guī)則號在編碼中的位置,nxtRulNum表示loc+1位置 的規(guī)則號,若l〇c+l大于碼長,則其值為-1,impNum表不在Ioc和loc+1位置的規(guī)則號分別 是rulNum和nxtRulNum的情景下,rulNum對應(yīng)規(guī)則有改進效果的使用次數(shù),totNum表示在 Ioc和loc+1位置的規(guī)則號分別是rulNum和nxtRulNum的情景下,rulNum對應(yīng)規(guī)則的使用 總數(shù);所述solveFitness算法包括以下步驟: BI.將個體編碼中的0號規(guī)則依次全部刪除,獲得規(guī)則號序列 B2.將初始軟件體系結(jié)構(gòu)SAci和規(guī)則號序列Z作為一定的規(guī)則序列執(zhí)行算法的輸入, 運行所述規(guī)則序列執(zhí)行算法,輸出X對應(yīng)規(guī)則序列執(zhí)行前的系統(tǒng)響應(yīng)時間BRT和執(zhí)行后的 系統(tǒng)響應(yīng)時間ART,以及序列中規(guī)則使用情況表T_RuleUseInSeq;T_RuleUseInSeq表包括 rulNum、loc、islmp三個字段,rulNum表示規(guī)則號,Ioc表示規(guī)則號在X中的位置,islmp表 示根據(jù)Ioc位置上編號為rulNum的規(guī)則執(zhí)行前后的系統(tǒng)響應(yīng)時間,判定該規(guī)則的應(yīng)用是否 有性能改進效果,是則islmp為1,否則為0 ; B3.根據(jù)Z對應(yīng)規(guī)則序列執(zhí)行前的系統(tǒng)響應(yīng)時間BRT和執(zhí)行后的系統(tǒng)響應(yīng)時間ART,計 算兩者的差值A(chǔ)jff; B4.根據(jù)T_RuleUSeInSeq表,統(tǒng)計有性能改進效果的規(guī)則數(shù)OO和使用的 總規(guī)則數(shù),按下式計算出個體編碼r的適應(yīng)度值fitness:
其中,Z為刪除中出現(xiàn)的O號規(guī)則得到的規(guī)則號序列; B5?根據(jù) T_RuleUseInSeq 表,更新 T_RuleUseInHis 表; B6.輸出適應(yīng)度值fitness和更新后的T_RuleUseInHis表,算法結(jié)束; 步驟C.選擇操作:采用基于精英保留的輪盤賭選擇策略在PU)上進行個體選擇,并 生成臨時種群Z71 (0 ; 步驟D.交叉操作:采用帶約束檢查機制的一點交叉,對交叉操作生成的兩個新個體, 從交叉位開始至最后一位依次檢查每位上的規(guī)則號是否違反最大出現(xiàn)次數(shù)的約束,若違反 則將該位賦值為〇;按此方法在上進行交叉操作生成臨時種群Aa); 步驟E.變異操作:采用帶約束檢查機制的一點變異,變異操作后執(zhí)行約束檢查,若變 異后的規(guī)則號違反最大出現(xiàn)次數(shù)的約束,則將變異位賦值為〇;按此方法在AU)上進行變 異操作生成下一代種群; 步驟F.判斷是否滿足終止條件:最優(yōu)個體經(jīng)過多次迭代后其適應(yīng)度不再發(fā)生變化, 或者迭代次數(shù)達到最大進化代數(shù),是則轉(zhuǎn)步驟G,否則基于步驟E得到的下一代種群,返回 步驟B進行下一次迭代; 步驟G.將最優(yōu)個體中出現(xiàn)0及沒有改進效果的規(guī)則號依次刪除,獲得最優(yōu)改進方案X并輸出。
2. 根據(jù)權(quán)利要求1所述的一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法,其特征 在于,在步驟B2中,所述規(guī)則序列執(zhí)行算法包括以下步驟: B201.分別將待改進軟件體系結(jié)構(gòu)說、當(dāng)前位置i、T_RuleUseInSeq表、BRT和ART賦 值為初始軟件體系結(jié)構(gòu)SAtlU、空、-1和-1 ; B202.判斷i是否大于Z的長度,是則轉(zhuǎn)步驟B206,否則轉(zhuǎn)步驟B203 ; B203.取Z的第i個元素并根據(jù)編號^從規(guī)則庫取出對應(yīng)的規(guī)則,并與待改進軟件 體系結(jié)構(gòu)5? -并交由規(guī)則執(zhí)行引擎執(zhí)行; B204.根據(jù)規(guī)則執(zhí)行引擎返回的執(zhí)行前系統(tǒng)響應(yīng)時間BRTi和執(zhí)行后系統(tǒng)響應(yīng)時間 ARTi,計算BRTi與ARTi兩者的差值: B2041.若BRT為-1,則把BRTi賦值給BRT; B2042.將ARTi 賦值給ART; B2043?若 AjlffX),將記錄 Oi,i, 1)插入 T_RuleUseInSeq 表中,否則將記錄 Oi,i, 〇)插入 T_RuleUseInSeq 表中; B2044.若△#>0,則將規(guī)則執(zhí)行引擎返回的改進后軟件體系結(jié)構(gòu)賦值給說,使其成為 下一條規(guī)則執(zhí)行時的待改進軟件體系結(jié)構(gòu); B205.令i=i+l,并轉(zhuǎn)步驟B203; B206?輸出 BRT、ARI^P T_RuleUseInSeq 表,算法結(jié)束。
3. 根據(jù)權(quán)利要求1所述的一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法,其特征 在于,在步驟B5中,根據(jù)T_RuleUseInSeq表,按以下步驟更新T_RuleUseInHis表: B501.給變量i和7洲分別賦值1和T_RuleUseInSeq表的記錄數(shù); B502?若i<7洲,則轉(zhuǎn)步驟B503,否則更新結(jié)束; B503?從 T_RuleUseInSeq 中取出第/條記錄的值hq.,isJ聲; B504.在1'_1?11161]861111^8 表中按主碼值為 = 八 應(yīng)=77/77?%.八 nxtRulNum- 進行查找,并將查找結(jié)果賦值給記錄; B505?若=IArecortZi 不空)條件成立,將recort/^ci錄中的impNum和totNum字段的值分別加1,并更新T_RuleUseInHis表中與recort/,.對應(yīng)的記錄; B506.若(Y1S1TffljDi =OArecortZi不空)條件成立,將TecortZi記錄中的totNum字段值 加1,并更新T_RuleUseInHis表中的對應(yīng)記錄; B507.若(is/聲>,=I八recort/,為空八TrOci尹Z的長度)條件成立,將記錄
插入 T_RuleUseInHis 表中; B508.若(Y1S1T^i = IArecortZi 為空八 TrOci =Z的長度)條件成立,將記錄(rw/Mffl?,., ^Zoci, _1,1,1)插入 T_RuleUseInHis 表中; B509.若(Y1S1TffljDi =O八TecortZi為空八TrOci尹Z的長度)條件成立,將記錄
插入 T_RuleUseInHis 表中; B510.若(Y1S1TffljDi =OArecortZi 為空八TrOci=Z的長度)條件成立,將記錄(/WMffl?,., ^Zoci, _1,0,1)插入T_RuleUseInHis表中; B511.令i=i+l,并轉(zhuǎn)步驟B502。
4.根據(jù)權(quán)利要求1所述的一種基于規(guī)則的軟件體系結(jié)構(gòu)層性能演化優(yōu)化方法,其特征 在于,在步驟E中,基于一定的條件變異概率進行變異操作,所述條件變異概率按如下方法 得到: 基于規(guī)則使用歷史表T_RuleUseInHis定義以下3個函數(shù): 1) 函數(shù)八(/,左,?)表示在T_RuleUseInHis表中按主碼值為JrOc=j?八=左 八= ?進行查找,若查找不到返回0,否則返回記錄中impNum和totNum字段值 的比值; 2) 定義函數(shù)左)表示在T_RuleUseInHis表中按條件/oc=J'八=左進行 查找,若查找不到返回空集0,否則返回所有滿足條件記錄中nxtRulNum字段值構(gòu)成的集 H^nxtRulNum>
O
【文檔編號】G06N3/12GK104268278SQ201410546025
【公開日】2015年1月7日 申請日期:2014年10月16日 優(yōu)先權(quán)日:2014年10月16日
【發(fā)明者】杜欣, 倪友聰, 葉鵬, 謝大同, 肖如良, 汪春燕, 昂鳳平, 王曉紅, 李松 申請人:福建師范大學(xué)