News and Views 2012 autumn / Vol. 3: 上流設計&組込み

モデル駆動型開発の導入

どのような業界であっても、製品世代が新しくなるたびに、より高い性能、より多くの機能が求められます。過剰なコストをかけずにある程度の期間内でこうした要求に応えるには、より効果的な製品開発方法が必要となります。特に組込みシステム機器開発の世界では、この傾向が顕著です。

明確に「アーキテクト」と定義された職種がプロジェクトチームの中になかったとしても、実際には誰かがアーキテクチャを決定する役割を果たしています。ソフトウェアとエレクトロニクスを組み合わせた組込みシステム機器開発において、アーキテクト担当者は与えられた要件を満たすように、高位の設計コンセプトとアーキテクチャを決定しなくてはなりません。その中にはさまざまな設計構成とアーキテクチャの可能性があり、当然トレードオフの解析や検討が行われます。

アーキテクチャを固め、機能をハードウェアとソフトウェアに割り当てたら、それぞれ固有の機能仕様を各チームにハンドオフします。この仕様を基に、ハードウェア設計チーム、ソフトウェア設計チームが詳細化を行います。最終的に、ソフトウェアはハードウェア上で実行され、ハードウェアを制御するものでなければならず、正確なインタフェース仕様が不可欠であり、詳細なテストも避けられません。しかし現状では、ハードウェアチームとソフトウェアチームが緊密に連携することがほとんどなく、開発の後期段階になって、ようやくハードウェアチームとソフトウェアチームがそれぞれ「完成」させた設計を統合/テストし、その段階で重要な問題が見つかることも少なくありません。

「システムレベルのドメインから詳細設計ドメインに渡される仕様が曖昧である」、「ドメイン間の意思疎通がない」、「開発の後期段階まで統合テストが実施されない」などの要素が重なると、開発リスクが高まります。最先端のモデリング言語とツールによって実現されるモデル駆動型開発(MDD: Model Driven Development)手法を使用すれば、これらのリスクを回避し、さらに設計効率の劇的な改善が望めます。MDDはまた、再利用を支援し、開発後期段階で発生するリスクも減らします。

従来型のモデリング活用法とモデル駆動型開発(MDD)

モデルは、今日の開発プロセスで頻繁に使用されています。しかし、通常の「モデル」を設計者以外が使用することはなく、下流の開発プロセスにおいて十分に活用されているとは言えません。モデルを作成はするものの、モデリングの工程と設計工程、テスト工程を別物として扱ってしまうため、せっかくのモデルが充分に活用されずに終わってしまいます。また、従来型のツールは「初期段階での先行型設計モデリング」に対応はしていますが、「モデルから段階的に設計を形づくる」機能を持ちませんでした。

とは言え、状況は変化しつつあります。先見性のある一部の企業では、開発の全プロセスを通じてモデルを完全活用するフローへと移行しています。その背景には、モデルと設計のギャップを埋め、開発プロセス全体を通じたモデルの使用とモデルの変換に完全対応する新たなツールの登場が関与しています。

図1. 組込み機器におけるソフトウェアとハードウェアの開発フロー
図1. 組込み機器におけるソフトウェアとハードウェアの開発フロー

MDDは、従来のシステム開発プロセスを改善し、設計の生産性を最大化するためにモデルを有効活用する手法です。従来の開発プロセス同様、MDD手法における開発フローは要件の策定から始まります。設計者が要件を検討して、UMLなどの高位のモデリング言語で要件をモデル化します。要件をモデル化することで、自然言語の要件が形式化言語の要件に変換され、文書またはデータベースに取り込まれます。アーキテクト担当者がモデリングし、設計者は設計を検討し、機能の分割を行い、機能間のインタフェースと通信パスの概要を記述する作業を始めます。モデル開発に使用するツールには、紙の仕様や要件リストを補完するためにモデルを自動でキャプチャ/文書化する機能が含まれていることもあります。ここまではシステム設計者による従来のモデル使用法と変わりません。設計のアーキテクチャを視覚的に伝達する目的でモデルが使用されています。

真のMDDフローでは、さらにモデルを活用します。アーキテクトが実際にモデルを「動かす、走らせる」ことができたらどうでしょうか。そうしたモデルであれば、設計を文書化するだけでなく、設計コンセプトを正しく実証し、最終実装で求められる機能を明確に確認できます。MDD手法は、モデルを実行し、実際にスティミュラスを適用してモデルのレスポンスを確認することで、高位設計の動作を検証するという考え方に基づいています。

このアプローチは、単なるDUT(Design Under Test: 被試験デバイス)やSUT(System Under Test: 被試験システム)、従来モデルの枠を超えたモデルにまで概念を拡大したものです。必要なスティミュラスとレスポンスはDUTおよび外部環境からの入出力です。設計の「テスト環境」として機能するDUTの外側の世界、つまりテストベンチは補足モデルで表現します。設計者は、この新しいテストベンチ・モデルを使って設計のチェックポイントを挙げ、アーキテクチャが要件を満たしているかを確認します。これは、要件を確認し、初期「実装」を行うための改良メソッドの役割を果たします。

