仕様優先の開発では、特にモデリングと実装が密接に結びついている場合、反復開発のペースが鈍化しがちです。Vector Application Framework は、データ中心の抽象化レイヤーを導入することでこの一連の流れを分割し、システムモデルとは独立して開発を開始できるようにします。
完全にテキストベースのワークフロー、CLIによる自動化、そしてVS Codeとのシームレスな統合により、チームは連携を保ちつつ、より柔軟に作業を進めることができます。既存の仕様書はそのまま活用でき、プロセス全体を見直すことなく、本番環境への統合も確実に実現されます。
課題
仕様主導型のソフトウェア開発は、自動車プロジェクトにおいて一般的なアプローチです。このプロセスは、順次的なワークフローの形で構成されるいくつかのステップから成り立っています。まず、システムとそのコンポーネントの詳細なモデルが、テキスト形式で、あるいはグラフィカルツールを用いて作成されます。いずれの場合も、その結果として得られた仕様は、XMLやJSONなどのテキスト形式にエクスポートされます。その後、このデータベースがジェネレーターによって利用され、モデル化されたシステムに合わせたソースコードが生成されます。 最後に、プログラマーはこのコードベースを自身のプロジェクトに組み込み、生成されたクラスやアプリケーション・プログラミング・インターフェース(API)を使用して、必要な機能にアクセスします。


このワークフローの反復は可能ですが、仕様先行型のアプローチでは、システムモデルが更新された場合に一連のプロセスをすべて再実行する必要があります。これは、モデリングと開発の責任が異なるチームや組織に分かれている場合、特に問題となります。協力体制を整えるためのプロセスを確立する必要があり、仕様がわずかに変更されただけでも、かなりのリードタイムが発生してしまいます。ソフトウェア開発者にとって、アジャイルな開発を行うことはほとんど不可能です。
解決策
AUTOSAR Adaptiveミドルウェアを採用したマイクロコントローラベースのECUプロジェクトは、このパターンに従うため、前述の課題に直面しています。しかし、ベクター Application Frameworkは、この課題に対する簡単な解決策を提供します。このフレームワークは、抽象化を通じて、システムモデルとソフトウェア開発の間の強い依存関係を削減します。システムモデルから派生したミドルウェアインターフェースを直接扱うのではなく、データ中心の抽象化レイヤーが、開発者にとって唯一の接点として機能します。
対応するApplication Framework APIは、データの処理と交換に関する2つの基本パターンを網羅しています。データ要素はパブリッシュ/サブスクライブ(pub/sub)メッセージングを模倣し、永続的なデータ保存手段を提供します。オペレーションはリモートプロシージャコール(RPC)を表します。これらの基本パターンはインターフェースごとにグループ化されており、フレームワークのユーザーにとっての基本環境を設定しています。
この中核となるセットアップは、実行ファイル向けのモジュール式ソフトウェアアーキテクチャと相まって、異なるチームが独立して作業することを可能にします。とはいえ、ベクター Application Frameworkのワークフローは、個々の設計要素を統合するための道筋を提供しています。既存の設計要素は、アプリケーション開発の出発点として使用できます。それらが利用できない場合や不完全な場合は、「Configuration as Code」ソリューションが組み込まれており、それに応じてプロジェクトの設定や変更を行うことができます。これにより、前述の順次的な作業モードが打破され、かなりの柔軟性がもたらされます。 付属のコマンドラインツールは、ワークフローのすべてのステップを自動化し、CIとの統合を容易にします。また、ソフトウェア開発者にはVisual Studio Code用拡張機能も提供されています。開発プロセス全体がIDE内で完結するため、もはやツールを切り替える必要がないというのが大きな利点です。


ミドルウェア抽象化モジュールは、ターゲットシステムとの統合を容易にします。これらのモジュールは、ミドルウェアをVector Application Framework APIにマッピングし、その逆も同様に行います。さまざまなミドルウェアスタックに対応した抽象化モジュールが可能であり、それらを組み合わせて、混合統合プロジェクトや実行ファイルを作成することができます。元のアプリケーションモジュールには影響がなく、変更する必要もありません。
制御モジュールは、実行ファイルレベルでモジュール型のソフトウェアアーキテクチャを完成させ、ソフトウェア開発チームを、しばしば「ボイラープレート」と呼ばれる統合コードの実装や保守の負担から解放します。
要するに、ベクター Application Frameworkは、マイクロコントローラベースのECU向けのモデル駆動型ソフトウェアプロジェクトにおいて、アジャイルなコラボレーションを可能にする最新のフレームワークです。その包括的なワークフローは、独立性と緊密な統合を両立させ、自動車業界のOEMやサプライヤーのニーズに対応しています。
メリット
- モジュール型ソフトウェアアーキテクチャ:アプリケーションモジュールにより、開発者はビジネスロジックに集中することができます。
- 迅速なプロトタイピング。プロジェクトテンプレートや定型コードの自動作成により、開発者の負担を軽減し、迅速な立ち上げを可能にします。
- テキストベースのユーザーエクスペリエンス。ワークフローを網羅するCLIと「Configuration as Code」を備えています。CIとの統合やAIエージェントへの対応も可能です。
- 包括的でデータ中心のAPI。自動車業界特有の用語を使用していないため、アクセスしやすく、学習曲線も緩やかです。
- オープンソースであるため、ロックインの心配がありません。コアフレームワークは、Eclipse Automotive API Framework プロジェクトで公開されています。
- 包括的なテストプロセス:これには、生成されたモックやテストスタブを用いた初期のユニットテストに加え、SILテストや統合前のテストも含まれます。
- これは、ミドルウェアに依存しないソリューションです。コンテキストに縛られない開発を可能にし、サプライヤーによる「既製ソフトウェア」の活用を支援します。
- 柔軟な統合を実現します。これは、ミドルウェア抽象化モジュールによって可能となります。事前統合はサプライヤー側で、最終的な統合はOEM側で行われます。

