摘要 随着计算机技术的不断发展,水文分析计算和水资源、水环境决策信息系统越来越依赖于计算机程序的编写和软件的二次开发。但是,这些程序的可靠性却值得进一步商榷。通过对软件故障特性的分析,论述了程序结构和软件可靠性之间的关系。同时给出了良好的程序结构的准则和基本的实现办法。
关键词:软件故障 可靠性 程序结构 软件测试
1 引言
随着计算机软件技术在水文、水资源、水环境方面的发展和软件重要性的加强,软件的可靠性对整个系统可靠性的影响越来越大[1]。可靠性研究概括起来一是如何设计一个可靠的软件,二是怎样测试验证软件的可靠性。在这些工作中,良好的程序结构是问题的关键。本文主要说明程序结构对软件可靠性设计和软件可靠性验证等方面所产生的影响。
2 软件技术特性
2.1软件故障的不变性
在保持源程序设计、测试的特定环境不变的情况下,反复运行,其软件故障现象不会改变。只有在使用的环境改变时,才可能有变化[2]。
一个没有软件错误的软件,一旦交付使用,就不会因疲劳而发生软件故障。
2.2软件故障对输入环境的敏感性
软件中存在的错误要在一定条件下才能反映出来。事实上,软件的执行过程是程序各路径的逻辑组合过程,不同的输入环境将会得到不同的组合形式。某条路径中的错误只有在这条路径被执行后才能对系统产生影响。反过来讲,一个软件运行正常,不能作为它没有软件错误的依据。
2.3 软件故障对人为因素和应用的依赖性
软件系统的输入域一方面要按人的要求来决定,而且每次的输入往往同以前的输入结果有关;另一方面与应用系统有关,不同的应用对象会有不同的输入域。因此,软件的故障往往与人的要求和应用的对象有着密切的联系。这种依赖性使软件的输入域变得非常大而且存在某些不确定性,很难用一个完善的检查安装方法来证实软件系统的不确定性。
2.4软件正确性测度和验证的不完备性
设F是软件中所有可能存在的故障集合,F0是某一测试或验证系统MP所能检查验证出的故障集(也就是如果软件中任何一个故障 ,则MP系统都能找出一条程序执行的路径S0,它使 呈现),如果F=F0,则MP是完备的,MP可以完全证明软件的正确性。但至今还没有找到这样的MP系统。这就是说,F0只是F的一个真子集,即所谓的不完备性。这种情况使许多大型软件中难免存在错误[3]。
