总结软件缺陷的定义、分类、检测和修复

技术总结软件缺陷的定义、分类、检测和修复这篇文章主要介绍“总结软件缺陷的定义、分类、检测和修复”,在日常操作中,相信很多人在总结软件缺陷的定义、分类、检测和修复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法

本文主要介绍“软件缺陷的定义、分类、检测和修复概述”。在日常操作中,对于总结软件缺陷的定义、分类、检测和修复,相信很多人都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解决“总结软件缺陷的定义、分类、检测和修复”的疑惑!接下来,请和边肖一起学习!

00-1010计算机科学中的许多中文单词是从英语翻译过来的,有时它们不能准确地描述或描绘单词的真正含义。在软件领域,你能想到的与缺陷相关的词汇可能包括:bug、缺陷、故障、错误、失败、异常等等。说实话,我一直不明白这两个词的区别。然而,了解这些单词之间的差异不仅仅是一个文字游戏,还可以帮助我们了解检测和修复技术的差异。所以我谷歌了一下,但是大多数文章对这些词有不同的定义。以下是我同意的软件代码中这些词的定义。

middotFault/Bug:软件中出现不符合业务逻辑的代码,例如,编号写成-;

middot错误:软件运行中出现意外值,例如a的值为2,计算为3;

middot失败:软件与人的交互中出现意外行为,如程序崩溃。因此,故障可能导致错误,最终可能导致故障。请注意,这里是可能的,但不是确定的。

middot缺陷:一种缺陷是一种代码缺陷的总称(归纳),如内存泄漏。

故障通常需要从错误和失败中检测出来,也就是比较程序的执行结果是否与预期的规格一致。这个过程其实就是调试和测试。故障也可以称为与业务逻辑相关的缺陷。然而,缺陷是一个不依赖于执行结果和预期规格的软件问题,所以缺陷通常是通过静态扫描(不运行)代码来检测的。

00-1010从上面可以看出,故障是通过测试检测的,而缺陷是通过静态分析检测的。在企业中,故障检测的普及度和认可度通常高于缺陷检测,主要原因如下:

(1)故障会直接影响软件的行为,被认为是严重的问题,而很多default不能直接影响软件的行为,或者只影响软件在非常特殊的场景下的行为,开发者认为是可有可无的;

(2)2)Fault引起的软件错误容易被观察到,并且有直接证据表明软件中存在错误,所以开发人员会倾向于修改,而default通常很难观察到;

(3)测试的门槛较低,测试人员只需要编写一些测试脚本,但静态分析需要程序分析中技术的积累;

(4)静态分析的一些固有缺点(耗时、误报)引起开发人员的不满。

在自动修复方面,近年来在学术界比较流行,在企业也在慢慢使用,但目前应该还处于起步阶段。与检测相反,故障的自动修复是困难的,因为它涉及业务逻辑,有些逻辑需要手动添加。当然,最近许多学术研究都使用机器学习来自动学习故障的自动修复。然而,许多缺陷是在没有添加与业务逻辑相关的代码的情况下修复的,因此自动化程度可以达到更高的水平。但是,目前这方面还没有自动化工具。

软件缺陷与其分类

,不难发现Fault的检测已经成熟。然而,缺陷的检测并没有得到足够的重视。在过去,我们可能只关注软件的正确性,所以故障检测和修复是流行的,但是缺陷也会影响软件的质量,这也需要注意。

最近公司提倡提升软件工程能力,打造高可信的软件产品,其中也强调,我们不仅要关注软件功能的正确性,还要关注非功能方面的质量,写出“漂亮”的代码。因此,缺陷的自动检测和修复是一个有价值的方向。以下是一些可能要做的事情:

(1)加强对开发人员关于default的培训,让他们了解常见的缺陷,在编码的时候尽量避免写这类缺陷,这比后续检测修复付出的代价要小得多。虽然公司里有很多定义不同缺陷的编程规范,但开发人员可能不会仔细研究。如何让开发者意识到缺陷的危害至关重要。

(2)强化代码评审机制。这一点我个人深有体会:没有Review的时候,写的代码比较随意,有Review的时候,会综合考虑,毕竟要给别人看;

(3)自动检测3)缺陷。对于故障检测,人比机器好(比如写测试用例),但是对于缺陷检测,机器比人好(比如枚举程序路径),所以缺陷检测更适合自动化。目前,该公司还推出了一些缺陷自动检测工具,如coverity、fortify、findbugs等,但这些工具通常只作为黑盒使用。这可以覆盖更多的缺陷,但也带来了一些问题:同一缺陷实例被不同的工具重复报告,很难添加一些缺陷检测规则和处理缺陷异常场景。因此,我们可能需要一个统一的缺陷检测工具。

(4)自动修复4)缺陷。除了耗时和误报,缺陷检测也不受欢迎,因为开发人员不知道如何修复它。因此,缺陷的自动修复也是提高缺陷关注度的有效途径。此外,与断层的自我相比。

动修复,Defect的自动修复对于机器而言是要简单一些的,因为Defect的类别是有限的可以枚举的,同时Defect的性质是比较形式化不依赖于业务逻辑的。未来希望能开发出一个统一的Defect修复工具。

到此,关于“总结软件缺陷的定义、分类、检测和修复”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37468.html

(0)

相关推荐

  • 如何理解Java MeteoInfo解析与绘图代码教程

    技术如何理解Java MeteoInfo解析与绘图代码教程这篇文章主要讲解了“如何理解Java MeteoInfo解析与绘图代码教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究

    攻略 2021年10月21日
  • 圣诞节送女朋友什么礼物好,圣诞节送女朋友什么礼物好

    技术圣诞节送女朋友什么礼物好,圣诞节送女朋友什么礼物好很多朋友可能会觉得送一些时尚、劲爆的礼物会比较好,但其实流行因素在每个人心中的定位都是不一样的,小编认为,送最适宜对方的礼物就是最好的礼物。▲ 如何包装礼物,礼物包装

    生活 2021年10月24日
  • eclipse中的默认编码方式是什么(eclipse编码格式在哪里)

    技术eclipse编码方法是什么本篇内容介绍了“eclipse编码方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年12月23日
  • PostgreSQL MVCC源码的示例分析

    技术PostgreSQL MVCC源码的示例分析这篇文章主要为大家展示了“PostgreSQL MVCC源码的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Postg

    攻略 2021年11月26日
  • C# PowerPoint中如何添加、修改和删除动画

    技术C# PowerPoint中如何添加、修改和删除动画小编给大家分享一下C# PowerPoint中如何添加、修改和删除动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获

    攻略 2021年11月19日
  • springboot 发送邮件模板(springboot集成实现邮件发送功能)

    技术springboot如何整合邮件发送功能这篇文章给大家介绍springboot如何整合邮件发送功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 pom依赖

    攻略 2021年12月23日