[个体软件过程]之缺陷管理--缺陷&缺陷查找技术

PSP学习(一)缺陷管理 即使有经验的程序员,一般开发7~10行源程序就会引入一个缺陷,一般在编译和测试阶段能发现和纠正大部分缺陷,但仍有许多缺陷留在最终产品中。 缺陷是指程序中存在的错误 为防止缺陷的引入,需要精通所用的程序设计语言,深入理解开发支持环境,掌握要开发的应用系统的类型等。 一般的软件组织要用一半以上的时间和精力来查找和修复缺陷,由于测试时间难以预计,产品缺陷常常是产生超支和延期的 阅读详情

第四章 缺陷管理

u      什么是缺陷

u      缺陷查找技术

u      代码复查

u      缺陷预测

4.1什么是缺陷

缺陷是指程序中存在的错误,例如语法错误、标点符号错误或者是一个不正确的程序语句,是任何影响程序完整而有效的满足用户要求的东西,是可以表示、描述和统计的客观事物。

       有人把缺陷称为Bug,这是不正确的。当成为Bug时,令人想到的是那些令人讨厌的小虫子,应该把它们拍死或者不予理睬。这会使一些重要的问题被视为琐碎小事,会养成一种错误的态度。缺陷并不像无足轻重的Bug,更像是定时炸弹。大家可能会觉得有些夸大其词,绝大部分细小的缺陷没有引起严重后果。然而不幸的是,很小一部分看起来无关紧要的缺陷却能引起严重问题。虽然现在缺陷对你来说还不是一个严重问题,但很快就会成为一个重要的问题。

       设计错误的复杂性和所导致的缺陷的影响没有之间关系,一些微小的编码错误却可能引起严重的系统问题。事实上,绝大多数软件缺陷都源于程序员的疏忽大意。

为了减小缺陷,就必须进行缺陷管理,研究已经引入的缺陷,确定引起这些缺陷的原因,并学会在将来如何避免重复同样的错误。

       缺陷分类。在分析缺陷时,将缺陷进行分类是有帮助的。通过缺陷分类,可以迅速找出哪一类缺陷的问题最大,然后集中精力预防和排除这一类缺陷,这就是缺陷管理的关键。把精力集中到最容易引起问题的几类缺陷上,一旦这几类缺陷得到控制,在进一步找到新的容易引起问题的几类缺陷上。表4.1是Chillarege和他的IBM研究院的工作成果。

       不要急于把10种类型的每一类细分出若干子类,直到你已经搜集到大量程序的缺陷数据。那时,才能够看出哪里需要更详细以及补充什么样的信息才是最有用的。

表4.1                                   缺陷分类

类型编号

类型名称

描述

10

文档

注释,信息

20

语法

拼写,标点符号,打字,指令格式

30

联编打包

变更管理,库,版本控制

40

赋值

说明,重名,作用域,限制

50

接口

过程调用和引用,输入输出,用户格式

60

检查

出错信息,不合适的检查

70

数据

结构,内容

80

函数

逻辑,指针,循环,递归,计算,函数缺陷

90

系统

配置,记时,内存

100

环境

设计,编译,测试,其他支持系统问题

备注:

 

 

       统计缺陷个数。采用缺陷记录日志,记录那些当你完成初始设计或编码后仍然留在产品中的缺陷。人们很容易对缺陷辩解,但是要管理好缺陷,就必须收集有关缺陷的准确数据。如果原谅缺陷,那只会自欺欺人。如果你这样做的话,就别指望有所提高。

表4.2                                    缺陷记录日志

日期

编号

类型

引入阶段

排除阶段

更改时间

修复缺陷

 

 

 

 

 

 

 

描述:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2缺陷查找技术

为什么要尽早发现缺陷。不要期望一个简单拼凑出来的满是缺陷的程序,经过修改可以成为一个合格的产品。一旦生产出一个有缺陷的程序,它将永远是有缺陷的。虽然你可以修复所有已知的问题,并且让它通过所有的测试,但它还是一个有许多不定的有缺陷的程序。如果工程师能宽容有缺陷的工作,他将生产出低质量的产品。“我们忙,以后在修补吧”,这样的态度不可能出产出优质产品。

