ISO 26262对软件架构设计验证方法03 软件单元设计与实现在软件单元设计与实现阶段,基于软件架构设计对车载智能计算平台的软件单元进行详细设计。软件单元设计应满足其所分配的ASIL等级要求,与软件架构设计和软硬件接口设计相关内容保持一致。为了避免系统性失效,应确保软件单元设计的一致性、可理解性、可维护性和可验证性,采用自然语言与半形式化方法相结合的方式进行描述。说明书应描述实施细节层面的功能行为和内部设计,包括数据存储和寄存器的使用限制。在源代码层面的设计与实施应使得软件单元设计简单易懂,软件修改适宜,具有可验证性和鲁棒性,确保软件单元中子程序或函数执行的正确次序,软件单元之间接口的一致性,软件单元内部及软件单元之间数据流和控制流的正确性。车载智能计算平台软件包含数百个软件单元,软件单元的标准化、单元间解耦是高效实现软件功能安全的基础。车载智能计算平台中不同安全等级的软件可以采用硬件虚拟化、容器、内存隔离等技术进行隔离,防止软件单元之间的级联失效。软件代码设计过程中应遵守成熟的代码设计规范,例如MISRA C。MISRA C是由汽车产业软件可靠性协会(MISRA)提出的C语言开发标准。其目的是在增进嵌入式系统的安全性及可移植性,针对C++语言也有对应的标准MISRA C++。MISRA C一开始主要是针对汽车产业,不过其他产业也逐渐开始使用MISRA C:包括航天、电信、国防、医疗设备、铁路等领域中都已有厂商使用MISRA C。MISRA C的第一版《Guidelines for the use of the C language in vehicle based software》是在1998年发行,一般称为MISRA-C:1998.。MISRA-C:1998有127项规则,规则从1号编号到127号,其中有93项是强制要求,其余的34项是推荐使用的规则。在2004年时发行了第二版的MISRA C的第一版《Guidelines for the use of the C language in critical systems》(或称作MISRA-C:2004),其中有许多重要建议事项的变更,其规则也重新编号。MISRA-C:2004有141项规则,其中121项是强制要求,其余的20项是推荐使用的规则。规则分为21类,从“开发环境”到“运行期错误”。2012年发布第三版,为当前最新有效的C语言规范版本,称为MISRA C:2012。企业可以基于MISRAC建立一套满足车载智能计算平台安全编码要求的内部编码规范,并严格执行。ISO 26262软件单元设计和实现的设计原则04 软件单元验证软件单元验证是通过评审、分析和测试的方法对功能安全相关的软件单元设计与实现进行验证,证明软件相关安全措施已经在设计与实现中全部落实。软件单元设计满足相应的ASIL等级的软件需求和软硬件接口规范要求,软件源代码的实现与单元设计一致,不存在非期望的功能和性能,且支持功能和性能实现的相关资源充足。车载智能计算平台的软件单元验证可参考下表,通过需求分析、等价类的生成与分析、边界值分析和错误推测相结合的方法合理设计测试用例,确保对软件单元进行充分验证。为了评估软件单元验证的完整性,为单元测试的充分性提供证据,应确定在软件单元层面的需求覆盖率,同时对结构覆盖率进行测定。车载智能计算平台软件单元测试的结构覆盖率目标为100%,如果已实现结构覆盖率不能达到目标,可以定义额外的测试用例并提供接受理由。车载智能计算平台软件单元的结构覆盖率测试应采用满足相关安全要求的测试工具,确保在测试过程中测试工具和检测代码不会对测试结果产生影响。车载智能计算平台软件单元测试应根据测试范围,选用适当的测试环境。测试环境应适合完成测试目标,尽可能接近目标环境,如果不是在目标环境执行,应分析源代码与目标代码的差异、测试环境和目标环境之间的差异,以便在后续测试阶段的目标环境中,定义额外的测试。软件单元验证方法