物联网终端设备很多应用在无人值守环境,要求设备能够全自动化运行,如果在使用过程中发生失效,将会导致该设备的失联,对软件的稳定性必须高要求。 在软件设计过程中,对可能发生的失效进行分析,采取必要的措施避免将引起失效的缺陷引入软件,为失效纠正措施的制定提供依据。 不能完全依靠软件测试手段来发现错误,应该是以软件稳定性设计为第一原则考虑,测试当做一种次要的辅助手段。 能够软硬件解决的问题,永远以硬件为先,软件手段其次。

1. 影响软件可靠性的技术因素

  • 运行环境: 软件故障是软件设计(固有的)缺陷,在一定输入情况下被激活的结果。如果在运行环境中不包含激活软件缺陷的输入条件,其可靠性将无法得到有效验证。
  • 软件规模: 随着软件规模的增加,软件可靠性问题越加突出。软件工程实践一般单元测试由开发人员进行,综合测试一般由独立测试人员完成,软件可靠性增长模型也可应用于综合测试阶段。
  • 软件结构: 软件功能约复杂,软件内部结构越复杂,内含缺陷数就越大,因而软件可靠度也就越低。

2. 软件可靠性设计方法

2.1 软件避错设计

避错设计体现了以预防为主的设计思想,设计原则是控制和减少程序的复杂性。

  • 明确设计需求,准确理解设计要求;
  • 采用结构化软件设计方法,以各功能模块划分程序结构;
  • 使用规范的编码准则。

2.2 软件容错设计

软件容错设计一般是指在设计中增加冗余,增加多余资源获得高可靠性,使程序能在错误被触发的情况下系统仍然能正常运行的一种设计方法。

  • 时间容错: 以时间为代价换取软件可靠性的一种手段,包括指令的重复执行和程序的重复执行;
  • 结构容错: 来源于硬件可靠性中的冗余设计,可以是在一个较复杂系统上设计一个单独的极简控程序,只负责监控各个软件的运行状态,当监测到异常时做出相应的处理。也可以是单独的嵌入式监测模块来实现;
  • 信息容错: 要求所有的对外信息交互通信都需要检验码或纠错码,对于容易收到干扰的信息应能错误隔绝,不因错误信息而导致程序异常。同时本设备的重要信息放在多个内存单元进行备份存储等实现冗余。

2.3 软件查错设计

软件差错设计是指在设计中赋予程序某些特殊的功能,使程序在运行中自动查找存在错误的一种设计方法。

1)被动式错误检测

  • 看门狗定时器:看门狗是一种监控系统的运行状况的手段,通过软硬件结合的方式实现对系统运行状况的监控。若在一定周期内看门狗没有收到来自软件的喂狗信号,则认为系统故障,会进入中断处理程序或强制系统复位。工作环境恶劣的设备需要配备专门的硬件看门狗;
  • 超时等待:在等待外部信号的程序段中,不允许无限制的等待,必须使用定时器或者计数器,控制循环的执行,避免出现死循环,保证能够退出该程序段。

2)主动式错误检测

  • 设备开机自检必须具备对各模块完善的检测能力。
  • 周期性的对系统状态进行检测,检测到异常状态做出相应处理。
  • 将错误发生时的状态记录在设备运行日志中,供设计人员深入分析研究。

2.4 软件改错设计

软件改错设计一般要求软件可具备多种升级固件手段,方便维护人员更新程序。

1)软件烧写手段:

  • 仿真器烧写(用作调试)
  • 串口烧写(一般需要boot键)

2)软件升级手段:

  • USB升级(需要烧写软件)
  • SD卡升级(一般用在带系统的软件升级)
  • 蓝牙升级(对蓝牙模块有要求)
  • 网络(4G)升级(远程使用较多)

3. 软件可靠性设计案例

案例1:Ariane 5火箭

1996年6月4日,Ariane 5火箭在法属圭亚那库鲁航天中心首次发射。火箭在发射37秒之后偏离其飞行路径并突然发生爆炸,与Ariane5火箭一同化为灰烬的还有4颗太阳风观察卫星。这是世界航天史上的一大悲剧,也是历史上损失最惨重的软件故障事件。

