品质管理日记48 – 健壮性设计 – 软件健壮性设计
品质管理日记48 – 健壮性设计 -软件健壮性设计
说的白话一些,健壮性设计,是指设计的产品,很健康,经得起随时可能的风风雨雨。
就像人一样,锻炼好了身体,有了健康体魄,出门遇到突发的刮风下雨,不会很敏感的生病。寒冬酷暑都能承受,有一定的耐候性。
良好的设计,可以绕开各种未知变量的影响,提高结果确定性。
与其,实时研究天气变化、紧盯天气变化,成本既高,变化又快,不如就在车上准备一把伞,时时备用,更简单可靠,安心出行。
周一上班出门要早一些。周五下班有事的话要留出更多时间余量。为大概率可能的拥堵留出时间余量。
手机充电,会有充电提示。避免以为充上电了实际上由于诸多未知因素没有在充电。
健壮性设计,就是既然有些因素必然有些因素不可控就不纠缠,惹不起躲得起,绕开不可控因素,让不可控因素变得对期望结果不再敏感。
就是对于产品系统运行中的各种可能干扰条件,不一定都要识别清楚,也无法全部识别清楚,成本太高。
那就对产品系统运行中的各种可能的干扰条件,设计一个可靠的综合健康措施,就是软件健壮性设计。
通讯期间可能会受到干扰,大概率会受到干扰,造成通讯异常。那就多通讯几次,一问一答。先握手再通讯,通讯结束SOC还要回传通信信息。双方有一个对通讯结果确认的行为。
A条件到达的时间和B条件到达的时间,假定理论上同时到达。实际是否同时到达,要确认一次。
到达了能否就握手一次?以避开可能存在的影响而造成不能同时到达的情形。以实际到达为准更可靠。如果一方没有按时到达就等待,等到实实在在到达了双方握握手再一起前行。一直没有到达就向上一级提出异常。
开机之时,先运行基础模块。无需立即开启的模块等电源稳定之后(1000ms之后)再打开,避免电源波动带来的可能的模块状态异常。
只要是触摸了USB按键,就把USB程序加载一次,不管之前是否记忆了U盘的存在。
避免U盘受到震动断联而误判断为U盘拔出,当触摸USB按键之时由于坚信U盘已经拔出而不再进行U盘加载造成USB功能失效。
当A=1时如何如何处理,当A=2时如何如何处理。理论上只有这两种情形。
那就干脆,加一道限制:当A≠1,2之时,如何如何处理,这就闭环了,安心了。
所有的启动程序,都放在只读分区,避免硬盘读写损伤而影响到系统启动。
并且对关键启动程序进行备份,启动时发现程序错误则立即启用备份程序,并对备份程序再次备份备用。
也可以经常刷新启动程序,避免位翻转造成系统无法启动。
关机之时先关掉用户看到的、听到的模块,让用户感受到关机了。实际上在后台稳稳运行安全的关机流程,自检OK后再彻底关机进入休眠状态。
无论开机还是关机指令,都要进行脱敏,连续收到3次开机关机指令,并反馈确认是开机关机之后再执行。
有些指令,可以不用那么慌慌张张的执行,从容一些更有利。
因为有些时候,指令被干扰,是错误的指令。确认过后再执行,可靠,安心。