论文部分内容阅读
随着科技的进步,软件已深入人类生活的各个层面。在人们享受着软件带来的快捷高效的好处时,软件质量引发的系统故障也越来越多。软件的可靠性在任何系统或者产品的质量因素中都占据着非常突出的地位。如何提高软件的可靠性就如同提高软件的生产率一样,是整个软件生存期必须始终关心和设法解决的问题。可靠性的计算依赖于计算模型和失效数据。模型的选取与软件运行环境有关,而失效数据和和软件测试有关。传统计算可靠性的方法中,当测试方法不同时,提取的软件失效数据是不相同的,导致不同方法计算的软件可靠性是不同的。这样得到的可靠性只是描述了在某项特定的环境下软件的可靠性,是静态的,并不能真正刻画软件的可靠性。本文提出一种新的用程序不变量来计算软件可靠性的方法。程序不变量是指程序在运行时保持不变的属性,刻画了程序的动态行为,体现了软件的整体行为,这样可使得计算的软件可靠性更准确。本文通过运行测试用例与软件系统,动态的提取程序不变量,然后获得失效数据,最后基于Nelson模型计算软件的可靠性。不同的测试方法得到的不变量可能不同,失效数据也可能不同,但对某个测试方法来说,由于不变量之间的相关性,由这些不变量可以合成程序的整体行为,从而由不同的测试方法合成的程序的行为是一样的。通过实验我们发现三种不同的测试方法:随机测试、基于分支覆盖的测试、基于分块覆盖测试方法,计算软件的可靠性基本上是相同。本文的贡献点:(1)用程序不变量计算软件可靠性,能刻画软件运行时的可靠性,计算结果会更准确,更接近实际运行的情况。(2)测试方法对软件可靠性计算的影响不大,对选取测试方法的要求降低。(3)通过不变量提取的失效数据,有利于评估软件的质量,监测和预测软件的运行情况,为我们提高软件质量提供了一种新的思路。