Homepage
About SEG
SEG News
SEG Seminar
Research
Tools
Internal Site
People
Publication
Curriculum
Album
Hot Link
Contact SEG
C语言系统冗余头文件分析工具 oa 参加NASAC 2020 原型系统竞赛自由命题组并获得佳绩

20201119~22日,全国软件及应用学术会议”(NASAC)组织的软件研究成果原型系统竞赛在重庆大学举办,SEG团队开发的冗余头文件分析工具oa在该竞赛的自由型命题组中表现优异,在17支复赛队伍中获得了第8名的成绩,该工作的参与同学为硕士生陈佳一与硕士生彭彦鑫,该工作的指导老师是张天副教授。

 

“全国软件及应用学术会议”(NASAC)从2008年开始组织原型系统交流,取得了很好的效果,并得到了中国计算机学会的支持。为进一步促进这项工作,从2013年开始,软件工程专委与系统软件专委联合举办软件研究成果原型系统竞赛。该赛事旨在更广泛地凝聚领域内研究与技术人员形成合力,催化、“研“、”产“、”用“生态进一步发展,促进有关技术的关键突破、持续改进以及在实践中的使用与推广。

 

冗余头文件是c语言程序中普遍存在的问题,由于编译器的使用不敏感特性,源文件中会包含大量冗余的头文件,这些冗余头文件会在一定程度上降低程序的编译效率,干扰软件的增量编译分析过程,并且影响软件的可理解性与可维护性。

 

目前在冗余头文件优化工作上取得较好结果的有谷歌团队开发的IWYU,从2011年至今,IWYU已经更新了总计14个版本,并且它被应用在了一些大型软件系统的优化上,比如UE4。但是,IWYU的设计初衷是面向耦合程度低、模块化程度高的定制系统的,这使得IWYU难以应用于一些年代久远的c语言系统,比如linux kernel。我们选取了8个具有代表性的c语言开源软件进行对比实验,根据实验结果表明,oaIWYU具有接近的时间效率,但是在优化准确率的指标上,oa具有显著的优势。

 

oa工具是一款面向c语言程序的冗余头文件分析工具,可用于优化源文件中存在的冗余头文件。它基于程序预处理分析技术构建细粒度化的头文件依赖模型,实现去环、去冗余的依赖模型结构,并基于抽象语法树分析技术,结合实际应用场景中可能出现的符号依赖规则,提取使用单元间的符号使用关系。基于依赖模型,oa采用二次搜索算法,提取根节点的使用依赖连通子图,以及根节点连通子图间接引入的所有其他连通子图,并根据冗余依赖类型的分类,对源文件中的#include指令进行优化。截至目前,oa在冗余头文件分析工具中拥有最好的准确率表现。