软件开发中的可靠性工程 - 第一部分:可靠性简介
软件可靠性及其在当今世界的重要性
致读者
本文是系列文章的一部分,旨在帮助我们理解软件开发领域的可靠性工程 (RE)。换句话说,这一系列文章将侧重于软件可靠性,并对如何在软件开发周期中衡量和实现软件可靠性提供基本理解。
我已决定将本系列文章分为 4 部分,主题如下:
- 第 1 部分 - 可靠性简介
- 第 2 部分 - 软件可靠性中的挑战
- 第 3 部分 - 软件可靠性实践与理论
- 第 4 部分 - 结论和常见问题解答
本文是第一篇,将简要介绍可靠性的概念。在必要时,我会着重于软件方面的解释,但有些定义在与硬件相关时更容易理解。
为什么写这篇文章?
可靠性在工程领域是一个非常成熟的概念。但 RE 最初仅用于涉及组件或材料随时间磨损或老化的硬件部分。物理定律对材料随时间的环境应力和化学成分的影响在可靠性方面起着重要作用。
与传统的硬件可靠性相比,软件可靠性仍然是一个非常新兴的概念。本系列文章将帮助程序员(我更喜欢“开发人员”这个词)理解这个概念,并帮助他们进一步深入探索,如果这个话题引起了他们的兴趣。
可靠性 - 为什么这么重要?
在英语中,“Reliability”是一个非常常见的词,被不同的人在不同情境下使用。这个词通常以主观方式使用。
场景 1
引用经理:各位,我正在寻找一个可靠的工具来即时创建甘特图。
销售 A:试试“ABC 软件”,我听说它很可靠。
销售 B:我不确定。我认为它在 Windows 8 上不稳定。
销售 A:但它非常轻量级,可以从 U 盘运行。
销售 B:运行 45 分钟后就会崩溃。
……
……
……
经理:各位,这毫无进展。
在这种情况下,“可靠性”一词被用来主观地描述某个物品。这会导致模棱两可的假设,无法得出任何清晰的结论。此外,如果没有适当的定义,这也不利于比较两种产品。每个人对“可靠性”一词都有自己的理解。因此,为了进行精确的讨论,我们必须转向“可靠性”一词的客观定义。
场景 2:
引用经理:各位,我正在寻找一个可靠的工具来即时创建甘特图。
工程师 A:除非我知道您需要的 *具体功能*、*环境* 和操作的 *时间段*,否则我无法回答关于可靠性的问题。
在这种情况下,工程师试图确定各种参数(加粗的词语),以便给出明智的答案。他更关注环境、时间和具体功能。
牛津词典将 **可靠性** 描述为:
质量或性能持续良好;值得信赖
而 IEEE 将 ***可靠性** * 定义为:
在规定的条件下,某项在规定时间内无故障执行规定功能的概率
可靠性的定义包含四个关键组成部分:
- 概率。
- 规定功能。
- 规定条件
- 规定时间段。
任何关于可靠性的科学讨论,如果缺少以上四个组成部分,都是不完整的。可靠性始终是时间的函数,表示为 R(t)。因此,它可以定义为:
- 可靠性
- **R**(t) = 系统在特定操作环境中直到时间 t 都能正确运行的概率。
一个完整的系统由许多部件组成,这些部件可以是串联、并联或两者的组合。在我们的讨论中,我们将仅限于串联系统。对于串联系统,系统的可靠性定义为:
RSystem(t) = [R1(t)] × [R2(t)] × . . . × [Rn(t)]。
系统的可靠性将低于任何子系统的可靠性。
RSystem(t) < Ri(t)。
假设一个系统由 3 个串联部件组成。每个子系统在时间 t 的可靠性为:
R1(t) = 0.50
R2(t) = 0.60
R3(t) = 0.70
系统在任务时间 t 的可靠性为:
R(t) = (0.50)(0.60)(0.70) = **0.21**
基于这些信息,我将深入探讨软件可靠性。我们假设理想情况是:
软件可靠性的重要性
如前所述,可靠性的概念最初仅用于由硬件组成的系统。确定建筑中钢管的可靠性,如果我们知道它将承受的环境应力,那将是直观的。另一个例子是汽车的可靠性。大约 50 年前,当汽车仅由机械部件组成时,我们可以根据汽车设计中使用的各个机械部件来计算整车的可靠性。但在当今世界,汽车中软件扮演着至关重要的角色。如果我们排除软件部分,汽车的可靠性就没有意义了。如今,任何用于商业活动的系统都包含硬件和软件。
没有软件的可靠性数据,就无法确定整体系统的可靠性。
因此,任何公司确定其软件的可靠性程度都是势在必行的。给定软件系统的可靠性计算有点棘手,因为软件不遵循传统的物理特性。我们不能将机械部件上承受的正常应力应用于软件。问题就在这里。
目前,软件开发人员根据测试期间/产品发布后发现的 Bug 数量或类似指标来定义代码的质量。这不是确定软件可靠性的确切方法。此外,它也没有为提高软件可靠性提供任何前进的方向。因此,我们需要在软件开发周期中更进一步。这将在接下来的文章中讨论。
下一篇
在简要介绍了可靠性的概念后,我将在接下来的文章中详细阐述软件可靠性方面面临的挑战。我还会触及软件质量与可靠性之间的区别。
参考文献
- 《认证可靠性工程师手册》- Donald W. Benbow 和 Hugh W. Broome ISBN: 978-0-87389-721-1
- 电气和电子工程师协会 (1990) IEEE 标准计算机词典:IEEE 标准计算机术语汇编。纽约,NY ISBN 1-55937-079-3