ストラタジーナム メニュー

2007年7月21日土曜日

UML中級講座 第117回 パッケージ(プロファイル)

明日からサンフランシスコで開催されるOMG/BPMシンク・タンクの参加のため、出張します。今週はそのために、てんやわんやで忙殺されていましたが、ようやく一息つく事が出来ました。

パッケージ

UML1.4では規定されず、UML2になって初めて定義されたものに、パッケージがあります。(プロファイルを置く場所としてのパッケージの意。図I06参照)

図 I06 プロファイル・パッケージ表示例
(このHomeと言うステレオタイプには、アイコン ”○ ”も定義されている。)

図I07は、Javaエンタープライズ・エディション用のプロファイルです。図で示されているように、プロファイルでは、独立して一からメタモデルを構築することは許されず、何らかの元になるメタモデルが参照されます。
この例では、”Componet”、”Artifact”、”Interface”が(元になる)参照されるメタクラスです。



図I07


また、参照されるメタモデルが、パッケージ内に無い場合は、他のパッケージからインポートしてきて利用します。図I08では、”Manufacturer”というプロファイル用パッケージが、JavaIntegerやColorと言う型をインポートしている状態を表しています。
また、”Factory”と言う名前の通常の(メタモデルではない)モデルパッケージに”Manufacturer”パッケージを適用(<<apply>>)しています。(パッケージの適用がUML2になって、初めて明示的に定義されました。)
この適用により、”Factory”パッケージでは、<<Device>>と言うステレオタイプや、”Volume”というタグ付き値(メタ属性)が、使用可能になります。

図I08



2007年7月3日火曜日

UML中級講座 第116回 拡張(プロファイル・パッケージ)

本日は、以前触れた港北チベットと呼ばれる地方に滞在しております。

筆者の知人で、昭和40年代、小学生の頃この地に移り住み、そのまま定着してしまった人がおります。彼の話によると、その頃のこのあたりは、農村地帯と言うよりも、むしろ原野と言う言葉が似合うぐらい緑に覆われ、ところどころに集落があるだけで、道も極めて少なく舗装もされていなかったそうです。冗談でなく、知らない人が入り込むと、抜け出せないほど迷路のような細い道がくねくねと一貫性なく続いていたそうです。
それが、今や、地元に長く住んでいる人間でも、昔の地形がまったく分からないぐらいに近代的な町に変貌してしまいました。
ある横浜に関する考古学の書物によると、昭和40年代と言うのは、有史以来最も地形が人間の手によって変化した時代であり、遺跡などの発見数が最も多かったそうです。その時期をピークにして、最近では発見数は激減しているそうで、いかに凄まじい開発ラッシュの時期であったかを物語っています。

この傾向は、決して横浜だけではなく、ある程度、日本全国共通に見られた現象でした。
筆者は、小学生の頃、関西の神戸と言う港町に住んでいたのですが、この街も例外ではありませんでした。
当時、海側の部分はすっかり近代風の町並みになっていましたが、裏山から奥に入ると、そこは別天地のように自然が残っていました。小学生は、ほんの少し山に入るだけで、トンボ取りや魚釣りができました。

筆者が小学校3年生のころ、クラスにT君と言う転校生が入ってきました。何でも、九州の方から来たと言っていました。
彼は、授業中は極めて目立たない生徒でしたが、休み時間になると、ポケットから大きなクワガタや兜虫を取り出して机の上に並べ、皆を羨ましがらせていました。蝶々やトンボは裏山に行けばいくらでも捕まえられましたが、クワガタなんかは小学生の行ける範囲の場所にはいませんでした。
T 君は、皆からどこで捕まえたのかさんざん聞かれましたが、決してその場所を明かしませんでした。
そうしたある日、何を思ったのか、T君は筆者をクワガタ取りに誘いました。「絶対に秘密だぞ」と念を押しながら、裏山から細い山道へと身軽にスタスタと歩いて行きました。
小学生達がいつも行く範囲をあっという間に超えて、薮や潅木をスイスイと潜り抜け、道かどうか分からないような所を先へ進んでゆきました。そうして、どんどん山の中へ入って行き、はたしてちゃんと帰れるのかどうか心細くなってきた頃、T君は、立ち止まって黙って前方を指さしました。
そこは林の中にぽっかり空間が明いたような草地で、正面に大きなクヌギの木がありました。
彼がクヌギの太い幹を蹴飛ばしたり枝をゆすったりすると、上からパラパラと黒いものが落ちてきました。「それっ」と行って、彼は草むらに飛び込み、次の瞬間に高々と手を差し上げると、そこにはオオクワガタが握られていました。筆者も、慌てて草むらに這いつくばり虫を探しだし、メスのクワガタを捕まえることが出来ました。
その日以来、筆者はT君と友達になり、しばしば、その秘密の空間に行くようになりました。草地に寝転がったり、彼の持っている水晶の結晶を通して空を見たりして、秘密基地の気分を満喫していました。
しかし、そんな時間は長く続きませんでした。転入して半年も経たずに、T君はまたどこかへ転校する事になりました。母親に手を引かれたT君の後ろ姿は、普段よりも幼く見え、寂しそうでした。
そして、その秘密の空間も今はありません。
翌年の夏、筆者は弟達を連れて、クワガタ取りに出かけました。裏山を越えてしばらく行くと道が突然無くなり、がけになっていました。そこから先は、見渡す限り赤茶けた造成地になっていて巨大なショベルカーが何台も行き交っていました。もはや、秘密の空間がどこにあったのか、何の手がかりもありませんでした。

窓の外を眺めながら、この港北チベットにもきっとこんな物語があったに違いないと、想像しています。

拡張(プロファイル・パッケージ)

第115回で述べましたように、プロファイリングによる拡張は、MOFのレベルではメタクラス間の関連で表現され、関連であるために誘導可能性や多重度などの特性を持つことは先に見た通りです。

そして、多重度に関しデフォルト値を持ち、拡張される側の多重度は1、拡張する側のステレオタイプの多重度は0..1です。(第115回の図I 03参照)

また特に、拡張する側の多重度が1である場合がプロファイルで規定されており、図I 05のA図のようにMOFレベルで拡張する側(Bean)の多重度が1であるような場合、プロファイル・レベルではB図のように拡張の矢印のそばに {required} と言うキーワードを付けて表現します。
これは、Componentのインスタンスには、必ずBeanと言うステレオタイプのインスタンスが伴うことを示しています。この性質は、JAVA Beansを定義する上で使用されています。



図I05