AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

关于技术债务优先顺序的系统文献综述:战略、过程、因素和工具

目录

关于技术债务优先顺序的系统文献综述:战略、过程、因素和工具

摘要

1 介绍

2 技术债务优先化思维导图

3背景

3.1 技术债务

3.2 先前的系统文件回顾

4 方法论

4.1 目标和研究问题

4.2 检索策略

4.4 数据抽取

4.5 可复现性

5 结果

5.1 RQ1 提出过哪些优先化策略/p>

5.1.1 内部软件质量

5.1.2 软件生产力

5.1.3 软件正确性

5.1.4 成本效益分析

5.1.5 不同方法的结合体

5.2 RQ2论文是优先考虑 TD vs. TD 还是 TD vs. features/p>

5.3 RQ1.2 优先级是基于一次性活动还是基于连续过程/p>

5.4 RQ2 TD优先级考虑了哪些因素和措施/p>

5.3 RQ3哪些工具已被用于TD优先化

6 讨论

7 有效性威胁

7.1 结构有效性

7.2 内部有效性

7.3 外部有效性

7.4 结论有效性

8 结论


摘要

背景

软件公司需要管理和重构技术债务问题。因此,有必要了解技术债务的重构是否以及何时应该优先考虑开发特性或修复bug。

客观

本研究的目的是调查在工程设计中现有的软件知识体系,以了解在科研和工业界中提出了哪些技术债务优先化的方法。

方法

我们对截至2020年发表的557篇独特论文进行了系统的文献回顾,遵循应用于软件工程的整合方法。我们总结了44项基本研究。

结果

针对技术债务优先顺序提出了不同的方法,所有方法都有不同的目标,并针对不同的标准提出了优化建议。拟议的措施只涵盖了实践中用于定性优先技术债务的过多因素中的一小部分。我们展示这些因素的影响图。然而,缺乏经验和有效的工具。

结论

我们观察到,技术债务优先化研究尚处于初步阶段,目前在重要因素是什么以及如何衡量这些因素上尚未达成共识。因此,我们不能认为当前的研究有决定性。因此,在本文中,我们概述了必要的未来研究方向。

1 介绍

技术债务 (TD) 是 Cunningham (1992) 引入的一个比喻,用于表示次优设计或实施解决方案,这些解决方案在短期内会产生收益,但在中长期内会使更改成本更高甚至不可能(Avgeriou 等 等人,2016b)。 软件公司需要管理这样的次优解决方案。TD的存在是不可避免的 (Martini et al., 2015),在某些情况下甚至是可取的 (Besker et al., 2018c),原因有很多,这通常可能与组织的内部或外部的不可预测的业务或环境因素有关。

但是,就像任何其他金融债务一样,每个TD都附带利息,否则产生额外成本或负面影响,这是由于存在次优解决方案而产生的(Li et al., 2015)。 当这种利息变得非常昂贵时,它可能导致破坏性事件,例如发展危机(Martini 等,2015)。软件公司当前采用的最佳实践包括避免TD,如果后果已知或重构或重写代码和其他工件,以摆脱累积的次优解决方案及其负面影响。公司无法避免或偿还所有持续产生且可能未知的TD(Martini 等人,2015 年)。 公司的主要业务目标是持续为客户创造价值并维护他们的产品。

因此,TD 重构活动通常与用于开发新功能和修复缺陷的时间分配相竞争,其中TD重构活动通常优先于新功能的实现(Martini 等,2015)。 因此,了解何时重构TD变得比推迟一个特性或bug修复更重要。换句话说,重要的是要了解如何根据功能和错误对TD进行优先级排序。 然而,最近在几家软件公司进行的一项研究(Besker 等人,2019 年)报告了公司如何努力优先考虑 TD,并且他们不使用系统方法。 这引出了我们的第一个研究问题:提出了哪些优先级策略RQ1)回答此RQ将提供已研究的优先级策略列表,这对于从业者改进实践和确定更适合其目标的策略很有用。

此外,最近的研究表明,不同的项目甚至不同类型的TD可能如何与不同的重构成本(本金)和负面影响(利息)相关联(Besker 等人,2018b)。 但学术界和工业界仍不清楚如何衡量本金和利息,以及哪些工具可以帮助这些活动。 然后我们制定其他 RQ:TD 优先级考虑了哪些因素和措施RQ2) 以及哪些工具已被用于确定TD的优先级(RQ3)

