研究紹介シリーズ(第3回)

双方向モデル変換の言語的基盤技術に関する研究−ザBiGプロジェクト
ソフトウェアの開発過程記述からソフトウェアを進化させる

ソフトウェア開発の生産性向上は長年にわたり議論され続けてきた重要なテーマだ。このテーマにおいて近年提唱された手法のひとつに、OMG(Object Management Group)によって公式発表されたモデル駆動アーキテクチャ(MDA:Model Driven Architecture)がある。これはモデリング言語でソフトウェアを設計し、それを幾段階かのモデル変換によって実行コードまで完成させるという開発手法だ。要求仕様を正確に実行コードに反映できること、しかもその過程がツールによるモデル変換によってシームレスに進行することによって、ソフトウェアの生産性を高めようというものだ。

このMDAの手法に、双方向でのモデル変換を取り入れ、より開発生産性を高めようという研究が、胡振江教授(以下、胡教授)が率いるチームによって進められている。それが「双方向モデル変換によるソフトウェア開発に関する研究」だ。この研究の狙いは、ソフトウェア開発の各所において発生する変更を、開発の全工程に同期(一貫させる)ことで、段階的に進化させながら優れたソフトウェアを完成させていくプロセスを円滑にしようというものだ。

双方向のモデル変換実現によってMDAの効果を向上させる試み

アーキテクチャ科学研究系
胡振江教授

胡振江教授は1992年に中国から来日。東京大学でプログラム変換・運算による効率のよいソフトウェアの構築理論をテーマに博士号を取得し、研究に従事してきた。MDAにおける双方向変換のアイデアは、それまでの研究活動が大きなきっかけとなっているという。

胡教授は、2003年度から2007年度までの5年間にわたって文部科学省リーディングプロジェクトe-Societyの「高信頼構造化文書変換技術」(研究代表者:東京大学武市正人教授)に参画した。この研究はジャストシステム株式会社との産学連携で主導されたもので、XML構造化文書の双方向変換処理の研究において重要な役割を果たした。胡教授はその後、武市教授と研究員のMu氏とともに、この研究成果をもとに特許を取得している。その特徴は、木構造をもつデータに対するビューの変更もソースに変換できることであり、コンテンツ管理システム(CMS)側で行った内容の変更が関連する他の内容に自動的に反映させることができる。

ここで本題であるMDAにおける双方向のモデル変換がどのような意義をもつのかを理解するために、MDAがなんであるかを説明しよう。

ソフトウェアは、プラットフォームや実装言語に依存しないモデルで表現できる。このモデルはモデリング言語で記述するが、現在主流となっているモデリング言語はUML(Unified Modeling Language:統一モデリング言語)である。

MDAでは、ソフトウェアの仕様をモデリング言語で具体的に記述することから始まる。それによって上流工程においてソフトウェア機能を洗い出しやすくなり、曖昧さも排除できる。そして、モデリング言語で記述したモデルからは実行コードを生成することも理論上可能になる。これを実際に実現したツールとして代表的なものに、IBM(旧Rational)のRational Roseがある。

MDAは、UMLがきっかけとなり発展してきた。MDAの特徴はソフトウェアの設計をアーキテクチャと分離することにある。ソフトウェアの設計の変更、アーキテクチャの変更を独立させることで、実装技術やアーキテクチャが変化しても、機能的要求仕様を表現したモデルは再利用できる。MDAでは、ソフトウェアの完成までにいくつかのモデルが作成される(例えば、PIM<プラットフォーム独立モデル>、PSM<プラットフォーム特化モデル>など)。それぞれは変換ツールによって、下流工程(実行コードの生成に向かって)に向かってモデルが変換・生成され、最終的にターゲット・プラットフォームに合った実行コードが生成される。

MDAでは、モデルを上流工程から下流工程に向かって一方向のモデル変換を行う。これに対して、胡教授が研究する双方向変換は、MDAに下流から上流へのモデルの逆変換も提供し、MDAによるソフトウェア開発の生産性を飛躍的に高める試みである。

ソフトウェアの生産性・品質向上を目指す「双方向モデル駆動ソフトウェア開発」

MDAにおけるモデル変換は上流から下流に向かって行われる。したがって、途中のモデルで変更が発生すれば、遡って上流のモデルも修正しないと、全体的な一貫性は保てなくなる。ここで変更が小規模なものであればよいが、大きな変更が発生した場合、他のモデルの修正は大変だ。しかも変更が頻発するとなると、都度の反映はほとんど困難なものとなる。そのため、実際には上流工程への反映は放置される結果となり、ソフトウェアが完成した際は設計と実装が大きく乖離している実態を招くことがしばしば起きる。

個別のモデル修正の作業による工数の増大や、人的作業によるミス(バグ)が発生するばかりではなく、この状態で、将来のソフトウェアの改変・進化や異なるプラットフォームへの移植が必要となった場合、設計と実装が異なることとなり、本来のMDAのメリットは損なわれてしまうことになるのだ。こういった事態を防ぐ回答が「双方向変換」である。

