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

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

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

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)

相关推荐

  • MySQL Explain的作用是什么

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

    攻略 2021年10月20日
  • 苹字怎么组词,“苹”字的组词及词组的意思

    技术苹字怎么组词,“苹”字的组词及词组的意思苹píng pēng 中文解释 英文翻译 苹的中文解释
    以下结果由汉典提供词典解释
    苹 píng
    部首笔画
    部首:艹 部外笔画:5 总笔画:8
    五笔86:

    生活 2021年10月31日
  • CSS学习笔记:定位属性position

    技术CSS学习笔记:定位属性position CSS学习笔记:定位属性position目录一、定位属性简介二、各属性值的具体功能1. relative2. absolute3. fixed三、三种定位属

    礼包 2021年11月4日
  • php数据类型的永久转换函数是哪个

    技术php数据类型的永久转换函数是哪个本篇内容主要讲解“php数据类型的永久转换函数是哪个”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数据类型的永久转换函数是哪个”吧

    攻略 2021年12月13日
  • 古典密码学——移位密码 Shift Cipher

    技术古典密码学——移位密码 Shift Cipher 古典密码学——移位密码 Shift Cipher移位密码的理论基础是数论中的模运算。模运算的基本定义:假设a和b均为整数,m是一正整数。若m整除a-

    礼包 2021年12月3日
  • docker安装部署redis用docker-compose启动设置密码

    技术docker安装部署redis用docker-compose启动设置密码 docker安装部署redis用docker-compose启动设置密码搜索镜像
    [root@localhost ~]# d

    礼包 2021年11月26日