软件架构设计的颗粒度

引子

最近给某客户咨询时,与架构工程师讨论了软件架构设计的颗粒度问题。

软件架构工程师纠结的问题是:

  • 功能安全ISO26262标准,以及某OEM要求中,都提到了软件架构设计时需要识别SW Unit。

  • 从软件架构设计活动的目的、项目人员分工等方面考虑的话,由架构设计工程师将软件分解到SW Unit级别,有点过细了。

这个问题比较有代表性,因此将讨论内容进行整理,分享如下:

说明:由于某OEM的要求是受限使用的,故本文仅基于ISO26262中的相关条款进行讨论。

术语及ISO26262标准要求

software unit (Reference from ISO26262:2018)

  • atomic level software component of the software architecture that can be subjected to stand-alone testing.

  • 软件架构中的最低层级(原子级别)的且可被孤立测试的软件组件。

SW Unit是最低层级的,原子级别的可被孤立测试的对象,SW Unit封装了数据和语句。SW Unit可以是函数(C语言场合)、方法(面向对象的C++, JAVA语言场合)。

ISO 26262:2018 Part 6-7 Software architectural design

  • 7.4.4 The software architectural design shall be developed down to the level where the software units are identified.

  • 软件架构设计应被开发到能够识别出软件单元的程度。

ISO 26262:2018 Part 6-8 Software unit design and implementation

  • 8.1 Objectives: to develop a software unit design in accordance with the software architectural design, the design criteria and the allocated software requirements which supports the implementation.

  • 8.1 目标: 根据软件架构设计、设计准则以及分配的软件需求,开发软件单元设计,来支持软件单元的实现。

从以上ISO26262条款,可以了解到:

  • ISO26262 Part6-7: 软件架构设计时,识别SW Unit

  • ISO26262 Part6-8: 软件单元设计时,设计SW Unit

软件设计

从”软件需求”到”软件实现(如:Coding)”之间的活动,可以统称为”软件设计”。

软件设计是基于软件需求,设计软件内的各个层级的逻辑单元,最终设计所有的软件单元。

如下,举一个简化的例子进行说明:

① 识别软件需求

② 进行软件设计,识别软件组件,确定软件组件层面的需求

③ 继续进行软件设计,识别软件单元,定义软件单元层面的需求

④ 设计软件单元

ISO26262:2018 Part6的对应

上述的活动步骤,与ISO26262:2018 Part6条款的对应关系如下:

与项目工程活动的对应

如果按照如下方式,对应到项目工程活动,是否可以呢?

说明:如下所定义的软件工程活动仅是示例

ISO26262的各个条款都有被做到,当然可以了。

(为什么不可以呢?

结论:

项目工程活动的划分,依赖于项目场景和需要。而可以和ISO26262的条款,不一一对齐。

(说明:如上示例中的项目工程活动划分仅为示例

( -- 完 -- )


(0)

相关推荐