牛菲菲(1996-), 女, 博士生, 主要研究领域为软件工程, 业务过程管理, 自然语言处理
李传艺(1991-), 男, 博士, 助理研究员, CCF 专业会员, 主要研究领域为软件工程, 业务过程管理, 自然语言处理
葛季栋(1978-), 男, 博士, 副教授, CCF高级会员, 主要研究领域为软件工程, 分布式计算与边缘计算, 业务过程管理, 自然语言处理
骆斌(1967-), 男, 博士, 教授, 博士生导师, CCF杰出会员, 主要研究领域为软件工程, 人工智能
特征请求是软件产品的真实用户在开放平台上提出的对现有特征的改进或者对新特征的请求. 特征请求在一定程度上反映了用户的真实意愿, 代表了用户的需求. 高效、准确地分析和处理用户特征请求对于提升用户满意度、提高产品竞争力起着至关重要的作用. 用户的广泛参与, 使得特征请求成为越来越重要的需求来源. 然而, 特征请求在其来源、内容以及形式等方面均与传统的软件需求不同. 进而将其充分应用于软件开发过程所采用的具体方法, 也有别于传统的需求工程. 目前已经有许多将特征请求应用于软件开发过程中的相关研究, 比如特征请求的获取、分类、排序、质量评估、为特征请求推荐开发者, 以及定位相关代码等. 随着相关工作的不断增加, 形成一个针对特征请求分析与处理研究综述的必要性日益增强. 因此, 调研121篇关于在软件开发过程中分析和处理特征请求的国内外学术研究论文, 从将特征请求应用于软件开发过程的角度对现有成果进行系统地梳理. 总结现有针对特征请求的研究主题, 提出将特征请求应用于软件开发过程的处理流程, 并与传统的需求工程过程进行对比. 此外, 深入分析在各个需求工程活动中使用的具体方法及方法之间的差别. 最后, 对特征请求的未来研究方向进行展望, 以期为同行研究人员提供参考.
Feature requests refer to suggestions to perfect existing features or requests for new features proposed by software users on open platforms, and they can reflect users’ wishes and needs. In addition, efficient and accurate analysis and processing of feature requests play a vital role in improving user satisfaction and product competitiveness. With users’ active participation, feature requests have become an important source of software requirements. However, feature requests are different from traditional requirements in terms of source, content, and form. Therefore, methods of applying feature requests to software development must differ from that of traditional requirements. At present, massive research focuses on applying feature requests to software development, e.g., feature requests’ acquisition, classification, prioritization, quality management, developer recommendation, and location of relevant codes. As related research emerges constantly, it is increasingly necessary to review user feature request analysis and processing. This study analyzes 121 global academic research papers on how to analyze and process feature requests in the software development process and systematically sorts existing research results from the perspective of applying feature requests to software development. In addition, the study summarizes research topics on feature requests, suggests that feature requests be applied to software development, and makes a comparison with traditional requirements engineering processes. Furthermore, it analyzes existing research methods of different requirement engineering and points out the difference. Finally, the research direction of feature requests is discussed to provide guidance for future researchers.
在开源软件仓库的公开论坛上, 用户可能以用户评论(user review)或问题报告(issue report)的形式, 针对软件提出缺陷报告(bug report)、特征请求(feature request)等. 其中特征请求一般是请求新的特征或者对现有特征的改进. 近年来互联网迅速发展, 不仅各种类型软件的数量不断激增, 同时, 在应用商店或者开放平台(如问题跟踪系统)上, 也不断有用户针对已有软件提出新的请求. 例如, Apple AppStore和Google Play自推出起, 两个应用商店平台已经积累了超过100万个可供下载和评论的应用程序[
目前, 已有学者发表了一些与特征请求相关研究综述. 例如, Cavalcanti等人[
传统的需求工程过程如
Traditional Requirements Engineering Process
传统需求工程过程
Topics of Feature Requests Researches
特征请求研究主题
本文第1节详细介绍文献检索与选择的过程. 第2节对特征请求相关的概念进行分析、总结. 第3–5节分别介绍在传统需求工程活动框架下, 特征请求相应的研究进展. 具体而言, 各节分别从需求获取、需求分析及需求管理的角度对现有针对特征请求的研究进行梳理与总结. 第6节汇总现有研究中关于特征请求的公开的工具以及数据集, 以共享研究资源. 第7节总结已有研究, 并探究特征请求的研究挑战与机遇. 最后总结全文, 并展望未来研究方向.
为了对已有关于特征请求的研究进行系统的分析, 本研究采用自动检索和滚雪球[
步骤1. 以“Feature Request”和“特征请求”为关键词, 在与软件工程社区最相关的、广泛使用的文献检索库中检索相关论文: IEEE Xplore、ACM Digital Library、Science Direct、Springer Link、Wiley InterScience、Elsevier、Google Scholar以及中国知网. 资源库的链接如
List of Digital Libraries
文献资源库列表
资源库名称 | 链接 |
IEEE Xplore |
|
ACM Digital Library |
|
Science Direct |
|
Springer Link |
|
Wiley InterScience |
|
Elsevier |
|
Google Scholar |
|
中国知网 |
|
步骤2. 根据
Criteria for Filtering Literature
文献过滤标准
过滤类型 | 过滤标准 |
不包含 | 文献语言为中文和英文之外的其他语言 |
主要研究对象为缺陷报告 | |
博士生或者硕士生毕业论文 | |
不是完整的研究, 研究方法、研究结果、结论等必备因素缺失 | |
网上无法下载完整的文章内容 | |
包含 | 文章标题或者内容包含“特征请求”“feature request”关键词 |
文章已发表, 发表在国内外的会议或者期刊上 | |
文章的主要研究对象是特征请求或者包含特征请求的概念, 如用户反馈等 | |
文章的主要研究目标是面向软件工程的特征请求研究 |
步骤3. 采用滚雪球的方法, 分别向前检索初始文献的引用文献, 向后检索引用初始文献的文献, 根据
步骤4. 针对步骤3中获取的文献, 重复步骤3, 直到文献集合收敛, 不再有新的论文加入.
经过上述4个步骤, 最终的研究论文集合包括121篇文章(截至2021年5月), 其中包括15篇工具类论文.
论文在不同年份的文献数量分布
论文收录会议、期刊等级分布情况
论文收录高频会议和期刊
研究主题分布
为系统地了解特征请求及其相关概念, 通过总结相关研究论文, 汇总了与特征请求相关的术语, 不同术语之间的关系如
Related Concepts of Feature Requests
特征请求相关概念
Herzig等人[
传统的需求获取方法包括面谈、原型和文档审查等. 不同于传统的需求获取活动, 特征请求主要来源于终端用户等. 本节主要总结现有研究中所提出的特征请求的来源、获取方法, 以及不同平台获取的特征请求的形式、特点等.
软件需求是指: 1)为解决用户某一问题或达到某一目标所需的软件功能; 2)系统或系统构建为了满足合同、规约、标准或其他正式实行的文档而必须满足或具备的软件功能. 在软件维护过程中, 软件需求文档和计划中蕴含的信息通常是过时的. 而用户反馈等记录了已经实现或部署, 以及有待实现的功能[
特征请求的来源有很多, 常见的来源包括问题跟踪系统(例如Bugzilla), 开源软件仓库(例如GitHub), 应用商店(例如Apple AppStore, Google Play), 在线社区(例如Stack Overflow)等. 问题跟踪系统是专门用于收集软件问题的平台, 用户以缺陷报告、特征请求、增强报告等的形式对软件问题进行反馈. 开源软件仓库是开源软件开发者进行开发管理的集中式场所, 用户可以提交问题报告或者工单. 其内容可能包括缺陷报告、特征请求、询问等. 应用商店提供不同的应用并允许用户进行评论, 用户的评论内容可能涉及对已有功能的用户体验或者对新功能的请求.
Quantity Distribution of Feature Requests Sources
特征请求来源统计
如何从各种形式的数据中提取对软件新特征请求的描述, 称为特征请求获取. 常见的从用户反馈中获取特征请求的方法有基于无监督学习方法、基于监督学习方法、基于半监督学习方法以及组合方法. 现有研究中采用的获取方法如
Common Feature Requests Extraction Techniques
常用的特征请求获取技术
学习方式 | 文献 | |
无监督学习 | 规则匹配 | [ |
监督学习 | 文本分类 | [ |
句子分类 | [ |
|
相似度 | [ |
|
半监督学习 | - | [ |
组合 | - | [ |
早期的从用户反馈中获取特征请求的方法主要依赖基于无监督学习的规则匹配方法. 常见的方法是人工基于规则提取, 符合规则的描述会被抽取出来. Iacob等人设计并实现了基于规则从用户评论中挖掘特征请求的原型工具. 定义了237条语义规则, 然后通过自动化的规则匹配算法提取出用户评论中的特征请求[
最常见的获取特征请求的方法是基于监督学习的分类的方法. 根据分类对象的不同, 用户反馈分类可以分为两类: 句子级别和文本级别的分类,
文本分类常见的流程如
Common Processes of Text Classification
常见文本分类流程
根据分类方法采用的模型的不同, 用户反馈分类可以分为基于传统机器学习的分类和基于深度学习的分类. 早期主要是基于传统机器学习分类算法的方法, 比如朴素贝叶斯(naïve Bayes, NB)、多层朴素贝叶斯(multilayer naïve Bayes, MNB)、支持向量机(support vector machines, SVM)、逻辑回归(logistic regression, LR)、决策树(decision tree, DT)、随机森林(random forest, RF)、最大熵模型(MaxEnt)等. 其采用的向量化方法一般基于BOW的TF-IDF、TF、以及
Common Text Classification Algorithms
常见文本分类算法
除了特征请求的文本描述, 许多研究提出使用基于自然语言处理提取的其他的辅助特征. 比如关键词、情感分析、时态、语义规则、词性标注等特征. 基于关键词的辅助特征被证实效果显著. 例如, 缺陷报告与特征请求有着不同的关键词汇, 因此基于关键词的辅助特征可以帮助识别出特征请求[
基于监督学习的方法需要有大量的人工标记数据, 尤其是深度学习算法, 模型往往依赖大量的标记数据学习不同类别的特征, 才能取得较高的分类准确度. 然而实际中, 大量的标记数据需要大量的人工成本. 为了减少人工标记数据成本, 并且取得同等的分类效果, 半监督学习算法被应用于特征请求提取.
基于半监督学习的特征请求抽取的方法主要包括自训练(self-training)[
Rahimi等人[
Zhang等人[
Shi等人[
Panichella等人[
Gribkov等人[
Shi等人[
Hoon等人[
特征请求来源多种多样, 这就导致其有以下的特征: (1)数量大: 特征请求可以由不同的用户随时随地地提出, 短时间内会产生大量的用户请求. (2)非结构化: 由于特征请求是不同的用户提出的, 用户对于软件缺乏整体的把握, 因此产生重复的特征请求概率很大. 此外, 不同的特征请求之间, 可能存在结构上的依赖或者互斥关系. 因此, 特征请求是无结构化的. (3)来源多样化: 特征请求的来源可能是企业人员、用户以及开发者等. Noll等人[
需求分析是软件计划阶段的重要活动, 也是软件生存周期中的一个重要环节. 需求分析一般是需求工程师经过调研和分析, 准确理解用户对项目的功能、性能、可靠性等具体要求, 经过分析与整理将用户非形式化的需求表述转化为描述完整、清晰与规范的文档, 从而确定软件需要实现哪些功能、完成哪些工作的过程. 分析的活动主要包括识别、定义和结构化[
根据Kang等人的定义, 软件特征是软件系统一个突出的用户可见的层面、质量或特性[
现有研究中, 除了人工标注方法, 一般采用自然语言处理技术抽取软件特征. 首先对文本进行预处理, 过滤掉无关内容. 然后词法分析, 确定单词的词性. 基于预先定义的过滤规则, 提取出匹配规则的内容, 作为软件特征. 通用的特征抽取流程如
Common Feature Extraction Process
常见软件特征抽取流程
Summary of Software Feature Extraction Researches
软件特征抽取研究总结
文献 | 特征来源 | 过滤规则 | 应用 | 年份 |
[ |
软件专家评论 | <形容词, 名词> 或<名词, 形容词>, <动词, 形容词> 或<形容词, 动词> 以及<动词, 名词, 形容词> | 需求复用 | 2016 |
[ |
用户评论 | 名词、动词、形容词 | 用户对软件满意度分析 | 2017 |
[ |
应用描述和用户评论 | POS模式和句式 | 软件维护 | 2017 |
[ |
应用评论 | 名词 | 优先级排序 | 2017 |
[ |
用户评论 | <名词, 名词>, <名词, 形容词>, <名词, 动词>, <形容词, 名词>, <形容词, 动词>, <动词, 名词> | 竞品分析 | 2019 |
Shah等人[
在自动化抽取软件特征研究方面, Bakar等人[
Bakiu等人[
Johann等人[
Licorish等人[
Dalpiaz等人[
整体来看, 目前最常见的软件特征抽取的方法是基于词性标注, 提取名词、动词和形容词及它们之间不同的搭配. 因为名词、动词和形容词是常见的描述特征的词性[
需求分析的目的是挖掘出信息的本质含义, 准确理解用户的意图, 在对需求信息内容的理解上与用户达成一致. 而特征请求由于其来源以及提取过程的特殊性, 往往是非结构化的、口语化的表达, 这对需求分析人员准确分析并理解特征请求带来了障碍. 现有研究中, 分析特征请求的研究可以分为3类: 用户意图识别、特征请求分类、摘要生成. 各研究主题的具体内容如下所示.
特征请求的来源是终端用户, 用户在向开发人员提出请求的时候, 为了使自己的请求更容易被理解和接受, 往往会解释请求的背景、原因, 以及实现请求可能的解决策略等信息. 用户意图识别即挖掘出用户特征请求中描述用户意图的内容, 用户意图识别有助需求分析人员更好地理解用户的意图.
Shi等人[
需求分类是需求分析的重要活动之一. 不同于需求获取阶段采取的分类算法, 需求分类是指按照既定的分类维度, 根据需求所描述的软件产品不同层面的属性, 将众多软件需求分门别类. 用户提出的特征请求涉及软件功能及性能的方方面面, 如安全性、可靠性等. 将描述不同方面的特征请求分门别类既有助于需求分析师分析, 又有助于结构化存储和管理用户特征请求. 本小节从分类方法、分类特征以及分类类别3个角度总结现有的特征请求分类的相关研究.
Classification Categories in Existing Research
现有研究中分类类别
文献 | 类别 | 方法 | 年份 |
[ |
根据软件特征聚类 | Spherical K-means聚类 | 2009 |
[ |
无监督聚类 | DBSCAN聚类 | 2016 |
[ |
缺陷报告, 功能请求, 性能请求, 安全请求, 能耗请求, 可用性请求, 其他 | 基于RF的机器学习分类 | 2017 |
[ |
安全性, 可靠性, 性能, 生命周期, 可用性, 易用性, 系统界面 | 基于KNN, NB以及SVM的机器学习分类 | 2018 |
[ |
可用性, 可靠性, 可移植性, 性能 | 基于NB, Bagging, DT和KNN的机器学习分类 | 2018 |
[ |
系统, 资金, 垃圾邮件, 隐私, 其他 | 基于关键词的词语共现矩阵 | 2020 |
为了将特征请求进行分类, 除了将特征请求文本向量化之外, 一些研究还利用其他的特征进行辅助分类器分类. 常用的辅助特征包括: 项目关键词以及启发式属性[
从分类类别来看, 不同于第2.2节中的机器学习分类, 特征请求分类是根据特征请求描述需求的不同层面, 如安全性、可用性、易用性等, 将特征请求进行分门别类. 常见的需求工程将需求分为功能性和非功能性需求. 功能性需求针对软件的功能方面提出需求. 非功能性需求是指软件产品为满足用户业务而必须具有且除功能需求以外的特性. ISO 25010将软件产品质量分为功能性以及非功能性, 进一步地非功能性包括: 功能适用性、性能效率、兼容性、可用性、可靠性、安全性、可维护性和可移植性[
区别于用户故事明确的叙述模板, 特征请求一般是口语化的表达, 不便于理解. 为了规范化特征请求的语言描述, 有研究提出采用摘要生成的方法, 提取特征请求的主题, 并规范化表达.
Jha等人[
Williams等人[
在实践中, 项目资源有限, 不能保证满足所有的用户需求, 因此项目通常采用分阶段的开发方式. 在项目开始阶段, 权衡成本和收益, 在既定成本下实现利益最大化. 因此, 要确定用户需求的优先级, 优先迭代高优先级的需求, 保证项目最终最大程度满足了用户的需求.
优先级排序任务通常是依据某种排序标准(如重要性、成本等)对需求或特征进行排序, 以确定下一版本中要包含的需求或特征. 传统需求常用的确定优先级的方法有层次分析法(analytical hierarchy process, AHP) [
Traditional Requirements Engineering Priority Algorithms
传统需求工程优先级排序方法
排序方法 | 描述 | 大量特征请求适用性 |
AHP | AHP采用人为判断需求两两之间的相对优先级高低, 假设待排序的需求为 |
不适用 |
KANO | KANO主要通过问卷调查的方式, 分别调研需求被满足和不被满足时, 用户的满意度和不满意度. 并将功能、服务的态度属性分为6类, 分别是魅力属性A, 期望属性O, 必备属性M, 无差异属性I, 反向属性R和可疑结果Q | - |
BST | 二进制搜索树(BST)方法将重要的需求插入到搜索树的右边, 不重要的需求插入到搜索树的左边. 通过对构建的树进行深度优先遍历, 便可以生成优先的需求列表. 二进制搜索树方法适用于较大需求集的优先级排序 | 适用 |
CV | 累计投票制(CV)方法给被调查者一定数量的假想单元(比如金钱和时间)来分配到需求之间, 需求越重要, 其得到的单元应该越多. 被调查者可以根据个人偏好以任何方式分配 | 不适用 |
PG | 规划策略(PG)以故事卡的形式, 用户根据需求重要性将其分为3个组. 程序员按风险和成本分类. 假设待排序的需求为 |
适用 |
MoSCoW | MoSCoW方法将待开发的需求分为MUST, COULD, SHOULD, WON’T 或者WOULD, 这些不同的等级代表了需求在下一版本中被开发的重要性 | 适用 |
CBRank | CBRank方法通过收集用户的偏好信息等, 演化出需求优先级整合规则, 从而可以计算获得所有需求的优先级结果 | - |
Priority Group | 优先级组方法是将待排序的需求按优先级高低进行分组. 最常见的分组是分为高、中、低3个优先级. 高优先级是下一版本中需要实现的关键需求; 中优先级是可以稍后实现的系统必要的需求; 低优先级是增强功能或特征, 实现了会更好 | 适用 |
传统的需求与特征请求之间存在很大的不同, 尤其是数据量方面, 因此特征请求排序方法与已有方法上存在不同. 以下部分调研了目前针对特征请求排序方法研究.
Laurent等人[
Chen等人[
Keertipati等人[
Villarroel等人[
Morales-Ramirez等人[
Scalabrino等人[
Licorish等人[
Etaiwi等人[
刘名成等人[
传统需求工程优先级排序算法从分组的角度可以分为两类: 分组方法和非分组方法. 分组方法最终产生的优先级结果是按照优先等级划分的组(如KANO、MoSCoW、优先级组)[
总结已有特征请求的优先级排序方法, 可以发现有以下特征: (1)特征请求的数量规模不定, 因此自动化优先级排序非常重要, 并已经成为发展趋势. 自动化排序可以节省大量的人力物力. (2)为了实现特征请求的自动化排序, 通用方法是提取特征请求的属性. 常用的用于排序的文本属性包括: 软件特征出现的频率、用户评分、情感分类、情态动词的数量等. 为了提升排序的效率, 一些研究会将类似的特征请求聚类, 根据聚类结果进行组间排序和组内排序. 组间排序采用的属性一般包括: 组内评论的数量、组内用户评分的平均值、评论的时间跨度等. (3)用户请求数量与开发响应数量之间有显著的强相关性. Licorish等人[
相较于传统的需求, 特征请求数量规模较大, 一些传统的需求优先级算法不再适用. 比如KANO主要依赖人工回答问卷调研. 当特征请求数量较大时, 该方法可以获得较为准确的结果, 但是人力消耗很大. 采用一些指示性指标, 比如用户请求的数量, 以及用户对软件特征的评分等判断优先级, 这样的策略可以帮助开发人员筛选出用户呼声高的请求. 但是这样的方法也存在一定的缺陷: (1)可能会忽略对于系统关键但是用户关注度不高的特征; (2)一些早期提出的请求可能随着时间流逝逐渐被忽略. 此外, 基于用户角度的指示性指标来指导优先级排序, 缺乏从项目利益相关者角度的参考指标, 没有考虑开发成本以及时间. 一种好的优先级排序策略应该同时考虑用户角度的重要性以及项目角度的开发成本, 与预期收益的权衡. 特征请求优先级排序未来研究的方向应该在自动化优先级排序过程的同时, 综合考虑用户需求、项目开发成本以及预期收益.
需求管理是需求工程中非常关键的一步, 从需求分析开始, 贯穿软件项目的整个生命周期. 需求管理直接关乎软件整体的质量, 甚至软件项目的成败[
Requirements Management Activities
需求管理活动
需求评审是指对需求的质量、正确性等进行审查. Wiegers提出的需求评审的检查清单中对需求规格说明书的组织、完整性、正确性、质量属性和可跟踪性等进行细化[
Life Cycle of Feature Requests
特征请求的生命周期图
目前针对特征请求质量评估主要依赖于定义质量标准, 并按照质量标准对特征请求的质量评估, 进而过滤出低质量的特征请求.
在质量标准方面, Heck等人[
Quality Model for Feature Requests
特征请求质量模型
现有研究主要集中于识别重复、冗余和歧义的特征请求. 重复与冗余识别任务之间的区别在于: 重复检测主要对比新提出特征请求与现有特征请求之间是否重复. 冗余检测主要识别新提出的特征请求与已有软件特征之间是否相同. 冗余检测需要维护软件产品已有特征, 已有软件特征可以基于用户手册、发行说明以及拉请求(pull request)进行挖掘. 有歧义的特征请求因其请求难以确定, 也会被需求工程师拒绝.
Gill等人[
Shi等人[
Gu等人[
Li等人[
Heck等人[
Gotel等人将可追溯性定义为“可追溯性是将存储在某种人工制品中的数据相关联的潜力, 以及检查这种关系的能力”[
需求跟踪可以分为横向跟踪和纵向跟踪. 横向跟踪指的是在需求工程同一阶段, 同一抽象层次的产物之间的关联, 比如需求之间. 纵向跟踪指的是对处于不同阶段、不同抽象层次制品间的跟踪, 如从软件需求到软件代码之间的跟踪. 在实际的需求跟踪过程中, 主要有需求跟踪矩阵和链表法两种策略实现需求跟踪. 接下来分别从横向和纵向两个角度对特征请求的跟踪研究调研.
特征请求的横向跟踪就是将同一层面的需求产物之间建立联系. 特征请求建立横向跟踪有助于项目开发人员以及用户了解项目的当前状态以及实现新的特征, 有助于尽早发现需求之间的冲突, 理解软件需求的实现意义, 更好地处理需求之间的逻辑相关性, 避免重复或者不一致的工作[
现有研究中, 与特征请求相关的构建横向跟踪的需求产物包括: 顾客期望与产品需求之间[
Natt等人[
Heck等人[
Merten等人[
特征请求的纵向跟踪是指建立起特征请求与其他阶段的产物之间的联系. 特征请求的纵向跟踪有助于开发者了解项目的状态, 开发人员在维护特征请求时可以高效地定位软件各阶段对应的制品, 更加便捷地执行维护活动.
Licorish等人[
Seiler等人[
Palomba等人[
特征请求的纵向跟踪主要是建立起特征请求与软件开发其他阶段的构件之间的关联, 如代码等[
在软件开发过程中, 需求变更是难以避免的. 后期频繁的需求变更会给开发团队带来巨大的工作量. 在美国权威的第三方机构Standish Group的CHAOS报告中, 将需求变更列为困扰软件开发团队、导致项目失败的5大原因之一[
通常一个特征请求被提交后, 需求分析师首先分析变更请求的必要性和合理性, 以决定是否接受该请求. 对于接受的特征请求, 需求分析师会为其分配开发者, 开发者定位其关联的构件等, 修改构建代码, 最后发行新版本. 根据此过程, 可以将对特征请求的变更管理分为4种任务, 即: 接受预测、推荐开发者、定位代码和代码推荐.
Management of Change
变更管理
接受预测任务就是需求分析师分析特征请求的必要性和合理性以确定特征请求是否会被接受并开发. 用户提出的特征请求代表了用户的需求, 应用程序的开发者应该确保有价值的用户评论在合理的时间内得到及时的处理. Erne等人[
现有研究中为预测特征请求是否会被接受, 普遍采用基于机器学习的分类方法, 将特征请求向量化并通过分类模型将特征请求分类为接受和拒绝. 不同的方法的区别在于分类模型的不同以及提取的文本特征的不同.
熊文军等人[
Nizamani等人[
Arshad等人[
在开发过程中遇到故障的成本要远远高于在需求阶段发现故障的成本, 尽早发现特征请求中存在的故障, 尽早解决, 有助于有效地节约成本[
为了减轻需求工程师的工作负担, 研究提出基于机器学习分类模型自动预测特征请求是否会被接受, 或者是否会造成软件故障. 然而由于特征请求涉及软件方方面面的特征, 已不能仅依赖关键词作为预测模型的输入特征. 基于Bugzilla数据的研究发现, 情感分析可以显著提升预测模型的效果[
Potential Features for Approval Prediction
预测模型采用的特征
文献 | 采用的分类特征 | 分类模型 | 预测目标 | 年份 |
[ |
标题长度, 内容行数, 含有附件数, 开发者参与讨论次数, 等待生存时间 | LR | 接受预测 | 2017 |
[ |
文本描述 | MNB | 2018 | |
[ |
文本描述, 情感分类 | SVM | 2019 | |
[ |
文本描述, 情感分类 | CNN | 2021 | |
[ |
文本描述参与讨论的人数, 提出者发布帖子的数量 | M5P-tree, LR | 软件故障 | 2011, 2012 |
已被接受的特征请求, 需求分析师需要分配合适的开发人员去开发实现. 而不同的开发人员的技能有所不同. 为了提高特征请求的开发效率, 降低失败的可能性, 分配合适的开发人员显得尤为重要. 为特征请求推荐开发者主要基于假设“代码的原作者或者有类似需求开发经验的开发者应该是最佳推荐人选”. 因此现有研究方法可以归为两类: (1)直接从所有开发者中挑选与特征请求最为接近的开发者, 并根据其相似性为候选开发者排序[
Developer Recommendation
推荐开发者方法概览
Canfora等人[
Kagdi等人[
Linares-Vásquez等人[
Hossen等人[
Zanjani等人[
Cavalcanti等人[
根据开发人员的专业程度、开发历史与特征请求的匹配程度推荐开发者的方法可以为项目选出最有经验的、最合适的开发者. 然而这种方法偏向于选择开发经验丰富的开发者, 对于开发经验少的新手不友好. 因此, Yang等人[
在实际中, 开发人员的选择是多方面因素权衡利弊的结果, 如: 开发人员的时间、技能、对项目的熟悉度以及任务的难易程度等. 为难度低的任务推荐最有经验的年长的开发者, 可以加速任务完成进度, 但是会造成人力资源的浪费. 仅根据开发经验推荐开发者, 容易给有经验的开发者分配过多的任务, 不能合理给新手开发者锻炼机会. 因此在未来的推荐算法中, 应该更好地权衡多方面的因素. 如Claytor和Servant[
特征请求一般是在现有程序的基础上提出新的功能请求或者对现有功能的改进. 实现特征请求需要追溯源代码, 并做相应修改. 确定特征请求对应的源代码的位置, 称为代码定位. 目前普遍采用的方法是计算特征请求与源代码类之间的相似性, 相似度高的代码作为与请求对应的或需要修改的代码.
Palomba等人[
Ciurumelea等人[
Kato等人[
目前针对特征请求推荐代码的研究可以分为推荐API或者推荐重构方法. 一种方法是学习历史的特征请求采用的API或者重构记录, 从而预测新的推荐方法. 另一种方法是对比特征请求与API或者重构方法的相似性, 基于相似性推荐.
Thung等人[
Xu等人[
Li等人[
为了提高软件的可维护性, 在提出新的软件需求时, 需要对软件进行重构. Niu等人[
重命名是最经常和最广泛使用的重构操作之一. Nyamawe等人[
为便于更好地将特征请求应用于软件开发, 许多工具被提出. 在本节中对此汇总整理, 以便后续研究人员参考利用.
Tools for Feature Request Application
特征请求应用工具
工具名称 | 描述 | 研究主题 | 文献 | 年份 |
MARA | 一个从在线评论中自动化获取移动应用特征请求的工具 | 获取 | [ |
2013 |
AR-Miner | 从用户评论中提取有用的信息, 然后主题模型技术分组, 最后根据分组结果组内排序和组间排序 | 获取, 分类, 优先级排序 | [ |
2014 |
CRISTAL | 将用户反馈与提交记录之间建立链接, 并根据链接分析对开发过程的影响 | 纵向跟踪 | [ |
2015 |
SURF | 对用户评论进行句子级别分类, 识别用户意图, 总结评论主题 | 获取, 生成摘要 | [ |
2016 |
ARdoc | 从应用程序中提取有用反馈 | 获取 | [ |
2016 |
DECA | 自动分类开发邮件, 识别句子意图 | 获取 | [ |
2016 |
CLAP | 分类评论, 聚类, 优先级排序 | 分类, 聚类, 优先级排序 | [ |
2017 |
CHANGEADVISOR | 分析用户评论并从中提取有用的用户反馈, 对用户评论分组, 然后根据建议的软件修改确定要维护的代码工件 | 获取, 分组, 代码定位 | [ |
2017 |
URR | 分析用户评论, 分类并推荐要修改的代码 | 分类, 代码定位 | [ |
2017 |
MARC2.0 | 先分类应用评论, 然后生成摘要 | 分类, 生成摘要 | [ |
2018 |
MULAPI | 根据历史特征请求推荐API方法 | API推荐 | [ |
2018 |
REVSUM | 从用户评论中识别缺陷报告和特征请求, 基于SAFE从评论中自动提取特征 | 获取, 特征抽取 | [ |
2019 |
Ticket Tagger | 将GitHub的issue标记为缺陷报告和特征请求 | 获取, 特征抽取, 聚类相同主题 | [ |
2019 |
SAFE | 基于规则的用于从用户评论中提取特征的工具, 首先提取评论的主题, 然后根据意图分类, 将相同主题的句子聚类 | 获取, 特征抽取, 聚类相同主题 | [ |
2019 |
NERO | 自动理解和分析特征请求的语义, 并判断特征请求的smell | 分析理解 | [ |
2020 |
在需求工程研究领域, 最大的阻碍是公开数据集的匮乏. 由于软件需求是公司的重要资产, 普通的科研人员没有权限获得并使用. 而基于开源的特征请求解决了这一科研难题. 数据集可以通过爬虫技术, 轻易地从开源平台上爬取. 但是不同的科研人员, 不同的研究任务, 往往采用不同的数据集. 在这一部分, 旨在总结不同任务下的公开数据集, 以便后继科研的复用.
Open Data Set
公开数据集
研究主题 | 文献 | 链接 | 描述 | 年份 |
需求获取 | [ |
|
从用户评论中获取特征请求 | 2013 |
[ |
|
2015 | ||
[ |
|
2016 | ||
[ |
|
从问题报告中获取特征请求 | 2016 | |
[ |
|
2019 | ||
[ |
|
从用户评论中提取软件特征 | 2016 | |
[ |
|
2018 | ||
需求分析 | [ |
|
应用评论优先级排序 | 2015 |
[ |
|
2016 | ||
[ |
|
2017 | ||
需求管理 | [ |
|
用户评论与代码跟踪 | 2015 |
[ |
|
推荐重构方法 | 2020 | |
[ |
|
特征请求早期失败预测 | 2012 | |
[ |
|
特征请求代码定位 | 2017 |
随着软件项目的不断发展, 项目的特征请求规模不断扩大, 研究人员也愈发重视该领域的研究. 目前针对特征请求的研究主要集中在: 特征请求的获取、软件特征抽取、结构化分析、优先级排序、特征请求评审、特征请求跟踪以及变更管理, 如
目前特征请求的来源广泛, 研究人员从用户评论、推特、开发邮件等多种渠道获得特征请求, 极大地丰富了特征请求的内容. 但随之而来的, 是特征请求质量良莠不齐, 需求知识偏向于碎片化、非结构化. 低质量的特征请求会增加分析、开发的成本. 因此, 在未来研究中应该努力寻找更高质量的特征请求来源, 高质量的需求可以为高质量软件奠定基石.
现有研究中从用户反馈中获取特征请求的方法主要包括基于无监督学习、半监督学习以及监督学习等. 基于无监督学习的方法主要依赖于规则匹配, 该方法可以取得较高的精准度, 但是需要人工定义抽取规则. 人工定义规则的过程要求高, 需要对特征请求有很深的理解, 而且抽取的规则的完备性难以得到验证, 很难以覆盖所有的情况, 并且需要消耗大量的人力成本. 目前普遍采用的方法是基于监督学习的方法, 通过模型自动学习类别特征, 减少大量的人力、物力和资源消耗但是基于监督学习的方法需要人工标记数据, 并且方法的准确性依赖于标注数据的数量和质量, 尤其是基于深度模型的方法, 需要基于大量的样本学习类别特征. 降低人工成本的同时, 取得较高的抽取准确度, 是未来研究方向之一. 半监督学习方法旨在通过选择覆盖特征最广泛的最优训练集, 来实现最好的预测效果. 选择最优训练集的采样策略显得尤为重要. 在实际应用中, 需要在人力消耗和精准度之间进行衡量取舍.
在特征请求分析阶段, 目前的研究热点主要为软件特征抽取、结构化分析与优先级排序. 其中结构化分析包括用户意图识别、分类和摘要生成.
现有的软件特征抽取任务主要依赖于自然语言处理的词性标注技术, 获得每个单词的词性, 然后提取名词、动词、形容词等. 然而, 基于这种方法提取出的软件特征只是特定词性单词的组合, 软件特征的可读性不高. 因此, 在未来的研究中可以致力于提升软件特征的可读性, 如基于序列标注的方法, 提取出特征请求中连续的软件特征描述, 以提高提取的精准度.
在特征请求分类研究中, 现有的分类研究的类别不相同, 缺乏统一的分类标准. 此外, 由于特征请求受软件的领域知识的影响, 分类模型效果较差. 未来可以构建特征请求领域的预训练模型, 或者加入领域知识以提升模型的学习能力和分类水平.
特征请求的优先级排序是另一研究热点, 即如何从数量众多的特征请求中确定下一阶段要开发的用户需求, 不仅需要考虑用户请求, 还要结合开发成本, 项目收益等. 未来可以考虑提出量化标准, 用于评估特征请求的成本、预期收益以及用户的需求迫切程度, 以便于根据量化的数据判断优先级.
从用户角度收集的特征请求质量参差不齐, 不利于特征请求的分析、开发以及管理. 因此, 未来可以针对提升特征请求的质量展开研究. 现有研究主要依赖于构建质量模型, 依据质量模型评审特征请求的质量. 现有研究自动化识别特征请求中的重复、冗余、歧义等问题, 但是缺乏其他角度的质量检查, 比如完整性、统一性, 缺乏量化的标准评价特征请求的质量. 此外, 目前仅能识别出低质量的特征请求, 无法自动化提升低质量的特征请求, 未来可以考虑自动化提升特征请求的质量.
在特征请求的横向跟踪研究中, 常见方法是计算不同的特征请求之间的相似性, 以识别重复、冗余以及参考等关系. 由于特征请求知识的碎片化, 并且不同特征请求之间并不是绝对独立的, 有可能存在依赖关系等. 因此构建特征知识网络, 增加可溯性工具支持非常重要, 可以构建特征树来记录现有特征. 由于特征请求语言描述的多样性, 同一个软件特征可能由不同的词汇描述, 用户可能使用不同的句法结构描述相同的特征请求, 导致文本相似度难以识别. 因此未来研究方法, 可以从词法、语法和句法的角度对比文本相似性, 以提高识别的准确性. 此外, 基于文本相似性的方法仅能识别描述同一个软件特征的特征请求, 但是无法进一步细化特征请求的关系为重复、依赖还是冲突. 若能对该问题提出有效的解决方法, 将进一步提升特征请求横向跟踪的建立效率.
特征请求的纵向跟踪主要建立特征请求与不同构件(如, 源代码单元、开发者以及后续的软件开发过程的构件)之间的连接, 可以极大地便利开发者推荐以及代码定位等任务. 然而特征请求与其他开发阶段的中间件, 如测试文档、测试用例以及后续的发行说明、用户手册等之间的链接也是未来研究的方向之一. 良好的特征请求跟踪关系网络对于变更管理起着至关重要的作用.
现有关于特征请求管理的研究主要可以分为: 接受预测、推荐开发者、定位代码以及代码推荐. 由于人工判断是否接受特征请求费时费力, 因此现有研究主要采用机器学习分类算法预测特征请求是否被接受. 在类别上, 预测的类别为接受或者拒绝. 拒绝的原因可能包括重复、冗余、冲突、表述有歧义等. 但是现有研究无法预测拒绝的具体研究. 因此未来研究可以进一步细化预测的类别. 在预测的方法上, 现有研究主要采用传统机器学习分类算法, 结合人工定义的特征构建分类模型. 未来可以发掘更多深度分类模型的应用, 并结合更多的特征, 如特征请求的作者是否为开发者等信息. 在开发者推荐方面, 现有算法倾向于为所有任务分配给有开发经验的开发者, 而不考虑任务的难易程度, 导致能者多劳, 新手开发者缺乏锻炼的机会. 因此未来的开发者推荐算法应该权衡更多的因素, 如: 开发人员的时间、技能、对项目的熟悉度、任务的难易程度等, 合理分配安排, 争取实现成本最小化、收益最大化. 为开发者推荐特征请求涉及的代码定位以及推荐相关代码的研究主要适用于成熟项目, 需要有大量的代码积累以及历史特征请求. 对于小规模项目以及开发资源积累不足的项目不再适用.
尽管目前针对特征请求的研究很多, 涉及获取、分析以及管理的方方面面, 但是特征请求建模、规格化与验证方面的研究几近空白. 特征请求知识碎片化、非结构化, 如何从众多的特征请求中, 识别不同请求之间的依赖关系、构建模型等, 是未来的研究难点之一. 如何将众多的特征请求转化为规范的、结构良好的需求规格说明书, 是未来需要解决的问题. 如何验证特征请求, 确保其符合用户的期望, 也有待研究.
整体看来, 现有相关研究的迅猛发展, 离不开自然语言处理技术的大力支持. 自然语言处理技术与机器学习技术的发展极大地激发了特征请求分析处理的自动化. 词性标注技术可以为特征请求中的每个单词标注其词性, 因此通常被用于提取描述特征的词组. 情感分类技术识别用户对一条特征请求的情感态度, 可以用于优先级排序、接受预测、竞品分析等任务. 基于无监督的聚类方法可以在不需要标注数据的前提下将相似的特征请求聚为一簇, 以便于结构化管理. 文本分类被广泛应用于各种分类任务, 如: 从用户反馈中提取特征请求、特征请求评审、接受预测、特征请求分类、优先级排序、跟踪、推荐开发者、推荐代码定位以及代码推荐等任务. 此外, 文本相似性技术也被广泛地应用于聚类分析、横向以及纵向跟踪的建立. 一方面, 这些自动化分析技术依赖于文本向量化, 准确的向量化标准是这些方法可靠性的保证, 因此未来针对特征请求的研究可以提出一种软件工程领域的向量化方法. 另一方面, 近年来深度神经网络技术的发展, 使得各种任务取得更高的准确度. 然而, 机器学习往往需要从大量标注数据中学习特征. 因此标注数据集限制了目前机器学习在特征请求分析与处理中的发展. 在需求工程领域, 缺乏大规模、可靠的数据集是目前公认的研究难题, 为了解决这一研究难题, 研究人员可以公开数据集, 共享资源. 同时也可以寻求主动学习、迁移学习等方法降低对大量数据集的依赖.
若能针对上述研究现状对特征请求的研究进行提升和补全, 将能进一步提升特征请求的质量以及提升特征请求的利用价值, 从而提升软件质量.
随着软件项目及其用户评论数量的指数增长, 用户评论受到研究人员的关注并将其应用于软件开发. 本文对121篇用户特征请求分析与处理相关研究工作做了综述调研. 在传统需求工程框架下, 本研究调研了特征请求的不同来源, 总结并分析了需求获取、需求分析以及需求管理等不同需求活动下的研究进展. 针对需求工程研究领域缺乏公开数据集的公认短板, 还汇总了现有研究中提出的特征请求处理工具以及相关研究中的公开数据集. 最后对所有研究进行总结并提出其研究机遇与挑战. 未来研究中, 我们将持续关注特征请求领域相关的研究, 并及时更新综述内容. 此外, 本文只对特征请求进行了综述调研, 在未来将会融入缺陷报告相关的研究, 在需求工程视角下探究特征请求与缺陷报告分析与处理的异同. 同时, 目前针对特征请求规格化与验证的研究仍有较大缺口, 未来我们也会在该主题下进行深入探究.
Martin W, Sarro F, Jia Y, Zhang YY, Harman M. A survey of App store analysis for software engineering. IEEE Transactions on Software Engineering, 2017, 43(9): 817–847. [doi: 10.1109/TSE.2016.2630689]
Cavalcanti YC, da Mota Silveira Neto PA, do Carmo Machado I, Vale TF, de Almeida ES, de Lemos Meira SR. Challenges and opportunities for software change request repositories: A systematic mapping study. Journal of Software: Evolution and Process, 2014, 26(7): 620–653. [doi: 10.1002/smr.1639]
Tavakoli M, Zhao LP, Heydari A, Nenadić G. Extracting useful software development information from mobile application reviews: A survey of intelligent mining techniques and tools. Expert Systems with Applications, 2018, 113: 186–199. [doi: 10.1016/j.eswa.2018.05.037]
Wang C, Daneva M, van Sinderen M, Liang P. A systematic mapping study on crowdsourced requirements engineering using user feedback. Journal of Software: Evolution and Process, 2019, 31(10): e2199. [doi: 10.1002/smr.2199]
Bakar NH, Kasirun ZM, Salleh N. Feature extraction approaches from natural language requirements for reuse in software product lines: A systematic literature review. Journal of Systems and Software, 2015, 106: 132–149. [doi: 10.1016/j.jss.2015.05.006]
Kakar AK. Separating the wheat from the chaff: Extracting business value from feature requests posted in user forums. Journal of Organizational and End User Computing, 2016, 28(2): 8. [doi: 10.4018/JOEUC.2016040108]
Maalej W, Kurtanović Z, Nabil H, Stanik C. On the automatic classification of App reviews. Requirements Engineering, 2016, 21(3): 311–331. [doi: 10.1007/s00766-016-0251-9]
McIlroy S, Ali N, Khalid H, Hassan AE. Analyzing and automatically labelling the types of user issues that are raised in mobile app reviews. Empirical Software Engineering, 2016, 21(3): 1067–1106. [doi: 10.1007/s10664-015-9375-7]
Nayebi M, Cho H, Ruhe G. App store mining is not enough for App improvement. Empirical Software Engineering, 2018, 23(5): 2764–2794. [doi: 10.1007/s10664-018-9601-1]
Khan JA, Liu L, Wen LJ, Ali R. Conceptualising, extracting and analysing requirements arguments in users' forums: The CrowdRE-Arg framework. Journal of Software: Evolution and Process, 2020, 32(12): e2309. [doi: 10.1002/smr.2309]
肖建茂, 陈世展, 冯志勇, 刘朋立, 薛霄. 一种基于用户评论自动分析的APP维护和演化方法. 计算机学报, 2020, 43(11): 2184–2202. [doi: 10.11897/SP.J.1016.2020.02184]
Xiao JM, Chen SZ, Feng ZY, Liu PL, Xue X. An automatic analysis of user reviews method for App evolution and maintenance. Chinese Journal of Computers, 2020, 43(11): 2184–2202 (in Chinese with English abstract). [doi: 10.11897/SP.J.1016.2020.02184]
Aslam N, Ramay WY, Xia KW, Sarwar N. Convolutional neural network based classification of App reviews. IEEE Access, 2020, 8: 185619–185628. [doi: 10.1109/ACCESS.2020.3029634]
Kallis R, Di Sorbo A, Canfora G, Panichella S. Predicting issue types on GitHub. Science of Computer Programming, 2021, 205: 102598. [doi: 10.1016/j.scico.2020.102598]
Huang Q, Xia X, Lo D, Murphy GC. Automating intention mining. IEEE Transactions on Software Engineering, 2020, 46(10): 1098–1119. [doi: 10.1109/TSE.2018.2876340]
Zhang T, Li HM, Xu Z, Liu J, Huang RB, Shen YR. Labelling issue reports in mobile apps. IET Software, 2019, 13(6): 528–542. [doi: 10.1049/iet-sen.2018.5420]
Shi L, Chen CL, Wang Q, Boehm B. Automatically detecting feature requests from development emails by leveraging semantic sequence mining. Requirements Engineering, 2021, 26(2): 255–271. [doi: 10.1007/s00766-020-00344-y]
Lecun Y, Bottou L, Bengio Y, Haffner P. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 1998, 86(11): 2278–2324. [doi: 10.1109/5.726791]
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735–1780. [doi: 10.1162/neco.1997.9.8.1735]
Thelwall M, Buckley K, Paltoglou G. Sentiment strength detection for the social web. Journal of the American Society for Information Science and Technology, 2012, 63(1): 163–173. [doi: 10.1002/asi.21662]
Calefato F, Lanubile F, Maiorano F, Novielli N. Sentiment polarity detection for software development. Empirical Software Engineering, 2018, 23(3): 1352–1382. [doi: 10.1007/s10664-017-9546-9]
Yaslan Y, Cataltepe Z. Co-training with relevant random subspaces. Neurocomputing, 2010, 73(10–12): 1652–1661. [doi: 10.1016/j.neucom.2010.01.018]
Bowring JF, Rehg JM, Harrold MJ. Active learning for automatic classification of software behavior. ACM SIGSOFT Software Engineering Notes, 2004, 29(4): 195–205. [doi: 10.1145/1013886.1007539]
Gribkov EI, Yekhlakov YP. Neural network model for user request analysis during software operations and maintenance phase. Business Informatics, 2020, 14(1): 7–18. [doi: 10.17323/2587-814X.2020.1.7.18]
Bakar NH, Kasirun ZM, Salleh N, Jalab HA. Extracting features from online software reviews to aid requirements reuse. Applied Soft Computing, 2016, 49: 1297–1315. [doi: 10.1016/j.asoc.2016.07.048]
Scalabrino S, Bavota G, Russo B, Di Penta M, Oliveto R. Listening to the crowd for the release planning of mobile Apps. IEEE Transactions on Software Engineering, 2019, 45(1): 68–86. [doi: 10.1109/TSE.2017.2759112]
Li CY, Huang LG, Ge JD, Luo B, Ng V. Automatically classifying user requests in crowdsourcing requirements engineering. Journal of Systems and Software, 2018, 138: 108–123. [doi: 10.1016/j.jss.2017.12.028]
Cleland-Huang J, Dumitru H, Duan C, Castro-Herrera C. Automated support for managing feature requests in open forums. Communications of the ACM, 2009, 52(10): 68–74. [doi: 10.1145/1562764.1562784]
Tao CQ, Guo HJ, Huang ZQ. Identifying security issues for mobile applications based on user review summarization. Information and Software Technology, 2020, 122: 106290. [doi: 10.1016/j.infsof.2020.106290]
Jha N, Mahmoud A. Using frame semantics for classifying and summarizing application store reviews. Empirical Software Engineering, 2018, 23(6): 3734–3767. [doi: 10.1007/s10664-018-9605-x]
Kano N, Seraku N, Takahashi F, Tsuji SI. Attractive quality and must-be quality. Journal of the Japanese Society for Quality Control, 1984, 14(2): 147–156. [doi: 10.20684/quality.14.2_147]
Karlsson J, Wohlin C, Regnell B. An evaluation of methods for prioritizing software requirements. Information and Software Technology, 1998, 39(14–15): 939–947. [doi: 10.1016/S0950-5849(97)00053-0]
刘名成, 战洪飞, 石幸, 王雨潇. 面向产品设计的用户需求重要度分析方法. 机械制造, 2020, 58(12): 1–9. [doi: 10.3969/j.issn.1000-4998.2020.12.002]
Liu MC, Zhan HF, Shi X, Wang YX. Analytical approach of importance of user’s needs for product design. Machinery, 2020, 58(12): 1–9 (in Chinese with English abstract). [doi: 10.3969/j.issn.1000-4998.2020.12.002]
李虹, 闫德恒. 基于项目需求工程理论的软件需求管理浅析. 中国科技信息, 2011, (16): 92–93.
Li H, Yan DH. Analysis of software requirements management based on project requirements engineering Theory. China Science and Technology Information, 2011, (16): 92–93 (in Chinese).
Heck P, Zaidman A. A framework for quality assessment of just-in-time requirements: The case of open source feature requests. Requirements Engineering, 2017, 22(4): 453–473. [doi: 10.1007/s00766-016-0247-5]
Heck P, Zaidman A. Horizontal traceability for just-in-time requirements: The case for open source feature requests. Journal of Software: Evolution and Process, 2014, 26(12): 1280–1296. [doi: 10.1002/smr.1678]
熊文军, 张璇, 王旭, 李彤, 尹春林. 面向Issue跟踪系统的变更请求报告关闭可能性预测. 计算机科学, 2017, 44(11): 146–155. [doi: 10.11896/j.issn.1002-137X.2017.11.022]
Xiong WJ, Zhang X, Wang X, Li T, Yin CL. Prediction on closed-probability of change request report for issue tracking system. Computer Science, 2017, 44(11): 146–155 (in Chinese with English abstract). [doi: 10.11896/j.issn.1002-137X.2017.11.022]
Nizamani ZA, Liu H, Chen DM, Niu ZD. Automatic approval prediction for software enhancement requests. Automated Software Engineering, 2018, 25(2): 347–381. [doi: 10.1007/s10515-017-0229-y]
Umer Q, Liu H, Sultan Y. Sentiment based approval prediction for enhancement reports. Journal of Systems and Software, 2019, 155: 57–69. [doi: 10.1016/j.jss.2019.05.026]
Fitzgerald C, Letier E, Finkelstein A. Early failure prediction in feature request management systems: An extended study. Requirements Engineering, 2012, 17(2): 117–132. [doi: 10.1007/s00766-012-0150-7]
Kagdi H, Gethers M, Poshyvanyk D, Hammad M. Assigning change requests to software developers. Journal of Software: Evolution and Process, 2012, 24(1): 3–33. [doi: 10.1002/smr.530]
Cavalcanti YC, do Carmo Machado I, da Motal S. Neto PA, de Almeida ES. Towards semi-automated assignment of software change requests. Journal of Systems and Software, 2016, 115: 82–101. [doi: 10.1016/j.jss.2016.01.038]
Sun XB, Yang H, Xia X, Li B. Enhancing developer recommendation with supplementary information via mining historical commits. Journal of Systems and Software, 2017, 134: 355–368. [doi: 10.1016/j.jss.2017.09.021]
Xu CY, Sun XB, Li B, Lu XT, Guo HJ. MULAPI: Improving API method recommendation with API usage location. Journal of Systems and Software, 2018, 142: 195–205. [doi: 10.1016/j.jss.2018.04.060]
Sun XB, Xu CY, Li B, Duan YC, Lu XT. Enabling feature location for API method recommendation and usage location. IEEE Access, 2019, 7: 49872–49881. [doi: 10.1109/ACCESS.2019.2910732]
Nyamawe AS, Liu H, Niu N, Umer Q, Niu ZD. Feature requests-based recommendation of software refactorings. Empirical Software Engineering, 2020, 25(5): 4315–4347. [doi: 10.1007/s10664-020-09871-2]