发布信息

重塑汽车软件的未来:软件工厂就是平台工程

作者:本站编辑      2024-02-21 12:23:39     47

给时光赋予生命,给岁月留下文明

微信公众号:雷达峰

作者:1379号监听员

插图:AI / 校稿:Sean / 编辑:Sean

雷达峰极限汽车研发历史文章
极限汽车研发

标定即代码

软件定义汽车研发的危机

汽车研发协作漫谈

汽车研发与其更“卷”不如“智能”

极限汽车研发之“征服对象之海”

汽车研发工具的软件定义化

汽车的灵魂,轻舟已过万重山吗?

在一起,我们共同打造自己的汽车研发生态!

汽车研发的下半场,从数据驱动到知识驱动

软件定义汽车,“DevOps”已死!

软件定义汽车 vs 硬件定义汽车

导读

汽车软件工厂如何落地?汽车软件工厂(Software Factory)的核心职责在于构建和优化汽车软件领域的平台工程(Platform Engineering)。平台工程不但是DevOps理念的升华,并且是一种可执行的最佳实践。建设软件工厂就是建设平台工程;建设平台工程就是建设软件工厂。

什么是软件工厂?

据传,软件工厂概念来源于微软,并在《Software Factory》(2004年)和《Practical Software Factories in dot NET》(2006年)等著作中得到了深入的探讨。在历史上,软件工厂的讨论一直聚焦于如何实现应用软件生产的组件化平台化和装配自动化的挑战。

软件工厂是一种创新方法,旨在根据用户需求,精心组织软件资产集合,并通过装配过程生产计算机应用软件。它将制造技术的原理和原则应用于软件开发领域,旨在模仿传统制造业的种种优势,从而推动软件生产的效率和质量迈向新的高峰。

软件工厂的核心在于两个互相关联的要素:组织资产和装配过程。组织资产指的是将各类软件资源、组件,框架和平台进行有效整合和管理,形成一个丰富且易于利用的软件资产库。装配过程则是指将这些资产通过一系列标准化、自动化的流程进行组装和配置,从而生成满足用户需求的软件产品。

图1:组织资产与装配过程(by DALL·E3)

软件工厂是DevOps吗?

随着汽车领域软件占比的迅猛增长,各大企业纷纷探索如何构建高效、适应汽车行业的软件工厂。某知名汽车工具链企业近日发布的宣传材料中,明确提出了打造汽车领域专属软件工厂的愿景,其核心内容引人思考,如下图。

图2:软件工厂就是DevOps吗?(来源于互联网)

图中"为您的开发而开发"的字眼彰显了该企业作为研发工具提供者的决心和承诺。然而,图中的DevOps不禁让人产生疑问:软件工厂是否等同于DevOps工具链?答案显然并不是如此简单。我们认为DevOps确实强调了“过程”的重要性,但它却未能充分关注组织资产”这一核心要素

许多人的眼中,软件工厂或许只是CI/CT/CD的代名词,一个流程管理工具的集合。特别是在汽车领域,是否只需要将Git,Jira,Jenkins,JFrog 等开源软件照搬过来,再与标定管理等汽车研发相关子系统整合,便能够构建出一个软件工厂?显然,这样的理解是过于片面。这种疑问的产生,源于对软件工厂核心构成要素的误解。

软件工厂作为一个综合性的领域,包括两个不可或缺的核心要素:组织资源与装配过程。而这两种之间,组织资源更是一切的前提。类比于工业领域的流水线,一方面我们关注流程控制,如果构建运转和自动化这条流水线;另一方面,同样重要的是如何封装、接口和适配零部件组件,使其与流水线实现高效地协作生产。一个设计精良的流水线,若没有符合规格的原料,也无法发挥其应有的效能。因此,仅仅强调流水线的过程建设是远远不够的。

为了更全面地诠释软件工厂的内涵,价值和可操作性,我们提出了平台工程的概念,旨在为软件工厂的建设提供坚实的支撑。平台工程不仅关注流程的优化,更强调组织资产的整合与利用,从而实现软件研发的高效、高质量和可持续发展。

什么是平台工程?

我们这里所说的平台工程是一个广义的概念,它不仅服务于软件研发过程,而且还致力于软件资产的抽象,组织和管理。经典意义的平台工程概念可以参考文章《DevOps已死,平台工程才是未来》在经典意义上,平台工程被视为DevOps的升级版,是一种以人为中心的自助服务平台实践,而不仅仅是一种理念,它支持协作,持续改进和自动化。它赋予个体或团队更大的能力,促进过程的顺利运转,使每个参与者都能发挥出超越常态的潜能,帮助每个人成为超能力者。

