可靠性是重要的软件质量特性之一。IEEE将软件可靠性定义为: 在规定的条件下和规定的时间内,软件不引起系统失效的能力 。该能力的概率表示就是软件可靠度,即系统输入和使用的函数。系统输入以确定是否触发软件错误,软件可靠度是软件固有错误的函数。
规定的条件是指系统所处环境条件、负荷大小及运行方式。环境条件包括软件运行、储存等软硬件环境、数据环境及其输入分布。软件运行一次所需要的输入数据构成输入空间的一个元素,该元素是一个多维向量,全体输入向量集合构成软件的输入空间。输出数据构成一个输出向量,全部输出向量集合构成输出空间。在软件运行过程中,输入空间元素及每个元素被选用的概率构成运行剖面。软件可靠性与规定的时间密切相关,在不同时间内,系统将呈现出不同的可靠性。规定的功能是指软件具备的功能,即所能提供的服务。用 表示规定的条件, t 表示规定的时间,随机变量 表示软件从运行开始到失效所经历的时间。那么,软件可靠度为
(2-2)
软件是从输入空间到输出空间的映射,软件失效是由于未将某些输入映射到期望的输出所致,是逻辑错误、系统退化、外部环境、输入错误等因素或其组合诱发,并非像硬件那样因为老化、磨损、耗散等原因所致,机理复杂。软件可靠性的概率性质主要体现在输入选择上。假设输入空间上共有 个输入,则可以引入一个执行变量 Y ( i ) :
对于特定的软件系统, 是输入 i 时软件运行正确的概率。在这一特定应用中的一次输入导致软件运行正常的概率为
(2-3)
因此有
(2-4)
式中, n 是时间区间 内软件系统运行的总次数。
以上描述似乎从本质上反映了软件可靠性定义的概率性质。事实上,输入空间 I 的大小即使不是无穷大,也可能十分庞大,在某一特定应用中确定 ,可能非常困难。对于确定的软件系统,这种定义并无实际意义。一种有效的方法是将基于运行的软件可靠性定义描述为:假设在一特定应用中,软件系统实际运行次数为 , c n 表示在这 次运行中正确运行的次数,则 表示一次运行正确的概率。于是有
(2-5)
导致软件失效的原因及机理非常复杂,至今还难以甚至无法事先判定软件的错误性质以及错误引入时间、错误引入部位,难以准确确定软件的运行状态和执行路径,且软件失效的外部表象具有明显的随机性。对于随机事件的变化规律,基于概率描述,是一种有效的方法,也是一种必然的选择。硬件系统尤其是电子装备系统,其可靠性分析评估技术已臻成熟,得以广泛应用。创立一套与系统可靠性相兼容的软件可靠性理论和方法,是软件可靠性分析的基础。上述定义恰到好处地反映了系统可靠性综合与分析的要求,这种引申和扩展是十分自然的。