一种基于规则的软件体系结构层性能演化优化方法
【专利摘要】本发明涉及一种基于规则的软件体系结构层性能演化优化方法,采用遗传算法进行软件体系结构层性能演化优化:A.进行种群初始化;B.输入个体编码(规则号序列)、初始软件体系结构和规则使用历史表,计算种群中每个个体的适应度值;C.采用基于精英保留的轮盘赌选择策略进行选择操作;D.采用带约束检查机制的一点交叉进行交叉操作;E.采用带约束检查机制的一点变异进行变异操作;F.判断是否满足终止条件,是则转步骤G,否则基于步骤E得到的下一代种群,返回步骤B进行下一次迭代;步骤G.将最优个体中出现的0及没有改进效果的规则号依次删除,获得最优改进方案并输出。该方法可降低软件体系结构层性能的优化成本,提高优化质量。
【专利说明】一种基于规则的软件体系结构层性能演化优化方法
【技术领域】
[0001] 本发明涉及软件性能优化【技术领域】,特别涉及一种基于规则的软件体系结构层性 能演化优化方法。
【背景技术】
[0002] 软件的性能是衡量软件系统质量的一个重要属性,性能的优劣已经成为系统成败 的关键因素。在软件体系结构(Software Architecture,简记为SA)设计阶段进行性能优 化,可以尽早发现资源使用率过高、响应时间过长和吞吐量过小等性能问题,并通过相应的 设计改进缓解或消除这些问题,从而获得满足性能需求的SA设计方案,进而可在软件生命 周期的早期达到性能优化的目的。基于SA进行性能优化,不仅可以显著减少软件性能优化 的时间,而且能够有效降低优化的成本。
[0003] SA层性能优化一直是软件工程学术界和工业界高度关注的主题。经过多年研究 和实践,已产生一些普适性的SA层性能改进知识。这些知识已被系统归纳和总结过,并用 自然语言描述的性能反模式进行了适当的表示。为了提高SA层性能优化的自动化程度,近 年来涌现出一些基于规则的优化方法。这些方法以机器可处理的性能改进规则形式精确地 描述了 SA层性能反模式,并通过研发规则执行引擎,使得性能优化过程可以自动地使用这 些规则。然而这些方法在优化过程中未充分考虑规则组合使用场景下各规则的使用次数 和使用顺序不确定性的问题,使得它们只能搜索相对较小的性能改进空间,往往难以获得 最优的性能改进方案。例如:文献《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层性能反模式,给出了对应的12条 改进规则。即使不考虑规则可以重复使用的情景,由这12条规则不同组合的情况而构成的 改进空间也将高达12 12 (近9000万亿)个改进方案。在如此庞大的SA层性能改进空间中, 如何找出最优性能改进方案仍是一个亟待解决的问题。
【发明内容】
[0004] 本发明的目的在于提供一种基于规则的软件体系结构层性能演化优化方法,该方 法可降低软件体系结构层性能的优化成本,提高优化质量。
[0005] 为实现上述目的,本发明的技术方案是:一种基于规则的软件体系结构层性能演 化优化方法,采用遗传算法进行软件体系结构层性能演化优化,包括以下步骤: 步骤A.进行种群初始化:设置种群规模、交叉概率、变异概率、最大进化代数、迭代数 ?=〇,并采用一定的个体编码方法,随机生成初始种群PU)中的每个个体;所述个体编码方 法为: 任意个体的编码^^=<_:111>尤^,--_-3:^|^---,' /,,__>均采用定长自然数编码, 码长7,由下式定义:
【权利要求】
1. 一种基于规则的软件体系结构层性能演化优化方法,其特征在于,采用遗传算法进 行软件体系结构层性能演化优化,包括以下步骤:
步骤A.进行种群初始化:设置种群规模、交叉概率、变异概率、最大进化代数、迭代数 ^0,并采用一定的个体编码方法,随机生成初始种群PU)中的每个个体;所述个体编码方 法为: 任意个体的编码 均采用定长自然数编码, 码长由下式定义:
其中^表示i号规则最多可使用的次数;规则号1到n表示对n条性能改进规则的依 次编号;特别地,引入〇号规则表示不做任何动作的空规则,并令:1)〇号规则最多可使用的 次数《〇=厂;2) 〇号规则作用在任何软件体系结构说上都没有性能改进;3)由0号规则构 成的单规则序列作用在任何软件体系结构5?上得到的改进后的软件体系结构仍是5? ; 的每位X%满足下式:
其中表示自然数; 中i号规则出现的次数记为AiCT),其满足下式:
步骤B.适应度计算:输入个体编码Z'初始软件体系结构SAc^P空的规则使用历史表T_RuleUseInHis,采用solveFitness算法计算/*(()中每个个体的适应度值fitness,并更 新T_RuleUseInHis表;T_RuleUseInHis表包括rulNum、loc、nxtRulNum、impNum、totNum五 个字段,rulNum表示规则号,Ioc表示规则号在编码中的位置,nxtRulNum表示loc+1位置 的规则号,若l〇c+l大于码长,则其值为-1,impNum表不在Ioc和loc+1位置的规则号分别 是rulNum和nxtRulNum的情景下,rulNum对应规则有改进效果的使用次数,totNum表示在 Ioc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则的使用 总数;所述solveFitness算法包括以下步骤: BI.将个体编码中的0号规则依次全部删除,获得规则号序列 B2.将初始软件体系结构SAci和规则号序列Z作为一定的规则序列执行算法的输入, 运行所述规则序列执行算法,输出X对应规则序列执行前的系统响应时间BRT和执行后的 系统响应时间ART,以及序列中规则使用情况表T_RuleUseInSeq;T_RuleUseInSeq表包括 rulNum、loc、islmp三个字段,rulNum表示规则号,Ioc表示规则号在X中的位置,islmp表 示根据Ioc位置上编号为rulNum的规则执行前后的系统响应时间,判定该规则的应用是否 有性能改进效果,是则islmp为1,否则为0 ; B3.根据Z对应规则序列执行前的系统响应时间BRT和执行后的系统响应时间ART,计 算两者的差值Ajff; B4.根据T_RuleUSeInSeq表,统计有性能改进效果的规则数OO和使用的 总规则数,按下式计算出个体编码r的适应度值fitness:
其中,Z为删除中出现的O号规则得到的规则号序列; B5?根据 T_RuleUseInSeq 表,更新 T_RuleUseInHis 表; B6.输出适应度值fitness和更新后的T_RuleUseInHis表,算法结束; 步骤C.选择操作:采用基于精英保留的轮盘赌选择策略在PU)上进行个体选择,并 生成临时种群Z71 (0 ; 步骤D.交叉操作:采用带约束检查机制的一点交叉,对交叉操作生成的两个新个体, 从交叉位开始至最后一位依次检查每位上的规则号是否违反最大出现次数的约束,若违反 则将该位赋值为〇;按此方法在上进行交叉操作生成临时种群Aa); 步骤E.变异操作:采用带约束检查机制的一点变异,变异操作后执行约束检查,若变 异后的规则号违反最大出现次数的约束,则将变异位赋值为〇;按此方法在AU)上进行变 异操作生成下一代种群; 步骤F.判断是否满足终止条件:最优个体经过多次迭代后其适应度不再发生变化, 或者迭代次数达到最大进化代数,是则转步骤G,否则基于步骤E得到的下一代种群,返回 步骤B进行下一次迭代; 步骤G.将最优个体中出现0及没有改进效果的规则号依次删除,获得最优改进方案X并输出。
2. 根据权利要求1所述的一种基于规则的软件体系结构层性能演化优化方法,其特征 在于,在步骤B2中,所述规则序列执行算法包括以下步骤: B201.分别将待改进软件体系结构说、当前位置i、T_RuleUseInSeq表、BRT和ART赋 值为初始软件体系结构SAtlU、空、-1和-1 ; B202.判断i是否大于Z的长度,是则转步骤B206,否则转步骤B203 ; B203.取Z的第i个元素并根据编号^从规则库取出对应的规则,并与待改进软件 体系结构5? -并交由规则执行引擎执行; B204.根据规则执行引擎返回的执行前系统响应时间BRTi和执行后系统响应时间 ARTi,计算BRTi与ARTi两者的差值: B2041.若BRT为-1,则把BRTi赋值给BRT; B2042.将ARTi 赋值给ART; B2043?若 AjlffX),将记录 Oi,i, 1)插入 T_RuleUseInSeq 表中,否则将记录 Oi,i, 〇)插入 T_RuleUseInSeq 表中; B2044.若△#>0,则将规则执行引擎返回的改进后软件体系结构赋值给说,使其成为 下一条规则执行时的待改进软件体系结构; B205.令i=i+l,并转步骤B203; B206?输出 BRT、ARI^P T_RuleUseInSeq 表,算法结束。
3. 根据权利要求1所述的一种基于规则的软件体系结构层性能演化优化方法,其特征 在于,在步骤B5中,根据T_RuleUseInSeq表,按以下步骤更新T_RuleUseInHis表: B501.给变量i和7洲分别赋值1和T_RuleUseInSeq表的记录数; B502?若i<7洲,则转步骤B503,否则更新结束; B503?从 T_RuleUseInSeq 中取出第/条记录的值hq.,isJ聲; B504.在1'_1?11161]861111^8 表中按主码值为 = 八 應=77/77?%.八 nxtRulNum- 进行查找,并将查找结果赋值给记录; B505?若=IArecortZi 不空)条件成立,将recort/^ci录中的impNum和totNum字段的值分别加1,并更新T_RuleUseInHis表中与recort/,.对应的记录; B506.若(Y1S1TffljDi =OArecortZi不空)条件成立,将TecortZi记录中的totNum字段值 加1,并更新T_RuleUseInHis表中的对应记录; 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,并转步骤B502。
4.根据权利要求1所述的一种基于规则的软件体系结构层性能演化优化方法,其特征 在于,在步骤E中,基于一定的条件变异概率进行变异操作,所述条件变异概率按如下方法 得到: 基于规则使用历史表T_RuleUseInHis定义以下3个函数: 1) 函数八(/,左,?)表示在T_RuleUseInHis表中按主码值为JrOc=j?八=左 八= ?进行查找,若查找不到返回0,否则返回记录中impNum和totNum字段值 的比值; 2) 定义函数左)表示在T_RuleUseInHis表中按条件/oc=J'八=左进行 查找,若查找不到返回空集0,否则返回所有满足条件记录中nxtRulNum字段值构成的集 H^nxtRulNum>
O
【文档编号】G06N3/12GK104268278SQ201410546025
【公开日】2015年1月7日 申请日期:2014年10月16日 优先权日:2014年10月16日
【发明者】杜欣, 倪友聪, 叶鹏, 谢大同, 肖如良, 汪春燕, 昂凤平, 王晓红, 李松 申请人:福建师范大学