软件系统对异常情况的处理能力属于“健壮性”的范畴。健壮性是指在异常情况下,软件能够正常运行的能力。
健壮性有两层含义:一是容错能力,二是恢复能力。容错是指发生异常情况时系统不出错误的能力,对于应用于航空航天、武器、金融等领域的这类高风险系统,容错设计非常重要。容错是非常健壮的意思,系统即使发生异常也不出问题。而恢复则是指软件发生错误后(不论死活)重新运行时,能否恢复到没有发生错误前的状态的能力。从语义上理解,恢复不及容错那么健壮。
例如,某人挨了坏蛋一顿拳脚,特别健壮的人一点事都没有,表示有容错能力;比较健壮的人,虽然被打倒在地,过了一会还能爬起来,除了皮肉之痛外倒也不用去医院,表示恢复能力比较强;而虚弱的人可能短期恢复不过来,得在病床上躺很久。
对用户来说,软件出错是不能容忍的,软件出错后还不能快速恢复是更不能容忍的。因此,提高软件的容错能力和恢复能力是软件供应商的义务。
对软件开发来说,不仅仅需要在编码的时候考虑到对异常情况的处理,在软件开发的整个过程中都需要考虑。在需求分析时,需要分析系统的健壮性需求,甚至对每一个功能需求也需要考虑对异常的处理。在概要设计、详细设计、编码的时候需要考虑如何满足系统的健壮性需求。在单元测试、集成测试、系统测试的时候需要有异常相关的测试用例,并且需要加强对异常情况的测试。
现实中,软件开发对异常处理的重视度还不够,开发人员往往没有这个意识。我所在的组织就存在这样的问题。开发人员知道的最多的恐怕就是在函数实现的时候需要对异常情况进行错误返回,当然,这并没有错,只是这远远不够。比如,错误返回后上层函数是否对错误进行处理,整个系统是否能够处理出现的异常,这往往就没有考虑,甚至有的可能有的认为这不是自己模块的责任。
软件开发人员对可能发生的异常情况不了解也是不重视的原因之一。调查分析在线运行的系统曾经发生过的错误是了解异常的途径之一。
对于非纯软件系统来说,软件系统对硬件系统可能出现的异常也需要进行考虑。对不可恢复的硬件问题,软件至少需要能够上报告警,通知用户更换硬件。如果设备除了问题,连软硬件问题都分不清的话,用户恐怕对软件系统也不会有好感。
总之,在软件开发过程中,需要重视软件的健壮性,加强软件对异常情况的处理,提高软件系统甚至整个设备系统的健壮性。

转载于:https://blog.51cto.com/huiwh/183847

软件开发需要重视对异常的处理相关推荐

  1. 管控软件开发进度 4大关键项需要重视

            1.定期跟踪和比较项目进度与计划的出入 在软件开发过程中,我们需要定期跟踪软件开发执行情况,并与开发计划进行比较,以衡量项目进度的健康程度.并对项目进行快速评估,这样有助于尽早发现问题 ...

  2. 说说软件开发这个职业

    有时,一个问题的真正价值并不在于找到答案,而在于通过考查这个问题引出其他或许更有价值的问题.另外,有时候发现一个无人问津的问题,也可能会帮助我们看到一些未被发现的机会,从而引出更深远.更有价值的发现. ...

  3. ios查看帧率的软件_程序员必看!直播软件开发弱网下保障高清流畅推流的方法...

    通常情况下程序员在开发直播软件时,优化卡顿和延迟是比较多的,只要是优化欠佳,就会导致前端APP运行出问题,为了帮助程序员在开发过程中能更加合理有效的优化,小编在这里从开发的层面简要介绍一下影响直播体验 ...

  4. 面试总结之MISC(操作系统,网络,数学,软件开发,测试,工具,系统设计,算法)...

    操作系统 解释堆和栈的区别. 分配在堆的内存与分配在堆栈的内存有什么不同 分配在堆的内存要手动去释放 线程与进程的区别 多线程中栈与堆是公有的还是私有的 在多线程环境下,每个线程拥有一个栈和一个程序计 ...

  5. [转] Agile Software Development 敏捷软件开发

    原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...

  6. 工作中使用到的单词(软件开发)_2022-02-26_备份

    ■原文 工作中使用到的单词(软件开发)_sun0322-CSDN博客 目录 ■常用链接 ■2020/03/15  (最初整理  242个单词) 2020 6/28 整理 2020 6/29 整理 20 ...

  7. 软件开发、软件设计培训笔记

    一.代码质量的提高培训笔记(2013.11.29): 部分内容摘自网络: 1.      struct:注意成员排列顺序. 2.      #pragma pack(1) :指定按1字节对齐. 3.  ...

  8. 软件开发随笔系列一——分布式架构实现

    软件开发随笔系列一--分布式架构实现 文章目录 软件开发随笔系列一--分布式架构实现 理论基础 分布式架构的实现 内核框架 应用开发 基础设施 服务接入 监控 日志监控 调用链监控 度量指标监控 健康 ...

  9. *Java软件开发面试知识整理*

    Java软件开发面试知识整理 围绕以下几点回答问题:是什么.为什么.什么时候用.项目实现.解决什么问题.遇到的困难 谈谈你对Java和C的理解? Java: 面向对象.Unicode:可以跨平台(JV ...

最新文章

  1. python底层代码里面的参数_梯度下降算法讲解及python底层实现
  2. lua自动化脚本关于文本读写和特殊不可见字符转换的处理
  3. 企业微信小程序_集成微信小程序插件_地图选点插件
  4. 时间序列趋势判断(二)——Cox-Staut趋势检验
  5. CSS3实现8种Loading效果【第二波】
  6. 查看 java heapspace_Java heap space 问题查找
  7. jQuery控制checkbox选中状态但是不显示选中
  8. Home_W的位运算(位运算+预处理)
  9. 阿里云keepalived的虚拟ip怎么让外网访问_Keepalived双机热备
  10. /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start‘: (.text+0x20
  11. 08CMS之开发模式设置
  12. Mybatis提高查询效率的方式
  13. php钓鱼网站怎么做视频教程,反黑钓鱼网站全过程
  14. Chrome 浏览器小恐龙游戏变身超级马利奥
  15. 信用卡分销系统如何获客
  16. 科普一下:1G, 2G, 3G,4G,5G历史发展和定义
  17. Android 图片压缩的几种方法
  18. 微信小程序开发——调用免费天气api接口(高德、天气API)
  19. php session fixation,Session Fixation 攻防实战
  20. 星际2中复刻DOTA白虎

热门文章

  1. Android开发系列之创建自定义控件
  2. ZXing二维码扫描添加个人总结
  3. 线程通信机制之定时器队列
  4. SQL:ISNULL
  5. Android Studio 使用Log
  6. Android—简单路由框架实践
  7. android usb多个,android、windows上多个USB Camera同时使用实验小结
  8. usb扩展坞同时接键盘鼠标_轻薄本的办公伴侣,ORICO十一合一扩展坞体验
  9. python format函数实例_python中强大的format函数实例详解
  10. git push origin master Connection timed out