2017, 28(6):1327-1329. DOI: 10.13328/j.cnki.jos.005222 CSTR:
摘要:软件在人类社会生活中发挥着越来越重要的作用,软件工程研究软件系统构造、开发、运行、维护、演化的创新方法以提高效率和质量.从上世纪五六十年代起,软件工程经历了从结构化、到面向对象、到网络服务化的演进.软件工程研究内容和范围不断扩展,其应用和实践也不断延伸,正发展成为结合人工智能、社会计算、认知科学、数据科学与工程等多学科交叉的领域. 为及时反映我国学者在结合大数据技术的软件工程研究新进展,以及在大数据软件应用的开发方面的最新实践经验,“大数据时代的软件工程”专题围绕上述新兴热点问题,同时也兼顾经典问题的最新突破,征集本领域近期取得的原创性研究成果.专题的征文范围包括(但并不限于)面向特定领域的大数据应用开发、调试、部署及运行管理过程中的软件工程问题、软件工程数据质量问题、面向开源软件生态系统的数据分析、软件生命周期中的数据采集与分析、大规模群体协同的软件开发方法与平台环境、面向软件系统创新与产品线演化的模型、理论与工具、面向特定领域的大数据应用需求分析、用户行为数据收集与系统可用性分析、软件数据分析的代价与价值评估. 专题公开征文,共征得投稿22篇.特约编辑邀请了国内外在该领域有影响力的一组学者参与审稿工作,每篇投稿至少邀请2位专家进行初审.大部分稿件经过初审和复审两轮评审,部分稿件经过了两轮复审.通过初审的稿件还在NASAC 2016大会上进行了现场报告,作者现场回答了听众的问题,并听取了听众的修改建议.最终有13篇论文入选本专题.入选论文覆盖开源软件生态分析、软件分类检测与推荐、软件故障与缺陷预测、面向领域的大数据应用开发方法.
2017, 28(6):1330-1342. DOI: 10.13328/j.cnki.jos.005222 CSTR:
摘要:通过分析GitHub开源软件的开发过程,提出了问题解决速度、问题增加速度等影响因素,并对这些影响因素间的相关性进行了分析.经过实验证明了有些影响因素之间存在一定的相关性.同时,根据实验的结果还给出了针对GitHub开源软件开发过程的一些建议.
2017, 28(6):1343-1356. DOI: 10.13328/j.cnki.jos.005227 CSTR:
摘要:由于开源软件开发方式与传统的软件工程方法存在显著差异,为了加入开源社区,商业组织必须要对自身原有的软件开发方式、业务模式等做出调整.在这种情况下,一个亟待解决的问题是商业组织应当采取怎样的参与模式才能有效融入开源社区.为此,进行3个方面的研究:采用雪球采样方法对OpenStack相关的文本数据进行收集,为定性分析提供数据基础;借鉴扎根理论,通过对所收集数据的过滤和归纳,总结出不同商业组织参与OpenStack的模式;在此基础上提炼出4种更具一般性的参与模式,为商业组织参与开源项目提供经验参考与决策支持.
2017, 28(6):1357-1372. DOI: 10.13328/j.cnki.jos.005230 CSTR:
摘要:随着软件协同开发技术与社交网络的深度融合,社交化开发范式已成为当前软件创作与生产的重要方式.这一软件开发模型的灵活性与开放性,吸引了大规模的外围贡献者加入到开源社区中,形成了巨大的软件生产力.在开源社区中,这些分布广泛、规模巨大的外围贡献者,主要以一种无组织的松散方式进行协同.他们需要花费大量的时间和精力,在海量的开源项目中寻找到自己真正感兴趣的项目并进行长期贡献.为了提高大规模群体协同的效率,提出一种基于多维特征的开源项目个性化推荐方法(即RepoLike).该方法从开源项目自身流行度、关联项目技术相关度以及大众贡献者之间的社交关联度这3个维度度量开发者和开源项目之间的关联关系,并利用线性组合和Learning To Rank方法构建推荐模型,从而为开发者提供个性化的项目推荐服务.通过大规模的实验,其结果表明: RepoLike在推荐20个候选项目时的推荐命中率超过25%,能够有效地为开发人员提供有价值的推荐服务.
2017, 28(6):1373-1388. DOI: 10.13328/j.cnki.jos.005221 CSTR:
摘要:移动应用中,广泛使用第三方库来帮助开发和增强应用功能.很多关于移动应用分析以及访问控制的研究工作,需要在分析之前对第三方库进行检测、过滤或者对其进行功能分类.当前,大部分研究工作都以使用白名单的方式来检测第三方库或者对其功能进行分类.然而,通过白名单检测第三方库不完善且不准确,其原因包括:(1)第三方库的种类和数量很大;(2)常见的代码混淆或者第三方库伪装等技术使得白名单方法不能准确地识别第三方库.提出一种第三方库自动检测和分类方法,包括基于多级聚类技术准确识别第三方库以及基于机器学习对第三方库的功能进行准确分类.实验对超过130 000个Android应用进行分析,验证所提出方法的有效性.实验总共检测到4 916个不同的第三方库.在人工标记的数据集上,通过十折交叉验证,对第三方库分类的准确率达到84.28%.将训练好的分类器应用于全部4 916个检测到的第三方库,人工进行抽样验证的准确率达到75%.
2017, 28(6):1389-1404. DOI: 10.13328/j.cnki.jos.005224 CSTR:
摘要:配置管理工具(configuration management tool,简称CMT)作为运维自动化的组成部分,是实现开发运维一体化(development and operations,简称DevOps)的重要支撑技术.当前,互联网开源社区中存在数量众多的CMT脚本制品,但是缺乏有效的层次分类管理,给快速检索和高效利用CMT脚本制品带来困难.针对该问题,提出一种面向CMT制品的基于在线非结构化描述文档分析的层次分类方法.该方法利用标签共现性关系(tag co-occurrence)建立层次类别体系,基于描述属性特征,实现对CMT制品的层次分类器;并使用混合的样本划分方式针对数据倾斜问题进行了改进.对超过11 000例训练数据和1 000例测试数据进行实验,结果表明:改进的样本划分方式得到的最佳查准率、查全率、调和平均值分别达到0.81、0.88、0.85,较传统方式查全率提高0.15,调和平均值提高0.06.该结果验证了层次分类方法的有效性.
2017, 28(6):1405-1417. DOI: 10.13328/j.cnki.jos.005226 CSTR:
摘要:如何有效地帮助程序员从目前的各种代码库中搜索与特定编程任务相关的代码,已成为软件工程重要的研究领域之一.提出一种基于增强描述的代码搜索方法DERECS,该方法首先基于开源项目、问答系统等构建一个代码-描述语料库,并分析代码及自然语言描述,提取方法调用和代码结构相关特征值;然后,基于代码片段中的方法调用及代码片段的结构特征对代码进行描述增强,以减小被搜索的代码与自然语言查询语句之间的差异,扩大搜索的范围.使用真实自然语言查询语句作为测试基准,对DERECS进行验证.验证结果表明,DERECS的效果显著优于典型方法SNIFF和Krugle的查询结果.
2017, 28(6):1418-1434. DOI: 10.13328/j.cnki.jos.005225 CSTR:
摘要:软件代码提交是最重要的软件版本演化数据之一,被广泛应用于软件审查和软件理解中.对于程序员,提交的理解难度随着受影响的类数量、修改的代码量的增加而增加.通过对大量数据的分析发现:识别出提交中核心的修改类(关键类)以及为了完成这个核心修改所进行的依赖性改动的类(非关键类),能够辅助代码提交的理解.受机器学习技术在分类领域有效性的启发,提出一种基于机器学习的关键类识别方法,将判定提交中的关键类建模为二分类问题(即关键和非关键类),从软件演化过程中产生的海量提交数据中抽取可判别性特征来度量类的关键性.在多个数据集上的实验结果表明:该方法判定关键类的综合准确率达到了87%;相比于开发人员直接理解提交,使用关键类信息提示来辅助理解提交,能够显著提高开发人员的效率和正确率.
2017, 28(6):1435-1454. DOI: 10.13328/j.cnki.jos.005223 CSTR:
摘要:微服务正逐步成为互联网应用所采用的设计架构,如何有效检测故障并定位问题原因,是保障微服务性能与可靠性的关键技术之一.当前的方法通常监测系统度量,根据领域知识人工设定报警规则,难以自动检测故障并细粒度定位问题原因.针对该问题,提出一种基于执行轨迹监测的微服务故障诊断方法.首先,利用动态插桩监测服务组件的请求处理流,进而利用调用树对请求处理的执行轨迹进行刻画;然后,针对影响执行轨迹的系统故障,利用树编辑距离来评估请求处理的异常程度,通过分析执行轨迹差异来定位引发故障的方法调用;最后,针对性能异常,采用主成分分析抽取引起系统性能异常波动的关键方法调用.实验结果表明:该方法可以准确刻画请求处理的执行轨迹,以方法为粒度,准确定位系统故障以及性能异常的问题原因.
2017, 28(6):1455-1473. DOI: 10.13328/j.cnki.jos.005228 CSTR:
摘要:软件缺陷预测方法可以在项目的开发初期,通过预先识别出所有可能含有缺陷的软件模块来优化测试资源的分配.早期的缺陷预测研究大多集中于同项目缺陷预测,但同项目缺陷预测需要充足的历史数据,而在实际应用中,可能需要预测项目的历史数据较为稀缺,或这个项目是一个全新项目.因此,跨项目缺陷预测问题成为当前软件缺陷预测领域内的一个研究热点,其研究挑战在于源项目与目标项目数据集间存在的分布差异性以及数据集内存在的类不平衡问题.受到基于搜索的软件工程思想的启发,提出了一种基于搜索的半监督集成跨项目软件缺陷预测方法S3EL.该方法首先通过调整训练集中各类数据的分布比例,构建出多个朴素贝叶斯基分类器;随后,利用具有全局搜索能力的遗传算法,基于少量已标记目标实例对上述基分类器进行集成,并构建出最终的缺陷预测模型.在Promise数据集及AEEEM数据集上与多个经典的跨项目缺陷预测方法(Burak过滤法、Peters过滤法、TCA+、CODEP及HYDRA)进行了对比.以F1值作为评测指标,结果表明:在大部分情况下,S3EL方法可以取得最好的预测性能.
2017, 28(6):1474-1487. DOI: 10.13328/j.cnki.jos.005232 CSTR:
摘要:从区块链的技术层面及应用层面分析其特征,并给出区块链的分类.挖掘区块链的设计需求,针对区块链的一致性和可扩展性的应用需求进行深入分析.对区块链的应用系统开发方法及区块链建模进行研究,提出了账户区块链(account blockchain,简称ABC)和交易区块链(trading blockchain,简称TBC)的双链设计模型.对智能合约进行深入剖析,提出了链上代码并行执行模型应用原则.最后,对区块链应用技术进行总结和展望.
2017, 28(6):1488-1497. DOI: 10.13328/j.cnki.jos.005229 CSTR:
摘要:问题框架方法分析软件需求时需要通过借助领域知识及其之间的结构关系来论述用户的需求是可以被软件系统满足的.这类定性的可满足性论述支持早期需求决策,选择合理的软件体系结构和设计方案.但是,当前的移动软件需求方是偏好各异的用户个体,需求差异化明显,而且根据应用场景,这些需求会动态地发生变化.在这种情况下,现有的定性分析方法不再适用.大数据分析提供一种数据驱动的深度学习机制,为很多实践者采用.但依靠数据驱动的软件分析往往就事论事,仍然不能从根本上提供一个合理的论述来说明大量软件用户的需求到底是什么,也无法对可信软件的安全性和私密性提供可靠的论证.再多的数据也只能提供统计意义的表象,而无法彻底防范借用漏洞的攻击.尝试从提炼软件抽象目标行为的角度进一步深化问题框架的研究思路,针对各类个体行为建立概率模型,提出一种基于模型代数分析的方法,以避开纯粹数据驱动思路的大数据分析盲点.通过对安全和隐私性问题的分析,对所提出的方法可用性及局限性进行探讨,对未来大数据软件需求研究给予一定的启示.
2017, 28(6):1498-1515. DOI: 10.13328/j.cnki.jos.005220 CSTR:
摘要:针对伴随车辆检测这一新兴的智能交通应用,在一种特殊的流式时空大数据——车牌识别流式大数据(ANPR)下,重新定义了Platoon伴随模式,提出PlatoonFinder算法,即时地在车牌识别数据流上挖掘Platoon伴随模式.主要贡献包括:第一,将Platoon伴随模式发现问题映射为数据流上的带有时空约束的频繁序列挖掘问题,与传统频繁序列挖掘算法仅考虑序列元素之间位置关系不同,该算法能够在频繁序列挖掘的过程中有效处理序列元素之间复杂的时空约束关系;第二,该算法融入了伪投影等性能优化技术,针对数据流的特点进行了性能优化,能够有效应对车牌识别流式大数据的速率和规模,从而实现车辆Platoon伴随模式的即时发现.通过在真实车牌识别数据集上的实验分析表明:PlatoonFinder算法的平均延时显著低于经典的Aprior和PrefixSpan等频繁模式挖掘算法,也低于真实情况下交通摄像头的车牌识别最小时间间隔.因此,所提出的算法可以有效地发现伴随车辆组及其移动模式.
2017, 28(6):1516-1528. DOI: 10.13328/j.cnki.jos.005231 CSTR:
摘要:随着大数据技术在不同领域的快速应用,构建大数据应用系统的开发与运行一体化平台,降低大数据技术在各行各业应用普及的门槛,为面向领域的大数据应用系统的快捷开发和高效运行提供方法、工具和平台支撑,成为大数据产业发展的迫切需求.由于大数据固有的复杂性、动态性、多样性及其价值独创性,目前尚未形成系统化的大数据软件开发方法,难以满足不同领域对大数据全生命周期处理的多样化需求.大数据时代的软件工程面临的挑战,体现在互为依赖的两方面:面向大数据全生命周期的集成设计开发环境和基于软件生命周期的系统运行分析工具.结合特定领域的实际需求,研究面向领域的大数据应用系统开发与运行一体化平台技术,覆盖大数据生命周期(获取、清洗、集成、分析、呈现)以及软件生命周期(设计、开发、运行、优化),形成自管理、自适应、自优化的平台化解决方案.在此基础上,开展面向装备物联网及气象民生服务的大数据示范应用,以验证平台的有效性.
2017, 28(6):1529-1546. DOI: 10.13328/j.cnki.jos.005259 CSTR:
摘要:约束优化进化算法主要研究如何利用进化计算方法求解约束优化问题,是进化计算领城的一个重要研究课题.约束优化问题求解存在约束区域离散、等式约束、非线性约束等挑战,其问题的本质是,如何处理可行解与不可行解的关系才能使得算法更高效.首先介绍了约束优化问题的定义;然后,系统地分析了目前存在的约束优化方法;同时,基于约束处理机制,将这些方法分为罚函数法、可行性法则、随机排序法、ε-约束处理法、多目标优化法、混合法等6类,并从约束处理方法的角度对约束优化进化算法的最新研究进展进行综述;最后,指出约束优化进化算法需进一步研究的方向与关键问题.
2017, 28(6):1547-1564. DOI: 10.13328/j.cnki.jos.005260 CSTR:
摘要:近年来,随着压缩感知技术在信号处理领域的巨大成功,由其衍生而来的矩阵补全技术也日益成为机器学习领域的研究热点,诸多研究者针对矩阵补全问题展开了大量卓有成效的研究.为了更好地把握矩阵补全技术的发展规律,促进矩阵补全理论与工程应用相结合,针对矩阵补全模型及其算法进行了综述.首先,对矩阵补全技术进行溯源,介绍了从压缩感知到矩阵补全的自然演化历程,指出压缩感知理论的发展为矩阵补全理论的形成奠定了基础;其次,从非凸非光滑秩函数松弛的角度将现有矩阵补全模型进行分类,旨在为面向具体应用的矩阵补全问题建模提供思路;然后综述了适用于矩阵补全模型求解的代表性优化算法,其目的在于从本质上理解各种矩阵补全模型优化技巧,从而有利于面向应用问题的矩阵补全新模型求解;最后分析了矩阵补全模型及其算法目前存在的问题,提出了可能的解决思路,并对未来的研究方向进行了展望.
2017, 28(6):1565-1583. DOI: 10.13328/j.cnki.jos.005249 CSTR:
摘要:现阶段大多数社会网络的研究都集中于单一的社会网络内部.社会网络融合为社会计算等各项研究提供更充分的用户行为数据和更完整的网络结构,从而更有利于人们通过社会网络理解和挖掘人类社会,具有重要的理论价值和实践意义.准确、全面、快速地关联用户挖掘,是大型社会网络融合的根本问题.社会网络中的关联用户挖掘旨在通过挖掘不同社会网络中同属于同一自然人的不同账号,从而实现社会网络的深度融合,近年来已引起人们的广泛关注.然而,社会网络的自身数据量大、用户属性相似、稀疏且存在虚假和不一致等特点,给关联用户挖掘带来了极大的挑战.分析了面向社会网络融合的关联用户挖掘所存在的困难,从用户属性、用户关系及其综合这3个方面梳理了当前关联用户挖掘的研究现状.最后,总结并展望了关联用户挖掘的研究方向.
2017, 28(6):1584-1605. DOI: 10.13328/j.cnki.jos.005256 CSTR:
摘要:与传统的以网页页面集合的方式呈现搜索结果不同,实体搜索的结果是实体或实体集合,其优点是无需用户在纷杂的网页里面进行二次查找,更能提升用户的搜索体验.实体搜索的任务可以分为相关实体搜索和相似实体搜索.对近年来这两类任务的实体搜索技术进行综述.首先给出了实体搜索的形式化定义,并介绍了常用的评测指标;然后,对两种不同形式的实体搜索任务在两类数据源(非结构化数据集和结构化数据集)上的主要研究方法进行了详细的阐述和对比;最后,对未来的研究内容和发展方向进行了探讨和展望.
2017, 28(6):1606-1628. DOI: 10.13328/j.cnki.jos.005254 CSTR:
摘要:随着基于定位服务(loaction-based service,简称LBS)在移动设备上的广泛应用,移动对象在路网中的查询成为时空数据检索领域的一个研究热点.从索引结构、查询方法和隐私保护这3个层面对基于路网的移动对象查询技术进行了分类讨论.索引结构分为分层索引、分布式索引和广播索引,并对3种索引进行对比和分析;查询方法分为单对象连续查询、多对象并行查询、最短路径查询和路网关键字查询,并归纳了每种查询的解决策略;此外,阐述了路网移动对象查询中采用的隐私安全保护措施;最后,分析了未来路网移动对象查询研究所面临的挑战.