Skip to main content
QUICK REVIEW

[论文解读] DeepSoft: A vision for a deep model of software

Hoa Khanh Dam, Truyen Tran|arXiv (Cornell University)|Jul 30, 2016
Software Engineering Research参考文献 15被引用 4
一句话总结

DeepSoft 提出了一种基于长短期记忆(LSTM)网络的端到端深度学习框架,用于建模软件演化过程,无需人工特征工程。它捕捉了在问题修复、代码变更和开发者活动中的长期时间依赖关系,以预测风险、推荐代码补丁并支持发布规划,为软件分析提供了一种通用且可扩展的方法。

ABSTRACT

Although software analytics has experienced rapid growth as a research area, it has not yet reached its full potential for wide industrial adoption. Most of the existing work in software analytics still relies heavily on costly manual feature engineering processes, and they mainly address the traditional classification problems, as opposed to predicting future events. We present a vision for \emph{DeepSoft}, an \emph{end-to-end} generic framework for modeling software and its development process to predict future risks and recommend interventions. DeepSoft, partly inspired by human memory, is built upon the powerful deep learning-based Long Short Term Memory architecture that is capable of learning long-term temporal dependencies that occur in software evolution. Such deep learned patterns of software can be used to address a range of challenging problems such as code and task recommendation and prediction. DeepSoft provides a new approach for research into modeling of source code, risk prediction and mitigation, developer modeling, and automatically generating code patches from bug reports.

研究动机与目标

  • 解决软件分析中人工特征工程的局限性,后者耗时、项目特定且往往不具备通用性。
  • 实现从原始软件工程数据(如问题描述、代码补丁和开发者历史记录)中进行端到端学习,而无需依赖手工设计的度量指标。
  • 对软件演化中的长期时间依赖关系进行建模,以支持对未来风险和事件(如发布延迟或引入缺陷)的预测。
  • 为多种软件工程任务(包括缺陷预测、代码推荐和发布规划)提供统一框架。
  • 引入软件工件和开发者行为的深度表示,以支持高级推理任务,如相似性搜索和类比学习。

提出的方法

  • 利用长短期记忆(LSTM)网络对软件开发事件序列进行建模,捕捉跨问题、代码变更和发布之间的长期依赖关系。
  • 使用基于深度学习的自然语言处理技术(如 word2vec、paragraph2vec 或 CNN)对问题描述进行表示,以从自然语言生成密集向量嵌入。
  • 通过序列或结构化表示对代码补丁进行建模——将代码视为字符序列、标记序列或抽象语法树(AST)——并应用LSTM或图卷积网络进行嵌入。
  • 使用非规则时间LSTM对开发者活动序列进行建模,其中问题修复之间的时间间隔不一致,从而实现对开发者参与度和生产力的建模。
  • 利用学习到的嵌入在问题、发布和项目层级上构建分层表示,以支持多粒度预测。
  • 通过训练序列到序列模型实现代码生成,其中上下文向量(来自问题描述)生成相应的代码补丁,受神经机器翻译的启发。

实验结果

研究问题

  • RQ1深度学习模型能否直接从原始数据中学习到软件工件(如问题描述、代码补丁)的有意义表示,而无需人工特征工程?
  • RQ2基于LSTM的模型在多大程度上能够捕捉软件演化中的长期依赖关系,以预测未来风险(如发布延迟或引入缺陷)?
  • RQ3学习到的嵌入能否支持高级任务,如代码补丁推荐、重复缺陷检测和API推荐?
  • RQ4该模型在预测软件质量演化和工作量估算方面,在问题、发布和项目层级上的有效性如何?
  • RQ5开发者行为能否通过非规则时间序列有效建模,以支持团队能力估算和智能问题分派推荐?

主要发现

  • DeepSoft 实现了从原始软件工程数据中进行端到端学习,消除了对昂贵且项目特定的人工特征工程的需求。
  • 基于LSTM的架构有效建模了软件演化中的长期时间依赖关系,支持对发布延迟或缺陷引入等未来风险的预测。
  • 问题和代码补丁的向量表示支持高级推理任务,包括相似性搜索、类比推理和代码标记预测。
  • 通过将问题描述作为输入并生成相应的代码序列,该框架支持自动代码补丁生成,受神经机器翻译的启发。
  • 通过非规则时间LSTM对开发者建模,可实现对生产力、团队能力以及基于历史问题参与度的智能问题分派推荐的预测。
  • DeepSoft 通过学习软件系统的深度上下文表示,为广泛的软件工程任务(从缺陷预测到下一版本规划)提供了一个通用且可扩展的基础。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。