发现和修复缺陷的费用。在典型项目中,产品被分成很多小的模块,由不通的工程师负责开发。在模块设计、实现、编译后,工程师作初始的单元测试;单元测试后,多个模块组成一些大组件进行集成测试;经过各种级别的组件测试后,这些组件集成为产品进行产品设计;最后,将产品集成到系统中进行系统测试。随着系统的规模和复杂程度不同,单元测试、集成测试、组件测试、产品测试、系统测试的类型、持续时间、复杂程度有所不同,但几乎所有规模的软件产品,都需要这个过程。

研究证明,开发过程每前进一步,发现和修复缺陷的平均代价要增长10倍。尽管缺陷的修复时间变化很大,但平均时间总是遵循这样的规律,而与缺陷的类型无关。

发现和修复缺陷的方法。尽管没有办法不引入缺陷,但是在开发过程中尽早发现和修复缺陷还是可能的。有多种发现程序中的缺陷的方法,基本上都包括以下步骤:表示缺陷征兆;从征兆中推断出缺陷的位置;确定程序中的错误;决定如何修复缺陷;修复缺陷;验证这个修复是否已经解决了这个问题。

有多种工具和辅助手段来帮助完成这些步骤,工程师最常用的工具是编译器,它能够表示出大部分语法缺陷。但是编译器最基本的任务是生成目标代码,并且可能会在源程序有缺陷的情况下生成代码。因此,不能检查出所有的拼写、标点符号或其他不符合语法的缺陷。一般编译器仅提供了缺陷的征兆,你必须自己对问题定位,并确定是什么问题,通常很快能够做到这一点,但偶尔也需要较长的时间

另外一种常用方法就是上面讲述的测试。测试的质量是由测试用例覆盖所有程序功能的程度决定的。测试可以用来验证程序几乎所有的功能,但有自己的缺点:同编译器一样只能满足缺陷派出的第一个步骤,你仍必须从缺陷征兆找出问题的根源,然后才能修复;随着项目规模的扩大,全面的测试会花费大量的时间,要进行完全测试几乎不可能的。

最有效的发现和修复缺陷的方法是个人复查源程序清单。这种方法是负很难彻底清除程序中的缺陷,但事实证明,这是最快而且最有效的方法。

BSW: Dcm模块配置--28服务 这个章节讲解下UDS中的28服务(Communcation Control)的配置,顾名思义,对当前ECU的通讯状态进行变更,主要设置应用报文,网络管理报文的收发控制,通常应用在刷写APP软件时,降低总线负载。这里首先要提醒的一点是,28服务几乎不需要手写代码,只有在客户需求要求前置条件不满足时报特定NRC时才需要填充代码。实际配置中主要涉及的模块有DCM,BSWM,ComM,RTE.2.BswM模块的配置。3.ComM模块的配置。1.DCM模块的配置。 阅读详情

相关推荐

等离子体密度诊断集

在实验上不仅要对带电粒子的分布和运动状态进行诊断,如电子温度、电子密度、电离温度等参数,还需要对等离子体中的中性粒子进行必要的实验测量,来获得有关物种的产生、能量分布以及各个激发态布居数分布等信息,如气体温度、转动温度、振动温度、激发温度等参数。

in546的博客 1351

Bug6大必杀技,你修炼了几种?

Bug6大必杀技

CoCode888的博客 652

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程

本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。

weixin_27013291的博客 261

[个体软件过程]之缺陷管理--编码标准

4.3代码复查编码标准。编码标准是被广泛接受的、能够作为工作样板的编码实践集。良好的编码标准将有效地帮助您避免开发有潜在危险的代码,有助于预防缺陷。例如,可以在编码标准中列出那些应该避免使用的方法,规定号循环入口或在说明是初始化变量,避免不良的变量命名等。编码标准还能有效地统一和规范整体开发活动。当其他开发人员加入到项目中来时,他们能够很好地适应这一切。代码也将变得更规范更易维护。表4

