给时光赋予生命,给岁月留下文明
微信公众号:雷达峰
作者:1379号监听员
插图:AI / 校稿:Sean / 编辑:Sean
导读
汽车软件工厂如何落地?汽车软件工厂(Software Factory)的核心职责在于构建和优化汽车软件领域的平台工程(Platform Engineering)。平台工程不但是DevOps理念的升华,并且是一种可执行的最佳实践。建设软件工厂就是建设平台工程;建设平台工程就是建设软件工厂。
据传,软件工厂概念来源于微软,并在《Software Factory》(2004年)和《Practical Software Factories in dot NET》(2006年)等著作中得到了深入的探讨。在历史上,软件工厂的讨论一直聚焦于如何实现应用软件生产的组件化、平台化和装配自动化的挑战。
软件工厂是一种创新方法,旨在根据用户需求,精心组织软件资产集合,并通过装配过程生产计算机应用软件。它将制造技术的原理和原则应用于软件开发领域,旨在模仿传统制造业的种种优势,从而推动软件生产的效率和质量迈向新的高峰。
软件工厂的核心在于两个互相关联的要素:组织资产和装配过程。组织资产指的是将各类软件资源、组件,框架和平台进行有效整合和管理,形成一个丰富且易于利用的软件资产库。装配过程则是指将这些资产通过一系列标准化、自动化的流程进行组装和配置,从而生成满足用户需求的软件产品。
软件工厂是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能力的研发支撑平台工程和提供组件能力的生产系统平台工程。简言之,建设汽车软件平台工程就是在打造汽车软件工厂。
汽车软件工厂就是建设平台工程
随着汽车行业的快速发展,特别是软件在汽车行业中的应用越来越广泛,建设汽车软件平台工程已成为行业发展的重要趋势。这不仅仅是一项技术任务,更是一场关乎未来的深刻变革。
首先,最重要的是思想的准备,要认识到平台工程是未来。对于汽车软件平台工程的重要性,我们首先要从思想上给予足够的重视。平台工程不仅仅是一个技术项目,更是推动汽车行业未来发展的关键所在。我们需要深刻认识到,未来的汽车行业将是一个高度智能化、数字化的领域,而软件平台工程将在这个过程中发挥核心作用。因此,我们必须将平台工程视为汽车行业未来的重要基石,以高度的责任感和使命感去推进它的建设。
资源是平台工程建设的重要保障。平台工程需要明确的立项,需要按产品的要求来持续研发。巧妇难为无米之炊,为了确保平台工程的顺利进行,我们需要进行明确的立项,将平台工程作为一个独立的产品来研发。这意味着我们需要投入足够的资金、人力和技术资源,确保平台工程的各个方面都能得到充分的支持和保障。同时,我们还需要建立科学的管理机制,确保资源的合理配置和高效利用,为平台工程的顺利推进提供有力支撑。
内外结合,合力推进平台工程。在资源准备的过程中,我们还需要注重内力与外力的结合。内力指的是企业自身的研发能力和技术实力,而外力则包括合作伙伴、供应商等外部资源。通过内力与外力的有机结合,我们可以更好地整合各方面的资源,形成强大的合力,推动平台工程的快速发展。
平台工程要有专业的团队。人才是平台工程建设的核心。为了确保平台工程的顺利进行,我们需要组建一支专业的团队,这支团队应该具备丰富的技术经验、深厚的行业知识和创新精神。同时,我们还需要注重人才的培养和引进,不断为团队注入新的活力和动力。
要有自己的主体团队。在人员准备方面,除了引进和培养专业人才外,我们还需要建立自己的主体团队,自主把握平台工程的方向。这意味着我们要有一支稳定的、具备高度自主研发能力的团队,能够独立完成平台工程主体的设计、开发和维护工作。这样的团队不仅能够确保平台工程的持续性和稳定性,还能够为企业带来持续的创新能力和竞争优势。
总之,建设汽车软件平台工程就是建设汽车软件工厂,这是一个关乎未来的重要任务。我们需要从思想、资源和人员等方面做好充分的准备,确保平台工程的顺利推进。只有这样,我们才能在未来的汽车行业中立于不败之地。
参考文献:
打造数字化软件工厂,https://xie.infoq.cn/article/cf96940457724cc4f40b24ec9
免责声明:部分图片来源于互联网,无法追溯其来源,如有版权问题请联系作者,将予以更正。