再次,回答这些问题将为从业者提供可操作的措施和工具来量化或至少估计本金和利息,从而优先考虑 TD。

此外,作为与 RQ1 相关的优先级策略的一部分,我们知道一些TD可能比其他的更危险(Seaman 等人,2012;Martini 和 Bosch,2016c),因此在考虑其他TD的情况下,理解如何优先考虑TD变的很重要。 因此,我们提出以下 RQ,以了解哪些方法可用以及哪些方法缺失:论文是优先考虑TD与TD还是TD与功能RQ1.1) 另一个与TD优先排序策略相关的重要方面是其周期性,例如,优先排序既可以作为一次性活动完成,也可以迭代完成并作为连续过程。

因此,我们提出了 RQ:优先级是基于一次性活动还是基于连续过程(RQ1.2)。 这个研究问题的重点是如何在审查过的出版物中根据其周期性来描述优先排序过程。我们根据一次性活动与连续过程的一部分来区分不同的方法。

然而,没有全面的研究来调查TD优先级的策略、过程、因素和工具。 唯一类似的工作(Alfayez 等人,2020 年)仅根据其对价值和成本的考虑分析了优先级排序方法。

我们在本文中的目标是调查软件工程中现有的知识体系,以了解科研界和工业界中已提出哪些方法来优先考虑 TD。出于这个原因,我们对TD的优先级进行了系统文献回顾 (SLR)。 我们进行了 SLR 以调查软件工程中现有的知识体系,以了解软件组织中TD的优先级以及已提出哪些研究方法。

本文的主要贡献是一份关于在实践中使用或在研究中提出的优先处理TD的方法、因素、措施和工具的最新报告。

本文结构如下:在第 3 节中,我们描述了这篇综述的背景。 在第 4 节中,我们概述了本研究中采用的研究方法。 第 5 节和第 6 节介绍并讨论了获得的结果。 最后,在第 7 节中,我们确定了对有效性的威胁,并在第 8 节中得出结论。

2 技术债务优先化思维导图

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

我们提出了一个初步的思维导图来概念化我们的目标和研究问题,这可以在 TD 优先级活动中帮助从业者,如图 1 所示。这个思维导图提供了对 TD 优先级过程中需要考虑的不同因素的探索 以及这些因素如何相互关联。

第一步是确定从业者是否需要优先考虑 TD 问题中的重构,或者他们是否需要优先考虑 TD 重构,相较于新功能和错误修复的实现(回答 RQ1)。 这是因为这些方法在评估 TD 的影响以及评估功能和错误的价值或影响方面有所不同。 在前一种情况下,优先级方法可以使用相同的因素,而在后一种情况下,TD的本金和利息更可能需要与面向特征的因素进行比较,例如竞争优势或延迟成本。

一旦确定了比较的范围,TD 的评估应考虑以下因素:(1) TD 本金的差异(解决问题的成本),(2) 影响(TD 利息),以及 (3) 其他因素,包括经济和营销因素(RQ2 的结果)。

评估可以是定量和定性的(RQ1),在某些情况下可以得到工具的支持(RQ3)。 例如,公司可能会使用工具对代码债务的存在进行定量评估,但他们可能还需要对无法使用工具衡量的因素进行定性评估(例如,通过代码审查),例如考虑代码可读性、可分析性、 或其他质量特征。 此外,一些工具提供了计算TD本金的方法,但从业者可能需要通过定性评估影响因素来计算利息。

此外,评估应该考虑不同的场景,包括可用资源和系统的可能演变。 事实上,TD 可能非常依赖于上下文(正如我们在 RQ3 中讨论的影响因素),这意味着从业者需要通过对未来情景的估计来评估它。 例如,在工具 AnaConDebt 中,从业者可以指定在短期、中期或长期情景中发生的事件。 不同场景的评估应该有助于做出重构决策,例如关于应该执行哪些重构以及应该推迟哪些重构。

