| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 物联网终端设备软件可靠性分析 -> 正文阅读 |
|
[开发测试]物联网终端设备软件可靠性分析 |
????????物联网终端设备很多应用在无人值守环境,要求设备能够全自动化运行,如果在使用过程中发生失效,将会导致该设备的失联,对软件的稳定性必须高要求。 在软件设计过程中,对可能发生的失效进行分析,采取必要的措施避免将引起失效的缺陷引入软件,为失效纠正措施的制定提供依据。 不能完全依靠软件测试手段来发现错误,应该是以软件稳定性设计为第一原则考虑,测试当做一种次要的辅助手段。 能够软硬件解决的问题,永远以硬件为先,软件手段其次。 1. 影响软件可靠性的技术因素
2. 软件可靠性设计方法 2.1 软件避错设计 ????????避错设计体现了以预防为主的设计思想,设计原则是控制和减少程序的复杂性。
2.2 软件容错设计 ????????软件容错设计一般是指在设计中增加冗余,增加多余资源获得高可靠性,使程序能在错误被触发的情况下系统仍然能正常运行的一种设计方法。
2.3 软件查错设计 ????????软件差错设计是指在设计中赋予程序某些特殊的功能,使程序在运行中自动查找存在错误的一种设计方法。 1)被动式错误检测
2)主动式错误检测
2.4 软件改错设计 ????????软件改错设计一般要求软件可具备多种升级固件手段,方便维护人员更新程序。 1)软件烧写手段:
2)软件升级手段:
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. 软件可靠性设计总结 ??????加强软件的质量和可靠性管理,软件可靠性管理旨在系统管理软件生存各阶段的可靠性活动,使之系统化、规范化、一体化,这样就可以避免很多认为错误,从而提高软件可靠性。 ??????按照软件工程进行软件开发,从项目开发计划做起,依次进行项目开发可行性论证报告、软件需求分析、软件概要设计、详细设计直到软件实现,从单元测试、集成测试和交付验收,严把每一阶段,使研制过程有章可循。 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:33:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |