• 検索結果がありません。

JAIST Repository: MDAフレームワークのEDA分野への適用

N/A
N/A
Protected

Academic year: 2021

シェア "JAIST Repository: MDAフレームワークのEDA分野への適用"

Copied!
52
0
0

読み込み中.... (全文を見る)

全文

(1)

JAIST Repository

https://dspace.jaist.ac.jp/

Title

MDAフレームワークのEDA分野への適用

Author(s)

岩政, 幹人; 落水, 浩一郎

Citation

Research report (School of Information Science,

Japan Advanced Institute of Science and

Technology), IS-RR-2007-012: 1-50

Issue Date

2007-11-20

Type

Technical Report

Text version

publisher

URL

http://hdl.handle.net/10119/8441

Rights

Description

リサーチレポート(北陸先端科学技術大学院大学情報

(2)

MDAフ

レー ム ワ ー ク のEDA分

野 へ の 適 用

岩 政 幹人

落 水浩 一 郎

2007年11月20日

IS-RR-2007-012

北 陸 先 端 科 学 技 術 大 学 院 大 学

情 報 科 学 研 究 科

〒923-1292石

川 県 能 美 市 旭 台1-1

E-mail:{iwamasa,ochimizu}@jaist.ac.jp

OMikitoIwamasaandKoichiroOchimizu,2007

(3)

MDAフ

レー ム ワ ー ク のEDA分

野 へ の 適 用

岩政幹 人、落水浩 一郎

北 陸先端科学技術 大学院大学 情報科学研 究科

〒923-1292石

川 県能美市旭 台1-1

E-mail:{iwamasa,ochimizu}@jaist.ac.jp

Abstractソ フ トウエ ア 工 学 に お け るMDAフ レー ム7一 クに 基 づ く仕 様 の 変換 ・合 成 技 術 が 、EDA(Electric

DesignAutomation)シ ス テ ム の 自動 化 ・高 品 質 化 に ど の よ うに 寄 与 で き る か を検 証 した 。 変 換 定 義 の 言 語 と して 、 オ ー プ ン ソー ス プ ロ ジ ェ ク トで あ るATL(AtlasTranslationLanguage)を 選 択 し 、 ATLに お い て 、1)設 計 デ ー タDBか らの 目的 コ ー ド生 成 部 をATLに て 記 述 す る 。 ま た2)設 計 デ ー タ DB生 成 に 関 して は オ ー プ ン ソー ス プ ロ ジ ェ ク トで あ るEMF(EclipseModelingFramework)を 適 用 す る こ と に よ り メ タ モ デ ル か ら 自動 生 成 を構 築 で き る こ と を確 認 す る。 さ ら に3)2に お け るXMIフ ァ イ ル 保 存 形 式 か ら の 内 部DBへ の 読 み 取 り(デ シ リア ライ ズ)の 箇 所 を 対 象 プ ロ グ ラ ム と見 立 て て 、EMFで は な く てATLに て メ タ モ デ ル か らのAPI生 成 を行 うこ とに よ り、 メ タ モ デ ル を利 用 した プ ロ グ ラ ム 生 成 が EDAに お い て も有 効 で あ る こ とを 示 す 。 ま た これ らの 過 程 で 、 ど こ ま でimperativeな 定 義 を排 除 した 仕 様 書 が 記 述 で き るか を 検 証 した 。 結 果 と して 、EDAの 分 野 で は メ タ モ デ ル に 基 づ く モ デ ル 変 換 が イ ン ダ ス ト リア ル な事 例 に お い て も 自動 化 と高 品 質 化 に 寄 与 す る こ とが わ か っ た 。 ま た 木 言 語 理 論 に よ る モ デ ル 変 換 技 術 の 形 式 的 な 取 り扱 い に つ い て 考 察 した 。

(4)

目 次 1は じ め に 2背 景 2.1設 計 デ ー タDB事 例...,...,... 2.2事 例 に お け る 課 題...,.,...._.._.__ 3関 連 研 究 4メ タ モ デ ル 技 術 の 評 価 の ア ウ ト ラ イ ン 5モ デ ル 変 換 技 術 概 要 5.1モ デ ル 変 換QVT...。.... 6ATLの 紹 介 6.1ATL言 羊 細... 6.1.1Header. 6.1.2Helper 6.1.3MatchedRule 6.1.41mperativeなRule... 6.1.5CalledRule 6.2変 換 の 例... 7評 価1:ATLに よ る 目 的a‐ ド 生 成 の 構 築 7.1AsmLの 紹 介...,.。... 7.2VSMメ タ モ デ ル... 7.3AsmLメ タ モ デ ル...,.. 7.4単 純 変 換 ル ー ル.._... 7.5複 雑 変 換 ル ー ル... 8評 価2:EMFに よ る 設 計 デ ー タDBの 構 築 8.lEMFの 紹 介...1 8.2VSM設 計 デ ー タDBの 構 築.... 2 4 6 6 7 8 9 10 10 12 14 14 14 15 16 16 17 22 22 24 25 27 28 31 31 35

(5)

9評 価3:ATLに よ る デ シ リ ア ラ イ ズ の 生 成 の 構 築36 9.1デ シ リ ア ラ イ ズ 問 題 の 説 明...36 9.2ATLに よ る デ シ リ ア ラ イ ズ 変i換 の 実 現...,,.37 9.3メ タ な モ デ ル 変 換 の 導 入...40 10考 察43 10.1ル ー ル に 基 づ く モ デ ル 変 換 の ク ラ ス...43 10.2メ タ な モ デ ル 変 換 が 有 効 な 対 象 に つ い て...,..43 11木 言 語(TreeLanguage)理 論 と の 関 連44 11.1ATL事 例 と の 対 応 付 け...46 12ま と め とFutureWork48 3

(6)

1は

じめ に

報 告 者 はEDA(ElectricDesignAutomation)ツ

ー ル 作成 の プ ロ ジ ェ ク トに お い て 、EDA

ツ ー ル の 中 心 と な る 設 計 デ ー タDB(CADシ

ス テ ム の 内 部DB)を

構 築 す る に 当 た っ て 、

メ タ情 報(以 下 メ タモ デ ル と呼 ぶ)か らDBお

よび フ ァイ ル 入 出 力 処 理 を 自動 生 成 す る

変 換 ツー ル を 作 成 した。 こ の変 換 ツー ル は モ デ ル 構 造 の 変 更 へ の 耐 性 、他 の 設 計 デ ー タ

DBに

も メ タ モ デ ル を入 れ 替 え る だ け で 容 易 に適 用 可 能 と な る汎 用 性 、 生 成 され たbB

自体 にバ グ が ほ とん どな い とい う信 頼 性 へ の 寄 与 、ま た メ タモ デ ル を 元 に して い る の で 、

フ ァイ ル 構 造 、DBの

構 造 の 相 互 トレー サ ビ リテ ィ が 向 上 した 等 の メ リ ッ トが プ ロ ジ ェ

ク ト内 で 評 価 され た 。 一 方 、 同EDAツ

ー ル の 個 別 機 能 で あ る 、設 計 デ ー タDBか

らの

目的 コー ド生 成(言

語 はSpecC仕

様 記 述 言 語)部 分 に お い て は 、 変 換 処 理 が 手 続 き プ ロ

グ ラ ム で 直 接 的 に コー デ ィ ン グ され た の で 、 モ デ ル の 変 更 、 変 換 規 則 の 変 更 に対 して 、

前 記 、 設 計 デ ー タDB生

成 の 自動 化 で 挙 げ た メ リ ッ トを享 受 で き な か っ た とい う反 省 点

が あ った 。

目的 コー ド生 成 部 に お い て は 、設 計 デ ー タ の メ タ モ デ ル の変 更 お よ び 出 力 対 象 の コ ー

ド形 式 の変 更 に対 す る保 守 性 が 低 い とい う課 題 が あ った 。 これ は 変 換 元 と変 換 対 象 の メ

タモ デ ル の 構 造 が 異 な る こ と に よ り設 計 デ ー タDBと

出 カ コ ー ド形 式 に 一 対 一 の 対 応 が

取 れ ず 、 変 換 処 理 にimperativeな

処 理 が 必 要 に な り、結 果 と して 目的 コー ド生成 部 の 品

質(信

頼 性 、保 守 性 等)が 確 保 で き な か った こ とが 主 な理 由 に挙 げ られ る。 一 方 、設 計

デ ー タDBの

構 築 に お い て も、 変 換 ツ ー ル の 作 成 自体 が属 人 的 な職 人 芸 で 実 現 され 、 当

人 以 外 に よ る保 守 性 が 低 い とい う問題 が あ っ た 。

モ デ ル 変 換 技 術 は 変 換 元 モ デ ル 、 変 換 対 象 モ デ ル の メ タ モ デ ル を そ れ ぞ れ 定 義 して 、

こ の メ タ モ デ ル に基 づ い て 変 換 仕 様 を定 義 し変 換 仕 様 か ら変 換 プ ロ グ ラム を 自動 生 成 す

る仕 組 み で あ る 。 そ こで 、 モ デ ル 変 換 技 術 を 、上 記 対 象 に 適 用 し課 題 の 解 決 を は か った 。

着 眼 点 は 、 い か にimperativeで

な い 仕 様 記 述 の み で 変 換 仕 様 が 構 成 で き る か で あ る。 一

方 設 計 デ ー タDBの

構 築 も同 様 に モ デ ル 変 換 の 枠 組 み で 形 式 化 出 来 る こ とを 検 証 す る。

これ らの 着 眼 点 は プ ロ グ ラム に不 具 合 が 発 生 す るの は 、 プ ロ グ ラ ム を記 述 す る か らで あ

り、 プ ロ グ ラ ム レス す な わ ち 、 宣 言 的 な 仕 様 書 か ら 自動 生 成 で き れ ば 、 不 具 合 は整 合 性

の あ る仕 様 書 を作 成 す る こ とに 注 力 す れ ば 駆 逐 で き る とい う(個 人 的 な)信 念 に 基 づ い

て い る。

モ デ ル 変 換 フ レー ム ワー ク の例 と して 、 オ ー プ ン ソー ス プ ロ ジ ェ ク トで あ るATL[14]

