引子 最近给某客户咨询时,与架构工程师讨论了软件架构设计的颗粒度问题。 软件架构工程师纠结的问题是:
这个问题比较有代表性,因此将讨论内容进行整理,分享如下: 说明:由于某OEM的要求是受限使用的,故本文仅基于ISO26262中的相关条款进行讨论。 术语及ISO26262标准要求 software unit (Reference from ISO26262:2018)
SW Unit是最低层级的,原子级别的可被孤立测试的对象,SW Unit封装了数据和语句。SW Unit可以是函数(C语言场合)、方法(面向对象的C++, JAVA语言场合)。 ISO 26262:2018 Part 6-7 Software architectural design
ISO 26262:2018 Part 6-8 Software unit design and implementation
从以上ISO26262条款,可以了解到:
软件设计 从”软件需求”到”软件实现(如:Coding)”之间的活动,可以统称为”软件设计”。 软件设计是基于软件需求,设计软件内的各个层级的逻辑单元,最终设计所有的软件单元。 如下,举一个简化的例子进行说明: ① 识别软件需求 ② 进行软件设计,识别软件组件,确定软件组件层面的需求 ③ 继续进行软件设计,识别软件单元,定义软件单元层面的需求 ④ 设计软件单元 与ISO26262:2018 Part6的对应 上述的活动步骤,与ISO26262:2018 Part6条款的对应关系如下: 与项目工程活动的对应 如果按照如下方式,对应到项目工程活动,是否可以呢? 说明:如下所定义的软件工程活动仅是示例 ISO26262的各个条款都有被做到,当然可以了。 (为什么不可以呢?) 结论: 项目工程活动的划分,依赖于项目场景和需要。而可以和ISO26262的条款,不一一对齐。 (说明:如上示例中的项目工程活动划分仅为示例) ( -- 完 -- ) |
|