ISO26262标准之软件单元设计与实现

软件单元设计与实现

软件单元设计关注的是代码层级的设计,实现和验证。在设计软件单元时,ISO26262推荐以下技术:

软件单元设计表述方法

Technique A B C D
Natural language ++ ++ ++ ++
Information notations ++ ++ ++ +
Semi-formal notations + ++ ++ ++
Formal notations + + + +

以上提到Semi-formal notation,即半正式的表示法,通常情况下半正式表示法比自然语言要好,至少需要用MS Office画的流程图,但是这种方式配置管理和版本管理很难搞,最好还是使用标准的UML工具。

与架构设计一样,ISO26262给出了必须遵守的设计准则,这些准则在MISRA-C中大多数都能够覆盖到。

软件单元设计的准则和实现

Technique A B C D
One entry and one eixt point in functions ++ ++ ++ ++
No dynamic objects or variables,
or else online test during their creation
+ ++ ++ ++
Initialization of variables ++ ++ ++ ++
No multiple use of variable names + ++ ++ ++
Avoid global variables or else justify their usage + + ++ ++
Limited use of pointers o + + ++
No implicit type conversions + ++ ++ ++
No hidden data flow or control flow + ++ ++ ++
No unconditional jumps ++ ++ ++ ++
No recursions + + ++ ++

ISO26262标准对动态测试和静态测试进行了区分(尽管不是特别明确)。以下技术被指定用于软件单元设计的静态测试。这些技术许多需要第三方软件工具才能进行测试。

软件单元设计验证方式

Technique A B C D
Walk-through ++ + o o
Inspection + ++ ++ ++
Semi-formal verification + + ++ ++
Formal verfication o o + +
Control flow analysis + + ++ ++
Data flow analysis + + ++ ++
Static code analysis + ++ ++ ++
Semantic code analysis + + + +
下一节