特集
» 2009年03月27日 00時00分 公開

開発プロセス改善手法解説:いまさら聞けない モデルベース開発入門 (2/2)

[柴田 克久 サイバネットシステム,@IT MONOist]
前のページへ 1|2       

モデルベース開発における「モデル」――「実行可能な仕様書」

 モデルベース開発の第一の特徴として、開発の対象となるシステムの仕様を抽象的に記述した“モデル”の存在が挙げられます。

 経済産業省の調べによると、状態遷移図やフローチャートといった基本的なレベルでのモデルは、70%以上のプロジェクトで導入が進んでおり、その結果として、情報共有やドキュメント化、設計品質の向上といった点において改善効果が認められているようです(図5)(図6)。

 実際、モデルの構造からシステムの内部構造や処理フローを直感的に理解することが可能となります。しかしながら、図やチャートをただ紙に記述するだけでは、従来の紙ベースの仕様書と大して変わりはないでしょう。単にドキュメント記述をするためのチャート作成ツールとは別に、モデルベース開発のコンセプトにのっとった各種ツールが存在している理由はそこにあります。つまり、モデルベース開発ツールには図やチャートといったモデルの描画機能だけでなく、その記述によって表現されるモデルの出力結果も確認できる機能が備わっているわけです。このようなモデルベース開発ツール、およびツールで作成されるモデルの重要な機能としては、「対象となるシステムの挙動をコンピュータ上でシミュレーションできること」が挙げられます。

モデリング手法の利用状況 図5 モデリング手法の利用状況
※出典:2008年版 組込みソフトウェア産業実態調査報告書:プロジェクト責任者向け調査【P.164】(経済産業省)
モデリング手法の導入効果 図6 モデリング手法の導入効果
※出典:2008年版 組込みソフトウェア産業実態調査報告書:プロジェクト責任者向け調査【P.165】(経済産業省)

シミュレーションによる設計

 モデルベース開発の特徴として次に挙げられるのは、シミュレーションにより設計の詳細化、妥当性検証を行うということです。

 通常、モデルベース開発ツールで作成されたモデルは「実行可能な仕様書」などと呼ばれ、開発プロセスの上流から下流に至るまでの各工程において、さまざまな形で利用されます。前述のように、モデルベース開発ツールで作成されたモデルは、コンピュータ上でシミュレーションを実行することが可能です。この実行可能な仕様書モデルとともに、紙の仕様書では記述し切れなかった設計情報、つまり、シミュレーション条件や実行結果といった情報が付加され、システム設計の段階で設計情報として共有することが可能となります。また、シミュレーション結果から、所望の出力結果も明示的になり、これをよりどころとして設計の詳細化を進めることができます。そして、モデル化されたシステム全体のシミュレーションを実行し、その結果をシステムの内部を機能単位ごとに分析することで、コンポーネント間の相互作用を把握できます。実際のシステム開発は、機能単位に分割して分業で進められることも多く、プロジェクト内で「実行可能な仕様書」モデルの共有を進めることにより、エラーの早期検出や、工程間にわたるエラー要因の特定の際のコミュニケーション改善においても効果が期待できます。

 さらに、システムパラメータを変更した際の影響などを分析、評価するうえでは、できる限り多くのサンプルで試行することが信頼性につながります。実環境では発生しにくいような条件設定もシミュレーションでは可能であるといったことが多く、再現性も100%ですから、設計エラーを徹底的に検出、修正するためにまさにうってつけの方法といえます。このように、システム設計に必要な詳細情報を抽出、整理し、エラーを抑制する手法として、「シミュレーションによる設計」は極めて有効です。

さらに理解を深めるために――モデルベース開発ツール

 モデルベース開発について情報収集する際には、資料で言及されているモデルが何を抽象表現したものなのかを正しく把握することで、より理解を深めることができると思います。ちなみに、書籍、Webなどのさまざまな情報を見てみると、そこで取り上げられているモデルベース開発ツールは、ツールで扱われるモデルが表現するものによって、大きく2種類に分類できます。

1.オブジェクト指向の概念に基づくプログラム仕様の抽象表現モデル
具体例としては、UML記述による組み込みソフトウェアのモデルなどが挙げられるかと思います。開発対象となるプログラムコードを記述する代わりに、標準化された記述方法に基づくモデル表現により、仕様の内容や設計情報を明確化することで紙の仕様書の情報を補完するというものです。このようなモデルに基づくツールでは、一般的にリアルタイムシステムの物理的な挙動や動特性をシミュレーションすることは困難ですが、プログラムの矛盾点などのエラーをチェックする機能が備わっているため、最終的な成果物であるプログラムコードに必要な詳細情報を開発の初期段階で整理するためには大変有効です。ただし、自動生成されるコードの品質はツール機能に依存します。

2.数学/物理学的な見地からシステム仕様の動特性を記述した抽象表現モデル
これは、微分方程式などの数学的な表現やブロック線図などにより、対象システムの出力を物理的な特性として表現したモデルです。具体的には「MATLAB/Simulink」によるブロック線図モデルなどが挙げられるでしょう(図7)。数学的なモデルなので、シミュレーション結果は数値として明示的に得られます。その妥当性はツールが採用している数値解法(ソルバーなどと呼ばれる)に依存することになりますが、メーカーの提供するツールであれば心配はないでしょう。プログラムコードの品質がツール機能に依存する点は「1.オブジェクト指向の概念に基づくプログラム仕様の抽象表現モデル」と同様ですが、対象システムのソフトウェア以外の部分(例えば制御システムにおける制御対象など)も同一モデル内に構成要素として含めることができるため、コードの検証用にモデルを再利用することも可能です。

モデルベース開発ツールの例 「MATLAB/Simulink」 図7 モデルベース開発ツールの例 「MATLAB/Simulink」


 いかがでしたでしょうか。「モデルベース開発とは何か」という疑問は解消されたでしょうか?

 本稿では、モデルベース開発の特徴をなす4つの構成要素のうちの2つ、すなわち「実行可能な仕様書」および「シミュレーションによる設計」について、これらのもたらす効果について解説しましたが、そのほかの2つ「自動コード生成」「テスト・検証」については言及しておりません。読者の皆さんの中には「自動コード生成はモデルベース開発を語るうえで外せない」という方もいらっしゃると思います。実際、雑誌やWebに掲載されている新製品情報などでも、自動コード生成ツールが取り上げられるケースは非常に多く、“モデルベース開発=自動コード生成”というふうにも見られがちです。

 ではなぜ今回、「自動コード生成」について言及しなかったのか? それは、“自動コード生成はモデルベース開発の必須条件ではない”ということを強調したかったからです。むしろ、モデルベース開発を適用する際には、開発プロセスにモデルが導入され、シミュレーションによる設計が定着することが重要です。この下地が前提として存在しなければ、自動コード生成の導入効果も薄れてしまうと筆者は考えます。

 最後にもう一度、モデルベース開発を一言で定義します。モデルベース開発とは、

「モデルをよりどころとして、電子機器製品に含まれる組み込みシステムの開発プロセスを改善する手法」

です。本稿が少しでも皆さんの理解の手助けになれば幸いです。


組み込みモデリング コーナー

組み込みモデリング コーナー

>>コーナーTOPはこちらから


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.