2018, 29(8):2177-2179. DOI: 10.13328/j.cnki.jos.005534
摘要:
2018, 29(8):2180-2197. DOI: 10.13328/j.cnki.jos.005529
摘要:互联网、机器学习、人工智能等技术的迅速发展以及大量开源软件和开源社区的出现,给软件工程的发展带来了新的机遇和挑战.目前,在互联网上已经存在了数十亿行的各类程序代码,这些代码中存在着各种知识,尤其是众多已被广泛使用、高质量的软件代码,由此催生了利用大规模代码资源中蕴涵的众多知识进行智能化软件开发的新思路.它试图充分利用互联网中存在的代码资源、知识和群体智慧,以有效地提高软件开发的效率和质量,其核心技术是程序搜索与构造,具有非常重要的理论与应用价值.目前,该方向的研究工作主要集中在代码搜索、程序合成、代码推荐与补全、缺陷检测、代码风格改善、程序自动修复等方面.从以上几个方面对当前的主要研究工作进行综述,对具体的理论和技术途径进行梳理,并在最后总结了目前该领域研究过程中面临的挑战,给出了建议的研究方向.
2018, 29(8):2198-2209. DOI: 10.13328/j.cnki.jos.005527
摘要:安卓开发者需要通过不断地经验积累来提升其设计安卓界面及行为交互的能力.在数据驱动的软件开发中,代码推荐是其中一个关注热点.在此背景下,提出了一种安卓应用用户界面交互模式抽取与检索方法,提供面向安卓应用的界面相关代码查询与推荐能力,从而降低开发者在选择、试用、学习安卓应用所带来的人工成本.以安卓活动(activity)为单元的界面交互模式代表了活动的界面构成及交互行为,该方法以此为分析目标,从一组开源的安卓应用项目中抽取出每一个活动的界面交互模式.在此基础上,支持用户通过检索的方式获取与其需求相关的活动设计细节.该方法被实现为一组工具链,为抽取与检索提供自动化支持.最后,通过两个案例对该方法的准确性和有效性进行验证.
2018, 29(8):2210-2225. DOI: 10.13328/j.cnki.jos.005533
摘要:软件的功能描述文档是开发人员了解软件的重要基础.现有的软件项目并不都是具备全面描述软件功能的文档,但软件项目开发和应用过程中的各种交流记录蕴含了讨论其功能的大量信息.为此,提出了一种基于StackOverflow问答数据的软件功能特征挖掘组织方法.该方法提出以动宾短语形式描述软件功能特征,挖掘并组织蕴含在StackOverflow数据中的软件功能特征,自动生成一种以层次化方式展示的软件项目功能特征文档.在针对真实项目的实验中,该方法生成的软件功能文档可以覆盖官方文档中列举的97.6%的软件常用功能.同时,该方法可以扩展从不同形式的项目交流记录中生成全面描述软件功能特征的文档.
黄袁 , 贾楠 , 周强 , 陈湘萍 , 熊英飞 , 罗笑南
2018, 29(8):2226-2242. DOI: 10.13328/j.cnki.jos.005528
摘要:代码注释是辅助编程人员理解源代码的有效手段之一.高质量的注释决策不仅能够覆盖软件系统中的核心代码片段,还能避免产生多余的代码注释.然而在实际开发中,编程人员往往缺乏统一的注释规范,大部分的注释决策都取决于个人经验以及领域知识.对于新手程序员来说,注释决策显然成为一项重要而艰巨的任务.为了减少编程人员投入过多的精力在注释决策上,从大量的代码注释实例中学习出一种通用的注释决策规范,并提出了CommentAdviser方法,以辅助编程人员在代码开发过程中做出恰当的注释决策.由于注释决策与代码本身的上下文信息密切相关,因此,从当前代码行的上下文代码中提取代码结构特征以及代码语义特征作为支持注释决策的主要依据.然后,利用机器学习算法判定当前代码行是否为可能的注释点.在GitHub中的10个大型开源软件的数据集上评估了所提出的方法,实验结果以及用户调研表明,代码注释决策支持CommentAdviser方法的可行性和有效性.
2018, 29(8):2243-2257. DOI: 10.13328/j.cnki.jos.005531
摘要:为了检测软件系统中存在错误参数的函数调用,提出了一种基于关联分析和N-Gram语言模型的静态检测方法(ANiaD).基于海量开源代码,构建了关联分析模型以挖掘参数间存在的强关联规则.针对参数间存在强关联规则的函数调用构建N-Gram语言模型.基于训练过的N-Gram模型,计算给定函数调用语句正确的概率.低概率的函数调用被报告为异常函数调用.基于10个开源Java项目对该方法进行实验验证.实验结果表明,该方法检测的查准率约43.40%,显著高于现有的基于相似度的检测方法(查准率25%).
尹刚 , 王涛 , 刘冰珣 , 周明辉 , 余跃 , 李志星 , 欧阳建权 , 王怀民
2018, 29(8):2258-2271. DOI: 10.13328/j.cnki.jos.005524
摘要:全球开源软件生态中孕育的大众化软件生产模式正在快速形成一种新型的软件生产力,在软件开发和应用各个环节发挥了巨大作用.大众化软件生产的数据规模日趋庞大、协同范围不断扩展、管理模式高度精简,这些全球化特征使其在软件复用、协同开发、知识管理等环节面临诸多挑战,迫切需要新的理论指导和工具支持.首先,界定了大众化软件生产活动的分布范围、基本过程和数据形态;然后,从软件复用、协同开发、知识管理这3个核心环节对开源社区数据挖掘技术的研究工作进行了归类与分析;最后,总结了该领域研究工作存在的问题和未来的发展趋势.
2018, 29(8):2272-2282. DOI: 10.13328/j.cnki.jos.005521
摘要:开源软件中如何真实评估所有开发者的贡献度并有效区分核心开发者和外围开发者,是一个重要的研究问题.通过设计开发文件的贡献度分配算法,以9个Apache项目为基础,分析了开发者对项目的贡献度,并以此有效地区分核心开发者和外围开发者.实验结果通过Apache官方主页公布的开发者地位名单进行考证,同时在真实名单的相似度上与传统评估方案进行了比较,验证了算法的实用性和有效性.最后,通过支持向量机建立分类模型,结合不同影响开发者地位的关键因素,提升了开发者分类的精确度.
2018, 29(8):2283-2293. DOI: 10.13328/j.cnki.jos.005522
摘要:软件开发过程中,同一代码文件经常由多名开发者共同开发和维护,各个开发者向文件贡献了不同的代码量,使之形成特有的贡献组成.代码文件的贡献组成是否合理,直接影响开发者的任务分配,进而影响软件质量和开发效率.对于不同类型的代码文件,如何刻画并确定其合理的贡献组成模式,成为一个亟待解决的问题.协同开发支撑工具的成熟,使得开发人员的活动可被有效地记录,因此,其所产生的海量数据为数据驱动的智能化软件开发打下了基础.首先,基于代码所有权,从贡献组成的集中度、复杂度和稳定性这3个维度出发,提出刻画贡献组成的3个量度;其次,以OpenStack的核心项目Nova为研究案例,在其版本控制数据上建立贡献组成的量度,总结了12种通用文件类型,归纳出3种贡献组成模式;最后,结合邮件以及面对面访谈的方式,验证了量度的有效性以及贡献组成模式的合理性,并从贡献组成的角度,对软件开发过程给出了一些指导性建议.
2018, 29(8):2294-2305. DOI: 10.13328/j.cnki.jos.005523
摘要:软件开发与维护过程中常会出现一些安全性缺陷,这些安全性缺陷会给软件和用户带来很大的风险.安全性缺陷在修复过程中,其修复级别和质量要求往往高于一般性的缺陷,因此,推荐出富有安全性经验的开发者及时、有效地修复这些安全性缺陷非常重要.现有的开发者推荐技术在推荐开发者时仅仅考虑了开发者的历史开发内容,很少考虑到开发人员的安全性缺陷修复经验和修复质量等因素,所以这些技术不适用于安全性缺陷的开发者推荐.针对安全性缺陷的修复,提出了一种有效的软件开发者推荐方法SecDR.SecDR在推荐开发者时不仅考虑了开发者的历史开发内容(与安全性相关),还分析了开发者的修复质量和历史修复缺陷的复杂度等因素.此外,SecDR还实现了开发者的多经验级别推荐:推荐初级开发者修复简单的安全性缺陷、高级开发者修复复杂的安全性缺陷.在3个开源项目(Mozilla,Libgdx,ElasticSearch)上分别对SecDR推荐开发者进行有效性验证.对比实验表明,SecDR针对安全性缺陷推荐开发者相比于其他方法(如DR_PSF)的推荐精度平均高出19%~42%.另外,实验对比了SecDR与实际开发人员的分配情况,结果显示,SecDR可以更好地规避不合理的软件开发者的推荐.
谢新强 , 杨晓春 , 王斌 , 张霞 , 纪勇 , 黄治纲
2018, 29(8):2306-2321. DOI: 10.13328/j.cnki.jos.005525
摘要:软件开发者能力评价和协作关系推荐,是大数据环境下软件智能化开发领域的一个研究热点.通过分析互联网开发者社区和企业内部开发环境,设计出基于模糊综合评价的开发者能力模型.随后,通过挖掘开发者与任务的动态交互行为、静态匹配度以及开发者能力这3个不同维度的特征并结合矩阵分解技术,提出一种能力与行为感知的多特征融合协同过滤开发者推荐方法,最终解决开发者推荐面临的评价矩阵稀疏性和冷启动问题,提升个性化精准推荐效率.从系统层面给出适合大数据环境的多特征融合开发者推荐原型系统实践并对现有开源技术框架的优化改进,实验过程分别基于互联网问答社区StackOverflow和企业内部GitLab环境进行了实验分析.最后,对未来研究可能的问题及思路进行了展望.
2018, 29(8):2322-2335. DOI: 10.13328/j.cnki.jos.005532
摘要:随着开源软件项目规模的不断增大,人工为缺陷报告分派合适的开发人员(缺陷分派)变得越来越困难.而不合适的缺陷分派往往会严重影响缺陷修复的效率,为此,迫切需要一种缺陷分派辅助技术帮助项目管理者更好地完成缺陷分派任务.当前,大部分研究工作都基于缺陷报告文本以及相关元数据信息分析来刻画开发者的特征,忽略了对开发者活跃度的考虑,使得对具有相似特征的开发者进行缺陷报告分派预测时表现较差.提出一个基于循环神经网络的深度学习模型DeepTriage,一方面,利用双向循环网络加池化方法提取缺陷报告的文本特征;另一方面,利用单向循环网络提取特定时刻的开发者活跃度特征,并融合两者,利用已修复的缺陷报告进行监督学习.在Eclipse等4个不同的开源项目数据集上的实验结果表明,DeepTriage较之同类工作在缺陷分派预测准确率上有显著提升.
张一帆 , 汤恩义 , 苏琰梓 , 杨开懋 , 匡宏宇 , 陈鑫
2018, 29(8):2336-2349. DOI: 10.13328/j.cnki.jos.005526
摘要:软件安全性是衡量软件是否能够抵御恶意攻击的重要性质.在当前互联网环境下,黑客攻击无处不在,因而估计软件中可能含有的漏洞数量与类型,即对软件进行安全评估,变得十分必要.在实际中,用户不仅需要对未发布或者最新发布的软件实施安全性评估,对已发布软件也会有一定的安全评估需求,例如,当用户需要从市场上互为竞争的多款软件中做出选择,就会希望能够花费较低成本、较为客观地对这些软件进行第三方的评估与比较.提出了一种由自然语言数据驱动的智能化软件安全评估方法来满足这一要求.该方法基于待评估软件现有用户的使用经验信息来评估软件的安全性.它首先自适应地爬取用户在软件使用过程中对软件的自然语言评价数据,并利用深度学习方法与机器学习评估模型的双重训练来获得软件的安全性评估指标.由于所提出的自适应爬虫能够在反馈中调整特征词,并结合搜索引擎来获得异构数据,因而可通过采集广泛的自然语言数据来进行安全评估.另外,使用一对多的机器翻译训练能够有效地解决将自然语言数据转换为语义编码的问题,使得用于安全评估的机器学习模型可以建立在自然语言的语义特征基础上.在国际通用漏洞披露数据库(CVE)和美国国家漏洞数据库(NVD)上对该方法进行了实验,结果表明,该方法在评估软件漏洞数量、漏洞类型以及漏洞严重程度等指标上十分有效.
王飞 , 杨志斌 , 黄志球 , 周勇 , 刘承威 , 章文炳 , 薛垒 , 许金淼
2018, 29(8):2350-2370. DOI: 10.13328/j.cnki.jos.005530
摘要:随着嵌入式软件系统在汽车、核工业、航空、航天等安全关键领域的广泛应用,其失效将会导致财产的损失、环境的破坏甚至人员的伤亡,使得保障软件安全性成为系统开发过程中的重要部分.传统的安全性分析方法主要应用在软件的需求分析阶段和设计阶段,然而需求与设计之间的鸿沟却一直是软件工程领域的一大难题.正是由于这一鸿沟的存在,使得需求分析阶段的安全性分析结果难以完整而详尽地反映在软件设计中.其根本原因是:当前的软件需求主要通过自然语言描述,存在二义性与模糊性,且难以进行自动化处理.为了解决这一问题,面向构件化嵌入式软件,首先提出了一种半结构化的限定自然语言需求模板用于需求规约,能够有效地降低自然语言需求的二义性与模糊性;然后,为了降低自动化处理的复杂性,采用需求抽象语法图作为中间模型,实现基于限定自然语言需求模板规约的软件需求与AADL模型之间的转换,并在此过程中自动记录两者之间的可追踪关系;最后,基于AADL开源工具OSATE对所提出方法进行了插件实现,并通过航天器导航、制导与控制系统(guidance,navigation and control,简称GNC)进行了实例性验证.
2018, 29(8):2371-2396. DOI: 10.13328/j.cnki.jos.005563
摘要:基于多面体模型的编译技术发展近30年,已经在多个开源编译器和商业编译器中得到了应用和实现.与传统的编译优化模型相比,多面体模型具备应用范围广、表示能力强、优化空间大等优点,代表了程序自动并行化领域众多方向最先进的水平,成为国际上多个编译研发团队的研究热点;同时,多面体模型抽象程度高、实现难度大、面临问题多的特征,阻碍了基于该模型的编译技术在发展相对滞后地区的普及,形成国内专门从事该问题研究的团队屈指可数的现象.为了打开多面体模型的“黑盒子”,首先描述了多面体模型的原理,揭示了基于多面体模型的编译流程,并指出了该领域的主要研究内容;接下来,从程序并行性、数据局部性和其他领域上的扩展应用这3个方面对该领域上的研究进展进行了介绍;最后,对该研究领域当前面临的挑战和潜在的研究方向进行了总结.研究目的是通过回顾和总结基于多面体模型的编译技术研究进展,为国内编译研发团队提供重要参考,以期推动我国在该领域上的发展.
2018, 29(8):2397-2426. DOI: 10.13328/j.cnki.jos.005564
摘要:随着机器学习和大数据技术的应用发展,基于语义分析的情感计算与分析技术在研究人类的感知、注意力、记忆、决策、社会交流等诸多方面起着重大作用,它不仅影响到了人工智能技术的发展,还影响到了人/机交互的方式,并受到学术界以及企业界的广泛关注.在针对情感定义以及相关90多种情感模型分析的基础上,归纳并提出了目前情感分析领域中存在的6项关键性问题与挑战,其中主要包括:情感的来源与本质特征的表示问题;多模态的情感计算问题;外部因素对情感演化过程的影响度量问题;情感的个性化度量问题;情感群体化特征与传播动力学机制问题以及细微情感的表达、算法改进与优化等问题.同时,针对其中的关键问题与技术挑战进行了理论探讨、技术分析、实际应用以及当前工作进展与趋势分析,从而为深入研究和解决基于语义分析条件下的情感计算提供了新的研究线索与方向.
2018, 29(8):2427-2447. DOI: 10.13328/j.cnki.jos.005485
摘要:不确定和否定信息抽取,是自然语言处理领域中的重要任务和研究热点.针对不确定和否定作用范围识别任务,提出一种基于两层双向LSTM神经网络的作用范围识别方法.首先,对于从线索词到达词语的句法路径,使用第1层双向LSTM神经网络从中学习到有用特征;接着,将词法特征与句法路径特征一起组成当前词语的特征表示;最后,将作用范围识别问题看作序列标注任务,利用第2层双向LSTM神经网络界定当前线索词的作用范围.实验结果表明,所提出的模型优于其他神经网络模型,并在BioScope生物医学语料上取得了良好性能.其中,在Abstracts子语料上的不确定和否定作用范围识别精确率分别达到86.20%和80.28%.
2018, 29(8):2448-2469. DOI: 10.13328/j.cnki.jos.005558
摘要:可交换性假设是采用贝叶斯模型对网络数据建模的重要前提,基于Aldous-Hoover表示理论的可交换图不能生成稀疏网络.实证结果表明,真实世界中的很多复杂网络都具有节点度幂律分布的稀疏特征,基于Kallenberg表示理论的可交换图能够同时满足可交换性和稀疏性.以Caron-Fox模型和Graphex模型为例,对稀疏可交换图建模的相关概念、理论和方法的研究发展进行了综述.首先讨论了随机图、贝叶斯非参数混合模型、可交换表示理论、Poisson点过程、离散非参数先验等理论的研究历程;然后介绍了Caron-Fox模型的表示;进而总结了进行稀疏可交换图的随机模拟所涉及的截断采样和边缘化采样方法;接下来综述了稀疏可交换图模型的后验推理技术;最后对稀疏可交换图建模的最新进展和研究前景做了介绍.
于彦伟 , 贾召飞 , 曹磊 , 赵金东 , 刘兆伟 , 刘惊雷
2018, 29(8):2470-2484. DOI: 10.13328/j.cnki.jos.005289
摘要:面向位置大数据聚类,提出了一种简单但高效的快速密度聚类算法CBSCAN,以快速发现位置大数据中任意形状的聚类簇模式和噪声.首先,定义了Cell网格概念,并提出了基于Cell的距离分析理论,利用该距离分析,无需距离计算,可快速确定高密度区域的核心点和密度相连关系;其次,给出了网格簇定义,将基于位置点的密度簇映射成基于网格的密度簇,利用排他网格与相邻网格的密度关系,可快速确定网格簇的包含网格;第三,利用基于Cell的距离分析理论和网格簇概念,实现了一个快速密度聚类算法,将DBSCAN基于数据点的密度扩展聚类转换成基于Cell的密度扩展聚类,极大地减少高密度区域的距离计算,利用位置数据的内在特性提高了聚类效率;最后,在基准测试数据上验证了所提算法的聚类效果,在位置大数据上的实验结果统计显示,与DBSCAN、PR-Tree索引和Grid索引优化的DBSCAN相比,CBSCAN分别平均提升了525倍、30倍和11倍效率.
2018, 29(8):2485-2500. DOI: 10.13328/j.cnki.jos.005543
摘要:基于软件定义网络(software defined network,简称SDN)的数据中心流量工程,能够通过对全局视图的网络管控,动态选择路由路径,规避拥塞发生的风险.但是在制定路由策略时,经常会对数据流进行迁移,尤其是针对大流的迁移容易造成数据流丢包以及接收端数据包乱序的问题.提出了基于时隙的流片装箱算法(flowlet-binned algorithm based on timeslot,简称FLAT),通过集中控制的方式获取链路状态信息并计算出合理的数据流传输时隙值,能够避免在数据流迁移过程中的丢包以及接收端数据包乱序问题;同时,在充分利用数据中心冗余链路的前提下,实现高效和细粒度的流量均衡.通过在Mininet仿真平台中部署并与ECMP以及GFF路由机制相比较,在链路高负载情况下,丢包率分别下降了90%和80%,而吞吐量分别能够提升44%和11%,实验结果展示了FLAT的优越性能.
2018, 29(8):2501-2510. DOI: 10.13328/j.cnki.jos.005281
摘要:为了解决目前图像纹理复杂度建模的隐写载体选择指标难以有效适用于JPEG隐写的问题,提出一种基于Haar小波域指标自适应选择载体的JPEG隐写方法,以高阶Haar小波变换模型建立JPEG图像像素关系,计算各方向上的分解图像矩阵的范数均值,用于选择难以被检测的载体.该指标比已有方法的像素间建模能力更强,更能反映JPEG隐写所影响的像素间关系,且能增强JPEG隐写的隐蔽性.实验结果表明,在大多数情况下,与现有载体选择指标相比,该方法与隐写隐蔽性具有更高的相关性.使用该方法优选的载体进行隐写,比优选前的隐蔽性提高约7.7%,比用现有指标优选载体的JPEG隐写方法的隐蔽性平均提高约2.0%.因此,该方法隐写具有更高的隐蔽性.
2018, 29(8):2511-2526. DOI: 10.13328/j.cnki.jos.005492
摘要:ARM TrustZone技术已经在Android手机平台上得到了广泛的应用,它把Android手机的硬件资源划分为两个世界——非安全世界(non-secure world)和安全世界(secure world).用户所使用的Android操作系统运行在非安全世界,而基于TrustZone对非安全世界监控的系统(例如KNOX,Hypervision)运行在安全世界.这些监控系统拥有高权限,可以动态地检查Android系统的内核完整性,也可以代替Android内核来管理非安全世界的内存.但是由于TrustZone和被监控的Android系统分处于不同的世界,world gap(世界鸿沟)的存在导致处于安全世界的监控系统不能完全地监控非安全世界的资源(例如Cache).TrustZone薄弱的拦截能力和内存访问控制能力也弱化了它对非安全世界的监控能力.提出了一种可扩展框架系统HTrustZone,能够结合Hypervisor来协助TrustZone抵御利用world gap的攻击,增强其拦截能力和内存访问控制能力,从而为非安全世界的操作系统提供更高的安全性保障.并在Raspberry Pi2开发板上实现了HTrustZone的原型系统,实验结果表明,HTrustZone的性能开销仅仅增加了3%左右.
丛润民 , 雷建军 , 付华柱 , 王文冠 , 黄庆明 , 牛力杰
2018, 29(8):2527-2544. DOI: 10.13328/j.cnki.jos.005560
摘要:视频显著性检测是计算机视觉领域的一个热点研究方向,其目的在于通过联合空间和时间信息实现视频序列中与运动相关的显著性目标的连续提取.由于视频序列中目标运动模式多样、场景复杂以及存在相机运动等,使得视频显著性检测极具挑战性.对现有的视频显著性检测方法进行梳理,介绍相关实验数据集,并通过实验比较分析现有方法的性能.首先,介绍了基于底层线索的视频显著性检测方法,主要包括5类:基于变换分析的方法、基于稀疏表示的方法、基于信息论的方法、基于视觉先验的方法和其他方法.然后,对基于学习的视频显著性检测方法进行了总结,主要包括传统学习方法和深度学习方法,并着重对后一类方法进行了介绍.随后,介绍了常用的视频显著性检测数据集,给出了4种算法性能评价指标,并在不同数据集上对最新的几种算法进行了定性和定量的比较分析.最后,对视频显著性检测的关键问题进行了总结,并对未来的发展趋势进行展望.