HOME | products | MetaEdit+ | MetaEdit+ Case Study language evolution

MetaEdit+ 事例 :ユーザの声を反映してモデリング言語をよどみなく進化させる

Volvo, Fiat, Continental, KTH による車載システムのアーキテクチャモデル

経験上、モデリング言語やジェネレータに対する最良のアイデアは、通常の開発で使用するなかで得られる。言語定義の初期段階(プレーンなメタモデルの作成)ではなく。
言語を用いるユーザが何処に恩恵を受けるのかに気を配ること。 この教訓は、最近、比較的大きなモデリング言語に接することで再認識できた。ここで大きなモデリング言語とは、多数のタイプ(メタモデルのエレメント)が、SysMLやUMLのような言語の多数のタイプに関連していること。
 
このモデリング言語の事例では、実に多くの異なったサブ言語があり、様々なエンジニアが特定のビュー、サブ言語のみで作業をする(Hardware, Functions, Timing, Events, Features, Failure behavior など)。チームメンバー間の協調作業、様々なビューやサブ言語間の統合をサポートする車載システム向けのモデリング言語であるが、実際、言語の全てのパーツを必要とするエンジニアはいない。
 
例を挙げると、2人の言語開発担当者が、ファンクションとハードウエア間のアロケーションの設定、チェック、表示を支援するモデリング機能を定義した。これらはグラフィカルなモデルであるが、アロケーションの表示に関しては、ユーザによってダイアグラムで、あるいはマトリクスでと異なる要望があったので、MetaEdit+ を用いてこれら両方をサポート。また様々なチェック機能(例:同一ファンクションが複数回アロケーションされないこと)や、ジェネレータによるモデル変換機能も用意した(例:AUTOSAR のランナブルを生成)。
 
そして大きなケースで使用された結果、アロケートされたファンクションを、直接HWアーキテクチャモデル上に表示できると嬉しいといった意見が得られた。言語開発当初は思い付きもしなかったし、オリジナルの仕様にも無かったが、30分程度サンプルモデルで試して、その要求を理解することができたので、異なるビューを上手くグラフィカルに統合させることに行き着いた。下図のアニメーションGIFは、HWコンポーネントにアロケーションされる様々なロジカルファンクションを表示できることを紹介。この視覚化は必要に応じてオン・オフできる。

 
 
画像クリックで動画  デモ後半にはSimulink統合(モデル生成と一致性チェック)も紹介


 

進化はこれに留まらず、アロケーションを表示時にポートを隠すオプションで、グラフィカルなモデル上で関心のある情報(アロケーション)にフォーカスできるようにもした。このユーザの要望に応じた視覚化支援機能は、他のサブ言語にも応用できる。ファンクション内にフィーチャの選択肢を視覚化、特定要件を満たす全てのファンクションを表示、ファンクションによってカバーされたセーフティケースなど。
 
とはいえメタモデルを編集して進化させることを急がないで、暫く様子を見てから、どのような視覚化やビューが個々の実作業に合っているかを観察してから対応するようにした。ようするに全部まとめて作るのではなく、需要に応じて作りこんでいく、あるいは進化させる。ここでMetaEdit+の良い点は、実際に使用しながら言語を進化させて、それまでに実装してきたモデルは言語の最新版とその機能で更新されること(上図のような言語機能の更新が既存モデル上に展開できる)。