面对高复杂度的车载中央计算单元软件,为什么有的整车厂要“全栈自研”?为什么很少有公司自研操作系统?为什么有的Tier1自研基础软件,而有的则向基础软件供应商采购?伴随着“软件定义汽车”概念的日益深入人心,汽车正快速演变为一个超大规模的软件密集型系统(Software Intensive System)。对于开发这么庞大的软件系统,无论是整车厂、传统Tier1、芯片公司还是各种软件供应商,各个软件组件的来源(CSO:Component Sourcing Option)都是行业参与者首先要搞清楚的根本性问题。
CSO的四种途径
根据软件行业经验,软件组件的来源不外乎自研、商业现货、开源软件和委外开发四种。以下是这四种方式的参考定义:
- 自研(In-house Development):即软件由自己的公司直接开发,包括分布在不同地域的自家分公司;
- 商业现货(COTS):英文全称为“commercial-off-the-shelf”,指市场上已经有公司开发完成,可以直接买过来用。不过这些现成品通常不开源,如QNX操作系统。当然,也有开源的,如AUTOSAR基础软件。
- 开源软件(OSS):这类软件也是现成品,且源代码都是开放的,通常由开源社区所开发。免费是这类软件的最大吸引力,然而其中也有很多隐性成本需要考虑。
- 委外开发(Outsource):也就是常说的将软件外包给外包公司进行开发,开发后通常要求以源码的形式交付,委托方获得所有的知识产权。
不同CSO的特点
不同的软件组件来源都有其显著的优缺点,必须在决策前进行慎重考虑。下表总结了行业相关论文对于其中三种CSO特点的(基于经验性的,而非理论性的)描述。
- 对于选择自研的公司,可以完全决定软件组件的特性并持续迭代进化;自由控制开发的进度和项目的启动;同时对于系统的认识和知识由开发组织自己掌握,不依赖外部;
- 对于选择商业现货的公司,由于组件的“黑盒”交付,缺少对功能、质量以及迭代进化的控制;内部开发进度受COTS开发进度影响。这类组件多见于嵌入式实时分布式计算系统中。
- 对于选择开源软件的公司,普遍预期能节约成本,缩短上市时间,且质量也较高;在选择不同的OSS时,社区的活跃度、功能、标准符合度以及集成的便利性是最重要的判断标准。
- 对于选择委外开发的公司,上表中没有介绍,但我们根据经验以及与前三种的对比,可以得出,此类选择普遍希望通过外部帮助建立自身的开发能力(能力外包),或克服短期自身人力不足的困境(人力外包)。
下表进一步从多个维度对三种不同CSO的优缺点进行了综合性比较。可以作为选择不同CSO的一种典型方法。
从上表中不难看出以下几个关键点:
- 从时间角度看,选择商业现货和开源软件都可以加快产品上市时间,而选择自研则可以更早地进行测试与集成;
- 从成本角度看,选择商业现货和开源软件具有成本优势,而选择自研则具有维护成本优势;
- 从人力投入看,选择商业现货和开源软件可以节省开发人力,但选择过程本身以及集成所需的人力会偏多;
- 从质量方面看,开源软件的质量通常是最高的;
- 从迭代进化看,由于提供商业现货的公司业务相对聚焦,因而其最具优势;
- 从开源角度看,开源软件及其配套文档既有优势,也有劣势。
- 从技术支持看,商业现货在响应速度和需求变更方面更具优势。
- 从许可费用看,开源软件费用最低因而最具优势,但其承担的义务也最少。
CSO决策制定
面对这些不同的CSO,实际过程中应该如何做决策呢?解答这个问题,需要从三个不同的层面进行,下图直观地展示了这一决策模型。
- 在最顶层,即战略层面做出CSO的选择
- 在中间层,即提供方层面,做出供应商或开源社区的选择
- 在最底层,即软件组件层面,选出需要依靠外部的软件组件
需要注意的事,三个层次之间并没有顺序关系,即并不是先决定CSO,再选择供应商,再确定软件组件。而是结合自身和市场实际情况,综合考虑、反复推敲的一个过程。
启示
车载中央计算平台或云端计算平台中将涉及大量的软件,对于这些软件:
- 作为OEM或传统Tier1,哪些部分更合适交由软件供应商?
- 作为软件供应商,如何定义产品开发方向,满足市场需求?
- 作为软件供应商,如何说服客户采用自己开发的商业现货?
- 不论是OEM还是软件供应商,从哪些维度打造产品亮点,提升产品竞争力?
这些问题都需要汽车软件行业参与者在日常的工作中不断思考和摸索的,而如果能充分的借助上述软件CSO模型进行决策分析,相信可以少走许多弯路,节约大量成本。下图展示了论文调研的22家大型公司在进行决策时针对四个不同方面所优先考虑的各项评价标准,供大家参考。
参考文献
- Kai Petersen等,Choosing component origins for software intensive systems,2018