事后的调查显示,控制惯性导航系统的计算机向控制引擎喷嘴的计算机发送了一个无效数据,其原因在于将一个64位浮点数转换成16位有符号整数时产生了溢出。这个溢出值测量的是火箭的水平速率,开发人员在设计Ariane 4火箭的软件时,认真分析了火箭的水平速率,确定其值绝不会超出一个16位的数。而Ariane 5火箭比Ariane 4的速度高出近5倍,显然会超出一个16位数的范围。不幸的是,开发人员在设计Ariane 5火箭时只是简单地重用了这部分程序,并没有检查它所基于的假设。

案例2:Therac 25 放射治疗仪

Therac 系列仪器是由加拿大原子能有限公司(AECL)和法国CGL公司联合制造的一种医用高能电子线性加速器,用来杀死病变组织癌细胞,同时使其对周围健康组织影响尽可能降低,Therac 25属于第三代医用高能电子线性加速器。20世纪80年代中期,Therac 25放射治疗仪在美国和加拿大发生了多次医疗事故,5名患者治疗后死亡,其余患者则受到了超剂量辐射而严重灼伤。

Therac 25放射治疗仪的事故是由操作员失误和软件缺陷共同造成的。当操作员输入错误而马上纠正时,系统显示错误信息,操作员不得不重新启动机器。在启动机器时,计算机软件并没有切断X光束,病人一直在治疗台上接受着过量的X光照射,最终使辐射剂量达到饱和的25000拉德,而对人体而言,辐射剂量达到1000拉德就已经是致命的了。

案例3:爱国者导弹

1991年2月25日第一次海湾战争期间,在沙特阿拉伯的美国爱国者导弹系统没能成功拦截飞入伊拉克境内的飞毛腿导弹,该飞毛腿导弹击中了该地的一个美军军营并导致28个士兵阵亡。

事后政府调查发现这次拦截失败的原因在于导弹系统时钟内的一个软件错误。该系统预测一个飞毛腿导弹下一次将会在哪里出现是通过一个函数来实现的,该函数接受两个参数,即飞毛腿导弹的速度和雷达在上一次侦测到该导弹的时间,其中时间是基于系统时钟时间乘以1/10所得到的秒数进行表示。十进制的1/10用二进制来表示就会产生一个微小的精度误差。当时该爱国者导弹系统的电池已经启动了100个小时,系统最终导致的时间偏差达到了0.34秒之多。一个飞毛腿导弹飞行的速度大概是1,676米/秒,因此在0.34秒的误差时间内针对飞毛腿导弹就会产生超过半公里的误差,这个距离显然无法准确地拦截正在飞来的飞毛腿导弹。

具有讽刺意味的是,这个时间误差导致的问题在代码的某些部分是有进行修复的,也就是说有人已经意识到这个错误,但问题在于当时并没有把相关的所有问题代码进行修复,这个时间精度的问题依然存在该系统之中。

4. 软件可靠性设计总结

加强软件的质量和可靠性管理,软件可靠性管理旨在系统管理软件生存各阶段的可靠性活动,使之系统化、规范化、一体化,这样就可以避免很多认为错误,从而提高软件可靠性。

按照软件工程进行软件开发,从项目开发计划做起,依次进行项目开发可行性论证报告、软件需求分析、软件概要设计、详细设计直到软件实现,从单元测试、集成测试和交付验收,严把每一阶段,使研制过程有章可循。