作为决策过程的一个示例,公司可能会考虑不实施涉及受 TD 影响的代码部分或模块的新功能。 如果估计此类 TD 在短期场景中会产生高兴趣,则可能会发生这种情况:在这种情况下,TD 产生的兴趣可以克服延迟功能的成本。 然后,从业者可能会决定在实现该功能之前重构代码。

让我们举一个具体的例子,说明如何按照优先级思维导图中的步骤做出重构决策。 架构师需要在开发更多访问它的应用程序之前决定是否重构“次优”接口。 架构师的主要活动是评估是否优先考虑 TD 的重构与开发新功能。 然后架构师需要考虑和计算不同的因素(本金、利息和其他因素)。 如果没有重构,TD 将传播到所有新代码(传染性债务)。 此外,所有新应用程序都会受到与次优 API 交互产生的负面影响(兴趣)(系统中的影响传播。尽管延迟新应用程序的开发(面向特征的因素)将意味着成本) 在短期情况下,由于开发人员不会支付次优接口产生的利息,因此可以减少长期情况下开发新功能的准备时间。如果这种长期收益克服了成本 在延迟应用开发的情况下,从业者应该选择对 API 进行重构,这种情况下,重构决定将通过评估在未来的场景中,避免利息的成本是否值得支付本金来做出。

TD 优先级思维导图可以结合本文中介绍的其他结果(影响图、优先级方法描述和可用工具)帮助从业者做出重构决策。

3背景

在本节中,我们解释 TD 的含义以避免混淆或误解,我们将报告以前发表的系统评价。

3.1 技术债务

TD 的概念是由 Cunningham 于 1992 年首次引入的,它是“通过加速软件项目开发而产生的债务,导致许多缺陷最终导致高昂的维护费用”(Cunningham,1992) . 2013 年,McConnell (2013) 将 TD 的定义改进为“一种设计或施工方法,在短期内是权宜之计,但会创造一种技术环境,在这种环境中,同样的工作在后期完成的成本将高于完成的成本。 现在(包括随时间增加的成本)”。 2016 年,Avgeriou 等人。 (2016a) 将其定义为“一组设计或实施结构,这些结构在短期内是权宜之计,但建立的技术环境可能会使未来的改变成本更高或不可能实现。 TD 是一种实际或或有负债,其影响仅限于内部系统质量,主要是可维护性和可演化性”。

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

李等人。 (2015) 进行了系统的映射研究,以了解 TD 的概念,并概述了管理 TD 的研究现状。 根据选定的研究 (96),他们提出了 10 种不同级别的 TD 分类,如表 1 所示。由于该分类源自最近的一项二级研究,据我们所知,这是最完整的分类 在文献中,我们在搜索策略过程(第 4.2 节)中考虑了它来定义我们的搜索词。

3.2 先前的系统文件回顾

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 在本节中,我们简要报告源引擎中可用的以前的系统评论(系统映射研究和系统文献评论),显示它们的主要目标在表2)。 我们按时间顺序介绍这些研究,以展示有关 TD 的研究进展。 第一篇系统评价发表于 2012 年(Tom 等人,2013 年),据我们所知,最后一篇系统评价发表于 2018 年(Besker 等人,2018a;Rios 等人,2018 年)。

汤姆等人(2013)利用探索性案例研究技术,包括多语言文献回顾,辅以对软件从业者和学者的采访,以确定 TD 现象的边界。 结果,他们创建了一个理论框架,提供了 TD 的整体视图,包括一组 TD 维度、属性、先例和结果。 该框架提供了一种有用的方法来理解 TD 的整体现象,以用于实际目的。

李等人。 (2015) 调查了 TD 管理 (TDM),提供了 TD 概念的分类并介绍了 TDM 的研究现状。 他们考虑了 1992 年至 2013 年间的出版物,最终选择了 94 项研究。 结果表明,需要对 TDM 过程提供高质量证据的实证研究、TDM 方法在工业环境中的应用以及在 TDM 过程中管理不同 TD 类型的工具。

Ampatzoglou 等人。 (2015) 分析了有关 TD 的研究工作,重点关注软件工程概念的财务方面。 他们考虑了 2015 年之前的出版物,选择了 69 项研究。 结果提供了术语表和用于管理 TD 的财务方法的分类方案。此外,他们发现财务和软件工程概念之间缺乏清晰的映射。

