テキスト - 最近のメタボリックス

組込みソフトウエアシンポジウム ESS04
モデル駆動開発におけるアクション言語の現状と今後への期待
山 田 正 樹††
久 保 秋
真†
モデル駆動型開発(MDD)において,アクション言語はプラットホーム非依存な振る舞いを命令
的に記述するための手段として重要である.本チュートリアルの目標は,アクション言語を用いた振
る舞いの記述が通常のプログラミング言語による記述とは異なっていることを理解していただくこと
にある.また,現段階のアクション言語周辺の課題を提示し,その解決には産学の協同が必要である
ことを提起し,今後への期待とする.
Action Language in Model Driven Development, Now and Future.
Masaki Yamada†† and Shin Kuboaki†
In Model Driven Development, Action Languages are important technique for imperative
description of platform independent model behavior. This tutorial aims to show that the
behavior description using an action language is different from the description using a programming language for general purpose. And it is expected that the cooperation between
industry and academia will solve the issues for action languages.
ション言語による振る舞い記述の例を示すので,通常
1. は じ め に
のプログラミング言語による記述とは趣が異なるこ
モデル駆動型開発(MDD)は,モデル駆動型アーキ
とを感じてほしい.二つ目は,アクション言語には技
テクチャ(MDA )に基づく開発方法で,現在 IBM,
術発展が必要と感じたからである.しかし,現在アク
I-LogiX, Compuware,その他多くのツールベンダー
ション言語の構文は統一も標準化なされておらず,誰
が積極的な取り組みを見せている.MDD の目標に,プ
もが利用できるオープンな利用環境もほとんどないこ
ラットホーム独立なモデル(PIM)からプラットホー
とが多くの人が学び利用するための障害となっている.
☆
ム依存のモデル(PSM)を経てコードにいたるまでの
本チュートリアルから,アクション言語による振る
モデル変換の実現とトレーサビリティの確保がある.
舞いの記述はプラットホーム独立な抽象度の高いもの
PIM の段階で動作させたいと考えた振る舞いをモデ
であることを知っていただければと考える.また,ア
ル変換を繰り返してコードへと結びつけるには,特定
クション言語には研究の余地があり,使いやすさとよ
のプラットホームに依存しないで振る舞いを記述する
い性質を持つことを両立したアクション言語の研究に
方法が必要になる.このようなプラットホーム独立な
産学が協力することを期待していることを伝えたいと
振る舞い記述用の言語を MDA ではアクション言語と
考える.
呼んでいる.
以降,第 2 節でアクション言語とは何かを説明し,
本チュートリアルでは,MDA や MDD 周辺の技術
第 3 節でいくつかのアクション言語の実例を示す.次
的話題の中から特にアクション言語の状況について紹
いで第 4 節で現状の課題を第 5 節で今後への期待を
介する.アクション言語をテーマとして選択した理由
挙げる.
は二つある.一つ目は,アクション言語に関する誤解
2. アクション言語について
が多いと感じたことに起因している.第 3 節にアク
2.1 アクションセマンティクスとアクション言語
OMG は,2001 年に UML1) の一部として UML
† (株)テクノロジックアート
Technologic Arts Incorporated.
†† (有)メタボリックス
Metabolics, Ltd.
☆
MDA は OMG の商標である.
アクションセマンティクス2) を定めた.この仕様は,
モデルを実行可能にするために必要な性質を扱う方
法についてだけ定めており,具体的なアクション言語
1
2
組込みソフトウエアシンポジウム ESS04
の構文は規定していない.アクションセマンティクス
では動作を表すのにアクションと呼ぶ単位を基本とす
る.また,アクションを Composite, Read and Write,
Computation, Collection, Messaging, Jump の 6 種
類のカテゴリに分類している. ひとつのアクションは
オブジェクトのデータ入出力を扱う InputPin, Out-
putPin を複数を持つ.複数のアクションの InputPin
と OutputPin をつなぐことで,意図した動作を複数
のアクション間を流れるデータフローとして表現する.
Executable UML3) は,アクションセマンティクス
に従う実行可能な UML モデルを作成する考え方につ
いて具体的に解説している.その中で,アクション言
語を構成するには,上記のカテゴリに対応した次のよ
うな性質を持ち,モデルリポジトリを操作できる言語
を構成すればよいとしている.
図 1 例示用のクラス図( 3) より抽出)
Fig. 1 Class diagram for example.
• オブジェクトの生成・削除
• 属性の書き込み・読み出し
• クラスの包含範囲
• 変換定義を記述する言語
• オブジェクトの限定
このうち,変換定義を記述する言語の動向がアクショ
• 関連の生成・探索・削除
ン言語の発展に大きく影響するであろう.
• 汎化 - 特化関係の生成・再分類・削除
ビジネスルールや技術要求事項といった性質や制約
3. アクション言語の例
を表すための方法としてオブジェクト制約言語(Ob-
MDA にコミットしている企業とそのツールの一覧
ject Constraint Language: OCL)4) がある.アク
は 8) にあるので,各社のツールの特徴についてはそ
ション言語が UML アクションセマンティクスをメタ
ちらを参照するとよい.
モデルとした動的な振る舞いを命令的に記述する言語
BridgePoint9)
☆
,iUML10) ,PathMATE11) など
となっているのに対して,OCL はシステムの振る舞
をはじめ多くのツールは振る舞いを状態遷移図に記述
いを宣言的に表明する言語であることに注意されたい.
する方式をとっている.この方式の代表的なツールは
また,なぜアクションの記述に Java のような汎用
BridgePoint である.BridgePoint のアクション言語
のプログラミング言語を使わないのかといったことに
については言語マニュアルを 9) より参照できる.ま
ついては 5) に詳しい.
た,この言語を使用した事例は 3) や 12) にある.以
2.2 標準化の動向
下では,3) の中で事例としている「インターネット書
アクション言語の標準的な構文はまだ定められてお
店システム」からごく一部を抽出したものを例として
らず,各社が個別に定義し実装している状況にある.
使用する.図 1 に例示用のクラス図を示す.この図は
アクション言語の標準化活動としては,OMG の QVT
Shipment クラスと Order クラスおよびその関係を表
6)
(Query, Views, and Transformations) の策定活動
を挙げておく.
QVT は,あるモデルから別のモデルへの変換方法
している.また図 2 には Shipment クラスの状態遷
移図を示す.Shipment クラスの状態 ’1. Preparing
Shipment’ の振る舞いを BridgePoint のアクション言
を扱うもので,主にモデルコンパイラを開発する人
語で記述したものを図 3 に示す. (a) の relete 文
を対象としている.モデリング言語を定義するための
は,受け取ったイベントの情報から Order クラスのイ
OMG の標準である MOF(Meta Object Facility)7)
ンスタンスへのリンクを生成している.(b) ではイベ
を用いようと試みており,標準化後は MOF の一部と
ントのもつ情報を自身の属性へコピーしている.(c)
なる予定である.QVT にはその名が示すように次の
は別のサブシステムへのイベント送信を表している.
三つの言語を含んでいる.
• モデルのビューを作る言語
• モデルに問い合わせる言語
☆
Project Technology 社は 2004 年 3 月 Accelerated Technology 社の Mentor Graphics 事業部に吸収されている.
MDD アクション言語の現状と今後への期待
3
// (a) 注文に対する荷物を作成する.
self->("contains product selected as") Order := order;
// (b) 注文から荷物出荷のための配送情報をコピーする.
self {
.recipient := order.recipient;
.deliveryAddress := order.deliveryAddress;
.contactPhone := order.contactPhone;
}
// (c) 出荷係員に荷物の梱包準備ができたことを通知する.
signal ShippingClerk::shipmentReadyToPack;
図 5 TALL によるアクション記述( 3) の例を修正)
Fig. 5 Action description example by TALL.
この他,シーケンス図にアクションを記述するタイプ
のツールとして OpenMDA コンソーシアムの Open-
MDA13) がある.
4. 現状の課題
まず,アクション言語の認知が低い.たとえば,UML
図 2 Shipment クラスのステートチャート( 3) より抽出)
Fig. 2 Shipment class statechart.
でモデルを作成している設計者の中にもクラスの持つ
振る舞いは汎用のプログラミング言語で書くものと考
// (a) 注文に対する荷物を作成する.
relete self to rcvd_evt.order across R6;
// (b) 注文から荷物出荷のための配送情報をコピーする.
self.recipient = rcvd_evt.order.recipient;
self.deliveryAddress
= rcvd_evt.order.deliveryAddress;
self.contactPhone = rcvd_evt.order.contactPhone;
// (c) 出荷係員に荷物の梱包準備ができたことを通知する.
genetate shipmentReadyToPack(
shipmantID:self.ShipmentID) to EE_ShipingClerk;
図3
BridgePoint のアクション言語による記述( 3) より引用)
Fig. 3 Action description in BridgePoint.
えている向きが少なくない.このことは,少なくとも
PIM においてはプラットホームに依存しない振る舞
い記述方法が必要という理解が浸透していないことを
意味する.
次に,アクション言語の利用にはまだ障害が多い.
現在は標準化された構文がなく,利用環境はベンダー
からツールを購入しないと手に入らない.ツールは高
価で広く普及しているとはいいがたく,学生や個人が
振る舞いを記述する方法について体験するのは困難な
状況にある.
// (a) 注文に対する荷物を作成する.
(Self,order)|link R6.’contains product selected as’;
// (b) 注文から荷物出荷のための配送情報を
//
’>’ 演算子を使ってコピーする.
order.reciient > self.recipient;
// そのほかの情報をコピーする
order.(deliveryAddress, contactPhone)
> self.(deliveryAddress, contactPhone);
図 4 SMALL によるアクション記述( 3) の例を修正)
Fig. 4 Action description example by SMALL.
第三に,アクション言語の実現方法に関する議論が
足りない.実現するためのアプローチには,集合操作
的なもの,代数的な仕様記述などがあろうし,使いや
すさくる他言語からの構文の借用なども出てくる.し
かし,商用ツールがほとんどということもあって,ど
のようなアプローチがよいかについてオープンな場で
議論するのが難しい状況にある.
また,14) では,Executable UML の扱う方法では
次のような課題があると指摘している.
SMALL は Mellor らが考案したアクション言語
• 状態遷移機械に振る舞いを記述する方法は,リア
で,データフローを明示的に使用している.図 4 に
クティブなシステムを扱う分野では有効だが一般
SMALL で記述した Shipment クラスの状態 1 のア
クションの記述を示す.UNIX のパイプやリダイレク
ションに使うシンボルを使ってデータフローを表現し
ている.
TALL は Balcer らが考案したアクション言語で,従
来の手続言語的な印象を持っている.先の SMALL と
同じ振る舞いを記述した例を図 5 に示す.
業務には煩雑すぎる.
• アクション言語は PSM と同じ抽象レベルでさほ
ど高水準ではない.
• 具体的な表記法・構文が標準として提供できてい
ない.
組込みソフトウエアシンポジウム ESS04
4
5. 今後への期待
参
まず,ツールベンダに依存しないアクション言語を
誰もが利用できるようになってほしい.MDA 対応あ
るいは MDD 対応を謳う
☆
ツールは一般に非常に高
価で,個人では購入することも機能やアクション言語
を学ぶことも難しい.アクション言語を設計しモデル
コンパイラを開発できれば,最小限のアクション言語
と利用環境を整備できるのであるから,オープンなモ
デル記述と変換技術を提供し,そこで用いるオープン
なアクション言語の提供するといったあたりを産学の
協同活動で進めることができないものだろうか.
次に,アクション言語の開発や普及には産学の協同
が欠かせないと考える.双方のよい点をこの技術に活
かしてもらいたい.とりわけ組込みエンジニアには多
くの期待をしたい.彼らはシステムの動的な側面を捉
える優れた能力を有している.まとめると,アクショ
ン言語に関して
「産」の力を使いやすさや実行効率のために
使いやすいアクション言語を提供するには,利用者
であるエンジニアのアイディアや実装技術が必要で
ある.
「学」の力を性質のよいアクション言語を作るために
アクション言語は汎用プログラミング言語とは異な
る性質を必要とする.モデルのもつ情報をどのような
形式で扱うのかによって,アクション言語の性質が決
まってくるであろう.よい性質を持つアクション言語
を提供するには,多くの情報モデルの性質をよく知り
形式化の力に富む,大学や諸機関の研究者の力が必要
である.
6. お わ り に
本チュートリアルでは,MDD におけるアクション
言語とその記述の特徴を紹介した.また,アクション言
語とその利用技術は,重要だが認知度は低く,多くの
人が学べる状況にはないことを指摘した.このチュー
トリアルが,より多くのエンジニアや研究者がアク
ション言語の研究と発展に寄与していただくきっかけ
になればさいわいである.
謝辞 今回のチュートリアルを勧めてくださった東
海大学の渡辺晴美先生とキャッツ株式会社の川井奈央
さん,そのほか関係者のみなさまに謹んで感謝の意を
表する.
☆
MDA 対応を認証する機関はまだなく,ツールベンダーが自身
のツールに MDA 対応を謳っている.
考
文
献
1) OMG: The Unified Modeling Language.
http://www.uml.org.
2) OMG: UML Action Semantics.
http://www.omg.org/cgi-bin/doc?ptc
/02-01-09.
3) Mellor, S. J. and Balcer, M. J.: Executable
UML MDA モデル駆動型アーキテクチャの基礎,
翔泳社 (2003).
4) Warmer, J. B. and Kleppe, A. G.: The Object
Constraint Language: Precise Modeling With
Uml , Addison Wesley, Reading, Massachusetts
(1998).
5) Mellor, S. J., Tockey, S., Arthaud, R. and
LeBlanc, P.: Software-platform-independent,
Precise Action Specifications for UML, The
Unified Modeling Language, UML’98 , pp. 281–
286 (1998).
http://www.projtech.com/pubs
/current/uml98.pdf.
6) OMG: QVT. http://qvtp.org.
7) OMG: MOF.
http://www.omg.org/technology/documents
/formal/mof.htm.
8) OMG: MDA Committed Companies and
Their Products.
http://www.omg.org/mda/
committed-products.htm.
9) Accelerated Technology(旧 Project Technology): BridgePoint Object Action Language
Manual.
http://www.projtech.com/pdfs/bp/oal.pdf.
10) Kennedy Carter Ltd.: iUML.
http://www.kc.com/.
11) Pathfinder Solutions: PathMATE.
http://www.pathfindermda.com/.
12) Starr, L.: Executable UML : A Case Study,
Model Integration LLC (2001).
13) OpenMDA コンソーシアム: OpenMDA.
http://www.openmda.org/.
14) Kleppe, A., Warmer, J. and Bast, W.: MDA
Explained: The Model Driven Architecture–
Practice and Promise, Addison-Wesley (2003).