双方向変換は、通常順方向のモデル変換のみを行うMDAに、逆方向のモデル変換を提供する。あるモデルに加えた変更を、正しく自動的に他のモデルに伝播することができるため、修正の都度、人の手によって関連するモデルを修正する必要がなくなる。すなわち、設計から実装までの全ライフサイクルでモデルの一貫性が保たれることによって、生産性向上を実現し、しいてはソフトウェアの品質向上にもつながるわけである。

胡教授はこれを「モデル駆動ソフトウェア開発(MDD)」に対して「双方向モデル駆動ソフトウェア開発(BMDD)」と呼ぶ。BMDDでは逆方向の変換を可能にする双方向変換言語「UnQL+」を用いる。このUnQL+が、双方向を実現する鍵となる。

双方向機構を実現するための双方向変換言語「UnQL+」

「双方向変換を実現するには、小さい双方向の部品をつなげることで、全体として双方向性を実現できるのです」

胡教授はこのようにアイデアの発端を説明する。UnQL+は、この小さな双方向可能な部品を組み合わせて大きな双方向変換を記述するための言語だ。UnQL+の語源は、非定型「Unstructure」と問い合わせ「Query」、拡張「+」だ。グラフの問合せ言語を拡張したもので、文法はSQLの構文に非常に近い。

ここで、ソフトウェア開発における分析モデル、設計モデルはグラフで表現されることに着目してほしい。ここでいうグラフとは、統計で扱う折れ線グラフやレーダーチャートといったものではなく、UMLでいえばユースケース図やクラス図、リレーション図、シーケンス図のようなものだ。BMDDにおけるグラフ(モデル)の変換を、双方向変換のグラフ変換機能をもつ言語で実装することで、モデルの双方向変換を実現しようとするのが本研究の肝である。

「従来の言語は、木構造や文字列を処理の対象としていました。木構造に対して双方向を計算する言語はすでにありますが、グラフを対象にしたものはありません。UnQL+は、グラフを計算対象とする言語です」(胡教授)。

木構造であれば簡単だが、グラフの場合はノードを共有していたり、ループをしていたりするため、逆方向の変換は非常に難しい技術だという。ちなみにUnQL+が実際にどのように動作するかを、The BiG Projectのデモページで体験することができる。

実用化にむけて民間企業との連携を探る

UnQL+は、まだまだ発展途上だ。加えて、BMDD実現のための要素技術にすぎない。BMDDが実用化されるまでには、UnQL+以外にも多くの研究課題を抱えているが、現時点での部分的な成果を下記のとおりだ。

  • モデル変換言語「ATL」に関する双方向化―すでに多くの企業で使われているATLのサブセットについて双方向化に成功している。
  • グラフ問い合わせ言語からグラフ変換言語へ―UnQL+言語の開発。
  • Beanbag:モデル同期器の生成器―その応用システムとして、アプリケーションを停止することなくアップグレードを可能にするプラットフォームの開発。金融分野などアプリケーションを停止できないクリティカルな環境に応用できる要素技術。

BMDDの実用化には 現場の方の協力が必要です (胡教授)


現在、このプロジェクトには、国立情報学研究所、東京大学、電気通信大学、芝浦工業大学、北京大学が参画している。

「外部から10名のユーザに研究に参加していただくことを目標にしています。現場で開発に従事するユーザの方々に参加いただくことに意義があります。ソフトウェア開発の現場で製品として使っていただくものにするためには、民間企業の協力が不可欠だと考えているからです」(胡教授)。

近年、企業ではシステム開発における原価率が大きな課題となっており、大規模プロジェクトになるほど、原価率は切実な問題である。一般に、システム開発は、要求仕様策定、設計、開発、テストという段階を経て行われるが、各段階ではさまざまな人がかかわり、実に多くの変更作業が行われている。こうした変更作業が原価率を押し上げていること周知の事実である。この際、それぞれの段階で変更が生じた際に、“逆変換”によって、その前の段階にもさかのぼって変更を反映させることができれば、各段階で作成される成果物の一貫性が保証され、品質と生産性の向上に大きく寄与することができる。

MDDはまだ発展途上であり、企業に根付いている開発手法ではない。また、BMDDの開発は、国立情報学研究所のグランドチャンレンジ課題として、言語自体を一から開発する一大プロジェクトであり、壮大な構想でもある。BMDDが実際のソフトウェア開発の現場でその効果を発揮するまでには、まだまだ乗り越えなければならない壁はたくさんあるものの、ソフトウェア工学においてきわめて大きな貢献となろう。

胡教授より
我々は双方向変換の研究分野で世界に先駆けすでに7年間の研究の蓄積があります。BMDDは、5年、10年とかけて完成させていく技術ですが、大きなブレイクスルーの可能性を感じています。BMDDを実用化するには、統合開発環境(IDE)として完成させる必要があり、IDEには、使いやすさ、すなわちユーザインタフェースのデザインの要素も重要です。また、マニュアルなど、実際に使ってもらうには相当の準備が必要です。こういった我々にはできない部分を、企業の方に協力いただきたいと考えています。一緒にチャレンジしてもらうことを希望します。

関連情報

コメントは停止中です。