里贝罗等人。 (2016) 评估了支付 TD 项目的适当时间以及如何应用决策标准来平衡短期收益与长期成本。 他们考虑了 2016 年之前的出版物,选择了 38 项研究。 他们确定了 14 个决策标准,开发团队可以使用这些标准来确定 TD 项目的优先级,以及与标准相关的债务类型列表。

阿尔维斯等人。 (2016) 调查了在软件项目中识别和管理 TD 的建议策略,考虑了 2010 年至 2014 年间的出版物并选择了 100 项研究。他们提出了 TD 类型的初步分类,并提供了一个指标列表来识别 TD 和管理策略。此外,他们分析了 TD 的当前状态,突出了可能的研究差距。 结果表明,研究人员对 TD 领域的兴趣日益浓厚。 他们发现了一些关于新指标建议和管理战略以及控制 TD 工具的差距。 他们发现的另一个差距是关于验证提议策略的实证研究.。

费尔南德斯-桑切斯等人。 (2017) 确定了管理 TD 所需的要素,考虑到 2017 年的出版物并选择了 69 项研究。 他们没有提供关于 TD 现象或管理 TD 活动的一般概述。这些要素分为三组(基本决策因素、成本估算技术、实践和决策技术),并根据利益相关者的观点(工程、工程管理和业务组织管理)进行分组。) .

贝胡蒂耶等人。 (2017) 在敏捷软件开发 (ASD) 的背景下分析了 TD 的最新技术及其原因、后果和管理策略。 他们考虑了 2017 年之前的出版物,并选择了 38 项研究,寻找潜在的研究领域进行进一步调查。 该研究强调了对 TD 和 ASD 的积极兴趣,并提供了一些很容易导致 TD 的潜在类别,例如“专注于快速交付以及架构和设计问题”。

贝斯克等人(2018)整理和整理研究工作,以创造对 ATD 有特殊兴趣的新知识。 他们考虑了 2005 年至 2016 年间的出版物,选择了 43 项研究。 结果表明,缺乏关于如何在实践中成功管理 ATD 的指导方针以及这些活动完全整合的整体过程。

里奥斯等人。 (2018 年)基于一组五个研究问题进行了第三项研究,并评估了 2012 年至 2018 年 3 月的 13 项二次研究。他们发展了 TD 类型的分类法,确定了在软件项目中可以找到债务项目的情况列表 ,并组织了一张地图,代表了支持 TD 管理的活动、策略和工具的最新状态。 他们的结果可以帮助确定在 TD 研究中仍需要进一步调查的点。 例如,他们发现有些管理活动没有任何类型的支持工具。

霍米亚科夫等人。 (2019) 研究了用于测量和分析 TD 的现有工具,重点关注也可以自动化的定量方法。 他们从检索到的 331 篇论文中选出了 21 篇。 他们的结果表明,正在定义许多新方法来测量 TD。

Avgeriou 等人。 (2020) 比较了现有的测量 TD 的工具,比较了它们的特征和流行度,并分析了现有的经验证据来证明它们的有效性。 与这项工作不同的是,他们没有比较优先考虑 TD 的方法。

最近,Alfayez 等人。 (2020) 调查了软件工件的依赖关系,以及所需人工参与的类型。

他们根据对价值、成本或资源限制的说明分析了优先级排序方法。

与现有的 SLR 相比,我们的研究是唯一一项研究 TD 优先级的策略、过程、因素和工具的研究,考虑到所有可能的方面,而不是只关注特定方面(例如努力 Ribeiro 等人,2016;Alfayez 等人,2020 年,或开发过程 Behutiye 等人,2017 年)。

4 方法论

为了了解技术债务优先级的最新技术和实践,我们根据 Kitchenham 和 Charters (2007) 以及 Kitchenham 和 Brereton (2013) 定义的指南进行了系统的文献回顾。 我们还应用了 Wohlin (2014) 定义的“滚雪球”过程。

在本节中,我们描述了目标和研究问题(第 4.1 节)并报告了我们的搜索策略方法(第 4.2 节)。 此外,我们对每篇包含的论文进行了质量评估(第 4.3 节),并概述了相应数据的数据提取和分析(第 4.4 节)。

4.1 目标和研究问题