を選 択 し、ATLに

て 、1)設

計 デ ー タDBか

らの 目的 コー ド生 成 部 をATLに

て 記 述 す る

こ とを 行 う。 ま た2)設

計 デ ー タDB生

成 に 関 して は オ ー プ ン ソー ス プ ロ ジ ェ ク トで あ

(7)

るEMF[4]を

適 用 す る こ とに よ り メ タ モ デ ル か ら 自動 生 成 を構 築 で き る こ と を確 認 し、

さ ら に3)2に

お け るXMIフ

ァイ ル 保 存 形 式 か らの 内 部DBへ

の 読 み 取 り(デ シ リア ラ

イ ズ)の 箇 所 を対 象 プ ロ グ ラ ム と見 立 て て 、EMFで

は な くてATLに

て メ タ モ デ ル か ら

のAPI生

成 を 行 う こ と に よ り、 メ タモ デル を利 用 した プ ロ グ ラ ム 生 成 がEDA分

野 に お

い て も有 効 で あ る こ と を示 す0ま た これ ら の過 程 で 、 ど こま でimperativeな

定 義 を 排 除

した 仕 様 書 が 記 述 で き る か を検 証 し た。

(8)

2背

EDA(ElectricDesignAutomation)に

お け る設 計 デ ー タDBと

は 、 設 計 情 報 を保 存 す る

内 部 デ ー タ ベ ー ス で あ る。EDAツ

ー ル とは 、GUIな

ど のCADツ

ー ル や 他 の 電 子 的 な

デ ー タ の イ ン ポー トに よ っ て 与 え られ た設 計 入 力 情 報 に対 して ツ ー ル 内 部 で 各 種 変 換 や

合 成(synthesisあ るい はrefinement)処 理 を行 っ て 、 最 終 的 に 下 流 の ツ ー ル が読 み 込 む こ

と が で き る 目的 コー ド(例 え ば 、C言 語 やVHDL)を

生 成 す る設 計 自動 化 の た め の ツ ー

ル で あ る。

こ こで 設 計 デ ー タDBは

、設 計 情 報 を 格 納 す るオ ブ ジ ェ ク ト指 向 の 内 部 デ ー タベ ー ス

で あ り、 入 力 情 報 か らの 設 計 デ ー タへ の 変 換 、 内 部 デ ー タベ ー ス 上 で の 各 種 合 成 処 理 、

お よび 目的 コ ー ド生 成 を行 うた め の デ ー タベ ー スAPIを

持 ち 、 ま た フ ァイ ル へ の保 存

(シ リア ラ イ ゼ ー シ ョン と呼 ぶ)と 読 み 込 み(デ

シ リア ラ イ ゼ ー シ ョ ン と呼 ぶ)用

のAPI

を持 っ て い る。 設 計 デ ー タDBは

多 くの 場 合 、 合 成 処 理 の 実 現 性や 、 下 流 ツ ー ル へ の 目

的 コ ー ド生 成 容 易性 を加 味 した ス キ ー マ に基 づ い て 設 計 され る。 ス キー マ は 合 成 処 理 の

正 し さ を保 証 す る た め に特 定 の 計 算 モ デ ル に 基 づ く こ と も あ る。

2.1設 計 デ ー タ1)B事 例

SOC(SystemOnaChip)の

上流 設 計 の た め のEDAツ

ー ル で あ るMSCシ

ステ ム[16]は 、

MessageSequenceChartの

図 式 で 書 か れ た 設 計 デ ー タ を、 内 部 設 計 デ ー タ に 変 換 し、 内

部 設 計 デ ー タDB上

で様 々 な 仕 様 合 成 を 行 っ て 、 これ を 最 終 的 に 下 流 のEDAツ

ー ル の

形 式(SpecC言

語 で 記 述 され た 仕 様 モ デ ル)を 生 成 す る ツ ー ル で あ る。

MSCシ

ス テ ム め 設 計 デ ー タDBは

、C#言 語 に て 記 述 され 、C#の オ ブ ジ ェ ク ト指 向 の

特 徴 を利 用 して ク ラ ス 、 プ ロパ テ ィ、 イ ン ス タ ン ス を 管 理 し、 イ ン ス タ ンス 間 に成 立 す

る関 連 づ け 、合 成 関 係 を 記 録 す る た め の 独 自の フ レー ム ワー ク を有 して い る。 こ こで 設

計 デ ー タDBの

モ デ ル を仮 にVSM(VisualSpecificationModel)と

呼 ぶ こ と にす る。

MSCシ

ステ ム を製 造 す る に 当た って 作 成 した 変 換 ツー ル に 「DBビ ル ダ 」が あ る。 「DB

ビル ダ 」 は対 象 とす る設 計 デ ー タ の ス キ ー マ を ク ラス 図 に 準 拠 した 形 式(メ タ モ デ ル 相

当)で 与 え る と、 これ か らDBコ

ア の 生 成 、DB上

の 設 計 デ ー タ か らSpecC形

式 の テ キ

ス トフ ァイ ル へ の コ ー ド生 成 、DB上

の 設 計 デ ー タの 外 部 フ ァイ ル(XMI形

式 準 拠)へ の

出 力(シ

リア ラ イ ズ)と

