研发架构

研发可以理解为一群具备专业技术的人员通过一系列专业的活动来达成阶段性交付和最终交付,满足客户的定制需求。

因此,

  1. 交付架构是核心架构,由业务架构、技术架构和交付模板组成;
  2. 流程架构支撑交付架构,关注开发交付计划、风险管理、集成测试等;
  3. 组织架构支撑流程架构,从技术能力和工作量以及绩效设计等方面支撑研发流程;

当然,作为软件架构,此文主要关注交付架构。

交付架构

交付架构是由业务架构、技术架构和交付模板组成,面向客户的业务需求、使用合适的技术和交付物模板,来开发定制化的交付物。

  • 业务架构聚焦在业务层,可以分为客制化和中台化。
    • 客制化聚焦在项目差异化,分为业务应用、硬件架构和部署集成;
    • 中台化是对业务的抽象化,应该跨项目适用。中台应该包含业务应用模板和业务服务;
  • 技术架构跟业务无关,是软件系统的通用技术,比如ap、cp、ros等。
    • 标准状态机,包含状态跳转框架、任务分支管理、故障监控等,是模型设计的基础之一。
    • 数据架构,数据作为状态机上下文,驱动状态机。底层技术是缓存持久化,包含高频读写、高可靠数据、数据容灾、分布式数据的一致性和时效性等;
    • SOA,软件系统架构拆解和集成的核心技术之一。
      • 通过把软件系统拆解成低耦合的服务,然后对服务间接口标准化。
      • 同时服务的生命周期管理也是系统运行架构的主要技术。
      • 服务作为模型设计的基础之二,故障监控、健康度管理、冗余降级等机制都是必要项,而且和状态机存在差异。
    • 功能组,软件系统架构拆解和集成的主要技术之二。
      • 当一个服务继续拆解的性价比已经很低,但服务使用一个状态机来实现又显得复杂度过高,可以使用功能组来拆解出高耦合的组件。
      • 一般有一个mgr和多个member来实现,整体对外表现为服务。
      • 功能组的生命周期管理和服务、进程、状态机等生命周期管理一样,是系统运行架构的主要技术。对资源管理和状态机管理存在依赖关系。
      • 功能组作为模型设计的基础之三,健康度管理等机制必要且与独立。
    • 健康度、故障诊断、冗余降级等技术,在面向服务、功能组、状态机应该存在差异化。
    • 性能架构,聚焦在软件模型在系统运行过程中对软件资源的动态使用情况的采集和优化,包括带宽资源、gpu、cpu和内存等。
    • 通讯架构,模型之间跨域和跨通讯中间件或者抽象代理的通讯技术框架。考虑soc内部同一系统内部、hypervisor切分后子系统通讯、soc之间的通讯、mcu之间通讯、soc和mcu之间通讯、对手件抽象等。
      • 需要考虑模型之间的通讯框架和传输框架。
    • 运行架构,基于状态机、功能组、服务以及相应软件资源为基础,设计系统启动退出和其他动态管理。
  • 交付模板
    • 架构分为3种,
      • 全系统架构、在各软件子系统之上考虑他们的部署、依赖、冲突、资源竞争、降级关系。
      • 子系统架构,业务应用、业务服务、硬件管理、中间件都可以是软件子系统,需要基于他们的功能进行设计,闭环全系统架构的设计约束。
        • 当然业务服务和中间件等底层子产品,如数据架构、资源管理等需要对上层子产品有明显的的支撑关系。
        • HMI,VehicleService,SensorService等服务定制化的前置条件是上层应用的确定,然后汇总设计。
        • 当任何一个应用子产品设计时,诊断、故障、数采、数据管理、状态管理、服务依赖等都需要定制,其他HMI等更业务化的服务的接口依赖也需要设计。
      • 组件架构,模型架构的最后一环,拆解到状态机。当然一个组件可以出现在多个软件子系统中。

子产品设计

业务架构业务应用ad mgr
acc
pilot
hnp
unp
apa
lvp
业务服务hmi service
sensor service
vehicle service
cockpit service
perception
planning
control
map&loc
地图下载
硬件架构计算平台异构SOC,hypervisor,安全等级不一致
对手件
网络架构
部署集成
技术架构基础服务标准状态机/子程序
配置管理
健康度管理/故障/冗余/降级
诊断管理
数据采集/筛选/脱敏/上传
日志管理
车云链路
标定管理
系统管理
软件升级/OTA
EM
SM
FuncGroupMgr
ServiceMgr
软硬件资源管理/性能
CM