Page 158 - 《软件学报》2021年第5期
P. 158
1382 Journal of Software 软件学报 Vol.32, No.5, May 2021
成过程的质量追溯和评价体系,保证合成过程和合成代码的正确性、可靠性及安全性.
5 结束语
机器学习等人工智能技术的发展,促进了软件工程学科的进步.同时,随着各行各业的发展,专业领域已经
积累了大量的软件资产,这些软件资产中存在着大量高质量可复用的软件代码.这些软件代码资产日渐庞大,促
使人们探索软件开发的新方法,即,如何利用大规模软件代码资产库中已有的可复用的代码实现软件开发方法
的变革.基于软件资产和人工智能技术支持软件自动生成技术,已经得到了国内外学术界和工业界越来越多的
关注.
本文通过对软件开发模式的发展进行分析,介绍了软件开发方法发展的 4 个阶段,对近年来国内外程序智
能合成技术的研究方法开展了调研和综述,梳理并总结了这些方法的原理和技术特点.在此基础上,总结了程序
智能合成研究中面临的主要挑战和未来发展趋势.程序智能合成是软件自动生成的新途径,随着人工智能技术
的蓬勃发展,相信在未来几年,程序合成领域将会产生突破性进展,从而实现软件开发方法的变革.
References:
[1] Bordes A, Glorot X, Weston J, Bengio Y. Joint learning of words and meaning representations for open-text semantic parsing. In:
Proc. of the Int’l Conf. on Artificial Intelligence and Statistics. 2012. 127−135.
[2] Gulwani S, Polozov O, Singh R. Program synthesis. Foundations and Trends® in Programming Languages, 2017,4(1-2):1−119.
[3] Yang FQ. Thinking on the development of software engineering technology. Ruan Jian Xue Bao/Journal of Software, 2005,16(1):
1−7 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/16/1.htm
[4] DeMarco T. Structured Analysis and System Specification. New York: Yourdon Inc., 1979.
[5] Yang FQ, Mei H, Lü J, Jin Z. Some discussion on the development of software technology. Acta Electronica Sinica, 2002,30(12A):
1901−1906 (in Chinese with English abstract).
[6] Bai GY, Xu C, Fan ZH, Jiang DM. Software engineering technology, method and environment. Ruan Jian Xue Bao/Journal of
Software, 1995,6:292−300 (in Chinese with English abstract). http://www.jos.org.cn/jos/ch/reader/create_pdf.aspx?file_no=1995s
141&year_id=1995&quarter_id=zk&falg=1
[7] Liu BB, Dong W, Wang J. Survey on intelligent search and construction methods of program. Ruan Jian Xue Bao/Journal of
Software, 2018,29(8):2180−2197 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5529.htm [doi: 10.13328/j.
cnki.jos.005529]
[8] Hindle A, Barr ET, Su Z, Gabel M, Devanbu P. On the naturalness of software. In: Proc. of the 34th Int’l Conf. on Software
Engineering. IEEE, 2012. 837−847. [doi: 10.1109/icse.2012.6227135]
[9] Church A. Logic, arithmetic and automata. In: Proc. of the Int’1 Congess of Mathematicians. 1962. 23−35.
[10] Gulwani S. Programming by examples. Dependable Software Systems Engineering, 2016,45(137):3−15.
[11] Singh R, Gulwani S. Synthesizing number transformations from input-output examples. In: Proc. of the 24th Int’l Conf. on
Computer Aided Verification (CAV). 2012. 634−651.
[12] Singh R, Gulwani S. Transforming spreadsheet data types using examples. In: Proc. of the 43rd Annual ACM SIGPLAN-SIGACT
Symp. on Principles of Programming Languages (POPL). ACM, 2016. 343−356.
[13] Perelman D, Gulwani S, Ball T, Grossman D. Type-directed completion of partial expressions. In: Proc. of the 33rd ACM
SIGPLAN Conf. on Programming Language Design and Implementation (PLDI). ACM, 2012. 275−286.
[14] Bornholt J, Torlak E. Synthesizing memory models from framework sketches and litmus tests. Proc. of the ACM SIGPLAN Notices,
2017,52(6):467−481.
[15] Gvero T, Kuncak V, Kuraj I, Piskac R. Complete completion using types and weights. In: Proc. of the 34th ACM SIGPLAN Conf.
on Programming Language Design and Implementation. ACM, 2013. 27−38.
[16] Zhang H, Jain A, Khandelwal G, et al. Bing developer assistant: Improving developer productivity by recommending sample code.
In: Proc. of the 2016 24th ACM SIGSOFT Int’l Symp. on Foundations of Software Engineering. ACM, 2016. 956−961.
[17] Nori AV, Ozair S, Rajamani SK, et al. Efficient synthesis of probabilistic programs. Proc. of the ACM SIGPLAN Notices, 2015,
50(6):208−217.