読 み 込 み(デ

シ リア ラ イ ズり 機能 を備 え て い る。

(9)

VSMシ

ステ ム にお けるrDBビ

ル ダ 」

モデ ル 分 析 ・設 計 クラス 図(Visio) クラス図 同 を スクリプト形 式に書き 換 えて手 入 力 疑似メタクラスシステム クラス情報 をもとに 操作をするのでメタクラス システムといえる 自動 成 1)DB本 体 の クラスの 枠 +基 本 的 な アクセ スAPI 十再 帰 的 なXMIシ リアライズAPI 2)XMIフ ァイ ル か らDBを デ シ リアライズ す る 関 数 1)DB本 体 (C#) 2)DBリ ー ダ (C#) 図1:従 来 の シ ス テ ム

2.2事

例 に お け る課 題

目的 コー ド(SpecC形

式)生 成 の た め に は 、VSMの

内部 デ ー タ を トラ バ ー ス して テ キ

ス ト形 式 の 目的 コ ー ドを生 成 す る処 理 をhand-codingさ

れ て お り、VSMの

ス キ ー マ の変

更 や 目的 コー ドの 記 述 形 式(こ れ は 下 流 ツー ル の 都 合 で 度 々 変 更 が あ る)の 変 更 に対 し

て修 正 が 発 生 した 場 合 は 品 質 を確 保 す る た め に に、 コ ス トの 高 い リグ レ ッシ ョンテ ス ト

(過 去 の 主 要 な 出 力 例 を全 て 通 して 目視 確 認 す る)を 繰 り返 す 必 要 が あ っ た

ま たDBビ

ル ダー 自体 がhand-codingさ

れ た プ ロ グ ラ ム な の で 、 不 具 合 対 応1の 容 易性

や 機 能 拡 張 性 が 低 い とい う課 題 を抱 えて い た 。 例 え ば ク ラ ス 定 義 に 合 成 関 係 の 再 帰 構 造

が あ る と、 これ を うま くDB用

プ ロ グ ラ ム に 展 開 で き な い とい う、 モ デ ル 構 造 に依 存 す

る シ ス テ ム運 用 上 の 制 限 が あ り、再 帰 構 造 を もっ プ ロ グ ラ ム構 造 にDBビ

ル ダー を 変 更

す れ ば 解 決 で き る こ とは判 っ て い た が 、 上 記 課 題 に よ り実 装 され る こ とは 無 か っ た 。

(10)

3関

連研究

ソ フ ト ウ エ ア 工 学 的 手 法 の 適 用 はDOA(DataOrientedApProach)を 含 め 過 去 多 数 行 わ れ て き た 。 特 に 近 年 はMDA(ModelDrivenArchitecture)[1]と 呼 ば れ る モ デ ル 駆 動 の 開 発 手 法 が 着 目 さ れ て い る 。 MDAで はPIM(PlatformIndependentModel)で プ ラ ッ トフ ォ ー ム に 依 存 し な い モ デ ル を 定 義 し、 こ れ か ら 、 プ ラ ッ ト フ ォ ー ム の 特 有 の モ デ ルPSM(PlatformSpecificModel) を 生 成 す る と い う 立 場 を と る 。 こ こ で はPIMを 定 義 す る た め の 技 術 が モ デ ル で あ りモ デ ル を 定 義 す る た め の 仕 組 み が メ タ モ デ ル と い う対 応 付 け に な る 。 モ デ ル 定 義(メ タ モ デ ル)を 形 式 的 に 定 義 で き れ ば 、 こ れ か らPSMで あ る 各 種 言 語(C/C++,C#等)を 生 成 す る こ と は 機 械 的 に で き る で あ ろ う と い う立 場 を と る 。 メ タ オ ブ ジ ェ ク トの 定 義 か ら 各 種 情 報 や プ ロ グ ラ ム を 出 力 す る 技 術 と し て はOMGの HUTN(Human-readabletextualnotation)やXMI(XMLMetadataInterchange)に 代 表 さ れ るMOFの 交 換 フ ォ ー マ ッ ト に 基 づ く も の や 、Anti-Yacc[6]な ど が 先 行 研 究 と して あ る 。

(11)

4メ

タ モ デ ル 技 術 の 評 価 の ア ウ ト ラ イ ン

本 報 告 書 で は 、 メ タモ デ ル に 基 づ く仕 様 の 変 換 ・合 成 技 術 を用 い る こ とに よ り、EDA

に代 表 され るイ ン ダ ス トリア ル な適 用 対 象 に お い て 、 どこ ま で 自動 化 ・高 信 頼 化 が 図 れ

る か を 検 証 す る た め に 、MDA[1]の

モ デ ル 変 換 技 術 を用 い て 、VSM相

当 の 設 計 デ ー タ

DBを

構 築 して これ を 評 価 す る。

以 下 の3つ

の 部 位 を タ ー ゲ ッ トと して 評 価 を行 っ た。

1.設 計 情 報 の メ タモ デル(MMa)と

コ ー ドの メ タ モ デル(MMb)に

基 づ く対 象 目的 コー

ドの 生 成 部 の 自動 生 成

2.設 計 情 報 の メ タモ デ ル(MMa)か

ら設 計 デ ー タDBの

自動 生 成

3.設 計 情 報 の メ タ モ デ ル(MMa)か

ら設 計 デ ー タDBの

デ シ リア ライ ズ 機 能 の 自動

生 成

図2は 評 価 部 位 がVSM相

当 の シ ス テ ム の ど こ に 対 応 す る か を示 して い る。

設 計 惰 報 の

コー ドの

メタモ デ ル

メタモ デ ル

MM^'r-一

一IMM

(2)DB生

(3)API生

r

DDBコ

ア(1)対

象 コー ド生 成c・d

シ リア

イズ

… 一

… 

CAD

ア プ グケ ー ション

図2:評 価 の 対 象

(12)

5モ

デル変換技術概要

オ ブ ジェ ク ト指 向 の分 野 で は 、 モ デ ル を記 述 す るた め の モ デ ル は メ タオ ブ ジ ェ ク トと

呼 ば れ 、 代 表 的 なMOF(Meta-ObjectFacility)[17]はOMG(ObjectManagingGroup)に

る メ タ オ ブ ジ ェ ク トの た め の フ レー ム ワー ク を提 供 して い る。

OMGに

お い て はMDAは4つ

の メ タ レベ ル か ら構 成 され る。MOFはM3層

の 標 準 言

語 で あ る。OMGで

はMOFの

例 と してUMLの

た め の メ タ モ デ ル を提 供 して い る。

M3:メ タ メ タ モ デ ルMOF。M2モ

デ ル を 記 述 す るた め の 言 語 の 定 義

M2:メ タ モ デ ル ク ラス 図 を 書 くた め の メ タ モ デ ル 。UMLの

メ タ モ デ ル に 相 当

M1:モ デ ル ク ラ ス 図 で 表 現 され る ク ラ ス 情 報 。UMLで

記 述 され た モ デ ル に相 当

M①:イ ンス タ ンス 実 世 界 す な わ ち イ ン ス タ ン ス の 世 界 。

UML形

式 で 記 述 され た ク ラ ス図 はMlレ

イ ヤ ー に対 応 す る。M2は

ク ラ ス 図 を定 義 す

るた め の用 語 を定 義 す る レイ ヤ ー で あ る。 ク ラス 図 を ドメイ ン特 化 の言 語 や 形 式 に変 換

す る とき の ル ー ル はM2レ

ベ ル で 記 述 され る。MOはMlの

ク ラ ス に 準 拠 す るイ ン ス タ

ンス 情 報 で あ る。

XMIはXMLフ

ォー マ ッ トでMOFを

表 現 す るOMGの

標 準 で 、M3∼1の

記 述 を サ ポ ー

トす る。

ま たM1をM:Model、M2をMM:Meta-Model、M3をMMM:Meta-Meta-Modelと

呼 ぶ

こ とが あ る。

5.1モ デ ル 変 換QVT モ デ ル 変 換 と は イ ン ス タ ン ス の 問 の 変 換 で 、 例 え ばUMLの ク ラ ス 図 で 記 述 さ れ た 対 象 ドメ イ ン の モ デ ル を プ ロ グ ラ ミ ン グ 言 語(例C#)で 記 述 さ れ た ク ラ ス 情 報 の モ デ ル に 変 換 す る こ と を 行 う。 モ デ ル 変 換 に は 様 々 な 技 術 が あ る[5]。 こ の モ デ ル 変i換 を メ タ モ デ ル(MM)を 使 っ て 組 織 的 に 行 お う と す るOMGの 標 準 の 一 つ がQvT(Queries/Views/Transformations)で あ る 。 図3はQVTに お け る モ デ ル 変 換 の 典 型 的 な パ タ ー ン で あ る 。MMMは メ タ メ タ モ デ ル

で,Tabは 変 換 ル ー ル 。 変i換 ル ー ル 自 体 の メ タ モ デ ル がMMtで あ る 。TabはMMa,MMb

の メ タ モ デ ル を つ か っ て(basedOn)記 述 さ れ て い る 。

こ の 変 換 ル ー ルTabよ り変 換 プ ロ グ ラ ム が 実 行(execute)さ れ 、 モ デ ルA(Ma)が モ デ

(13)

のconfo「msT。 M3MMM conformsTa i M2MMaMMtMMb basOnbedOn

M・

匝]Tab匝]

xecute output input 図3:ModelTransferPattern メ タ モ デ ル が 同 一 の も の(MMa=MMb)の 間 の 変 換 をendogeneous、 そ う で な い も の (MMa≠MMb)をexogeneousと 呼 ぶ 。 QvTに 基 づ く代 表 的 な モ デ ル 変 換 シ ス テ ム にATL[15]やuMT[10]が あ る ・

(14)

6ATLの

紹 介

ATL(ATLASTransformationLanguage)[14]は 仏INRIAに て 開 発 さ れ た モ デ ル 変 換 フ レ ー ム ワ ー ク で,oMGMoF/QvTRFPに 対 す る 一 つ の 回 答 と して 開 発 され た も の で あ る 。 ATLは モ デ ル 変 換 に 対 し て 、 宣 言 的(declarative)とimperativeな 変 換 処 理 記 述 を 混 在 で き る こ と を 特 徴 と し て お り、 基 本 的 に は 宣 言 的 に 変 換 処 理 を 記 述 し 、 ど う し て も 記 述 で き な い 処 理 に 関 し て はimperativeに 記 述 す る と い う ス タ イ ル を 採 用 し て い る 。 の ・・nform・T・

conformsゾ

MOF/ecor

ATL

conformsTo

MMa

conformsTo basOn

MMb

bedOn

mrria2mmb.atl

conforms丁o execute

匝]inputレ(=〉

一>Coutput]

図4:ATL概 要

図4にATLの

概 要 を 示 す 。ATLで

は 終 端 モ デ ルa(Ma)を

終 端 モ デ ルb(Mb)に

変 換 す

る こ とを 目的 と し、そ の た め に終 端 モ デ ルaの

メ タモ デ ル(MMa)、

終 端 モ デ ルbの

メ タ

モ デ ル(MMb)、

メ タ モ デ ノ

の 変 換 ノ

レー ル フ ァイ ル(mma2mmb.atl)を

入 力 と し て 、 モ

デ ル 問 の変 換 プ ロ グ ラ ム を生 成 す る、 こ こで モ デ ノ

ヒと はイ ン ス タ ンス 情 報 を指 して お り、

メ タモ デ ル は ク ラ ス 図 に相 当 す る。 ま たATLに

お い て は メ タ メ タモ デル(MMM)と

しで

EMFプ

ロジ ェ ク トで 提 供 され るecoreやOMGで

提 供 され るMOF(1.4)を

指 定 す る こ と

が で き る。 メ タ レベ ル の階 層 に 関 して メ タ メ タ モ デ ル をM3、

メ タ モ デ ル をM2、

終 端 モ

テ ル をMlと

呼 ぶ こ とが あ る。

(15)

MOFに

お い て はMOが

実 世 界 イ ンス タ ン ス 、M1が

モ デ ル(ク

ラ ス 図 相 当)、M2

が メ タモ デ ル(UMLの

モ デ ル 等)、M3が

メ タ メ タモ デ ル とい う分 類 が され る。 こ

こで 注 意 す べ き な の はATLに

お け る終 端 モ デ ル(Ml)はMOFに

お け るイ ン ス タ

ン ス(MO)に

相 当 し、ATLに

お け る メ タ モ デ ル(M2)はMOFに

お け るMlとM2

が 一 緒 に な った も の に 対 応 し、ATLの

メ タ メ タモ デ ル(M3)はMOFのM3に

相 当

して い る こ とで あ る。 これ はMOFはUMLを

前 提 に して い る の で 、M1とM2が

未 分 化 でM2がUMLの

用 語 の定 義M1がUMLで

定 義 され た ク ラス 図 な の に た い

して 、UMLを

前 提 と して い な いATLで

はM2もM1も

メ タ モ デ ル で あ る範 疇 で

は 同 じ と見 な しメ タモ デ ル を直 接 メ タ メ タ尾 デ ル(MOFやECORE)を

使 っ て 記 述

す る か らで あ る。M3はATLもMOFも

同 じで 、 こ こ は 自 己記 述 性 とい うこ とが

条 件 に な っ て い る の で紛 れ が な い 。

ま たeclipseの プ ラ グ イ ン と し て 提 供 さ れ るADT(ATLDevelopmentTooling)環 境[2] に よ り 、 変 換 ル ー ル の 入 力 、 変 換 プ ロ ジ ェ ク トの 構 成 、 ビル ド、 デ バ グ をeclipse環 境 に よ っ て 統 一 的 に 行 う こ と が で き るO

(16)

6.1ATL詳 細

ATLで はeclipseにATL特 有 の 一 連 の 機 能 に 合 わ せ て 画 面 を カ ス タ マ イ ズ す

るperspec-tiveが 準 備 さ れ 、 実 行configuration画 面 に て 入 出 力 を 指 定 す る 。

入 力(rN)

出 力(OUT)

変換

入 カ モ デ ルMa(例:Familiesの イ ン ス タ ン ス) 入 力 メ タ モ デ ルMMa(例Familiesの メ タ モ デ ル)

出 力 モ デ ルMb

出力 メ タモ デ ルMMB

変 換 ル ー ル フ ァ イ ル(.atl) 表1:ATLシ ス テ ム の 入 出 力

ATLの コ ア と な る も の は 変i換 ル ー ル を 定 義 す る フ ァ イ ル(.atl)で あ る 。

変 換 ル ー ル は 入 力 メ タ モ デ ル(MMa)と 出 力 メ タ モ デ ル(MMb)の 間 の 関 係 を ル ー ル と

し て 記 述 す る 。 ル ー ル はHeader,Helper,-MatchedRule,CalledRuleで 構 成 さ れ る 。 ま た

宣 言 的 な ル ー ル 記 述 の ほ か にOCL(ObjectConstraintLanguage)に 準 拠 し たimperativeな

