软件开发需要重视对异常的处理
2009-07-27 13:09
309 查看
软件系统对异常情况的处理能力属于“健壮性”的范畴。健壮性是指在异常情况下,软件能够正常运行的能力。
健壮性有两层含义:一是容错能力,二是恢复能力。容错是指发生异常情况时系统不出错误的能力,对于应用于航空航天、武器、金融等领域的这类高风险系统,容错设计非常重要。容错是非常健壮的意思,系统即使发生异常也不出问题。而恢复则是指软件发生错误后(不论死活)重新运行时,能否恢复到没有发生错误前的状态的能力。从语义上理解,恢复不及容错那么健壮。
例如,某人挨了坏蛋一顿拳脚,特别健壮的人一点事都没有,表示有容错能力;比较健壮的人,虽然被打倒在地,过了一会还能爬起来,除了皮肉之痛外倒也不用去医院,表示恢复能力比较强;而虚弱的人可能短期恢复不过来,得在病床上躺很久。
对用户来说,软件出错是不能容忍的,软件出错后还不能快速恢复是更不能容忍的。因此,提高软件的容错能力和恢复能力是软件供应商的义务。
对软件开发来说,不仅仅需要在编码的时候考虑到对异常情况的处理,在软件开发的整个过程中都需要考虑。在需求分析时,需要分析系统的健壮性需求,甚至对每一个功能需求也需要考虑对异常的处理。在概要设计、详细设计、编码的时候需要考虑如何满足系统的健壮性需求。在单元测试、集成测试、系统测试的时候需要有异常相关的测试用例,并且需要加强对异常情况的测试。
现实中,软件开发对异常处理的重视度还不够,开发人员往往没有这个意识。我所在的组织就存在这样的问题。开发人员知道的最多的恐怕就是在函数实现的时候需要对异常情况进行错误返回,当然,这并没有错,只是这远远不够。比如,错误返回后上层函数是否对错误进行处理,整个系统是否能够处理出现的异常,这往往就没有考虑,甚至有的可能有的认为这不是自己模块的责任。
软件开发人员对可能发生的异常情况不了解也是不重视的原因之一。调查分析在线运行的系统曾经发生过的错误是了解异常的途径之一。
对于非纯软件系统来说,软件系统对硬件系统可能出现的异常也需要进行考虑。对不可恢复的硬件问题,软件至少需要能够上报告警,通知用户更换硬件。如果设备除了问题,连软硬件问题都分不清的话,用户恐怕对软件系统也不会有好感。
总之,在软件开发过程中,需要重视软件的健壮性,加强软件对异常情况的处理,提高软件系统甚至整个设备系统的健壮性。
健壮性有两层含义:一是容错能力,二是恢复能力。容错是指发生异常情况时系统不出错误的能力,对于应用于航空航天、武器、金融等领域的这类高风险系统,容错设计非常重要。容错是非常健壮的意思,系统即使发生异常也不出问题。而恢复则是指软件发生错误后(不论死活)重新运行时,能否恢复到没有发生错误前的状态的能力。从语义上理解,恢复不及容错那么健壮。
例如,某人挨了坏蛋一顿拳脚,特别健壮的人一点事都没有,表示有容错能力;比较健壮的人,虽然被打倒在地,过了一会还能爬起来,除了皮肉之痛外倒也不用去医院,表示恢复能力比较强;而虚弱的人可能短期恢复不过来,得在病床上躺很久。
对用户来说,软件出错是不能容忍的,软件出错后还不能快速恢复是更不能容忍的。因此,提高软件的容错能力和恢复能力是软件供应商的义务。
对软件开发来说,不仅仅需要在编码的时候考虑到对异常情况的处理,在软件开发的整个过程中都需要考虑。在需求分析时,需要分析系统的健壮性需求,甚至对每一个功能需求也需要考虑对异常的处理。在概要设计、详细设计、编码的时候需要考虑如何满足系统的健壮性需求。在单元测试、集成测试、系统测试的时候需要有异常相关的测试用例,并且需要加强对异常情况的测试。
现实中,软件开发对异常处理的重视度还不够,开发人员往往没有这个意识。我所在的组织就存在这样的问题。开发人员知道的最多的恐怕就是在函数实现的时候需要对异常情况进行错误返回,当然,这并没有错,只是这远远不够。比如,错误返回后上层函数是否对错误进行处理,整个系统是否能够处理出现的异常,这往往就没有考虑,甚至有的可能有的认为这不是自己模块的责任。
软件开发人员对可能发生的异常情况不了解也是不重视的原因之一。调查分析在线运行的系统曾经发生过的错误是了解异常的途径之一。
对于非纯软件系统来说,软件系统对硬件系统可能出现的异常也需要进行考虑。对不可恢复的硬件问题,软件至少需要能够上报告警,通知用户更换硬件。如果设备除了问题,连软硬件问题都分不清的话,用户恐怕对软件系统也不会有好感。
总之,在软件开发过程中,需要重视软件的健壮性,加强软件对异常情况的处理,提高软件系统甚至整个设备系统的健壮性。
相关文章推荐
- 让你提前认识软件开发(10):字符串处理函数及异常保护
- 【IOS 开发学习总结-OC-22】★objective-c——使用@try 处理异常
- APP开发流程实例讲解-儒释道网络电台八天开发全程-优化排错:增强稳定性和添加异常处理
- 大型MIS软件的开发必须重视数据库设计
- 应用软件系统割接、上线处理问题经验谈(非软件开发原因)
- 你需要这样给自己的软件开发定价了!
- 自然系统是分层的,软件项目的设计需要减少层的相干性来推动工作的规划。微软的开发平台还是做得不完善,至少aspx界面需要浪费大量的沟通才能设计好。
- (Spring Cloud微服务实战-书中之坑)spring cloud zuul统一处理业务异常,并且需要响应状态为200
- Linux平台下基于BitTorrent应用层协议的下载软件开发--消息处理模块(message.c)
- 软件开发需要激情与管理
- JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器
- TERSUS画画一样开发软件 显示相关处理元件介绍-用户行为元件
- 企业级软件开发需要什么样的框架?
- Android软件开发需要学什么
- Windows phone应用开发[17]-xap提交异常处理
- (转)【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
- ASP.NET项目开发中的异常处理
- Android软件开发需要学什么
- 开发软件所需要经历的阶段
- 没头没尾--项目开发笔记:异常处理与日志记录代码自动生成(工具能生成多少代码!?续一)