連載第12-1回
UMLの基礎と応用
(株)NTTデータ 技術開発本部 副本部長
山本修一郎
今回はXMLとUMLの関係について調べてみよう。XMLで記述される対象には、Webページ、データ交換メッセージ、Webサービス、プロセスフローがある。このようにXMLが広い範囲に適用されるようになってくると、タグ付けされた階層的なテキスト形式によるXMLの記述性をUMLで向上させようという試みが進展してきた。ここでXMLアプリケーション開発におけるUMLの適用状況を分類すると、次のようになる。
(1)開発手順や生産物も含めて総合的にUMLを適用する方法ebXMLのUMM(Unified Modeling Methodology Framework)がある[1][2][3][4][5]。
(2)クラス図からXMLやDTD、XMLスキーマを生成する方法UN/CEFACTによるUML2XMLの標準化プロジェクト[6]がある。
(3)WebアプリケーションをUMLとXMLで作成する方法UMLでアプリケーションを記述し、アプリケーション間で交換されるメッセージをXMLで記述する方法。Carlson[7][8][9]やHowery[10]の方法がある。
(4)ハイパーメディアをUMLとXMLで作成する方法GoeschkaとSchranzがUMLを用いてWebページをユーザインタフェースとして既存の情報システムと統合されたハイパーメディアを開発する手法を提案している[11]。
(5)UMLを用いてXMLで定義されるデータ構造の意味を定義する方法CWM(Common Warehouse Metamodel)[12]やDAML(DARPA
Agent Mark up Language)[13][14]のUBOT(UML Based Ontology Toolset)などがある。XMLは情報の構造を定義するだけで情報の意味まで定義することはできないので、UMLを用いて情報の意味や操作を付加する方法が考えられている。以下では、まずUMLの内容をXMLで表現するためのXMI
について説明し、UMLからXMLを生成する上での課題を述べ、次いでUMLの適用例を概説する。
■XMI
(XML Metadata Interchange)
OMGでは、従来からUMLで定義された情報をXML形式により異種ツール間で交換するための規約として図1に示すようにXMIを定めている。クラス図から生成されるDTDとXMLの例を図2に示す。XMIはUML情報を生成できるので、XMLメッセージ自体をUMLでビジュアルに定義しておき、XMIでXMLメッセージを生成することもできる。これはUMLの情報を交換するための手段としてXMLを利用しようとして提案されたXMIが、今度は逆に、XMLを定義するためにUMLを手段として利用することを支援するようになったと考えることができる。
図1 UMLからXMIへの変換
図2 XMIによるクラスの表現
最近では、クラス図で表現した内容をより詳細に表現するために、次のようにいくつかの点でXMIを拡張してXMLスキーマを用いる方法が検討されている。
・XMLスキーマを生成する。
・変換規則のパラメータ化ができるようになっている。たとえばクラス属性をエレメントとATTLIST項目のどちらに変換するのか議論があった。このためXMLスキーマではどちらでも指定できるパラメータを記述できるようにする。
・XMLスキーマからクラス図への逆変換を定義する。
■クラス図からXMLを生成する上の留意点
クラス図ではクラスとクラス間の関係を空間的に記述する。これに対してXMLではタグ付けされた階層構造で情報を表現する。クラス図とXMLとでは、クラス図のほうが情報の表現能力が高いこととXMLでの表現方法が必ずしも一意に決められないという問題がある。したがって、クラス図とXMLの構成要素の対応関係を定義する場合、次のような点に留意する必要がある[7]。
◆名前空間のマッピング
UMLモデルをXML名前空間に対応付けるかUMLパッケージごとに別の名前空間に対応付けるか
◆エレメント名の一意性
XMLエレメント名の一意性をどのように保証するのか
◆エレメントか属性か
UMLのアトリビュートや役割(association role)をXMLエレメントや属性にどのように対応付けるか
◆多重度
XMLスキーマに対してどのようにして、多重度を実現するか
◆継承
UMLクラスの継承をどのようにしてXMLスキーまで実現するか
◆コンテンツモデル
XMLエレメント定義の中で、どのコンテンツモデルを用いて、エレメントやテキスト、エレメントグループの表示を制御するのか
◆エレメント順序
UMLアトリビュートの順序をXMLエレメントの中でどのようにして定義するのか?
◆データ型
UMLのデータ型をXMLのエレメントや属性データ型でどのように実現するのか?
◆リンク
UMLのクラス間の関係をXMLのドキュメント間のリンクでどのように実現するのか?
■クラス図の関係をXMLで表現する方法
UMLのクラス間関係をXMLで表現する方法には、次の2つがある。
(1)XMLエレメントの親子関係で表現する
(2)XML ID とIDREF関係で表現する。たとえばコンテンツに一意な識別子を付与することにより、この識別子をIDREFで参照することで関係を定義する
これらの方法ではひとつのXMLドキュメント内に存在するクラスの関係を表現しているので、異なるXMLドキュメント間に分散するクラスの関係を表現するには別の方法が必要である。
XMLでは、分散するコンテンツ間の関係を表現する方法として次の2つがある。
(1)XpathとXPointer URIで識別できるドキュメント間の1対多関係を定義する
(2)XLink多対多の双方向関係を定義できる
したがって、クラス図で定義されたクラスを異なるXMLドキュメントで表現するときはXpathやXlinkなどの関係を用いてクラス関係を記述する必要がある。
■UMM(Unified Modelling Methodology)
ebXMLではXMLによるメッセージ交換により、企業間の電子商取引を実現することを目的としている。
ebXMLに基づくビジネスのオペレーションを図3に示す。この図からわかるようにebXMLではビジネスプロセスやビジネス情報をUMLで定義している。UN/CEFACTでは、ebXMLのオープンな電子商取引を対象として、UMLを用いたオブジェクト指向統合モデリング方法論(UMM:Unified
Modelling Methodology)を開発している。UMMは、データモデルとプロセスモデルに基づいて取引シナリオをモデル化するフレームワークである。モデル化の対象となるビジネスロール間のメッセージ構造からXMLへの変換も考慮している。
図3 ebXMLにおけるビジネスのオペレーショナルビュウ
UMMはラショナル統一プロセス(Rational Unified Process)と比較すると、ライフサイクルでは、計画、推敲、構築までで移行は含まない。また、作業工程では、ビジネスモデリング、要求獲得、分析、設計、製造までで、試験と導入は含まない。以下では計画、推敲、構築からなるUMMのライフサイクルを説明する。移行はUMMの範囲外なので省略する。
(1)計画(Inception)
開発計画をUMMで作成する。適用工程はビジネスモデリングと要求獲得である。
(2)推敲(Elaboration)
計画を詳細化する。適用工程は分析と設計である。生産物を既存のリポジトリ内の生産物と比較し拡張する。
(3)構築(Construction)
EDIFACTメッセージ/OO-EDIメッセージを設計する。XML DTDおよびXMLスキーマを設計する。
独立系開発ベンダー(ISV)がソフトウェアを開発する。適用工程は製造と試験である。
UMMの作業工程で適用される開発手法、再利用パターンの内容と各工程の生産物との関係を表1に示す。
表1 UMM生産物
■UML2XMLプロジェクト
UN/CEFACTのeBTWGではUMMに基づいてUMLからXMLを生成するための規約を定めるUML2 XMLプロジェクトを進めている。
UML2XMLプロジェクトではe-Businessアーキテクチャーを構成するBPI(Business Process and Information)モデル、CC(Core
Component )、BPSS(Business Process Specification Scheme)、XMLメッセージ実現などを規定している。
BPIモデルストアにUMMにより作成されるビジネスコラボレーションとビジネスプロセスやビジネス情報を格納する。UML2XMLではこれらのモデルを格納するためのXMIやRDF形式を定義する。
CCストアの内容はBIE (Business Information Entity)に基づいている。BIEの要素はUMMにより抽出される場合と既存システムから抽出される場合がある。UML2XMLではBIE要素を格納するためのXMIを定義する。
BPSSストアにはe-Businessの手順と、取引の過程で交換されるアセンブリドキュメントの参照とがある。BPSSとアセンブリドキュメントは、UMMにより抽出される。UML2XMLでは、これらのXMI形式を定義するとともに、BPIモデルからこれらを生成する規則を定義する。
メッセージ実現では取引パートナー間のメッセージを作成するために必要な情報を定義する。UML2XMLでは、次のような規則やメタ情報を定義している。
・アセンブリドキュメントの定義やそのCCおよびBIEとの関係の定義に関する規則
・XML でメッセージを生成するためのメタ情報
・構文に依存しないBIEをXMLに変換するための設計規則