程序错误分类

程序错误的分类

由于人对错误的理解不同,所以目前还没有一个统一的错误分类方法。错误难于分类的原因,一方面是错误有许多征兆,因而它可以归入到不同的类。另一方面是因为把一个给定的错误归哪一类,还与错误的来源和程序员 的心里状态有关。

1、按错误的影响和后果分类

较小错误、中等错误、较严重错误、严重错误、非常严重错误、最严重错误

  • 较小错误:只对系统输出有一些非实质性的影响。如:输出的数据格式不符合要求等。

  • 中等错误:对系统的运行有局部的影响。如:输出的某些数据有错误或出现冗余。

  • 较严重错误:系统的行为因错误的干扰而出现明显不符合情理的现象。如:开出了0.00元的支票,系统的输出完全不可信赖。

  • 严重错误:系统运行不可跟踪,一时不能掌握其规律时好时坏。

  • 非常严重错误:系统运行中突然停机,其原因不明,无法软启动。

  • 最严重错误:系统运行导致环境破坏,或是造成事故,引起生命、财产的损失。

2、按错误范围和性质分类

1.功能错误

规格说明错误、功能错误、测试错误、测试标准引起的错误

  • 规格说明错误:规格说明可能不完全,有二义性或自身矛盾。

  • 功能错误:程序实现的功能与用户要求的不一致。这常常是由于规格说明中包含错误的功能、多余的功能或遗漏的功能所致。

  • 测试错误:软件测试的设计与实施发生错误。软件测试自身也可能发生错误。

  • 测试标准引起的错误:对软件测试的标准要选择适当,若测试标准太复杂,则导致测试过程出错的可能就大。

2.系统错误分类

外部接口错误、内部接口错误、硬件结构错误、操作系统错误、软件结构错误、控制顺序错误、资源管理错误

  • 外部接口错误:外部接口指如终端、打印机、通信线路等系统与外部环境通信的手段。所有外部的接口之间,人与机器之间的通信都使用形式的或非形式的专门协议。如果协议有错,或太复杂,难以理解,致使在使用中出错。此外还包括对输入或输出格式理解错误,对输入数据不合理的容错等等。

  • 内部接口错误:内部接口指程序之间的关系。它所发生的错误与程序内实现的细节有关。例如:设计协议错、输入输出格式错、数据保护不可靠、子程序访问错等。

  • 硬件结构错误:这类错误在于不能正确的理解硬件如何工作。如:忽视或错误的理解分页机构、地址生成、通道容量、I/O指令、中断处理、设备初始化和启动等而导致的出错。

  • 操作系统错误:这类错误主要是由于不能正确的了解操作系统的工作机制而导致错误。当然,操作系统本身也有错误,但是一般用户很难发现这种错误。

  • 软件结构错误:由于软件结构不合理或不清晰而引起的错误。这种错误通常与系统的负载有关,而且往往在系统满载时才出现。这是一种很难发现的一类错误。例如:错误的设置局部参数或全局参数;错误的假定寄存器与存储器单元初始化了;错误的假定不会发生中断而导致不能封锁或开中断;错误的假定程序可以绕过数据的内部锁而导致不能关闭或打开内部锁;错误的假定被调用子程序常驻内存或非常驻内存等等,这些都将导致软件出错。

  • 控制顺序错误:这类错误包括:忽视了时间因素而破坏了事件的顺序;猜测事件出现在指定的序列中;等待一个不可能发生的条件;漏掉先决条件;规定错误的优先级或程序状态;漏掉处理步骤;存在错误的处理步骤或多余的处理步骤等。

  • 资源管理错误:这类错误是由于不正确的使用资源而产生的。例如:使用未经获准的资源;使用未释放的资源;资源死锁;把资源链接在错误的队列中等等。

3.加工错误