記 述 を 可 能 に す る 特 別 な 構 文 が 用 意 さ れ て い る 。

6.1.1Header

Headerに は 入 力 と し て モ デ ル(IN):メ タ モ デ ル(Families)、 出 力 の モ デ ル(OUT):メ タ

モ デ ル(Persons)を 定 義 し て い る 。 こ こ でIN,OUTはconfigurationで 指 定 さ れ た モ デ ル を 指 す 。 メ タ モ デ ル 名 は メ タ モ デ ル 定 義 の トッ プ ス キ ー ム を 指 定 す る 。 module create Families2Persons; OUTPersonsfromIN Families; 6.1.2Helper HelperはJavaの メ ソ ッ ド に 相 当 し 、 変 換 処 理 の 部 品 化 の 手 段 と し て 用 い る 。context

はhelperが 使 用 さ れ る コ ン テ キ ス ト、defはhelper名 、 リ タ ー ン 値 、ATL表 現(ATL

expression)で 構 成 され る 。helperは 引 数 を と る こ と が で き る。 下 記 の 例 は 整 数 のSequence

型(リ ス トの こ と)と 実 数 を 引 数 に と り 、 リ ス ト要 素 の 平 均 が 、 引 数 で 与 え られ た 値 よ り も 小 さ い か ど うか を 判 断 す る 関 数 と し て 定 義 さ れ て い る 。

(17)

helper def letavg avg<

averageLowerThan(s

Real= value;

S->SUm()/

Sequence(工nteger),value:Real) Boolean= s->size

()in

6.1.3MatchedRule

MatchedRuleは 入 力(from)と 出 力(to)の 間 で 関 連 を 定 義 す る 。

ソー ス 部(丘om)は"変 換 対 象:ソ ー ス モ デ ル の パ タ ー ン(合 致 条 件)"と い う形 式 を と り 、

タ ー ゲ ッ ト部(to)は"変 換 対 象 タ ー ゲ ッ トモ デ ル の パ タ ー ン(属 性 の 初 期 化 記 述)"と い

う形 式 を と る 。

下 記 の 例 で はfromに お い て1ま 入 力 コ ン テ キ ス ト(Biblio!Journal)と マ ッ チ ン グ 条 件

(notj.title.ocllsUndefinedQ)が 合 致 す る 要 素 ① が 選 択 さ れ 、toに お い て 変i換対 象(b)が

Biblio!Bookで あ り 、 ソ ー ス のtitle属 性+vol属 性+num属 性 が タ ー ゲ ッ トのtitle属 性 に

な り、 著 者 は ソ ー ス の 記 事(article)集 合 のauthor属 性 を 集 め た 集 合 を 割 り 当 て て い る 。 こ の よ う にOCL関 数(collect,flatten,asSetO)を 組 み 合 わ せ て 用 い る 。 ruleJournal2Book{ from jBiblio!]ournal(notj.title.oclIsUndefined()) to bBiblio!Book

title<-j.title+'_('+j.vol+'):'+j.num, authors<-j.articles->collect(ele.authors)一>flattenO-> asset() chaptersく 一j.articles, pagesNb<-j.articles->collect(ele.pagesNb)一>sum() ) }

(18)

6.1.41mperativeなR11豆e

ル ー ル に はimperativeな コ ー ド を 記 述 す る こ と が で き る 。imperativeな コ ー ドはdoと

い う 予 約 語 で 導 入 さ れ 、ruleのto部 の 記 述 に よ る 属 性 初 期 化 の 後 に 任 意 の 手 続 き 的 な

コ ー ド を 記 述 で き る 。 例 え ば 後 述 す るcalledruleの 呼 び 出 し もdo部 の み に て 記 述 で き

る 。to部 に お け る 属 性 の 初 期 化 に お け るexpression間 は コ ン マ(,)に て 区 切 ら れ る の に

対 し 、do部 のstatement問 は セ ミ コ ロ ン(;)で 区 切 られ る 。 こ れ はdo部 のstatementは 記

述 順 に 逐 次 的 に 実 行 さ れ る こ と を 表 し て い る 。 ruletestCalIRule(){ from s:Vsm!Rule to t:AsmL!Rule do{ 一一 処 理 や 、calledruleの 呼 び 出 し t.rules<-thisModule.sampleCalledRules(); } } 6.1.5CalledRule

calledruleは 丘om部 が 無 い こ と を 除 け ばmatchedroteと 同 様 で あ る 。 ま たcaUedrule

は 引 数 を と る こ と が で き る 。 返 り値 はdo部 の 最 後 に 評 価 され た 式 で あ る 。 rulesampleCalledRule(){ to t:AsmL!Rule do{ t.location<一,/索s12rule索/,; t, } }

(19)

6。2変 換 の 例 こ こ で はATL変 換 を 簡 単 な 例 題 で 説 明 す る 。 こ れ はATLの 開 発 チ ー ム に よ る ユ ー ス ケ ー ス 「Faimlies2Persons例 題 」[9]よ'り 抜 粋 し た も の で あ る 。 変 換 概 要 変 換 の 概 要 を 図5に 示 す 。"Families2Persons.atl"が 変 換 定 義 フ ァ イ ル で 、Familiesメ タ モ デ ル(Families.ecore)、Personsメ タ モ デ ル(Persons.ecore)を メ タ モ デ ル と し て 変 換 仕 様 が 記 述 さ れ る 。ATLに よ る 変 換 定 義 フ ァ イ ル は コ ン パ イ ル さ れ て 、 モ デ ル(イ ン ス タ ン ス)間 の 変 換 が 実 現 さ れ る 。

