谷田様は、モデルは「扱っている対象に対する抽象度の高い記述」と考えていて、必要に応じて細部を簡易化するので、必ず何らかの情報落ちがあるのだそうだ。その上で、モデルベース開発のことを、「シミュレーション技術を用いた制御システム開発」と定義している。この定義の中に「モデル」という言葉はないけれども、「シミュレーション=実行可能なモデル」と解釈すれば問題はないらしい。
例えば、C言語でプログラミングを行う開発手法では、①C言語プログラムが浮動小数点処理を使う場合と、②C言語プログラムが最終ターゲットとなるECU用に固定小数点を使う場合がある。①は、浮動小数点で固定少数点を代替する際に、オーバーフローや丸め誤差の影響などの情報落ちが起こるので、モデルを使っていると考えてよく、モデルベース開発の範ちゅうに入る。②は、最終ターゲットを導くまでの過程で、何らかのモデルが使われているかが、モデルベース開発かどうかを決めるらしい。
開発にシミュレーションを活用すれば、モデルベース開発になると考えています。だからC言語を交えて開発する場合でも、シミュレーションを活用すればモデルベース開発になり得ます。
難しいのは、モデルベース開発で使うモデルの定義だ。要求を表現したり、制約を表したりするモデルなどさまざまある。ただし、日本語による言語表現は、振る舞いをシミュレーションすることができないので、実行可能なモデルにはなっていないそうだ。
開発過程のいずれかで、実行可能なモデルを使っているかどうかが問題になる……のだそうだ。要求(言語)→アーキテクチャ→詳細仕様書(ドキュメント)→プログラム→組み込み(実装)というプロセスだけではモデルベース開発かどうかは判定できず、プロセスの中で、検証でも要求記述にでも実行可能なモデルが使われていないとモデルベース開発ではないと考えているとのこと。
また、モデルベース開発の目的は『継続的な改善を効率的に実施すること』だと考えているそうだ。継続的改善は、開発プロセス、手法、製品など全てに適用されなければならず、モデルを残し、確実にレベルアップしていくことが必要になので、モデル管理が重要になる…………ということらしい(汗
だから、C言語だろうと何だろうと、実行可能なモデルと解釈できるならば、モデルベース開発です。最終ターゲットのC言語プログラムから情報落ちがあるなら、モデルですのでモデルベース開発です。しかしやり方によっては、開発効率が上がらないわけですが、それはモデルの使い方が悪いだけでしょう。うまいモデルベース開発と下手なモデルベース開発があるということです。ツールや対象の表現手段に拘らず、その表現自体の抽象度がどれだけ上がっているか、実行可能かを見極めることが必要だと思います。少々難しかったでしょうか?
正直なところ、私は谷田様の言っていることの半分も理解できていなかった。でも、シミュレーションを実行できることが重要なのは理解できた。
ありがとうございました。実行可能を目指して全力疾走します!
ぜひ頑張ってください。
そうですよね……。私、前のめります!
前のめる? なんじゃそれ?
前のめる、なかなか面白い言葉ですね。ぜひ前のめってください。
京子は、まずは実行可能な仕様書を作り上げようと心に誓った(以下、次回に続く)。
JMAAB/今さら聞けないMBD委員会
JMAABのWebサイト http://jmaab.mathworks.jp/
モデルベース開発(MBD)を発展させるべく、自動車メーカーとサプライヤからなる団体『JMAAB』は13年前(2001年)に生まれました。このJMAABの10周年記念において、「MBDを分かりやすく伝えたい」という目的で発足したのが『いまさら聞けないMBD委員会』です。委員会メンバーが所属する10社でMBDを推進してきたエンジニアが協力し、これまでの経験や将来の夢を伝えるべく推敲を重ね、本連載は完成しました。皆さまのモノづくりの一助となれば幸いです。
Copyright © ITmedia, Inc. All Rights Reserved.