与传统工业生产不同,软件研发到现在还是一种以人为中心的高度复杂的人类智力活动,其核心还是“人”,软件研发的效率在于人的创造力和协作。今天,ChatGPT和Sora等人工智能逐渐崛起,但是这并没有改变人是软件研发过程中核心决策者的地位,人工智能只是作为副驾驶(Copilot)更好地辅助人类的工作,放大了人类的创造力和执行力。因此,经典的平台工程强调以人为中心,致力于构建一个服务于人的软件生产服务平台。这个平台不仅提升了软件开发的效率和质量,更让每个人都能在其中发挥自己的最大价值。

除了作为生产力的辅助平台以外,我们所说的更广泛意义的平台工程还包括软件资产组织者的角色。它面向产品视角,构建组件化平台,将组织软件资产转化为可重复利用的产品原料。这种组件化的核心是解耦,通过软硬解耦,域间解耦,域内解耦,功能解耦,通讯解耦等方式,实现高内聚,低耦合的组件设计。这样的组件不仅可以适应柔性软件产线的自动化生产需求,还为软件工厂提供了稳定可靠的原料。可以说没有合格的软件组件就没有软件工厂的原料,没有原料也不会有软件工厂。

历史上,像Delphi和VB这样的集成开发环境(IDE,Integrated Development Environment)曾被誉为“软件工厂”。它们通过提供一体化的研发环境拖拉拽设计UI代码编写调试编译版本控制打包发布等功能,以及丰富的内置组件和第三方组件库,为开发者提供了一个高效、便捷的软件生产线这种IDE+组件库的模式成为成功的关键,历史上成功的模型值得我们借鉴。IDE提升了研发过程的体验,而平台工程的核心价值也是提高软件研发过程的体验,其核心理念是殊途同归的。如今,随着技术的不断发展,汽车领域的软件工厂只是更复杂,涉及的人和资源更多,但其本质上的诉求并没有改变。

因此,汽车软件平台工程的核心目标就是构建具备类似IDE能力的研发支撑平台工程和提供组件能力的生产系统平台工程。简言之,建设汽车软件平台工程就是在打造汽车软件工厂。

汽车软件平台工程的难点是什么?
在汽车领域的平台工程之路上,众多挑战与难点如影随形,这些挑战大多源自汽车行业的独特性与技术历史债务。汽车,作为一个高度复杂的物联网系统,其内部不仅错综复杂地交织着众多硬件设备,还涵盖了通信通道和云服务,这一“云管端”三位一体的构造为汽车软件平台工程的建设设置了重重障碍。
汽车领域的复杂性是汽车平台工程的难点。平台工程需兼顾研发支撑平台工程和生产系统平台工程两大核心领域。研发支撑平台工程要求我们必须面对“云管端”的复杂情况,如何构建一个统一的研发环境,使研发人员能够轻松触及汽车的每一个细节,实现研发、调试、标定、数据分析、任务管理、版本控制、升级发布等功能的无缝衔接,并且要满足现代汽车软件研发全生命周期的需求,这无疑是对智慧与耐心的双重考验。而生产系统平台工程同样面临着“云管端”复杂性所带来的挑战。随着软件定义汽车的崛起,汽车软件研发已不再局限于某个特定的阶段,而是贯穿整个汽车研发周期。生产系统不仅要覆盖汽车内部运行的边际端生产软件,还要触及通信和云端的生产软件。为了追求低耦合、高内聚,我们需要对平台化、组件化、服务化进行深思熟虑,复杂系统的抽象与规划同样是一项艰巨的任务。
汽车领域的高度安全要求是汽车平台工程的难点。汽车作为承载着人们生命安全的重要交通工具,其软件系统的安全性不容小觑。为了保障汽车产品的质量,研发与验证的角色必须严格分离,这仅仅是最基本的要求。然而,在实际操作中,汽车系统的复杂性会引入更多的角色和环节,这无疑为平台工程增加了额外的复杂性。
汽车领域的遗留问题是汽车平台工程整合的难点。汽车研发不可能抛弃全部过去而重新另起炉灶,继承与改革是一个产业发展的常态。虽然电动化已经开启了汽车时代的新赛道,但是汽车领域长期以来积累的遗留工具和系统也是一大难题。这些工具与系统往往与新的平台工程不兼容,需要进行大量的集成工作。这种集成工作不仅技术难度高,而且工作量巨大,是平台工程建设中不容忽视的一环。
传统汽车企业没有相应的组织结构实施平台工程。多年前,互联网企业,比如腾讯,有CODING产品部门,专门打造平台工程产品给腾讯其它业务部门提供服务。这在传统汽车企业中是不存在的,即使有一些数字化转型的部门也没有基于产品的思维来建设数字化转型的产品,还停留在业务部门驱动的以项目为中心的阶段。通常,许多传统汽车企业的组织结构往往与平台工程的需求格格不入。这些企业往往以硬件为中心,缺乏对软件平台工程的重视和支持。这种组织结构的不适应不仅会阻碍平台工程的建设进程,甚至可能导致未来竞争力的丧失。我们需要将平台工程视为一个独立的产品来对待,它支撑着最终汽车产品的竞争力。未来,如果没有强大的平台工程产品作为支撑,汽车产品很难在市场中脱颖而出。
传统汽车企业没有相应人才建设平台工程。今天造车新势力的软件人才储备具有极大的优势,但是传统汽车领域的软件人才短缺也是平台工程建设的一大难题。由于缺乏专业的软件平台工程人才,汽车企业在推进平台工程建设时常常面临人才匮乏的困境。这种人才短缺不仅会影响平台工程的建设速度和质量,还可能对企业的长期发展产生不利影响。