藍C塵ipseModelingFramework(EMFD 」conformsTo

M3

ン∠

撃conformsTo

M2Families.e。oreATLpersons.ecore basOnbdOn conformsTol1_.___.IIconformsToF amilies2Persons.aU execute

M1熟

叫 ρ

砺;還 嵐

図5:ATL変

換 例 概 要

メ タ モ デ ル

図6はFamilyの メ タ モ デ ル を 表 し て い る 。Familyに はlastName属 性 が 、Memberに

はfirstName属 性 が つ い て お り そ れ ぞ れ ロ ー ル(father,mother,son,daughter)に よ る 合 成 関

係 でFamilyに 従 属 す る 。

図7はPersonの メ タ モ デ ル を 表 し て い る 。PersonはfUUName属 性 を 持 ち 、 サ ブ ク ラ

(20)

Famil IastName:String 0..1tamiiyratnerra[ner1 0.,1amlyoe「moe「1 D..1amityon son1 ..1amlyauguge「1 Member firstName:String Memberは 複 数 の 家 躾 に属 す る こ とが で きる こ とに注 意 図6:メ タ モ テ ル(Families) Person 一fullName:String Male Female 図7:メ タ モ デ ル(Persons) ATLフ ァ イ ル

helperで あ るisFemaleOは 、 ソ ー ス のMemberに 対 して 、 そ れ が 女 性 か ど う か を 判 断

す る 関 数(返 値BoOlean)を 定 義 し て お り、 こ れ を 用 い てMember2Female,Member2Male の ど ち ら が 起 動 さ れ る か が 選 択 され る 。isFemaleは メ タ モ デ ルFamiliesのMember要 素 で 有 効 なhelperでMemberが 女 性 で あ る か ど うか を 判 断 す る 。 こ こ でselfはMemberそ の も の 、ocllsUndefined()は モ デ ル に 該 当 す る 参 照 ポ イ ン タ が な い こ と を 表 すOCL関 数 で あ る 。 18

(21)

module Families2Persons;

create

OUT : Persons

from IN : Families;

helper

context

Families!Member

def:

familyName

: String

=

helper

context

Families!Member

def:

isFemale()

: Boolean

=

if not self.familyMother.ocllsUndefined()

then

true

else

if not self.familyDaughter.ocllsUndefined()

then

true

else

false

endif

endif;

rule

Member2Male {

from

s : Families!Member

(not

s.isFemale())

to

t : Persons!Male

(

fullName

<- s.firstName

+ ' ' + s.familyName

}

rule

Member2Female {

from

(22)

, 変 換 例 図6.2に 入 力 と な る フ ァ イ ル"sample-Families.ecore"の 例 を 示 す 。XMI形 式 で 記 述 さ れ た イ ン ス タ ン ス 情 報 で あ る 。 〈?xmlversion="1.0"encoding='`ISO-8859-1"?〉 <xmi:XMIxmi:version="2.0" xmins:㎜i=11httpl//㎜.omg.org細 工"㎜1ns="Families"〉 〈FamilylastName="March"〉 <fatherfirstName="Jim"/> arコotherfirstName="Cindy"/〉 〈sonsfirstName="Brandon"/〉 〈daughtersfirstName="Brenda"/〉 </Family> 〈FamilylastName="Sailor"〉 〈fatherfirstName="Peter"/〉 〈motherfirstNameニ"Jackie騨/〉 〈daughtersfirstName="Kelly"/〉 </Family> </xmi:XMI>

図8:入 力 フ ァ イ ル の 内 容

(23)

図6.2に 出 カ フ ァ イ ル"sample-Persons.ecore" た イ ン ス タ ン ス 情 報 で あ る 。 を 示 す 。

こ ち ら もXMI形

式 で 記 述 され

〈?xmlversion="1.0"encoding="ISO-8859-1"?〉 <xmi:XMIxmi:version="2.0" xmins:xmi="http://www.omg.org/XMI' 〈MalefullName="PeterSailor"/〉 〈MalefullName="BrandonMarch"/〉 〈MalefullName="JimMarch"/〉 〈FemalefullName="BrendaMarch"/〉 〈FemalefullName="JackieSailor"/〉 〈FemalefullName="CindyMarch"/〉 〈FemalefullName="KellySailor"/〉 </xmi:XMI> xmins="Persons"〉 図9:

出力 フ ァイ ル の 内 容

(24)

7評

価1:ATLに

よ る 目 的 コ ー ド生 成 の 構 築

こ こで はATLを

用 い て 、VSMモ

デ ル か らASM(AbstractStateMachine)の

一 実 装 で あ

るAsmL形

式 の 目的 コ ー ドを 生成 す る 処 理 を 構 築 す る。ASMは

形 式 的 仕 様 記 述 言 語 の

一 種 で あ りVDM[3]と

同 様 に抽 象 度 の 高 い 仕 様 記 述 を行 うこ とが で き る

AsmLを

選 択 した の はEcore形

式 の メ タモ デ ル がATLの

プ ロ ジ ェ ク トサ イ トよ り取 得

可 能 で あ る こ と と、 も と も とASM言

語 の 実 行 セ マ ンテ ィ ク ス が 形 式 的 に 定 義 され て い

る の で 、 動 作 イ メ ー ジ に 対 す る 間 違 い が な い か らで あ る 。MSCツ

ー ル の 目的 コー ドで

あ るSpecC言

語 は コ ンパ イ ラ ・シ ミュ レー タ を 実 装 す るベ ン ダ ー に よ り動 作 セ マ ン テ ィ

クス 異 な っ て い た 。

変 換 に お け る 課 題

VSMは

設 計 モ デ ル を 表 して お り、 そ の 大 き な 構 造 は 、 実 行 形 式 で あ るAsmLと

一 対

一 対 応 して い る(例HUnitがClassに

対応 す る等)

。 しか し、VSMの

状 態 内 部 の処 理 コー

ドの 生 成 に 関 して は 、imperativeな 変 換 処 理 が 要 求 され る。 特 にVSMの

構 造 か ら計 算

して生 成 され るAsmLの

条 件 判 断 ロ ジ ック 生 成 の部 分 が 、 本 質 的 に リス ト構 造 を ツ リー

構 造 に 対 応 づ け て い る の で 、 単 純 にdeclarativeな 変 換 ル ー ル で 記 述 で き る範 囲 を超 え て

い る。

7.1AsmLの 紹 介

AsmLはAbstractStateMachineのMicrosoft社 に よ る 実 装 で あ る 。ASM自 体 はYGurevich

が"evolvingalgebra"[ll]と い う名 前 で 導 入 し た よ う に 、 代 数 的 な 背 景 を も つ 仕 様 記 述 言 語 で あ り 、 主 に 仕 様 の 詳 細 化(refinement)を 意 識 し て 設 計 さ れ た も の で あ る が 、 本 報 告 の 中 で はVDM相 当 の 形 式 的 な 仕 様 記 述 言 語 と み な し て よ い 。ASMで はstepと い う最 小 単 位 で 動 作 セ マ ン テ ィ ク ス が 形 式 的 に 定 義 さ れ て お り、 ま た 並 列 処 理 を 記 述 す る こ と が で き る の で 、hardwareの 動 作 セ マ ン テ ィ ク ス やUML等 の 仕 様 記 述 形 式 の セ マ ン テ ィ ク ス を 提 供 す る も の と し て 用 い ら れ る 。 こ こ で は 、AsmLで 記 述 さ れ る 仕 様 の 例 を 、 以 下 に し め す 。

(25)

//VsmSampleimplemetationinAsmLV1.O class肌lnit//親 ク ラ ス を 定 義 し ま す classHUnitlextendsHUnit//ス レ ッ ド1の ク ラ ス Vara'a。 エnt。ger=O var_stateasString="stl"//state変 数 Execute()//状 態 遷 移 を 計 算 す る メ ソ ッ ド if(_state="stl")then WriteLine("hul:stl") _state:_"st2" else if(_state="st2")then WriteLine("hul;st2") _state:_"stl" classHUnit2extendsHUnit//ス レ ッ ド2の ク ラ ス varbasInteger=O var_stateasString="st211'//state変 数 ExecuteO//状 態 遷 移 を 計 算 す る メ ソ ッ ド if(_state="st21")then WriteLine("hu2:st21") _state:_"st21" hul=newHUnitl() hug=newHUnit2Q varcntasInteger=O Main()//main関 数

(26)

7.2VSMメ タ モ デ ル

図10にVSMの メ タ モ デ ル の 抜 粋 を 示 す 。VSMは 最 上 位 構 造 で あ るUnitComponent

の 下 位 構 造 にHUnitと 呼 ば れ る 動 作 モ ジ ュ ー ル が 配 置 さ れ る 構 成 を も つ 。HUnitは 並 列

動 作 す る プ ロ セ ス に 相 当 す る 。HUnitは 状 態(State)を 下 位 構 造 に も っ て 、 内 部 で 状 態 遷

移 を 行 う。 状 態(State)は さ ら に 、1StateActionを 下 位 構 造 に 持 ち 、StateActionに 、HUnit

の 外 部 通 信 路(Chanel)と の 入 力(lnput)、 出 力(Output)、 ポ ー リ ン グ(Condition)が 下 位

構 造 と し て 位 置 し 、 さ ら に 任 意 の 処 理 コ ー ド(Text)が 配 置 され る 。 VSM::UnitComoonent 一name:SVing cha 1 hu'ts 1.: NseTe 一COMPLETION -CONDITION VSM::HUnit 一name:SVing locale 1 riables .n VSM::StateAction nexcstaiee VSM::NextStateElement 一rype:NseType -condition:String 一name:String -body:String VSM::LocalVariable 一name:String -type:String -initval:String StasstarttateSt 1..1 nets .n VSM::Channel ..n tatec廿O in 11:n S is to 一name:String -type:String VSM::lnput outbutsconditions 1.1n1.: VSM::Outout VSM::Conditio VSM::State 一name:String 一condition:Stri 9 1anne VSM::lnOut 一value:String 図10:VSMの メ タ モ デ ル(抜 粋)

(27)

7.3AsmL、 メ タ モ デ ル

図11にAsmLの メ タ モ デ ル を 示 す 。AsmLの メ タ モ デ ル は 抽 象 構 文 木 の モ デ ル に 相

当 す る 。

AsmlFileが ル ー トモ デ ル で 、 こ れ にMain関 数 とMain以 外 の グ ロ ー バ ル な 定 義 が

AsmLEIementと し て 所 属 す る 。AslmElementに は グ ロ ー バ ル 変 数(ViarDeclaration)や ク

ラ ス 定 義(Class)、 列 挙 型(Enumeration)、 構 造 体(Structure)の 定 義 が 派 生 と し て 挙 げ ら

れ る 。 処 理 の 中 心 と な る の はBodyの 下 位 構 造 で あ るRuleで あ り、 こ こ にstep単 位 で の

処 理 が 記 述 され る 。 冠 ℃0 ∈ ca Φ = 」 ∈ ω a 奮 岳 ヨ 翌

ξ9野

署雛

聾 § O J 'E AQ a § Q 0 R 署 § w 」的 m 雲 mE m T 0

垂 警蓋

蓄§ §書 き iacn d U7 H O A a 4》

塁垂

uu a a E WT . 艶 。 勲 昌 器7;

辺c Q C

塗葺

窪婁 岳 9§

§ 韮 婁 c 禽 m

彗 C _X 3 c Sξ雲 a 量三 華o 蕪 刃♪ GO L C 7 嘱 ξ塞 m し a Os b f

誓蕪

躍 塾§ 悪 e W6

婁a

黛鶴

⑩ 隻 B

}h

aS Fi Fと 茎

(28)

ロ Φ で 0 ∈ 6

Σ

d

5

言 Om 1 ,磯 6 L ミ コ a Cm e2 W 8駕 O J ξ警 の 冨 一』m  

嘱 蓬 三馨誓 §§ §窪 m C G L 3m ¢ Em r 三 Ed a コ 望理 e 壱 5v 首 岳 言8 wm-...,p  ロ コ

言辱

d 3 隅m O E m 匡 m コ 匡s " Q E `m

茎峯

Em

ヒ偶 〉 .噛. _一 ,甲 冒7塁 、 m 醒8 8L V 1 N D でi》 、

奮メ

窮 脅

o 昂費 亙 π奮 凌 一 一 こ= 一コ

1墾

5=. 陀防 o[← 、1■' 為i一 嘱と乙 曾 ∈ 煽 噛1 }一 O コ 些 竃 0 』 aa ヱ2 m tζ C

塞髪

d a 匡 b m LL sa t a 喜 §≧ 邑琶 1 主o a mx 幽 §漏m 8 1鴛 呂i弩 三 竃 署 Σ 導… 三 〇 二 艶嘩 懸 2,コ 1 屡 }a; Y切 aai. h 留z ω 睾 誓輩 婁 コ E m Fお 〉 昌 モO m 言 2爵 驚 重畳 コ 7 喜 窪 匡 m 塁 §≒

誓1

琶 娼 w O LLa m 蕎 誓董 豊 ≧ 三 温 ン 竃 話 芒君 ax 匡震 a 需 O b § w my 巨 mM 二 〇'δう 窪 nx 曇C 9 あ L m L3 a mN 図12:Rule部 の メ タ モ デ ル 詳 細 26

(29)

7.4単

純 変 換 ル ー ル

一 対 一 に 宣 言 的 に ル ー ル を記 述 で き る部 分 を以 下 に 表 形 式 で ま とめ る

VSM要

→AsmL要 素 RootModel →AsmLFile HUnit →Class → 名 前 はHUnit.name → ロ ー カ ル 変 数 定 義 → 状 態 変 数( -state)追 加 →Executeメ ソ ッ ド(空)の 追 加 LocalVariable →VarDeclaration → 名 前 はLocalViariable.name 以 下 に 単 純 な 変 換 ル0ル の 例 と してLocalVariableの 変 換 ル ー ル を 示 す 。Vsm!LocalUariable

がAsmL!ViarDeclarationに 対 応 し 、 タ ー ゲ ッ トのname属 性 は そ の ま ま ソ ー ス のname属

性 に 対 応 し 、 タ ー ゲ ッ トのtype属 性 は 、 一 端AsmL!NamedTypeモ デ ル を 生 成 した も の に 対 応 づ け る。ATLの 宣 言 的 な ル ー ル 記 述 機 能 を し か 使 っ て い な い が 、 こ の 例 の よ う に ソ ー ス の 属 性 の リ ス ト構 造(s.name,stype)を タ ー ゲ ッ トの モ デ ル の 木 構 造(ViarDeclaration) に 変 換 が 可 能 に な っ て い る 。

ruleLocalVariable2Var{

from

s:Vsm!LocalVariable

to

t:AsmL!VarDeclaration

name<-s.name,

type<-nt

),

nt:AsmL!NamedType

name<,s.type

)

(30)

ス トが木 構 造 に跨 っ て 展 開 で き る理 由 は ター ゲ ッ トとな る木 構 造 が構 造 的 に 一 意 に あ ら

か じめ決 ま っ て い る か らで あ る。

・一スモデへ

VSM1LocalVariable -name:String -type:String ターゲ ・・モデら AsmL1VarDeclaration -name:Stringtye AsmL1NamedTVpe -name:String

図13:構

造 変 換 の 例

7.5複 雑 変 換 ル ー ル HUnit内 部 の 変 換 に 際 し て は 以 下 の 規 則 に 従 う ●HUnitはStateを も っ 、 、 ・HUnitはstartstate参 照 を も っ ・StateはStateAction(複 数)を も つ

●StateActionはInput(複 数),Output(複 数)Condition(複 数),Text(1つ),NextSatateElement(複

数)を 持 っ ・StateActionの 実 行 動 作 は 、 1.外 部 通 信 路 か ら の 入 力(lnput) 2,条 件 判 断(条 件=Condition) 3.処 理 本 体 の 実 行(Text) 4.外 部 通 信 路 へ の 出 力(Output) 5.次 状 態 の 決 定(NextStateElement)

(31)

と し て 展 開 さ れ る 。

・State中 のStateActionに はConditionを 持 た な い も の が 少 な く と も1つ あ る 。

6Conditionが も つ 条 件 は 論 理 積 で 展 開 さ れ 、 こ の 条 件 が 成 立 し な い と 一 連 の 動 作 (Text→Output→NextStateElement)を 実 行 し な い 対 応 す るAsmlの コ ー ド断 片 を 以 下 に 示 す Execute() if(_state="st1")then//Stateに 対 応 letlreq=chan _req if(cndl)then//Condition有 り のStateActionに 対 応 //body1//Textに 対 応 _state:=蟹1st2"//NextStateElementに 対 応 elseif(cnd2)then//Condition有 り のStateActionに 対 応 //body2 _state:_"st3" else//Conditionが な いStateActionに 対 応 //body3 _state==1重st41署 elseif(_state='1st2")then//Stateに 対 応 WriteLine("hul:st2") _state==「1st1"//Condition無 し のStateActionし か な い 場 合 こ の 変 換 に は リ ス ト構 造 か ら木 構 造 へ の 変 換 が2重 の 入 れ 子 構 造(Stateのifthenelse 構 造 とStateActionのifthenelse構 造)に な っ て い る 。 さ ら に 前 出 のLocalVariableの 例 で の 宣 言 的 な ル ー ル に よ る 変 換 例 で は リ ス トの 要 素 数 が 固 定 で あ っ た も の が 不 定 に な っ て お り、 も は や 宣 言 的 な ル ー ル に よ る 変 換 の 範 囲 を 超 え て い る 。 こ こ で はATLのimperativeな ル ー ル 記 述 を 利 用 す る こ と に す る 。 ま たcalledruleは 再 帰 的 な 定 義 を 許 し て い る の で 、 ル ー ル のdo部(imperativeコ ー ド記 述 が で き る 箇 所)に

(32)

ruleStateList2CRuleBody(sl:Sequence(Vsm!State)){ using{ st:Vsm!State=sl.first(); tail:Sequence(Vsm!State)=sl.excluding(st).asSequence(); } to body:AsnL1Body( rules<-Set{t} ), t:Asmt.!ConditionalRule condition-cndOpe, thenRule<-st ), 一一 略 一一 do{ if(sl.size()>1){ t.elseRule<-thisModule.StateList2CRuleBody(tail);//再 帰 呼 び 出 し 層 } body; } }

(33)

AsmL::Bod 一略 es AsmL::Condi60nalRue 一condition:String therf2ule AsmL::Bod 一略 elseRule AsmL::Bod 一略 es AsmL::ConditionalRue 一condition:String therRule[璽 査 AsmL::Bod 一略 図14:AsmLの 木 構 造(ConditionalRule) 8評 価2:EMFに よ る 設 計 デ ー タDBの 構 築 本 節 で は 、 メ タ モ テラレに 基 づ い て 設 計 デ ー タ ベ ー ス を 生 成 し 、 こ れ をXMI形 式 に て 保 存(シ リア ラ イ ズ)、 読 み 込 み(デ シ リ ア ラ イ ズ)す る シ ス テ ム の 例 と し て 、ATLと 関 連

す るeclipseプ ロ ジ ェ ク トで あ るEMF(EclipseModelingFramework)[4】 を 説 明 し 、EMF

を 用 い てVSMデ ー タ ベ ー ス を 構 築 す る 。

8.1EMFの 紹 介

EMFで は メ タ モ デ ル に 基 づ くJavaコ ー ドの 自 動 生 成 を 行 うシ ス テ ム と し て 開 発 さ れ

た 。 メ タ モ デ ル を 実 現 す る リ ポ ジ ト リ(デ ー タ ベ ー ス)と し て のJavaコ ー ドを 生 成 す る こ

と と 、XMI形 式 に 従 っ た シ リ ア ラ イ ズ ・デ シ リ ア ラ イ ズ の 機 能 を 持 つ こ と が 特 徴 とす る 。

EMFで は メ タ モ デ ル をEcoreモ デ ル と呼 ぶ 。OMFに お け るMOFメ タ モ デ ル に 相 当

す る 。

EMFで は メ タ モ デ ル 情 報 か ら 生 成 さ れ たEMFgeneratorモ デ ル を ス タ ー トに し て 、

・ 設 計 デ ー タ ベ ー ス の 基 盤 コ ー ド(ModelCode)の 生 成

・ 設 計 デ ー タ ベ ー ス を 編 集 す る た め のAPIコ ー ド(EditCode)生 成

(34)

EMFgeneratorモ デ ル はXML形 式 で 記 述 さ れ た フ ァ イ ル で あ り し て 入 力 編 集 す る 以 外 にEMFに お い て は 、 ・AnnotatedJavaコ ー ドか ら の 生 成 ・RationalRoseモ デ ル(.mdl)か ら の イ ン ポ ー ト ・EMFの メ タ モ デ ル 形 式(ecore)か ら の イ ン ポ ー ト 等 の 機 能 を サ ポ ー ト し て い る 。 図15にEMFの 概 要 を 示 す 。

EMFの

例(Tutorialよ

り)

① メタモデ ル の作 成 とgeneratorモ デ ル 生 成 、

これ を直接XMLと

w蹴9τs Writer name:String 《く 訓Library BookCategoryname:Stnng Myst剛 ScienceFictian Brognphy booksO9  ロロサ 痴rb。k、,、1,,号o蝋 pages=100 categoryBookCategorylo,費

②コード生 成→Build viewnommeoumenu,orsumiaouoi

・冒鱒

{鴨

G晦r勘 酬Co曲 CuteF.dRCa」e' GenerateEdtor.Code Ganerateτe虻 ⊂α」e Genoroヒe in 簡易エディタの例 '漏 鰍

[舗

XMIで 像 存(シ リア ライズ)、読 み 込 み(デ シ リアライズ)

i説 罫 欝蕪 灘舞

t-.概

↓謳M区 二 り 塊

藩 藩

図15:EMFの 概 要(Tutoria1よ り) 32

(35)

例 え ば 図16の よ う な メ タ モ デ ル が あ れ ば 、ModeCodeと し てBook,Writeの ク ラ ス お

よ び 、Bookに はsetA.uthor(Writer)、getAotherOメ ソ ッ ドが 生 成 さ れ る 。 ま たBook,Write

に た い す るFactoryク ラ ス が 生 成 さ れ る 。 :.. 一title:String -pages:lnteger

0..noOoau

hor Writer 一name:String 図16:Book,Writer 生 成 さ れ たModelCodeを コ ン パ イ ル す れ ば 、 デ ー タ ベ ー ス が 作 成 され 、 こ れ を 利 用 す る た め に は 所 定 のAPIを 介 し て 行 う。 以 下 に デ ー タ ベ ー ス 利 用 の 例 と し て コ ー ド断 片 を 以 下 に 示 す 。factoryに 対 し て"createク ラ ス 名"の ク ラ ス メ ソ ッ ドに て イ ン ス タ ン ス を 生 成 し、 イ ン ス タ ン ス に 属 性 を 設 定("setName"等)し 、 参 照 関 係 に 関 し て はbookイ ン ス タ ン ス にsetAuthor(writerイ ン ス タ ン ス)を 行 う こ と に よ り こ れ を 行 っ て い る 。 LibraryFactoryfactory=LibraryFactory.eINSTANCE;

Bookbook=factory.createBook();

Writerwriter=factory.createWriter(); writer.setName("WilliamShakespeare'冒);

book.setTitle("KingLear");

book.setAuthor(writer);

(36)

さ らに 、 自動 生 成 され たResourceSet機

能 を用 い て 、作 成 した イ ン ス タ ン ス を リン ク

情 報 を保 存 した ま ま ㎜iフ

ァイ ル に保 存(シ リア ラ イ ズ)が で き る。 下 の コ ー ド断 片 は シ

リア ライ ズ の 例 で あ る。

//GettheUR工ofthemodelfile・ UR工fileUR工=URI.createFileUR工(newFileClmylibrary.xmf1) .getAbsolutePath()); //Createaresourceforthisfile. Resourceresource=resourceSet.createResource(fileUR工); //Addthebookandwriterobjectstothecontents. resource.getContentsQ.add(book); resource.getContents().add(writer); //Savethecontentsoftheresourcetothefilesystem. try { resource.save(Collections.EMPTY_MAP); } catch(IOExceptione){}

逆 にXMIか

らの 読 み込 み も、 同 様 にデ シ リア ライ ズ の た め のAPIが

用 意 され て い る。

(37)

8.2VSM設 計 デ ー タ1)Bの 構 築 節7.2で 説 明 し たVSMの メ タ モ デ ル(図10)をEcore入 力 と して 、ModelCode生 成 、 EditCode生 成 、 簡 易 エ デ ィ タ のEditorcode生 成 を 順 次 行 っ た 。 図17に 得 ら れ た 簡 易 エ デ ィ タ の 画 面 を 示 す 。 次 章 以 降 のVSMの イ ン ス タ ン ス デ ー タ は 、 こ の 簡 易 エ デ ィ タ を 利 用 し て 作 成 さ れ た 。 1 と r 「 1

髭 ㌔

繍 ・翼 幕 π

礎K、

r: LoRe$。urceSe# ロ 目1 }… ㎝}T㎝ マ ー漏 「 Variableok… ㎜{㎜ 「…}  ㎝}… i圭}やStotest11 白 ∴やStatest12 ・亨iSt。t・A・ti… 。O C・',_NextStoteElementCOMPLET塾ON ・ ∈三1一やStateAc#ionsa1 ぞ 馳 ・くトConditionok NextStateElementrOMPLETIOPI ロ i≡}やHUnithu2 ・やLoc己1Variablereq l三卜 國やStξ 薗test21 幽 ∈…い ぐ》Stdte戸LctionsaO ;・ a・NextStateElementCOMPLE170rd iヨ・・やSt台teActions{ヨ1 1QコConditionreq やOutput1 ・uNextStateElementCOMPLETION 白 ・や$t。test22 ∈∋一やStateAotionsa〔 〕 塾 璽血 源翫 騨iT・e司T。bl・T・eewithalum・ ・i 鴫}一}  暫}}¶ 一}■ 一}}… 一,}}邸 嘱畠騨一朋一 一 一, ∼ ___一___..__,r_...,i 口l i ミ ミ

目}i}

}

i到

i 目l i ...._._i l》{ ; i l在}i } i… , i

図17:生

成 され たVSM簡

易 エ デ ィ タ

35

(38)

9評

価3:ATLに

よるデ シ リアライズの生成 の構 築

9.1デ

シ リア ラ イ ズ 問 題 の説 明

EMF自

体 は メ タモ デ ル に 基 づ い て い る とい っ て も、 コー ド生 成 を意 図 した 一 プ ログ ラ

ム の 実 装 に過 ぎ ず 、 そ の点 で は ハ ン ドコー デ ィ ン グ され た設 計 デ ー タベ ー ス 生 成 プ ロ グ

ラム と 同等 の 位 置 づ け な の で 、 メ タ モ デ ル を 使 う真 の メ リ ッ トを享 受 して い な い 。

メ タモ デ ル か らの コー ド生 成(ModelCode)部

は 、比 較 的 実 装 対 象(EMFの

場 合 はJava)

と構 造 が 同等 で あ る こ と と、 メ タモ デ ル の 構 成 要 素(合 成 、 参 照 、 属 性)毎 に適 切 な 実 装

の パ ター ン が 定 義 で き る の で 、 ほ ぼ 自明 な コー ド生 成 で あ る とい え るが 、XMIフ

ァイ ル

との 問 で の(デ)シ

リア ラ イ ズ 処 理 は 、 メ タモ デ ル か らhnperativeな

コー ドを 生 成 す る

とい う点 で 、 自明 で は な い 。

シ リア ライ ズ は 、 も と とな る設 計 デ ー タDBの

構i造(メ タモ デ ル)が

、Ecoreメ

タ モ

デ ル(MOFに

相 当)に 従 っ て いれ ば オ ブ ジ ェ ク ト構 造 に対 す るXMIの

構 造 の 対 応 は 自明

な の で 、ModelCode生

成 時 に各 ク ラス 毎 に定 型 の パ タ ー ンの シ リア ライ ズ の コ ー ドを生

成 す れ ば 、全 体 一

部 品 構 造 の 最 上 位 の イ ン ス タ ン ス か らシ リア ラ イ ズ の メ ソ ッ ドを全 体 一

部 品構 造 に 沿 っ て 再 帰 的 に 呼 べ ば簡 単 に実 現 で き る 。 これ はVSMで

の 最 初 の 設 計 デ ー

タDB構

築 の 際 に取 っ た 戦 略 で あ る。

一 方 デ シ リア ライ ズ は

、 自明 で は な い 、XMIフ

ァイ ル の読 み 込 み とModeCodeで

提 供

され る 基 本APIを

つ か った イ ン ス タ ン ス の生 成 、参 照 の 張 り込 み とが混 在 す るimperative

な コー ドを生 成 す る 必 要 が あ る。VSMの

デ ー タベ ー ス で は メ タモ デ ル に基 づ い て デ シ

リア ライ ズ を1つ の メ ソ ッ ドと して 生 成 す るgenerateコ ー ドをハ ン ドコー デ ィ ン グ して

お り、 これ に は以 下 の 問 題 点 が あ っ た 。

・ ハ ン ドコー デ ィ ン グ な の で メ イ ンテ ナ ンス が 困 難 で あ る

・ 一 メ ソ ッ ドで 実 現 して い た の で 、 例 え ば 再 帰 的 な 構 造 を持 っ モ デ ル 要 素 は 取 り扱

え な い

デ シ リア ライ ズ は 、 「

モ デ ル(イ

ン ス タ ン ス)を

そ れ に 対 応 す るAPI列

」 に 変 換 す る

と捕 ら えれ ば モ デ ル 変 換 の 遡 上 に あ げ る こ とが で き る。 さ らに こ の変 換 方 法 自体 は 、 も

と も と の メ タ モ デ ル 情 報 に のみ 依 存 して い るの で 、 メ タモ デ ル か らデ シ リア ライ ズ の 全

て が 生 成 で き る は ず で あ る。

(39)

9.2ATLに

よ る デ シ リア ライ ズ 変 換 の実 現

こ こで は 、 デ シ リア ラ イ ズ の 問題 を、XMIで

か か れ た モ デ ル か ら設 計 デ ー タDBを

ク ラ ッチ か ら順 に構 築 す るAPIを

呼 ぶ順 番 を記 述 した テ キ ス トフ ァイ ル を 生 成 す るモ デ

ル 変 換 処 理 に よ り実 現 す る。

こ こでAPIは

第8章

で 説 明 したEMFが

自動 生成 したModelCodeのAPIと

す る 。

ATLで

は 、モ デ ル を トラ バ ー ス して お も にテ キ ス ト出 力 処 理 を行 うた め の 手 段 と して

queryモ ー ドが 用 意 され て い る。 こ こ で はqueryモ

ー ドを利 用 して 、 入 力 モ デ ル を トラ

バ ー ス してAPIの

テ キ ス トを 生 成 す る こ とに した 。

図18にATLに

よ る変 換 の枠 組 み を しめ す 。 メ タ モ デ ル と してEcoreベ

ー ス で 定 義 さ

れ たVSMの

メ タモ デ ル を利 用 し、VSMの(イ

ン ス タ ン ス)モ デ ル を 変 換 して 、EMF

で 自動 生 成 され るAPIの

列 を 生 成 す る。

M・d・1丁 ・ansf・ ・r)・ ・nformsT・ EcoreLliVIG conformsToAT _Lquery-一 一 一 一 一 VSM.elcore conformsTo ATL basOn US Vsm2ApiText.atl execute [VSM]input⊂ 〉 一一一一〇utput i一 一 一 一 一

ilEMF㎎

聖ll

r-一 一 conformsTo l ……code/wAPI

図18:モ

デ ル 変 換 に よ るデ シ リア ラ イ ズ

queryで は、ソー スモ デ ル それ ぞ れ に対 してheIper関 数 と して 返 値Stringを 持 つtoString20

を定 義 す る。 ま た 合 成 関係 に よ り全 体 部 分 関係 が あ る もの に 関 して は適 切 な 場 所 でEMF

が 生 成 したAPIを

使 っ て イ ン ス タ ン ス の 生 成 と、 親 オ ブ ジ ェ ク トへ の 登 録 を 実 現 し て

い る。

(40)

helper

context

Vsm!UnitComponent

def:

toString2()

:

let hunits

: Sequence(Vsm!HUnit)

= self.hunits

in

'UnitComponent

uc = factory

.CreateUnitComponent('

if hunits->size()

> 0 then

hunits->iterate(e;

acc : String

= "

I

acc

+ e.toString2()+';\r\n'+

'uc .addHUnit(hu_'+e.name+');\r\n'

else

endif

+

'//endof

code\r\n';

String = +self. name+

);\r\n

38

(41)

T

p~~aM}

AZ6.

TRWOJIL 6: C EMF to n 014

7a API ffi "bf

-C \

:1

UnitComponent

uc = factory.CreateUnitComponent(uc1);

HUnit hu_hul=

factory.CreateHUnit(hu1);

State

st_st11=

factory.createState(st11);

%st11 60Th

hu_hul . addState(st11)

;

0/21-7'.=

hu_hul

st11 OR

State

st_st12=

factory.createState(st12);

hu_hul.addState(st12);

hu_hul.setStartState(st11);

uc.addHUnit(hu_hul);

HUnit hu_hu2= factory.CreateHUnit(hu2);

State

st_st21=

factory.createState(st21);

hu_hu2.addState(st21);

State

st_st22=

factory.createState(st22);

hu_hu2.addState(st22);

hu_hu2.setStartState(st21);

uc.addHUnit(hu_hu2);

(42)

9.3メ タ な モ デ ル 変 換 の 導 入 .図18の 変 換 で は 、 メ タ モ デ ル が 変 わ る 毎 にATLの ル ー ル を 書 き 換 え な い と い け な い の で 、 メ タ モ デ ル の み を?か っ た 自動 化 は 実 現 さ れ て い な い 。 そ こ で メ タ 度 を1っ 上 げ て 、VSMの メ タ モ デ ル を 変 換 ソ ー ス モ デ ル と し 、Ecoreを メ タ モ デ ル と し て 上 記 ル ー ル (Vsrn2ApiText.atl)を 生 成 す る メ タ な モ デ ル 変 換(モ デ ル 変 換 の ル ー ル を モ デ ル 変 換 で 生 成 す る と い う 意 味)を 構 築 す る 。 Ecoreは 図19に あ る よ う な モ デ ル の 構 造 を も っ て い る 。ECIassが ク ラ ス に 相 当 し 、 合

成 関 係 はeReferences関 係 の な か でcontainment属 性 がtrueの も の で あ り、 こ れ を 取 得 し

て ル ー ル を 展 開 す る 。 ECIass 一name:String eHtinouteO ..n EAttribute eRefere 一name:String eAttrib ceTypeeRefe noes O.. R EReference 一name;String -containment:boolean EDataTe 図19:Ecoreモ デ ル(抜 粋) 図20にArLに よ る 変 換 の 枠 組 み を し め す 。 メ タ モ デ ル と し てEcoreを そ の ま ま 使 い 、 VSMの メ タ モ デ ル を 変 換 し て 、 図18の 変 換 ル ー ル(Vsm2ApiText.atl)相 当 を 得 る 。 M・t・M・d・IT・ansf・・0・ ・of・m・T・ Ecore

conformsTo/

EcoreIIATL basOnuses confortnsToE core2Writer.atlATL query executeコ   コ VSM.・ …e input⊂)識iV・m・ApiText.・ ・J ModelT・an・fer-一 一 一 一 駈〒 一 一 一 lVSM!レ(〉 …一 ・レ陣1繭 日

図20:メ

タ な モ デ ル 変 換 を組 み 合 わ せ た デ シ リア ライ ズ

(43)

query Ecore2Writer

= ecore!EClass.allInstances()

->select(eIe.name='UnitComponent')

->first().toString2().writeTo('C:/test/example.txt');

helper

context

ecore!EClass

def:

toString2O

:

String

=

let

containments

: Sequence(ecore!EClass)

= self.eReferences

->select(eIe

.containment=true)

in

'helper

context

= Vsm!'+self

.name+'

def:toString2():

String

=\r\n'+

if containments->size()

> 0 then

containments->iterate(e;

acc:String

= "I

acc +'

let

'+e.name+':

Sequence(Vsm!'+

e.eReferenceType.name+')

= self.'+e.name+'

in;\r\n'

else

Y1

endif+

'

\'

+self.name+'

uc= factory,Create'+self.name+

'(\'

self .name + \');\\r\\n\'\r\n'+

if containments->size()

> 0 then

containments->iterate(e;

acc:String

= "I

acc +'

if

'+e.name+'->size()

> 0 then\r\n'+

---

do something

with

'+e.name+'

\r\n'

else

endif;

(44)

helpercontext=Vsm!UnitComponentdef:toString2():String= lethunits:Sequence(Vsm!HUnit)=self.hunitsin; letchannels:Sequence(Vsm!Channel)=self.channelsin; 'UnitComponentuc=factory .CreateUnitComponent('selfname+'); ifhunits->size()>Othen -一 一dosomethingwithhunits ifchannels->size()>Othen -一 一dosomethingwithchannels

¥r¥n'

こ の よ うにモ デ ル 変 換 を 用 い る こ

ライ ズ の 仕 組 み を構 築 で き る こ とが

と に よ り 、 わ か っ た 。

メ タ モ デ ル の み を入 力 と した 、 デ シ リア

(45)

10考

10.1ル

ー ル に 基 づ くモ デ ル 変 換 の ク ラ ス

ル}ル

に 基 づ く、 モ デ ル 変 換 に お い て は 、 個 々 のル ー ル は 、 ソー ス の 部 分 構 造 を タ ー

ゲ ッ トの 部 分 構 造 に 変 換 す る 仕 様 を 表 して い る 。 こ こで 部 分 構 造 は 木 構 造 を と る。6.2

章 で紹 介 した 変 換 事 例 は 、深 さ1の 木 を深 さNの

木 に 展 開 す るル0ル

につ い て の 評 価 で

あ っ た 。6.2章 の分 析 に もあ る よ うに 、 木 の長 さが 固 定 で あ るか 不 定 で あ る か 、 不 定 の

場 合 も最 大 長 が あ る か(有 限 不 定)か

最 大 長 が わ か っ て い な い か(無 限 不 定)の 場 合 に

分 け る こ とが で き る。

ソー ス 木 構 造

ター ゲ ッ ト木 構 造

ル ー ル の 種 別

固 定長

有 限不定長

無 限不定長

そ の 他

固定長

有 限不定長

無限不定長

の組合せ

宣 言 的 な 変 換 ル ー ル

宣 言 的 な 変 換 ル ー ル

宣 言 的 な変 換 ル ー ル+再 帰 ル ー ル

組 合 せ 例 が あ る か ど うか 不 明

表2:モ

デ ル 変 換 の ク ラス

10.2メ

タ な モ デ ル 変 換 が 有 効 な 対 象 に つ い て

メ タ な モ デ ル 変 換(メ

タ モ デ ル を メ タ メ タモ デ ル を 参 照 して 変 換 す る)が 有 効 な 対 象

は 、 モ デ ル 変 換 自体 が メ タ モ デ ル 特 有 の 情 報 に 依 存 せ ず 、 メ タ メ タ 情 報 に変 換 ル ー ル が

依 存 す る場 合 で あ る。9章 の 事 例 は デ シ リア ライ ズ は メ タ メ タ モ デ ル で あ るECoreに

存 して お り、個 々 の メ タモ デ ル(VSMの

メ タモ デ ル 等)に は依 存 して な い。

(46)

11木 言 語(TreeLanguage)理 論 と の 関 連 メ タ モ デ ル に 基 づ く モ デ ル 変 換 は 、ATLの 事 例 を み て も わ か る よ う に 、 中 間 ノ ー ド を メ タ モ デ ル の 情 報 で 、 リ ー フ を イ ン ス タ ン ス 固 有 の 情 報 で 構 成 さ れ る 木 構 造 間 の 変 換 で あ る と み な す こ と が で き る 。 木 構 造 を 基 盤 とす る 言 語 変 換 の 枠 組 み で 理 論 的 な 研 究 が な さ れ て き た 。 木 構 造 間 の 変 換 を 行 う機 能 はTreeTransducerと 呼 ば れ て い る 。Tree Transducerは 、 入 力 木 の ノ ー ドの パ タ ー ン に 対 し て 、 出 力 木 を 生 成 す る 関 数 を 呼 ぶ ル ー ル の 集 合 で 構 成 さ れ る 。 特 にMacroTreeTransducer(以 下MTTと 略 す)[8,71と 呼 ば れ る ク ラ ス は 、 入 力 パ タ ー ン に 引 数 を と る こ と が で き る こ と が 特 徴 で 、 木 を 生 成 す る 再 帰 的 な1階 関 数 プ ロ グ ラ ム と み な す こ と が で き る 。 ま た 単 項 二 階 論 理(MonadicSecondOrder)論 理 に 基 づ くTransduceは 、MTTを 制 限 し た も の と 同 等 で あ る こ と が 証 明 され て お り[7]、 形 式 的 な 取 り扱 い が 期 待 され る 枠 組 み で あ る 。 本 章 で はMTTを 用 い て モ デ ル 変 換 が 構 成 で き る こ と を 検 証 す る 。 TreeTranslationの 定 義 Σ お よ び △ をrank付 き の ア ル フ ァ ベ ッ ト、7Σ を Σ 上 の 木 構 造 の 集 合 で あ る と と き 、 写 像 τ:7Σ →T△ をtreetranslationと 呼 ぶ 。 MacroTreeTransducer(MTT)の 定 義 MacroTreeTransducer(MTT)はtreetranslationを 実 現 す る 手 段 一 つ で 、5つ の 組M= (Q,Σ,△,Qo,R)に て 構 成 さ れ 、 各 要 素 は 以 下 の 項 目 に 従 う ・Qは 有 限 の 状 態 の 集 合 で あ る 。 状 態 と は 入 力 ソ ー ス の ノ ー ドの 状 況 の パ タ ー ン に 対 応 す る 。 ・ Σ は 有 限 のrank付 入 力 記 号 、 △ は 出 力 記 号 で あ る 。 こ こ でrankと は 木 構 造 に お け る 直 近 の 枝 の 数(あ る い は 子 ノ ー ド の 数)に 相 当 す る 。 ・Qo⊂Qは 初 期 状 態 の 集 合 ・Rは 有 限 の ル ー ル の 集 合 で 、 以 下 の2つ の 形 式 を と る 1.q(a(xl,x2,_,Xn),ア1,_, ,vk)→t 2.q(xo,xl,_,xk)→t こ こ でg∈Qはkパ ラ メ ー タ を も つ 関 数 で 、 記 号R∈ Σ はrank数=n 図21が6.2章 で 説 明 し た 例 に お け るFamiliesに 相 当 す る イ ン ス タ ン ス 木 構 造 で あ る 。 属 性 情 報 、 汎 化 情 報 、 リ ス ト構 造 は す べ て 木 構 造 に 置 き 換 え て 表 現 し て い る 。

参照

関連したドキュメント

The time span from the slot where an initial collision occurs up to and including the slot from which all transmitters recognize that all packets involved in the above initial

The paper is organized as follows: in Section 2 is presented the necessary back- ground on fragmentation processes and real trees, culminating with Proposition 2.7, which gives a

Some of the above approximation algorithms for the MSC include a proce- dure for partitioning a minimum spanning tree T ∗ of a given graph into k trees of the graph as uniformly

The intention of this work is to generalise the limiting distribution results for the Steiner distance and for the ancestor-tree size that were obtained for the special case of

The operators considered in this work will satisfy the hypotheses of The- orem 2.2, and henceforth the domain of L will be extended so that L is self adjoint. Results similar to

Figure 3: A colored binary tree and its corresponding t 7 2 -avoiding ternary tree Note that any ternary tree that is produced by this algorithm certainly avoids t 7 2 since a

Tree Calculus for Bivariate Difference Equations, Journal of Dif- ference Equations and Applications, 2014. Secant Tree Calculus, Central European Journal of Mathemat-

This property is a measure-theoretic analogue of the ergodic “mixing property.” Theorem 3.8 gives a graph-theoretic analogue of the Wallace theo- rem in which the horocycle flow on