treewith的专栏 1339

Unity URP热扭曲效果实战:如何让半透明物体也‘动’起来(附完整Shader代码)

本文深入解析Unity URP管线中热扭曲效果无法影响半透明物体的核心原因,并提供一套完整的实战解决方案。通过编写自定义Shader,并巧妙利用URP的Render Objects渲染器功能,成功让指定半透明物体(如粒子特效)也能被扭曲效果影响,从而制作出火焰、热浪等更具视觉冲击力的特效。文末附有完整的Shader代码与进阶优化技巧。

pz890123的博客 501

骗分导论 CSP、NOIP、蓝桥杯、PAT、USACO等竞赛的算法骗分技巧 轻松省三

问题来了,那么多座桥,炸一座就破坏岛屿的联系,可能性微乎其微(除非特别设计数据)。它们的价值极大,不仅能初步帮你检验程序的对错,而且,如果你不会做这道题,你就可以直接输出样例!在OI考试中最后难的题数据最后的几个,他们往往不会创造新的数据,此时就可以直接输出最后几个数据了。需要运用《骗分导论》第3章中学到的知识,先写出朴素算法,然后造一些数据,可能就会发现规律。有些时候,问题的答案可能很有特点:对于大多数情况,答案是一样的。据说,在NOIP2013中,有人最后一题不会,愤然打了个随机数,结果得了。

星卯教育-信奥教练tony 6404

opencv 学习(4)缺陷弧的查找

我不知道我写的这个程序是否符合查找缺陷的要求,但是,作为入门,我还是将它放上来。如有错误,还请指出,本人学生,水平有限。https://download.youkuaiyun.com/download/yyk219/10700961 首先,缺陷弧的查找,主要工作就是把弧提取出来,然后在进行相关操作来描述它是缺陷还是完美。我的结果是这样的::   void YK_R_R(vector<ve...

yyk219的博客 3149

多普勒效应及多普勒频移的简单推导

多普勒频移的简单推导

m0_47867419的博客 3万+

缺陷查找攻略大法

1.输入非法数据 输入数据的类型、长度、边界值;还要留意错误信息本身。 基本数据类型的边界值 2.输入默认值 从选项按钮、配置面板等处去考察。 3.输入特殊字符集 根据被测软件的具体情况输入非法字符。 多了解ASCII 字符集、程序设计语言和OS中的保留字符串及其特定含义。 4.输入使缓冲区溢出的数据 在需要接受字符串的地方输入一个比最大字符串更长的字符串。 黑客常

u012938881的专栏 769

YOLO26改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力YOLO26精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 193

大模型之Spring AI实战系列(二十一):Spring AI + MCP + 本地文件系统实战指南

在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过 Brave Search 实现了互联网搜索能力的接入。本文将继续深入 Spring AI 的 MCP 实战能力,介绍如何将 **本地文件系统** 封装为 LLM 可调用的工具

寻道AI,探索AI无限可能! 2519

软件测试之个体软件过程的缺陷管理

  缺陷的概念与影响   缺陷是指程序中存在的错误或不理想的设计。   即使有经验的程序员,一般开发10行左右源程序就会引入一个缺陷。通常在编译和测试阶段能发现和纠正大部分缺陷,但仍有许多缺陷留在最终产品中。   为防止缺陷的引入,需要精通所用的程序设计语言,深入理解开发支持环境,掌握要开发的应用系统的类型,并具有丰富的设计经验等。   一般的软件组织要用一半以上的时间和精力来查找和修复缺陷。由于测试时间难以预计,产品缺陷常常是产生超支和延期的主要原因。   当软件工程师对你说程序中仅剩几个BUG

duoceshi的博客 203

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

