The automatic generation of source code is one of the long-lasting dreams in software engineering research. Several techniques have been proposed to speed up the writing of new code. For example, code completion techniques can recommend to developers the next few tokens they are likely to type, while retrieval-based approaches can suggest code snippets relevant for the task at hand. Also, deep learning has been used to automatically generate code statements starting from a natural language description. While research in this field is very active, there is no study investigating what the users of code recommender systems (i.e., software practitioners) actually need from these tools. We present a study involving 80 software developers to investigate the characteristics of code recommender systems they consider important. The output of our study is a taxonomy of 70 "requirements" that should be considered when designing code recommender systems. For example, developers would like the recommended code to use the same coding style of the code under development. Also, code recommenders being "aware" of the developers' knowledge (e.g., what are the framework/libraries they already used in the past) and able to customize the recommendations based on this knowledge would be appreciated by practitioners. The taxonomy output of our study points to a wide set of future research directions for code recommenders.
翻译:源代码的自动生成是软件工程研究中的长期梦想之一。 已经提议了几种技术来加快新代码的写法。 例如, 代码完成技术可以向开发者推荐他们可能输入的下几个符号, 而基于检索的方法可以建议与手头任务相关的代码片断。 此外, 已经使用了深层次的学习来自动生成从自然语言描述开始的代码声明。 虽然该领域的研究非常活跃, 但没有研究代码建议系统( 即软件从业人员) 的用户从这些工具中实际需要什么。 我们提出了一项由80名软件开发者参与的研究, 以调查他们认为重要的代码建议系统的特点。 我们研究的结果是70个“ 要求” 的分类, 在设计代码建议系统时应该加以考虑。 例如, 开发者会喜欢推荐的代码使用开发中代码的相同的编码样式。 另外, 代码建议者正在“ 了解” 开发者的知识知识的“ 的“ ” ( 例如, 他们在过去使用的框架/ / ) 以及他们已经使用的框架/ 校正, 能够将我们基于这一知识的 的 数据分析方向 定制的 数据分析系统的建议 。