根据我们的思维导图,研究目标是调查软件工程中现有的知识体系,以了解软件组织中 TD 如何优先考虑以及提出了哪些研究方法。

根据我们的目标,我们定义了以下研究问题(RQs)

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 第一个研究问题针对所调查的研究论文如何从不同的策略(RQ1)方面解决 TD 的优先级排序过程,即 TD 的优先级排序过程是主要关注不同的 TD 项目还是还包括 TD 项目,例如,新功能的实施 (RQ1.1),以及如何根据周期性 (RQ1.2) 描述优先级过程。

基于上述 RQ,我们旨在确定在 TD 优先活动 (RQ2) 中被认为有用的一组因素和措施。 此外,我们旨在了解在确定主要 TD 组成部分、本金和利息的优先级时考虑了哪些措施。 我们的目标是提供用于评估 TD 的现有工具列表,以便从数量和每个工具的成熟度 (RQ3) 方面描述当前情况。

4.2 检索策略

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

检索策略包括最相关的书目来源和检索词的概述、纳入和排除标准的定义以及与纳入决定相关的选择过程。 我们的搜索策略如图 2 所示。

搜索词。 在我们的搜索字符串中,我们包含了 Li 等人提出的所有与 TD 相关的术语。 (2015 年)并在表 1(第 3 节)中报告。

搜索字符串包含以下搜索词:(”technical debt”)OR (”design debt”) OR (”architect* debt”) OR (”test* debt”) OR (” 实施*债务”)或(”文件*债务”)或(”要求债务”)或(”代码债务”)或(”基础设施债务”)或(”版本债务’ ‘) OR (”defect debt”) OR (”build debt”) 我们使用星号字符 (*) 表示第二个术语组,以便捕捉可能的术语变体,例如复数和动词变位。 为了增加找到解决 TD 优先级的出版物的可能性,我们将搜索字符串应用于标题和摘要。

书目来源。 我们根据 Kitchenham 和 Charters (2007) 的建议选择了相关书目来源列表,因为这些来源被认为是软件工程领域中最具代表性的来源,并在许多评论中使用。 该列表包括:ACM 数字图书馆、IEEEXplore 数字图书馆、Science Direct、Scopus、Google Scholar、CiteSeer 图书馆、Inspec、Springer 链接。 此外,我们手动搜索了最重要的技术债务会议和研讨会,例如国际技术债务会议 (TechDebt)。

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 纳入和排除标准。 我们定义了适用于标题和摘要 (T/A) 或全文 (F) 或两种情况 (All) 的纳入和排除标准,如表 3 所示。

搜索和选择过程。 搜索于 2019 年 12 月进行,包括在此期间可用的所有出版物。 检索词的应用返回了 557 篇独特的论文。

测试纳入和排除标准的适用性:在应用纳入和排除标准之前,我们在从检索到的论文中随机选择的 10 篇论文(分配给所有作者)的子集上测试了它们的适用性(Kitchenham 和 Brereton,2013)。

将纳入和排除标准应用于标题和摘要:我们将改进的标准应用于剩余的 547 篇论文。 每篇论文由两位作者阅读; 在分歧的情况下,第三位作者参与讨论以澄清任何此类分歧。 对于 29 篇论文,我们涉及第三作者。在最初的 557 篇论文中,我们根据标题和摘要收录了 116 篇。

完整阅读:我们完整阅读了按标题和摘要包含的 117 篇论文,应用表 3 中定义的标准,并将每篇论文分配给两位作者。 我们让第三作者参与了六篇论文的最终决定。 基于此步骤,我们选择了 49 篇论文作为可能相关的贡献。

滚雪球:我们执行滚雪球过程(Wohlin,2014),考虑检索到的论文中提供的所有参考文献,并评估所有引用检索到的论文,从而产生了一篇额外的相关论文。 我们应用了与检索到的论文相同的过程。 滚雪球式搜索是在 2019 年 12 月进行的。我们只确定了 11 篇潜在论文,但为了撰写最终的出版物集,只收录了其中一篇。

根据搜索和选择过程,我们共检索到 50 篇论文进行审查,如表 5 所示。

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 4.3 质量评估