在 pooling 方法上,我们也尝试过不同层 pooling,或者在多层上增加 attention 聚合 BERT 多层结果,效果和最后一层所有 token 做 average pooling 相当。损失函数方面,在排序阶段使用pairwise比 pointwise 损失函数的效果会更好。

丨汀、的博客 1109

软件缺陷度量

1.什么是缺陷度量        缺陷度量是软件度量的一部分,其本身并不能发现缺陷、剔除缺陷,但是有助于这些问题的解决。另外,当正确、持续地进行了缺陷度量时,产品以及过程的质量属性的数据为实施和管理过程改进活动提供了有效的基础。        软件产品的质量度量,主要集中在软件的缺陷度量上。         缺陷度量就是对项目过程中产生的缺陷数据进行采集和量化,将分散的缺陷数据统

xiaomi9024的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

个体软件过程之缺陷管理

(本文基于网络资料,由“赵亮-碧海情天”重新进行组织和个别修正,使之更符合逻辑理解的顺序和更加严谨。)文章内容讲述:缺陷的概念与影响,缺陷管理方法,发现缺陷的多种方法及其比较,附带提供一些建议。

赵亮的博客专栏(theforever,碧海情天) 1047

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

个体软件工程

 个体软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建

hn2002的专栏 854

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[个体软件过程]之缺陷管理--代码复查

第四章 缺陷管理u      什么是缺陷u      缺陷查找技术u      代码复查u      缺陷预测4.3 代码复查代码复查就是研究源代码,并从中发现错误。代码复查更有效的原因是:在复查时看到的是问题本身而不是征兆。从头到尾复查代码时,考虑的是程序应该做什么。因此,当看到某些地方不正确时,就可以看到可能的问题是什么,并立即去验证代码。复查的缺点是:非常耗时,而且很

treewith的专栏 1928

PSP个人软件过程

个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体 的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品...

yangzibin的博客 3961

[个体软件过程]之缺陷管理--C++代码复查指南和检查表

第四章 缺陷管理u      什么是缺陷u      缺陷查找技术u      代码复查u      缺陷预测 4.3代码复查  表4.4                                   C++代码复查指南和检查表目的指导你进行有效的代码复查####累计累计%

treewith的专栏 1680

[Personal Software Process]个体软件过程

随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。目前,业界公认由CMU/SEI开发的软件能力成熟度模型SW-CMM是当前最好的软件过程,并且CMM已经成为事实上的软件过程工业标准。但是,CMM虽然提供了一个有力的软件过程改进框架,却只告诉我们“应该做什么”,而没有告诉我们“应该怎样做”,并未提供有关实现关键过程域所需要的具体知识和技能。为了弥补这个欠缺,H

treewith的专栏 2164

个人软件过程

  个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;

征途的专栏 695

个人软件过程(Personal Software Process)

     个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的

王洪伟的专栏 1万+

[个体软件过程]之缺陷管理--C++代码复查指南和检查表 (转)

[个体软件过程]之缺陷管理--C++代码复查指南和检查表 (转)[@more@]第四章 缺陷管理 u 什么是缺陷XML:namespace prefix = o ns = "urn:schemas-microsoft-com...

ciya3282的博客 372

PSP(個人軟件過程):時間-計劃-代碼自審-缺陷修正-堅持良性循升

前一段時間接觸到PSP(Personal Software Process:個人軟件過程)感覺對我們這些軟件開發人員的自我提升比較有幫助,所以就將其中的部分做了摘抄如下,希望能對大家有一些有益的啓發;第一章 软件工程师的任务第二章 时间管理第三章 时间跟踪第四章 阶段计划与产品计划第五章 产品计划第六章 产品规模第七章 管理好时间第八章 契约的管理第九章 进度管理第十章 项目计划第十一章 软件...

weixin_30767835的博客 76
上一篇: [个体软件过程]之制订计划--管理好时间
下一篇: [个体软件过程]之缺陷管理--代码复查
treewith
博客等级 码龄24年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值