规范先行的开发方式往往会减缓迭代速度,尤其是在建模与实现紧密耦合的情况下。Vector Application Framework通过引入以数据为中心的抽象层,打破这一顺序,使开发能够独立于系统模型而启动。
凭借完全基于文本的工作流、命令行界面(CLI)自动化以及与VS Code的无缝集成,团队在保持协同的同时能够更灵活地开展工作。现有规范仍可继续使用,且无需重构整个流程即可确保顺利集成到生产环境中。
挑战
基于规范说明的软件开发是汽车项目中的一种常见方法。该过程包含若干步骤,以顺序工作流的形式排列。首先,创建系统及其组件的详细模型,该模型可以是文本形式,也可以借助图形化工具生成。无论哪种情况,最终生成的规范说明都会被导出为文本格式,例如XML或JSON。随后,生成器会利用该数据库生成针对建模系统量身定制的源代码。 最后,程序员将该代码库纳入其项目中,并通过生成的类和应用程序接口(API)调用所需的功能。


尽管可以对该工作流进行迭代,但规范先行的方法要求在系统模型更新时重新执行整个流程。如果建模和开发职责由不同的团队或组织承担,这将尤其成问题。必须建立相关流程来协调合作,而且即使规格出现微小变更,也会导致相当长的周转时间。对于软件开发人员而言,敏捷开发几乎难以实现。
解决方案
基于微控制器且采用AUTOSAR Adaptive中间件的ECU项目遵循这一模式,因此面临上述挑战。不过,Vector Application Framework提供一个简便的解决方案,通过抽象化手段,降低系统模型与软件开发之间的强烈依赖关系。开发人员无需直接操作从系统模型派生的中间件接口,而是通过一个以数据为中心的抽象层作为唯一的交互点。
相应的Application Framework API涵盖处理和交换数据的两种基本模式。数据元素模拟发布/订阅(pub/sub)消息机制,并提供持久化数据存储的手段;操作则代表远程过程调用。这些基本模式按接口进行分组,为框架用户构建基础环境。
这一核心架构,结合可执行文件的模块化软件架构,使不同团队能够独立开展工作。尽管如此,Vector Application Framework的工作流仍为各个构建模块提供集成路径。现有的模型工件可作为应用程序开发的起点。如果这些工件不可用或不完整,系统还提供配置即代码(Configuration as Code)解决方案,以便据此配置和修改项目。这打破了前文所述的顺序工作模式,从而带来相当大的灵活性。随附的命令行工具可自动化所有工作流步骤,并促进持续集成(CI)的实现。此外,还为软件开发人员提供Visual Studio Code扩展。值得欣喜的是,由于整个开发过程均可在集成开发环境(IDE)内完成,因此无需再切换工具。


中间件抽象模块有助于与目标系统进行集成。这些模块将中间件映射到Vector Application Framework API,反之亦然。可以针对不同的中间件软件栈创建抽象模块,并且可以在混合集成项目和可执行文件中将它们组合使用。原始应用程序模块不受影响,无需进行修改。
控制模块在可执行文件层面上完善模块化软件架构,并使软件开发团队免于实施和维护集成代码(通常称为模板代码)的负担。
简而言之,Vector Application Framework是一种现代解决方案,可支持基于微控制器的ECU的模型驱动型软件项目中的敏捷协作。其整体工作流兼顾独立性与紧密集成,满足汽车行业整车厂和供应商的需求。
优势
- 模块化软件架构。应用程序模块使开发人员能够专注于业务逻辑。
- 快速原型开发。项目模板和代码模板的生成减轻开发人员的负担,并能快速投入开发。
- 基于文本的用户体验。拥有覆盖整个工作流的命令行界面(CLI)和配置即代码功能,可直接集成到持续集成(CI)或AI智能体中。
- 全面、以数据为中心的API。不使用汽车行业术语,便于访问且学习门槛低。
- 开源确保没有供应商锁定。核心框架已在Eclipse Automotive API Framework项目中公开发布。
- 完整的测试流程。包括使用生成的模拟对象和测试桩函数(Stub)进行的早期单元测试,以及SIL测试和集成前测试。
- 一种与中间件无关的解决方案。允许脱离具体上下文进行开发,并支持供应商的货架式软件理念。
- 支持灵活的集成。得益于中间件抽象模块,预集成在供应商端进行,最终集成则在整车厂端完成。

