技术分享|软件可靠性设计-连载

Posted 威努特工控安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享|软件可靠性设计-连载相关的知识,希望对你有一定的参考价值。

一、概述

设备的可靠性被许多因素所影响,比如:硬件的稳定性、软件架构是否考虑了可靠性、测试的严格程度以及市场和时间的检验等等。

本文从软件可靠性设计方面,浅谈一下嵌入式软件如何进行可靠性设计,作为后续连载的第一部分,后续连载将通过一些实例讲解一下相关的技巧和方法。这里所说的嵌入式设备是指使用单片机、ARM架构、MIPS架构、Cortex-M0之类为核心的用于工控系统的设备。

嵌入式软件的可靠性设计一般分为防错、判错和容错三个方面。 此外,对自己所使用的编译器特性的理解也对软件可靠性有非常大的影响。   


二、软件可靠性的定义

软件可靠性 (software reliability )是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。

“软件可靠性”被明确定义是在1983年美国IEEE计算机学会上,此后该定义被美国标准化研究所接受为国家标准。1989年,我国GB/T-11457也采用了这个定义。该定义包括两方面的含义:

1.在规定的条件下,在规定的时间内,软件不引起系统失效的概率;

2.在规定的时间周期内,在所述条件下程序执行所要求的功能的能力;

其中的概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,系统输入将确定是否会遇到已存在的故障(如果故障存在的话)。


三、软件可靠性与硬件可靠性

软件可靠性不同于硬件可靠性,两者之间存在许多区别,主要有:

1.最明显的是硬件有老化损耗现象,硬件失效是物理故障,是器件物理变化的必然结果,硬件可靠性有明显的浴盆曲线现象;而软件不发生变化,没有磨损现象,没有陈旧落后的问题,所以也就没有浴盆曲线现象。

图 1 可靠性工程的浴盆曲线

2.硬件可靠性的决定因素是时间,受设计、生产、运用的所有过程影响,软件可靠性的决定因素是与输入数据有关的软件错误,是输入数据和程序内部状态的函数,更多地决定于人。

3.硬件的纠错维护可通过修复或更换失效的系统重新恢复功能,软件只有通过重新设计。

4.对硬件可采用预防性维护技术预防故障,采用断开失效部件的办法诊断故障,而软件则不能采用这些技术。

5.事先估计可靠性测试和可靠性的逐步增长等技术对软件和硬件有不同的意义。

6.为提高硬件可靠性可采用冗余技术,而同一软件的冗余不能提高可靠性。

7.硬件可靠性检验方法已建立,并已标准化且有一整套完整的理论,而软件可靠性验证方法仍未建立,更没有完整的理论体系。

8.硬件可靠性已有成熟的产品市场,而软件产品市场还很新。

9.软件错误是永恒的、可重现的,而一些瞬间的硬件错误可能会被误认为是软件错误。

总的说来,软件可靠性比硬件可靠性更难保证,即使是美国宇航局的软件系统,其可靠性仍比硬件可靠性低一个数量级。

技术分享|软件可靠性设计-连载(1)

图 2 美国宇航局

四、软件可靠性的影响因素

软件可靠性是关于软件能够满足需求功能的特性,软件不能满足需求是因为软件中的错误引起了软件故障。常见的软件错误有哪些呢?

软件错误是在软件整个开发的各个阶段引入的人为错误,主要包括:

1.需求阶段时需求分析定义错误。如用户提出的需求不完整,用户需求的变更未及时消化,软件开发者和用户对需求的理解不一致等等。

2.设计阶段错误。如定义的数据结构不合理和采用的算法错误,缺乏对特殊情况和错误的处理虑等。

3.编码错误。如语法错误(此类错误如果使用好的编译器,一般在编译阶段即可发现并解决,变量初始化错误,指针滥用等。

4.测试错误。如测试数据准备错误,测试用例设计错误等。

5.文档错误。如文档不齐全,文档相关内容不一致,文档版本不一致,缺乏完整性,使用手册描述错误等。

从软件开发整个生命周期的前期到后期,错误的影响是发散的,所以要尽量把错误消除在开发前期阶段,越到后期错误修改的成本就越高。

错误引入软件的方式可归纳为两种特性:程序代码特性,开发过程特性。

程序代码一个最直观的特性是长度,另外还有算法和语句结构等,程序代码越长,结构越复杂,其可靠性越难保证。

开发过程特性包括采用的工程技术和使用的工具,也包括开发者个人的业务经历水平等。

除了软件可靠性外,影响可靠性的另一个重要因素是健壮性,对非法输入的容错能力。

所以提高可靠性从原理上看就是要减少错误和提高健壮性。


五、工业防火墙可靠性简介

工业防火墙是威努特公司推出针对工控网络安全的系列产品,该产品采用业界领先的软、硬件体系架构。硬件上加入了双冗余电源、故障即放开、无风扇散热、宽温支持等设计;软件上采取低耦合高内聚架构,加入了各种防错、改错、容错和修复措施,使得产品可靠性远高于同类产品。

图 3 威努特工业防火墙

功能方面,工业防火墙采用的工控协议深度包解析技术不仅对链路层、网络层协议进行解析,更进一步解析到工控网络包的应用层,对OPC Classic 3.0、Modbus TCP/RTU、Siemens S7、Ethernet/IP(CIP)、IEC104、MMS、DNP3协议等进行深度分析,防止应用层协议被篡改或破坏。

威努特公司的工业防火墙产品帮助用户建立可信任的数采通信及可信任的工控网络区域间通信的模型,采用白名单的思想,过滤一切非法访问,只有可信任的流量可以在网络上传输,为控制网与管理信息网的连接、控制网内部各区域的连接提供安全保障,在电力、石油、石化、烟草及工业制造等多行业得到广泛应用。

威努特工业防火墙提供工控协议深度解析、工控指令访问控制、日志审计等综合安全功能。工业防火墙采用了高性能、高稳定性的多核硬件架构,为用户提供高效、稳定的安全保障。




威努特工控安全

专注工控·捍卫安全


以上是关于技术分享|软件可靠性设计-连载的主要内容,如果未能解决你的问题,请参考以下文章

Scrum连载系列之Scrum理论与应用篇

华为云技术分享Linux内核发展史

UI技术分享 如何提高自己的设计视野

2022软考高级架构设计师-经历分享

华为云技术分享如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得

《前端内参》,有关于JavaScript、编程范式、设计模式、软件开发的艺术等大前端范畴内的知识分享,旨在帮助前端工程师们夯实技术基础以通过一线互联网企业技术面试。