算术与操作错误、初始化错误、控制和次序错误、静态逻辑错误

  • 算术与操作错误:指在算术运算、函数求值和一般操作过程中发生的错误。包括:数据类型转换错误;除法溢出;错误的使用关系比较符;用整数与浮点数做比较等等。

  • 初始化错误:典型的错误有:忘记初始化工作区,忘记初始化寄存器和数据区;错误的对循环控制变量赋初始值;用不正确的格式,数据或类型进行初始化等等。

  • 控制和次序错误:这类错误与系统级同名错误类似,但它是局部错误。包括:遗漏路径;不可达到的代码;不符合语法的循环嵌套;循环返回和终止的条件不正确;漏掉处理步骤或处理步骤有错等等。

  • 静态逻辑错误:这类错误主要包括:不正确的使用CASE语句;在表达式中使用不正确的否定(如:用“>”代替“<”的否定);对情况不适当的芬姐与组合;混淆“或”与“异或”等等。

4.数据错误

动态数据错误、静态数据错误、数据内容错误、数据结构错误、数据属性错误

  • 动态数据错误:动态数据是在程序执行的过程中暂时存在的数据。各种不同类型的动态数据在程序执行期间将共享一个共同的存储区域,若程序启动是未对这个区域进行初始化,就会导致数据出错。由于动态数据被破坏的位置可能与出错的位置在距离上相差很远,因此发现这类错误比较困难。

  • 静态数据错误:静态数据在内容和格式上都是固定的。他们直接或间接的出现的程序或数据库中。由编译程序或其它专门程序对它们做预处理。这是在程序执行前防止静态错误的好办法,但预处理有时也会出错。

  • 数据内容错误:数据内容是指存储与存储单元或数据结构中的位串、字符串或数字。数据本身没有特定的含义,除非通过硬件或软件给予解释。数据内容错误就是由于内容被破坏或错误的解释而造成的错误。

  • 数据结构错误:数据结构错误指数据元素的大小和组织形式。在同一存储区域中可以定义不同的数据结构。数据结构错误主要包括结构说明错误及把一个数据结构误当做另一类数据结构使用的错误。这是更危险的错误。

  • 数据属性错误:数据属性是指数据内容的含义或语义。例如:整数、字符串、子程序等等。数据属性错误主要包括:对数据属性不正确的解释,比如错把整数当实数,允许不同类型数据混合运算而导致的错误等。

5.代码错误

主要包括:语法错误、打字错误、对语句或指令不正确理解产生的错误

3、按软件生存阶段分类

1.问题定义(需求分析)错误

他们是软件定义阶段分析员研究用户的要求后编写的文档中出现的错误。换句话说,这类错误是由于问题定义不满足用户的要求而导致的错误。

2.规格说明错误

这类错误是指规格说明与问题定义不一致所产生的。错误分为:不一致性错误、冗余性错误、不完整性错误、不可行错误、不可测试错误

不一致性错误:规格说明中功能说明和问题定义发生矛盾。

冗余性错误:规格说明中某些功能说明与问题定义相比是多余的。

不完整性错误:规格说明中缺少某些必要的功能说明。

不可性错误:规格说明中有些功能要求是不可行的。

不可测试错误:有些功能的测试要求是不现实的。

3.设计错误

这是在设计阶段产生的错误,它是系统设计与需求规格说明中的功能说明不相符。错误分为:设计不完全错误、算法错误、模块接口错误、控制逻辑错误、数据结构错误

设计不完全错误:某些功能没有设计或设计不完全

算法错误:算法选择不合适,主要表现为算法的基本功能不能满足功能需求或算法不可行或算法的效率不符合要求

模块接口错误:模块结构不合理;模块与外部数据库的界面不一致,模块之间的界面不一致。

控制逻辑错误:控制流程与规格说明不一致;控制结构不合理。

数据结构错误:数据设计不合理;与算法不匹配;数据结构不满足规格说明要求。

4.编码错误

编码过程中错误是多种多样的,大体可以分为以下几种:数据说明错误、数据使用错误、计算错误、比较错误、控制流错误、界面错误、输入或输出错误、以及其它错误。

最后:在不同的开发阶段,错误的类型和表现形式是不同的,故应当采取不同的方法和策略来进行检测。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值