软件工作量估算与开源软件质量提升
软件工作量估算研究探讨
研究问题解答
在软件相关研究中,不同期刊和会议在系统文献综述(SLR)的发表上表现各异。IEEE 发表了四项研究,系统与软件期刊发表了三项,信息与软件技术期刊发表了两项。不过,后续对信息与软件技术期刊论文的搜索又发现了七篇 SLR,而对软件工程汇刊(TSE)出版物的相同搜索则没有结果。ACM 计算机调查中与软件工程相关的软件研究较少,这可能是由于该期刊每年仅出版四期,存在出版滞后的问题。
研究类型分析
在研究主题方面,八篇论文侧重于研究模式,而非单个研究问题。软件工程领域的 SLR 主要涉及以下主题:
- 七篇与软件工作量估算相关。
- 三篇关于软件工程实验及研究趋势。
- 三篇关于测试方法。
此外,研究人员还关注以下具体问题:
- 软件项目的当前水平及其随时间的变化。
- 基于回归的模型是否比基于类比的模型更准确(对于专注于专业应用的小企业而言并非如此)。
- 研究人员是否始终如一地恰当使用工作量估算术语。
- 何时适合依赖专家意见估算。
- 测试研究探讨了测试是否比检查更可取。
研究领导者
许多项目涉及亚洲和欧洲的研究人员,挪威的 Simula 研究实验室参与了其中十项。Przemysaw Pospieszny 和 Natalie Stephenson 两位研究人员参与了两篇以上的 SLR,且长期从事相关研究。北美作者仅参与了两项研究。许多广泛的工作量估算研究发表在同行评审期刊上,大量研究基于七十多篇关于工作量估算的论文数据库以及一百多个软件工程实验数据库,这使学者们能够研究特定的软件工程实验研究模式和趋势。
研究数据统计
以下是 2010 年至 2021 年(截至 2021 年 1 月的文章)不同来源的相关数据统计:
| Year | IST(T) | IST(R) | IST(S) | ISS(T) | ISS(R) | ISS(S) | IJESA(T) | IJESA(R) | IJESA(S) | CSIT(T) | CSIT(R) | CSIT(S) | CEE(T) | CEE(R) | CEE(S) | CDM(T) | CDM(R) | CDM(S) | CSR(T) | CSR(R) | CSR(S) | HPCA(T) | HPCA(R) | HPCA(S) | Total | Total(R) | Total(S) |
| — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
| 2010 | 25 | 4 | 6 | 2 | 3 | 1 | 25 | 4 | 6 | 25 | 4 | 6 | 25 | 12 | 13 | 10 | 4 | 6 | 25 | 8 | 5 | 3 | 2 | 2 | 178 | 53 | 18 |
| 2011 | 24 | 4 | 6 | 3 | 4 | 2 | 24 | 4 | 6 | 24 | 4 | 6 | 24 | 12 | 12 | 9 | 5 | 4 | 24 | 9 | 6 | 3 | 2 | 1 | 154 | 13 | 14 |
| 2012 | 13 | 4 | 6 | 3 | 6 | 1 | 13 | 4 | 6 | 13 | - | 6 | - | - | - | 9 | 6 | 3 | 14 | 9 | 7 | 3 | 2 | 1 | 145 | 14 | 14 |
| 2013 | 14 | 4 | 6 | - | 5 | 2 | 14 | 4 | 6 | 14 | - | 6 | - | - | - | 8 | 4 | 4 | 16 | 9 | 8 | 2 | 2 | 1 | 121 | 29 | 10 |
| 2014 | 14 | 4 | 6 | 3 | 4 | 1 | 14 | 4 | 6 | 14 | 4 | 6 | - | - | - | 9 | 4 | 3 | 19 | 9 | 9 | 3 | - | 1 | 122 | 27 | 10 |
| 2015 | 20 | 4 | 6 | 3 | 4 | 2 | 20 | 4 | 6 | 20 | 6 | 6 | - | - | - | 9 | 4 | 5 | 18 | 9 | 4 | 2 | - | - | 101 | 30 | 18 |
| 2016 | 14 | 4 | 4 | 3 | 6 | 2 | 14 | 4 | 4 | 14 | 4 | 4 | - | - | - | 9 | 4 | 4 | 20 | 9 | 5 | 2 | - | - | 100 | 33 | 11 |
| 2017 | 19 | 4 | 4 | 4 | 5 | 1 | 19 | 4 | 4 | 19 | 4 | 4 | - | - | - | 9 | 4 | 5 | 20 | 9 | 6 | 3 | - | - | 98 | 33 | 10 |
| 2018 | 12 | 4 | 6 | 4 | 4 | 2 | 12 | 4 | 6 | 12 | 4 | 6 | - | - | - | 10 | 4 | 3 | 20 | 9 | 5 | 3 | - | - | 97 | 30 | 14 |
| 2019 | 13 | 4 | 6 | 5 | 3 | 1 | 13 | 4 | 6 | 13 | 4 | 6 | - | - | 10 | 9 | 4 | 2 | 20 | 9 | 5 | 2 | - | - | 95 | 33 | 14 |
| 2020 | 16 | 4 | 6 | 3 | 3 | 2 | 16 | 4 | 6 | 16 | 4 | 6 | 20 | 10 | 9 | 9 | 4 | 2 | 20 | 9 | 5 | 3 | 2 | - | 76 | 31 | 15 |
| 2021 | 20 | 4 | 6 | 2 | 2 | 1 | 20 | 4 | 6 | 20 | 4 | 6 | 19 | 10 | - | 9 | 4 | 2 | 20 | 9 | 5 | 2 | 1 | - | 56 | 31 | 15 |
研究局限性
本研究在许多方面的方法与 Kitchen ham 指南中的建议不同。研究人员没有使用自动搜索,而是手动搜索了少量出版物和会议记录,这与其他学者关注研究趋势而非软件技术评估的习惯一致。
- 潜在研究由一名研究人员选择,另一名研究人员对纳入和排除的论文进行了二次检查。
- 数据由一名研究人员提取,另一名研究人员进行了二次检查和交叉验证。
由于手动搜索,可能忽略了一些相关研究,导致研究范围被低估,尤其是国家期刊和会议记录中的文章以及特定软件工程会议上的论文。不过,由于三级研究中的原始研究较少,且从选定出版物中收集的数据非常客观,预计数据提取问题不大。
研究结论
研究对 45 项选定研究的准确性进行了评估,其中 27 项采用集成方法,18 项采用单独方法,并使用 MMRE 和 PRED 等多种技术进行分析。研究发现,在科学文献中,单独方法和集成方法都用于工作量计算,但机器学习集成方法在准确性方面表现更优。集成技术表现出色的主要原因是,它采用了一套合适的集成规则和技术来计算工作量估算,而非单独使用各种技术。
未来研究方向
研究结果为未来研究提供了多个方向。研究成本和工作量等因素对各种工作量估算模型准确性的影响将是一个有趣的研究方向。在敏捷软件开发环境中预测完成项目所需的工时,在一定程度上取决于开发团队在预算和时间方面的一致性。未来可以研究多种软件开发方法中使用单独、集成或混合技术进行工作量估算的准确性。此外,通过结合算法和非算法方法,更好地理解和研究如何改进基于集成模型的工作量估算也是一个重要的发展方向。
开源软件质量提升策略
软件维护概述
软件维护是一个复杂的过程,贯穿软件产品的各个阶段。软件开发者希望推出在各阶段都易于维护的软件。根据相关标准,软件维护可分为以下四种类型:
-
适应性维护
:交付后对软件产品进行修改,以使其在变化的环境中保持可用。
-
纠正性维护
:交付后对软件产品进行反应性修改,以纠正发现的问题。
-
完善性维护
:交付后对软件产品进行修改,以在潜在故障表现为失败之前检测和纠正它们。
-
预防性维护
:交付后对软件产品进行修改,以在潜在故障成为操作故障之前检测和纠正它们。
重构与代码异味
维护过程通常与软件指标相关,一种有效的维护方式是重构。重构的主要目的是提高代码的理解性、性能和可维护性,类似于预防性维护。在重构过程中,程序功能保持不变,但可能会对代码进行复杂的更改,例如添加或删除特定代码模块。
代码异味是指代码中布局不佳和编程选择不当的迹象,对软件可维护性有显著影响。软件开发人员由于对编程理解不足和缺乏经验,在解决特定问题时会引入不良代码异味。研究界已识别出二十多种代码异味,用于进行重构。软件指标可以有效预测软件系统中的代码异味,通过开发各种代码异味预测模型,有助于软件维护。
基于深度学习的代码异味预测
本研究旨在开发基于指标的代码异味预测模型,以提高软件质量保证。研究以 Eclipse 这个基于 Java 的开源应用程序为对象,采用深度学习的神经网络技术建立代码异味与指标之间的关联。具体步骤如下:
1. 对代码异味和指标集进行统计分析,以找出两者之间的联系。
2. 针对 Eclipse 的四个版本开发多层感知器模型。
3. 为类和方法级别的代码异味生成曲线下面积(ROC)。
ROC 值表明,神经网络多层感知器模型在根据软件指标确定 Eclipse 中代码异味的存在方面表现良好。因此,基于软件指标的代码异味预测模型能够有效地预测有异味的类。该研究对软件开发社区定位重构区域和提供测试资源具有重要意义,实证研究结果也为开发社区提供了有关代码异味及其类型的信息。
代码异味检测策略
过去,研究人员采用了不同的代码异味检测策略,主要包括以下几种:
-
手动检测方法
:手动揭示代码异味,如 Allen 和 Garlan、Travassos 等人的研究。但这种方法耗时费力,需要对每种代码异味有深入了解。
-
可视化策略
:使用工具以可视化方式或特定领域语言输出结果,如 Baudry 等人的研究。然而,该方法需要人工干预进行最终问题选择和重构区域确定,对于大型应用程序管理复杂。
-
半自动方法
:使用半自动工具揭示代码异味并进行重构。
这些策略各有优缺点,软件开发人员可根据具体情况选择合适的方法来提高软件质量。
不同代码异味检测策略对比
为了更清晰地了解各种代码异味检测策略,下面通过表格对它们的特点进行对比:
| 检测策略 | 优点 | 缺点 | 适用场景 |
| — | — | — | — |
| 手动检测方法 | 对代码异味理解深入,可根据具体情况灵活判断 | 耗时费力,需要专业知识,检测效率低 | 代码规模较小、对代码异味有深入研究需求的场景 |
| 可视化策略 | 结果直观,易于理解 | 需要人工干预,对大型应用程序管理复杂 | 希望快速直观了解代码异味分布情况的场景 |
| 半自动方法 | 结合了一定的自动化,提高了检测效率 | 可能存在自动化工具的局限性 | 代码规模较大,需要提高检测效率的场景 |
代码异味检测策略选择流程图
graph TD
A[开始] --> B{代码规模大小}
B -->|小| C{对代码异味研究需求}
C -->|深入| D[手动检测方法]
C -->|一般| E{是否需要直观结果}
E -->|是| F[可视化策略]
E -->|否| G[半自动方法]
B -->|大| H{是否需要人工干预}
H -->|是| F
H -->|否| G
提高软件质量的综合建议
为了有效提高软件质量,结合软件工作量估算和开源软件质量提升的研究,可以从以下几个方面入手:
1.
合理运用工作量估算方法
:在软件开发前期,根据项目特点选择合适的工作量估算方法。对于小型项目,可以采用单独方法进行估算;对于大型复杂项目,优先考虑机器学习集成方法,以提高估算的准确性。
2.
加强代码异味检测
:利用合适的代码异味检测策略,定期对代码进行检测。对于关键模块和频繁修改的代码,可采用多种检测策略相结合的方式,确保代码质量。
3.
持续进行软件维护
:按照软件维护的不同类型,制定合理的维护计划。在软件交付后,及时进行适应性、纠正性、完善性和预防性维护,确保软件在不同环境下的稳定性和可靠性。
4.
培养专业人才
:软件开发团队应注重培养既懂软件工作量估算又熟悉代码异味检测和软件维护的专业人才。通过培训和实践,提高团队整体的技术水平和质量意识。
案例分析:某开源项目的实践
以一个实际的开源项目为例,该项目在开发过程中采用了机器学习集成方法进行工作量估算,提高了项目进度的可控性。同时,运用半自动方法进行代码异味检测,及时发现并解决了代码中的潜在问题。在软件维护方面,制定了详细的维护计划,定期对软件进行更新和优化。通过这些措施,该项目的软件质量得到了显著提升,用户满意度也大幅提高。
总结
软件工作量估算和开源软件质量提升是软件开发过程中的重要环节。通过对不同研究问题的探讨、研究方法的分析以及检测策略的对比,我们可以更好地理解和应用相关技术,提高软件的质量和开发效率。在未来的软件开发中,应不断探索新的方法和技术,结合实际项目需求,制定合理的开发和维护策略,以适应不断变化的市场环境。同时,培养专业人才和加强团队协作也是提高软件质量的关键因素。希望本文的内容能够为软件开发人员和相关研究人员提供有益的参考和启示。
超级会员免费看
1199

被折叠的 条评论
为什么被折叠?



