软件学报  2016, Vol. 27 Issue (4): 769-770   PDF    
基于搜索的软件工程研究专题前言
李征1 , 巩敦卫2, 聂长海3, 江贺4    
1. 北京化工大学 信息科学与技术学院, 北京 100029;
2. 中国矿业大学 信息与电气工程学院, 江苏 徐州 221116;
3. 南京大学 计算机科学与技术系, 江苏 南京 210023;
4. 大连理工大学 软件学院, 辽宁 大连 116621

软件工程自1968年提出以来,一直是提高软件开发效率、保障软件质量的有效手段.软件的发展及内涵被归纳为3个空间:平台空间、认知空间和问题空间,相应地,软件工程发展也从传统的模式化转向知识化和智能化.基于搜索的软件工程(search based software engineering,简称SBSE)是传统软件工程和智能计算(intelligent computing)交叉的新兴研究领域,从问题的解空间出发,采用智能计算领域的元启发式搜索优化算法解决软件工程相关问题,能够实现自动化和智能化.基于搜索的软件工程被2007年度IEEE国际软件工程大会(ICSE)确立为软件工程的发展方向之一,到目前为止,已在软件测试数据自动生成、程序错误自动修复等方面取得显著的研究成果,有效地促进了软件工程学科的发展.本选题为“基于搜索的软件工程研究”,用以反映我国学者在这个领域的部分近期研究成果.

专题公开征文历经两轮,共征得投稿28篇.此外,专题组稿与第4届中国基于搜索的软件工程研讨会(CSBSE 2015)和第14届全国软件与应用学术会议(NASAC 2015)合作,邀请CSBSE 2015会议投稿中高质量的论文作为第1轮投稿,并面向全国高校、科研院所等广泛征集第2轮投稿.上述稿件涉及软件测试、错误定位、软件产品线和云计算构件优化等诸多方面的研究内容.特约编辑先后邀请了40余位软件工程和智能计算相关领域的专家参与审稿工作,每篇投稿邀请2位专家进行评审.稿件评审历经6个月,经初审、复审、NASAC 2015会议宣读和终审各个阶段,最终有12篇论文入选本专题.

首先,《自动程序修复方法研究进展》对软件自动修复的方法进行了综述,从基于搜索、基于代码穷举和基于约束求解3个方面总结了程序自动修复方法,并描述了所面临的机遇和挑战.

其次,软件测试数据生成与演化、错误定位等是基于搜索的软件工程领域研究中最为广泛的内容,其中,

《基于模式组合的粒子群优化测试用例生成方法》针对程序因结构复杂而导致其分支条件无法得到评价的问题,提出一种基于模式组合的粒子群优化测试用例生成方法,对于含有模式的程序,该方法效率明显提高.

《基于节点概率的路径覆盖测试数据进化生成》为了提高路径覆盖测试效率,采用遗传算法进化生成路径覆盖的测试数据,利用被测程序中条件语句的相关性判定不可达路径,确定路径中的必经节点,根据个体的穿越度设计适应度函数,使得测试数据生成的效率得到提高.

《基于关键点路径的快速测试用例自动生成方法》提出程序中关键点路径的形式化方法,将路径分成易覆盖路径、难覆盖路径和不可行路径,并根据已覆盖路径及其测试数据提供的信息,基于遗传算法生成难覆盖路径的测试数据.

《融入神经网络的路径覆盖测试数据进化生成》提出一种基于神经网络的路径覆盖测试数据进化生成方法,利用训练好的神经网络粗略计算个体的适应值,仅对适应值较好的优秀个体,运行程序获得精确的适应值,可以降低时间消耗,并提高测试数据生成的效率.

《基于分支覆盖的回归测试路径选择》通过利用已有测试数据的路径覆盖信息,并选择给定个数的路径,以覆盖所有的目标分支.所提出方法选择的路径能够覆盖更多的分支,需要生成的测试数据更少,回归测试消耗的时间更短.

《利用蚁群算法生成覆盖表:探索与挖掘》针对组合测试中的覆盖表生成问题,采用蚁群算法生成覆盖表,并从4个层次提出改进,生成效率显著提升.

《一种基于遗传算法的多缺陷定位方法》对多缺陷定位问题进行建模,构建了候选缺陷分布的染色体编码方式,并使用遗传算法在解空间中搜索具有最高适应度值的候选缺陷分布,新方法在整体定位效率方面优于传统方法,且有效地减少了人工交互.

在软件生产过程中,产品线配置和基于云的构建选取与优化是重要的研究内容.

《面向产品线交互配置不一致性修复的差分IBEA算法》通过结合多目标搜索以及约束求解技术,提出一种自动的不一致配置修复推荐方法,基于可行解和不可行解的差分变异产生后代,最终为用户推荐符合预定义约束且对配置效率来说最优的配置修复方案.

《基于混合遗传模拟退火算法的SaaS构件优化放置》在SaaS提供者角度,提出一种新的SaaS构件优化放置问题模型,并采用混合遗传模拟退火算法对该问题进行求解.该方法结合了遗传算法和模拟退火算法的优点,克服了遗传算法收敛容易早熟和模拟退火算收敛速度慢的问题.

《软件形式化开发关键部件选取的水波优化方法》将软件系统中的形式化开发关键部件选取问题,建模为一个0-1约束规划问题,设计了高效求解该问题的离散水波优化算法,并通过在大型软件系统上的应用,验证了模型的有效性和算法的优越性.

最后,面对软件工程与智能计算结合的关键效率问题,《面向CPU+GPU异构计算的多目标测试用例优先排序》以软件回归测试用例优先排序为例,提出了面向CPU+GPU异构计算环境下的技术,实现了NSGA-II中基于序列编码的适应度函数计算和交叉操作的GPU并行计算,开发了相应的原型工具,并通过近6万行有效代码的工业界开源程序,验证了所提方法的高效性.

本专题主要面向软件工程和智能计算交叉领域的研究人员,反映了我国学者在基于搜索的软件工程领域的最新研究进展.在此,我们要特别感谢《软件学报》编委会对本专题工作的指导和帮助.感谢编辑部各位老师从征稿启事发布、审稿专家邀请至评审意见汇总、论文定稿、修改及出版所付出的辛勤工作和汗水,感谢专题评审专家及时、耐心、细致的评审工作.此外,我们还要感谢向本专题踊跃投稿的作者对《软件学报》的信任.

最后,感谢专题的读者们,希望本专题能够对相关领域的研究工作有所促进.