在进行审查之前,我们检查了所选论文的质量是否足以支持我们的目标以及每篇论文的质量是否达到一定的质量水平。 我们根据 Dyb? 和 Dings?yr (2008) 提出的协议执行此步骤。 为了评估选定的论文,我们准备了一个包含一组具体问题的清单(表 4)。 我们对每个答案进行排名,并在李克特五点量表上打分(0 = 差,4 = 优秀)。 如果一篇论文的评分高于(或等于)2,则该论文符合质量评估标准。

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 在检索和选择过程中纳入审查的 50 篇论文中,只有 44 篇符合质量评估标准,如表 5 所示。

4.4 数据抽取

我们从满足质量评估标准的 44 项主要研究 (PS) 中提取数据。 表 6 总结了数据提取表以及回答每个 RQ 所需信息的映射。

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

为了回答 RQ1,我们首先提取与论文上下文相关的数据,根据 Li 等人提出的列表,根据评估的 TD 类型概述每个 PS。 (2015 年)。 我们还报告了论文中采用的评估类型,区分了定性、定量和混合评估方法。 此外,我们还提取了删除、重构或修复 TD 问题的标准。

我们提取了与优先级目标(RQ1.1)相关的数据,以便了解论文是优先考虑 TD vs. TD 还是 TD vs. 新功能的实现。 为了回答 RQ1.2,我们报告了优先级是基于一次性活动,还是基于连续过程,如果它是主动的还是被动的。

为了回答 RQ2,我们提取了用于评估 TD 问题优先级的措施和因素,以及在优先级确定过程中建议的哪些指标。

最后,为了回答 RQ3,我们检索了有关用于评估和优先处理 TD 诉讼的框架和工具的信息。 这些数据完全基于论文中的报道,没有任何个人解释。

4.5 可复现性

为了允许其他研究人员复制和扩展我们的工作,我们为这项研究准备了一个复制包1,并获得了完整的结果。

5 结果

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 根据采用的选择过程,我们确定了 44 项初步研究 (PS)。 考虑到表 1 中报告的 TD 类型,PS 中最常考虑的 TD 类型是:代码债务 (38%)、建筑债务 (24%) 和设计债务 (10%)。

此外,一些 PS (24%) 不报告任何特定 TD 类型的问题,而是对 TD 进行总体评估(图 3)。

通常从其对一种或多种软件质量的影响的角度来研究代码 TD [SP13]、[SP18]、[SP19]、[SP26]。 PS 最常考虑可维护性 [SP4]、[SP5]、[SP11] 和维护工作 [SP1]、[SP2]、[SP11]、[SP19]。 代码债务评估主要基于代码气味 [SP2]、[SP5]、[SP11]、[SP18]、[SP19]、[SP26]。

还考虑了其??他指标,例如修复违规所需的时间 [SP4]、[SP23] 或成本 [SP1],以及质量规则 [SP13]。

一些与主观评估相关的因素,例如客户反馈 [SP23] 或代码中的开发人员评论 [SP28],评估的频率较低。

这些方法主要涉及通过删除或重构代码异味或其他指标来减少 TD 的模型 [SP11]、[SP18]。

这些方法着眼于对代码异味的影响 [SP5],与没有异味的类 [SP2]、[SP26] 进行比较,或者对开发人员认为关键的代码规则 [SP13] 进行排名。

考虑到架构气味 [SP17]、[SP19]、[SP20] 或复杂架构设计 [SP17]、[SP27] 对软件质量的负面影响 [SP17]、[SP19]、 [SP20]。 架构 TD 通过测量用于修复错误 [SP17] 或分析代码的错误倾向 [SP17] 的额外维护工作量来评估。 另一种方法结合了三种不同的观点,例如历史项目数据、架构设计和优先级重构活动的类的严重性 [SP19]。

架构设计用于识别与架构 TD [SP27] 相关的浪费时间方面的高度兴趣,并结合其他指标,例如文件数量和复杂功能和文件的百分比 [SP35]。

另一种方法识别架构组织之间的依赖关系和社会差距,以定义架构 TD [SP31]。

5.1 RQ1 提出过哪些优先化策略/strong>

TD 优先级被认为是管理 TD 时最重要的活动之一。 TD 优先级流程用于定义计划重构计划的排序和/或调度,基于每个已识别的 TD 项目的优先级,这些项目涉及各个项目对软件的影响。

