导读 从最基础的传感器到高度复杂的中央域控,各级别的电子控制器已融入到现代汽车的核心构造之中,成为动力与智能的交汇点。控制器的软硬件协同运作,为用户带来了全新的驾乘体验。而在设计层面,日益复杂的硬件和软件设计,对功能完备度、质量和可靠性、可维护性提出了更高要求。本文将从软件开发的视角,以软件FMEA这一特殊方法为切入点,尝试探讨提高软件质量和可靠性的手段。 一、关于FMEA FMEA(Failure Mode and Effects Analysis)作为一种系统性的风险管理工具,其重要性在于深入识别、全面评估以及有效减少产品或过程中的潜在失效模式及其影响。该方法运用于产品或过程的设计、开发或改进阶段,通过分析各种失效模式和评估它们的影响程度,以便制定相应的纠正措施,从而降低潜在的风险和不良后果的发生。 FMEA常应用于以下几个领域: ● 产品设计:分析产品的设计,确定潜在的失效模式及其影响,提出改进措施,以提高产品的可靠性和性能。 ● 制造过程:分析制造过程中的各个环节,识别可能导致产品质量问题或生产中断的失效模式,并制定预防措施,以减少生产故障和不良品率。 ● 供应链管理、服务行业等,不在此详细展开。 典型的FMEA过程如下图: FMEA有助于组织识别和解决潜在的问题,提高产品的可靠性和质量,减少风险和不良后果的发生。通过系统性的分析和评估,FMEA可以帮助组织在设计、开发和改进阶段就发现和消除潜在问题,以提供更可靠、更安全和更优质的产品和服务。 二、软件开发质量控制工具箱 提到软件开发质量控制,非常容易让人联想到敏捷开发、 ASPICE等概念。如果放开思路,不局限于CMMI等既有体系,那么软件开发的质量控制和提升还有多种工具,例如: ● 专家经验类:依靠核心专家的经验,全面把控设计方案和测试过程的合理性,从而对整个设计进行控制。 ● 体系推进类:体系推进类是经常被讨论的,涵盖了各种标准化的方法论,如各级review、测试体系、失效库的建立和分析等。FMEA也是其中之一。 ● 管理监督类:从结果导向的角度,对软件产品的进度和质量进行考核,从而推动软件开发质量提升。 不同的产品与市场,不同的团队特点下,适合灵活采取各种方案。当然,方案间不是互斥的,相信每个软件团队都有符合自身特点的工具组合。 三、基于软件FMEA进行设计分析 1. 必要性 软件FMEA是一个相对特殊的主题。谈到FMEA,被检查对象更多涉及系统、硬件或生产过程,软件似乎并不太常见。而谈到软件质量控制,虽然有各种体系和审核,FMEA却常常不是强制要求。 然而正是这个相对冷门的方法,在汽车行业的软件开发中却孕育着独特价值。根据个人经验,以下是一些特殊要素,可说明其在汽车行业中的重要性: ● 系统整合性:汽车行业的软件需在一个完整系统中工作,因此不能孤立地检查软件。例如,在设计驱动程序时,必须考虑到车辆可能出现的电压波动、温度变化等因素。只有从系统角度来检查软件设计,才能提供更为全面的视角。 ● 软硬件协同:软件行为需要与硬件紧密结合,并可能受到批量一致性的影响。例如软件需要与一个外围器件进行SPI通信,单个样品测试多次都是好的,但批量后的少数个体偶发失效也客观存在,不能因此影响客户体验。 ● 可靠性和可维护性:整体对可靠性和可维护性要求很高,功能丧失或系统重启等问题可能对客户影响极大。有些与可靠性关联的故障工况,可能在研发阶段难以预见或模拟。而可维护性虽与FMEA关系并不显著,却容易在常规软件review中被忽略。 通过对比经典的软件质量控制工具箱,我们可以发现,虽然其中的专家经验或管理监督方法能全方位覆盖各种问题,但ASPICE等经典体系对于上述特殊要素的聚焦却相对不足。 软件FMEA以其天然的系统观点、关注环节间关联性的特点,以及对衡量标准(如可维护性、关注程度等)的人为调整能力,在汽车行业软件设计中成为一种实用且有效的工具。这一方法的价值不应被忽视,反而应当作为软件质量控制的重要组成部分加以重视和推广。 2. 边界与方法 当然,虽然软件FMEA是一项有力的工具,但在实际应用中必须明智地选取适用范围和关注点。不是每个子系统设计都需要进行一轮FMEA分析,也不是软件设计中的每个部分都需要全部检查。 以下是结合个人经验,对有关软件FMEA适用范围和关键焦点的一些理解。 适用范围:软硬结合的复杂子系统 ● 在FMEA的体系下去检查coding级别的错误,投入大且基本难有什么产出,那是ASPICE等工具的长项; ● FMEA体系还是更适合概念性/体系性/失效模式为导向的检查。检查目标为软件产品所实现的功能,而不是软件本身。 失效模式非常体现软件FMEA特色 ● 需要考虑失效对软件的影响:例如系统FMEA关注晶振的偏差影响,软件FMEA中就需要关注偏差范围内频率变化是否能被各模块容错处理。 ● 需要考虑软件特有的失效类型:例如时序问题、资源抢占、数据一致性等,这些软件特殊的失效类型在软件FMEA中可能会受到重点关注,而在系统FMEA中可能会被忽略。 ● 特别考虑失效定位的便捷性:软件失效处理和更新所占的时间不容忽视,因此“失效是否方便被快速定位”是高价值功能,前期提前考虑能节省后期大量人力物力。 经典软件流程与FMEA的不同关注项: 3. 基本案例 以智驾系统必备的安全监控为例: 从结构和功能的角度,需要关注传感器自身、数据通路、在SoC内部的各级运算等。 从失效的角度,需要考虑各种动态工况(启动、关机、异常复位等),考虑各功能的典型失效(偶发失效、持续失效,以及时序、数据完整性等不同维度的失效特征)。 从影响分析的角度,安全维度、功能维度、维护维度都需兼顾。不要漏过问题,更难的是不要因为各类轻微问题而关闭功能以保安全。 四、总结 软件开发的质量和可靠性设计是一个综合话题,对此的追求应从设计阶段就需要保证,而不是单纯依靠测试。多种工具和方法都可以为研发过程提供支撑,软件FMEA方法虽被较少提及,但却具有特殊意义。 在理解和灵活使用各类开发方法和工具的基础上,辉羲智能的工程团队一直致力于从研发阶段科学分析和优化,为客户提供更完善的体验,将软件开发的质量和可靠性提升至更高水平。 |