没有错误的程序同永动机一样是不可能达到的。一般常用排错方法有试探法、追溯法、归纳法、演绎法。还要使用适当的排错工具,如UNIX提供的sdb和dbx编码排错工具,这些排错工具只有浏览功能,没有修改功能,是实际的找错工具。
6.容错设计
提高可靠性的技术一般可以分为两类,一类是避免故障,在开发过程中,尽可能不让差错和缺陷潜入软件,这类常用的技术有:
算法模型化,把可以保证正确实现需求规格的算法模型化。
模拟模型化,为了保证在确定的资源条件下的预测性能的发挥,使软件运行时间、内存使用量及控制执行模型化。
可靠性模型,使用可靠性模型,从差错发生频度出发,预测可靠性。
正确性证明,使用形式符号及数学归纳法等证明算法的正确性。
软件危险分析与故障树分析:从设计或编码的结构出发,追踪软件开发过程中潜入系统缺陷的原因。
分布接口需求规格说明:在设计的各阶段使用形式的接口需求规格说明,以便验证需求的分布接口实现可能性与完备性。
这些技术一般都需要比较深厚的数学理论知识和模型化技术。
另一类就是采用冗余思想的容错技术。
容错技术的基本思想是使软件内潜在的差错对可靠性的影响缩小控制到最低程度。
软件的容错从原理上可分为错误分析、破坏程度断定、错误恢复、错误处理四个阶段。
常用的软件容错技术有N-版本技术、恢复块技术、多备份技术等。
N-版本程序设计是依据相同规范要求独立设计N个功能相等的程序(即版本)。独立是指使用不同的算法,不同的设计语言,不同的测试技术,甚至不同的指令系统等。
恢复块技术是使用自动前向错误恢复的故障处理技术。
以上这些技术可参考有关文献,这里要说的是防错性程序设计,在程序中进行错误检查。被动的防错性技术是当到达检查点时,检查一个计算机程序的适当点的信息。主动的防错性技术是周期性地搜查整个程序或数据,或在空闲时间寻找不寻常的条件。采用防错性程序设计,是建立在程序员相信自己设计的软件中肯定有错误这一基础上的,有的程序员可能对此不大习惯,因为他可能太相信自己,相信自己的程序只有很少错误,甚至没有错误,作为一个项目管理员应该能说服他或者强制他采用这种技术,虽然在设计时要花费一定的时间,但这对提高可靠性很有用。
参考文献:
软件工程设计、可靠性和管理 M.C.舒曼 上海翻译出版服务公司,89版
计算机软件可靠性与质量管理 赵晓华编 中国经济出版社 92版
原文转自:http://www.uml.org.cn/rjzl/200612011.htm