研究人员在审查的出版物中提出了几个不同的优先级方面,并且已经开发了一些关于如何优先级 TD 的方法,但是对于如何执行 TD 优先级过程没有统一的方法,也没有就哪一个达成共识 执行 TD 优先级流程时要关注的方面。 目前,在大多数组织中,优先级策略的选择取决于上下文 [SP21]。

为了分析检索到的出版物中提出的优先事项,使用了主题分析方法。主题分析是在搜索的数据范围内识别、分析和报告模式和主题的有效方法(Braun 和 Clarke,2006 年)。 主题分析主要返回了五个主题,说明了不同的优先级方面。但是,应该注意的是,从软件演化的角度来看,这些方面可能具有依赖性和耦合性。

根据分析,审查出版物中提出的不同建议优先级策略主要是:(a)提高软件质量,(b)提高软件从业者的生产力,(c)对软件正确性的影响,(d)成本- 收益分析 (CBA) 以比较各种 TD 项目的低成本和高回报,或 (e) 几种不同方法的组合。

AsystematicliteraturereviewonTechnicalDebtprioritization:Strategies,processes,factors,andtools

 这些不同的策略与代表每种策略的出版物一起显示在图 4 中。

以下小节将更详细地描述每个被调查的出版物如何有助于 TD 策略的图解分类

5.1.1 内部软件质量

将内部软件质量作为优先策略的研究通常侧重于软件质量评估,以确定导致最高维护成本的 TD 项目 [SP1]、[SP2]、[SP13]、[SP19]、 [SP28]、[SP26]、[SP4],图 4. 技术债务优先策略。

[SP31]、[SP35]、[SP41]、[SP44],以及剩余产品寿命、债务严重程度及其对未来发展活动的影响以及当前与业务相关的限制等因素 [SP3]、[SP9] .

肖等人。 [SP17] 提出了一种专注于架构 TD 的方法。 它既侧重于定位 TD 项目,也侧重于对它们进行排序和优先级排序。 他们的方法返回消耗最大维护工作的 TD 项目,因此在重构 。

Pl?sh 等人时值得更多关注和更高优先级。 提出了一种 TD 优先级方法,主要关注设计债务的优先级,他们的方法依赖于通过将识别的 TD 项目转移到投资组合矩阵 [SP42] 来量化设计最佳实践。Albarak 和 Bahsoon 进一步声称,具有低于第四范式的数据库表的软件系统很可能形成 TD,因此应该优先考虑重构不规范化的表 [SP40]。

5.1.2 软件生产力

一些审查过的出版物在优先考虑 TD 时也考虑了软件从业人员生产力的下降,因为遭受架构 TD 的软件,例如,通过导致返工 [SP2],[SP3] 减慢了开发速度。

5.1.3 软件正确性

 TD 对软件正确性的影响被描述为一种评估不同候选 TD 项目以进行优先排序的方法 [SP2]。 更具体地说,Arcelli Fontana、Ferme 和 Spinelli [SP5] 报告说,可以通过研究代码气味重构对代表设计债务的影响来评估重构代码气味的优先级不同的质量指标,目标是识别和优先考虑“最危险的气味,因此代表最差 TD 的气味”。 在优先考虑缺陷债务时,特别是 Ak barinasaji 等人。 [SP23] 将他们的方法重点放在债务项目的严重性(使用关键、主要、正常和次要的分类)和 bug-xing 时间的持续时间上。

Codabux 等人。 [SP21] 使用贝叶斯方法建立预测模型,根据评估单个项目风险的 TD 倾向概率,使用分类方案确定每个 TD 项目的“TD 倾向”。

5.1.4 成本效益分析

[SP3]、[SP6] 等研究人员在对不同的 TD 项目进行优先排序时使用成本效益分析,重点关注应该首先执行哪些重构活动,因为它们实施起来可能成本低廉但效果显着, 由于成本高、回报低,重构应该推迟。 这种方法的主要重点是对软件进行有利可图的投资,该分析的输出是按不同可能重构活动的盈利能力排序的不同 TD 项目的优先列表 [SP3]。