このように、設計者の作業範囲に限ってもMDD手法によってモデルの有用性を高めることができます。これはモデルのキャプチャ取得や文書化のみを目的とする従来のUMLモデリングの枠を超えた手法です。実行機能が加わったMDD手法は、仕様書に含めることだけを目的として文書化されたアーキテクチャではなく、「実行可能な仕様」を提供します。これはMDDプロセスの大きな利点ですが、これだけに留まりません。

加えて、設計者はモデル(またはモデルの一部)を変換したものを開発プロセス下流の担当者に渡し、用途に応じて改良/開発してもらうことが可能です。MDDでは、高位のシステムモデルを、下流の詳細設計プロセスで作業を始めやすいような形式に高位のシステムモデルを変換します。MDDの概念ではモデルと設計の垣根は非常に曖昧です。このため、従来のモデル使用の枠を超えた大きな価値がもたらされます。

開発プロジェクトでは、設計や検証の詳細度(詳細化と統合)と時間軸から、V字を使ってプロセスを表現します。このV字プロセスでは特に上位での妥当性検証が難しく、テストや検証は常に詳細化が進んだ後に行われるため、そこで問題が見つかった場合には、再度V字の左方向に戻らなくてはならなりません。MDDはまさにこの問題に対する解であり、単にモデルを使用する範囲に留まらず、モデルを実行すること、そしてモデルから変換することにより、V字プロセスをウォーターフロー型のプロセスへと進めていくことが可能になります。

システムレベルUMLモデルを開発段階に活用することの価値を最初に認識したのがソフトウェア・ドメインでした。CまたはC++の開発作業を前倒しするために、長年UMLダイアグラムにCコードを取り込む手法が採用されていました。これは、コードを実装する際にソフトウェア・ドメイン内で初期UMLモデルを活用または再利用しようという中間的なステップでした。しかし最近の一部のUMLツールでは、Cコードの完全生成を実現しており、モデルから高精度で高品質のコードを直接、自動生成できるようになっています。

一方、ハードウェア・エンジニア向けにはこのような手段は存在していませんでした。ハードウェア仕様を実行可能かつ変換可能な形式でキャプチャ取得し、強力な基盤を提供してハードウェア設計を加速する強力な基盤とする効果的な手段がなかったのです。仮想プラットフォームの概念をフル活用するためには、このような手段が欠かせません。このことから、MDD手法を用いてSystemCの仮想プラットフォームを完成させるプロジェクトも出現してきています。

図2. MDD手法による開発フロー
図2. MDD手法による開発フロー

メンター・グラフィックスのソリューション: BridgePoint

BridgePointは、システム要件と設計を含むMDDフローを完全にサポートするツールです。特にソフトウェア開発においては10年以上の実績を誇ります。要求仕様の明確化、設計チーム内でのコミュニケーションや理解の深化、システム仕様の定義、機能モデルと妥当性検証、そして最適化されたコード生成とドキュメント生成が可能です。コーディング開始前にアプリケーション設計をテストでき、妥当性が検証された「実行可能な仕様書」とすることが可能になります。

BridgePointは、xtUMLをモデリング言語として使用します。xとはExecutable、つまり実行可能であるということ、そしてtはTranslatable、つまり変換可能であることを意味します。プラットフォームに依存せず要求仕様をモデル化し、デザインとしてのさまざまな構成や実装方法を探求することができます。BridgePointで作成したモデルから直接ソフトウェアコードを生成したり、あるいはSystemCによるハードウェア仮想プラットフォームへと出力することが可能です。

図3. xtUML(実行可能変換可能UML)
図3. xtUML(実行可能変換可能UML)

MDDツールであるBridgePointが提供するSystemCへの変換機能を利用し、ハードウェアの仮想プラットフォーム・アーキテクチャ設計ツールであるVistaとの連携による成功事例に基づいた技術文献があります。インプラント型医療機器という、安全性が求められるアプリケーションでの使用例で、MDDに仮想プラットフォームを取り込むという新しいアプローチを導入した動機、採用した手法、新しいアプローチの導入効果、価値などについて説明しています。

まとめ

システム開発プロセスでは長い間にわたりモデルが使用されてきましたが、MDDフローを採用する企業が増える中で、設計プロセス全体を通じてモデルをより効率的、効果的に活用できるようになりました。MDD手法は、ますます複雑化するソフトウェア開発とハードウェア開発のプロセスにおいて、さまざまな価値をもたらします。それには、モデルそのものが実行可能な仕様書となる点、各詳細度における実行による妥当性検証が可能な点、モデルから最適化されたC/C++、SystemCなどのコード生成、そしてテストや検証でのモデルの参照や再利用といった点などが挙げられます。

BridgePointはxtUML.orgからダウンロードし、ライセンスフリーで使用することが可能になりました

xtUML.orgをご覧ください