设为首页 | 收藏本站
咨询热线: 13102222885

软件开发趋于智能化


以开源软件为代表的互联网软件开发具有边界开放、群体分散、交付频繁、知识复杂等特征。与此同时,企业软件开发也逐渐转向以开发运维一体化(DevOps)为特征的云化开发平台。这些网络化开发方式产生了包含源代码、缺陷报告、版本历史、测试用例等在内的全生命周期数据。例如,开源软件社区GitHub已经集聚了超过2.7亿个软件项目,软件开发问答网站Stack Overflow已经积累了超过1700万个与软件开发相关的问题。这些数据中蕴含的规律可以通过统计和机器学习等技术进行吸收和泛化,用于构造各种智能化的软件工程工具。

智能化软件开发一直是软件工程追求的核心目标之一。学术界著名的以软件开发智能化为核心主题的自动化软件工程(ASE)会议始于20世纪80年代。近年来,在软件工程领域顶级会议ICSE、FSE等中出现了越来越多基于数据、知识驱动的开发智能化技术研究。例如,于2001年发起的软件仓库挖掘会议(MSR)已经得到了广泛关注,并开启了一个重要的软件工程研究子领域。2010年,Robillard M P等人综述了软件工程中的智能推荐系统,指出这些系统在大范围的软件开发活动(如代码复用、软件维护等)中显著地提升了软件开发者的工作效率与质量。

软件开发中的知识获取与应用一直是产业界关注的焦点之一。软件开发问答网站Stack Overflow利用专家回答的群智机制,提供了大量软件开发问题的答案。Eclipse和Visual Studio等集成开发环境(integrated development environment,IDE)都提供了代码自动补全功能。此后流行的IntelliJ IDEA则将智能编码支持作为特色,提供了智能化代码规范检查、自动生成Java规范的基础方法框架、自动补充方法或类代码框架等智能推荐支持。近年来,Eclipse和Visual Studio都在云开发平台方面取得了突破,在云端可以汇集大量开发数据,为更高层次的基于大数据的开发智能化提供了基础平台。

国内主要软件工程研究团队在此方面也开展了大量的研究工作。北京大学2012年提出了知识驱动的软件复用方法;南京大学在基于数据的软件分析、测试方面进行了算法、工具和实践研究;中国科学院软件研究所基于云平台和数据分析技术,在软件运行时测试和演化方面开展研究;北京航空航天大学在开源软件数据的基础上研究了开发人员推荐问题;国防科技大学在开源数据收集和知识获取方面进行了大量的工作,维护并运行了Trustie社区和网络群体化软件开发环境。国内的浪潮通用软件有限公司、金蝶软件(中国)有限公司等也在获取开发人员操作、数据等方面研发了相应的工具环境;CSDN和OSCHINA等在软件开发技术论坛、代码托管和软件资源汇聚方面建立了大规模的社区。

当前,软件智能化开发成为热点的关键原因在于新时代带来的技术发展的新环境:开源及企业软件开发产生了大数据源,机器学习和信息检索技术的发展提供了知识获取的核心支撑,企业领域工程的广泛实践积累了大量的领域资源。然而,作为智能化软件开发基础的软件开发数据具有规模巨大、碎片分散、快速膨胀的特点。在此基础上实现智能化软件开发支持仍然需要解决一系列基础性的数据采集分析以及知识抽取利用等方面的问题,并以智能推荐、问答等方式提升软件开发工具的智能程度,提高软件开发的质量和效率。在此基础上,智能化的软件工具可以基于数据和知识向开发人员提供推荐、检索和问答等方面的智能化支持。

围绕相关方面,学术界和工业界已经开展了大量的技术研究和实践探索。然而,从总体方法论和技术体系来看,目前的研究和实践探索仍然局限于特定的技术关注点,使用的数据都是针对特定问题本身进行采集的,缺少大数据环境支撑的跨领域智能化技术研究,也没有形成完善的技术体系和环境。为此,围绕软件工程大数据的汇聚组织、知识表示提炼、软件工具智能化和智能开发服务环境等关键技术开展研究工作,建立基于大数据的软件智能化开发技术体系,研发关键性的软件智能化开发工具,形成“人-工具-数据”融合的新一代软件智能化开发技术体系和环境,并构建软件智能化开发云平台成为了我们需要关注的目标。



咨询服务
 
 
website qrcode

欢迎扫码关注我们