组件(Compoent)在26262-1 3.21 P13中的定义是(在逻辑上或技术上可分离的非系统级元素,其中包含多个硬件或者软件单元non-system level element that is logically or technically separable and is comprised of more than one hardware part or more software units).而软件单元的定义在26262-1 P33 3.159 中则是(atomic level software component of the software architecture that can be subjected to stand-alone testing可以进行独立测试的软件架构中的不可细分组件),从定义的角度来看软件单元是本身也是组件,只是在本身定义的层次上不可细分。所谓不可细分,从C语言函数的角度来理解的话,可以分为两种情况,一是这个函数本身只有指令不包含任何的函数调用,二是这个函数本身既包含了函数调用也包含了指令但是它们不是单纯的顺序执行关系。也就是说这个函数所调用的函数包含有返回值,而这个函数会利用所调函数的返回值来执行运算。使函数之间彼此影响。具体可见如下例子:
void Module_A (void)
{
sint16 return_s16value;
return_s16value = Module_A_SubFunc1();
if(return_s16value > 1)
{
Module_A_SubFunc2();
}
else
{
Module_A_SubFunc3();
}
}
在上面这个函数中子函数Module_A_SubFunc1()的返回值决定了后面两个函数的执行顺序,此时从void Module_A (void)的角度来看,它是不可细分的软件单元(因为子函数之间互相影响,导致执行顺序不唯一)。如果Module_A的结构如下:
void Mod

本文探讨了功能安全理论中的软件组件和软件单元概念。组件是指逻辑或技术上可分离的非系统级元素,可能包含多个硬件或软件单元。软件单元则是在软件架构中可进行独立测试的最小不可细分组件。通过C语言函数的例子,阐述了软件单元的不可细分性如何体现在函数间的相互影响,以及如何判断一个函数是否可作为组件进行细分。

854

被折叠的 条评论
为什么被折叠?