Martini 等人赞同这一策略。 [SP32],他说“如果利息很高(或将要很高),那么债务是值得偿还的。 相反,如果利益不足以证明重构的成本是合理的,则没有理由“浪费资源重构系统”。 然而,马提尼等人。 [SP32] 还强调不仅要通过单独评估每个 TD 项目来将优先级决策集中在单个 TD 项目上,而且要了解 TD 项目对整个项目的总体影响,从而通过评估项目来关注项目的总体目标。 整体信息。 在这种方法中,Martini 等人。 [SP32] 还包括受 TD 影响的代码部分、项目规模、路线图、TD 的积极影响、替代方案的存在以及团队在优先考虑 TD 重构活动时的文化态度等因素 .

5.1.5 不同方法的结合体

相当多的调查出版物提出了几种不同方法的组合。 例如,Alfayez 和 Boehm [SP44] 提出了一种基于自动搜索的方法,使用称为 MOEA(它是一个开源 Java 库)的多目标进化算法对 TD 进行优先排序,重点是偿还 TD 重构活动 在特定的成本限制范围内。

Seaman 等人借鉴了金融和心理学等其他学科的优先排序方法。 [SP6] 包括层次分析法 (AHP)、投资组合方法和期权方法等技术。 AHP 方法包括建立标准层次结构,为标准分配权重和尺度,最后在备选方案与各种标准之间进行一系列成对比较。 使用投资组合方法的目标是选择那些最大化投资回报或最小化投资风险的资产。

Codabux 等人。 [SP25] 强调对优先排序过程采取更广泛视角的重要性,重点关注 TD 的责任。 据他们说,决策者需要考虑的不仅仅是与修复债务相关的成本,包括对决定发货可能产生的未来成本的估计。 在责任成本方面的优先排序过程中反映的额外成本包括,例如,响应支持请求的成本、与灾难性故障相关的成本等,以及由于无法管理的债务而违反服务水平协议时的潜在诉讼成本。

里贝罗等人。 [SP24] 提出了一个多决策策略标准模型,它结合了不同的优先级方法,可用于不同的项目阶段。他们的模型侧重于诸如 TD 项目从客户角度对 TD 利息成本的影响的严重性、项目属性的生命周期及其演变的可能性等方面。

另一个包含不同视角的优先排序过程是 Ciolkowski 等人描述的方法。 [SP29]。他们的方法侧重于将整体软件质量与从面向未来的角度关注生产力提高相结合,使用积极主动的方法。

古普塔等人。 [SP20] 使用两级方法对 TD 进行优先排序。 首先,TD项目根据其重要性和紧迫性进行评估。 第二步,评估 TD 项目对业务价值和努力的影响。

郭等人。 [SP15] 提出了一种 TD 优先级方法,该方法根据最高优先级对客户期望进行排序,其次是开发资源的可用性、TD 项目的兴趣、受债务影响的模块的当前状态以及债务对其他功能的影响 . 通过研究软件从业者在实践中如何优先考虑 TD 项目,Yli-Huumo 等人。 [SP14]、[SP16] 得出的结论是,他们的优先级划分方法通常侧重于可扩展性、业务价值、功能的使用和客户效应。

狙击手等人。 [SP7] 提出了一种 TD 优先级排序方法,该方法包括多种因素,例如严重性、是否存在变通方法、客户要求重构的紧迫性、重构工作量、建议重构的风险以及所需的测试范围 .

Schmid [SP8] 区分了潜在 TD 和有效 TD,其中潜在 TD 是任何类型的次优软件系统,而有效 TD 是指软件系统中使该系统的进一步开发更加困难的问题。 这种优先级划分方法考虑了诸如进化成本、重构成本以及预测的进化路径将实现的概率等方面。

此外,Almeida 等人。 [SP43] 建议在对 TD 进行优先排序时也关注业务目标,以支持业务期望和目标。 研究人员比较了技术优先级和面向业务的优先级之间的差异,他们表示,他们的结果表明“考虑业务优先级可以改变与技术债务优先级相关的决策”。 这个优先级方面也被描述为便于从技术方面进行论证,从而说服业务利益相关者优先考虑以前被认为是纯技术问题的问题。

Martini 和 Bosch

来源:衣带渐宽人憔悴

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月6日
下一篇 2022年1月6日

相关推荐