物联网终端设备软件可靠性分析相关推荐

  1. 物联网操作系统安全性分析

    0x00 前言 物联网目前是继移动互联网之后的又一个未来IT发展的蓝海.智能设备的不断涌现已经在不知不觉中占领我们的生活,颠覆我们的原有的思维模式,记得前几年我还带着一块天梭的机械手表,近段时间地铁好 ...

  2. 英飞凌——人工智能物联网:当物联网终端设备拥有深度学习的能力

    英飞凌--人工智能物联网:当物联网终端设备拥有深度学习的能力 万物互联时代,人工智能物联网(AIoT)成为热门技术趋势之一.AIoT指的是在边缘端将人工智能和物联网结合起来,即在物联网终端设备中内置智 ...

  3. 简单物联网终端设备的设计思路总结

    简单物联网终端设备的设计思路总结 个人总结,物联网终端设备的研发一般有以下步骤: 公司领导经过"极为慎重严谨的调研和评估"之后决定立项: 产品经理根据领导层决定的产品定位,&quo ...

  4. 唯样商城:英飞凌——人工智能物联网:当物联网终端设备拥有深度学习的能力

    万物互联时代,人工智能物联网(AIoT)成为热门技术趋势之一.AIoT指的是在边缘端将人工智能和物联网结合起来,即在物联网终端设备中内置智能功能,使它们不仅可以收集和共享数据,还可以分析数据.从中学习 ...

  5. 物联网 终端设备_您拥有多少个物联网设备?

    物联网 终端设备 当我们在4年前对这个问题进行民意测验时 ,大多数人都回答说他们没有任何设备连接到物联网. 但是,如今,全球人均大约有三台已连接的设备 ,并且这个数字预计只会增长. 当然,并非每个人都 ...

  6. 中国五大物联网平台优势分析

    中国五大物联网平台优势分析 简介 近几年物联网已经成为各行各业和资本争相追逐的风口,进入2018年,物联网热度持续不减,一个全球化的智能互联时代即将到来. 近几年物联网已经成为各行各业和资本争相追逐的 ...

  7. IOT(30)---庆科物联网平台架构分析

    庆科物联网平台架构分析 之前在介绍国内物联网平台的发展时曾经说到,物联网有两个发展路径,一是云端服务商选择和设备厂商合作推出完整解决方案,如阿里物联.微信硬件等等:二是模组设备厂商选择和云厂商合作并后 ...

  8. 开源物联网终端设备操作系统

    终端设备开源操作系统,已从移动手机市场转向物联网市场. 文章目录 前言 一.物联网终端操作系统的特点 二.常见的物联网操作系统 1.两大派系 2.诸多厂家 1. 华为鸿蒙HarmonyOS 2. 华为 ...

  9. 软件可靠性分析方法有失效模式影响分析法、严酷度分析法、故障树分析法、事件树分析法、潜在线路分析法

    研究 软件可靠性分析方法有失效模式影响分析法.严酷度分析法.故障树分析法.事件树分析法.潜在线路分析法 http://wenku.baidu.com/link?url=_XcuD0fStz39Doo5 ...

最新文章

  1. 检查是否支持 SO_REUSEPORT
  2. vi查找替换命令详解
  3. MATLAB可视化实战系列(二十八)-贪心算法求快速平方根倒数算法中的“魔术数字”【含matlab源代码】
  4. JZOJ 5702. 【gdoi2018 day2】第二题 滑稽子图(subgraph)
  5. 『设计模式』写代码偷懒小技巧,程序开发大智慧--享元模式
  6. 栈结构的总结【数据结构F】
  7. 外设驱动库开发笔记19:BMP280压力温度传感器驱动
  8. python画3d图-python3利用Axes3D库画3D模型图
  9. access insert语句怎么写_ySQL中特别实用的几种SQL语句送给大家
  10. cv python 画直线_Python进阶之Matplotlib入门(一)
  11. 编程语言中,取余和取模的区别到底是什么?
  12. 计算机安装系统说明,电脑操作系统安装方法-详细图解说明-简单安装Windows系统...
  13. matlab怎么计算地震波反应谱,基于MATLAB的地震反应谱与傅里叶谱计算分析.pdf
  14. 潮流计算机课设,(潮流计算的计算机算法课程设计范文.doc
  15. excel24张函数图解
  16. 检测到硬盘错误:在MBR硬盘上没有找到可以引导的分区
  17. Python爬虫监控(邮件和钉钉)
  18. 计算机视频的压缩方式,如何在电脑上对视频进行压缩?一分钟教你学会视频压缩方法...
  19. python 艺术照片滤镜_[宜配屋]听图阁 - Python实现PS滤镜Fish lens图像扭曲效果示例...
  20. HTML在手机端禁止放大缩小

热门文章

  1. IFile及其path
  2. 银行面经2021 4月份前后
  3. 风讯(FoosunCMS) SetNextOptions.asp注入漏洞利用
  4. linux CentOS 安装rz和sz命令 lrzsz
  5. uniapp 支付宝小程序手机号登陆
  6. 记[HCTF 2018]Hideandseek
  7. lammps 案例:高熵合金FeNiCrCoCu建模及拉伸模拟
  8. 刀片式服务器属于什么系列,刀片服务器是什么意思(刀片式服务器主要用在哪些地方)...
  9. 斜方肌(01):负重耸肩
  10. TCP/IP协议栈初始化(一) 长江之源