汽车软件工厂就是建设平台工程

随着汽车行业的快速发展,特别是软件在汽车行业中的应用越来越广泛,建设汽车软件平台工程已成为行业发展的重要趋势。这不仅仅是一项技术任务,更是一场关乎未来的深刻变革。

首先,最重要的是思想的准备,要认识到平台工程是未来。对于汽车软件平台工程的重要性,我们首先要从思想上给予足够的重视。平台工程不仅仅是一个技术项目,更是推动汽车行业未来发展的关键所在。我们需要深刻认识到,未来的汽车行业将是一个高度智能化、数字化的领域,而软件平台工程将在这个过程中发挥核心作用。因此,我们必须将平台工程视为汽车行业未来的重要基石,以高度的责任感和使命感去推进它的建设。

资源是平台工程建设的重要保障。平台工程需要明确的立项,需要按产品的要求来持续研发。巧妇难为无米之炊,为了确保平台工程的顺利进行,我们需要进行明确的立项,将平台工程作为一个独立的产品来研发。这意味着我们需要投入足够的资金、人力和技术资源,确保平台工程的各个方面都能得到充分的支持和保障。同时,我们还需要建立科学的管理机制,确保资源的合理配置和高效利用,为平台工程的顺利推进提供有力支撑。

内外结合,合力推进平台工程。在资源准备的过程中,我们还需要注重内力与外力的结合。内力指的是企业自身的研发能力和技术实力,而外力则包括合作伙伴、供应商等外部资源。通过内力与外力的有机结合,我们可以更好地整合各方面的资源,形成强大的合力,推动平台工程的快速发展。

平台工程要有专业的团队。人才是平台工程建设的核心。为了确保平台工程的顺利进行,我们需要组建一支专业的团队,这支团队应该具备丰富的技术经验、深厚的行业知识和创新精神。同时,我们还需要注重人才的培养和引进,不断为团队注入新的活力和动力。

要有自己的主体团队。在人员准备方面,除了引进和培养专业人才外,我们还需要建立自己的主体团队,自主把握平台工程的方向。这意味着我们要有一支稳定的、具备高度自主研发能力的团队,能够独立完成平台工程主体的设计、开发和维护工作。这样的团队不仅能够确保平台工程的持续性和稳定性,还能够为企业带来持续的创新能力和竞争优势。

总之,建设汽车软件平台工程就是建设汽车软件工厂,这是一个关乎未来的重要任务。我们需要从思想、资源和人员等方面做好充分的准备,确保平台工程的顺利推进。只有这样,我们才能在未来的汽车行业中立于不败之地。

参考文献:

打造数字化软件工厂,https://xie.infoq.cn/article/cf96940457724cc4f40b24ec9

免责声明:部分图片来源于互联网,无法追溯其来源,如有版权问题请联系作者,将予以更正。

相关内容 查看全部