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

2007年8月31日金曜日

UML中級講座 第119回 ステレオタイプとアイコン

街を歩いていると、たまに昔流行ったビートルズのナンバーが流れていることがあります。
最近では、学校唱歌にも取り上げられているそうで、若い人にとっては音楽の教科書に載っている退屈な歌と言う印象があるようですが、これは致し方ない反応でしょう。

筆者の両親やその兄弟達は、所謂戦中派(この言葉もどの程度通じるのか危惧しておりますが)と呼ばれる世代で、筆者の少年時代には、彼らが酔っぱらって軍歌などを唄う姿を見て、鬱陶しく感じたものでした。
しかし、年月が経ち、自分が当時の彼らと同じ年ごろになった今、彼らの心境が多少理解出来るようになって来ました。

高校の同窓会名簿などを見ると、前後と比較して著しくの卒業生の少ない世代があります。この世代が戦中派の世代で、多くの人たちが戦争中に亡くなっています。彼らの青春時代は、まさに戦争下で、物心両面で強い制約下にあり、現代の青春とはまったく異なった姿をしています。
そして、彼らの青春の歌が軍歌だったのでしょう。
恐らく、筆者がビートルズを聞いて懐かしいと思うのと同様に、彼らも、軍歌を聴いて自分たちの青春時代を懐旧しているのだと思います。
軍歌が青春の歌であるとは、なんとも悲しい現実ですが、筆者を含め後生の人間に、それを禁じる資格はないと思います。

ステレオタイプの表示オプション

ステレオタイプは通常ギュメ(<<と>>)でキーワードを囲んで形で表現しますが、アイコンを用いてもっと図形的な表現をすることが可能です。ただし、これは文法的に可能だと言うだけで、皆さんのお使いのUMLツールがこのオプションをサポートしているかどうかは別問題ですので、ご注意下さい。

図I10は、メタクラス"Class"を拡張して"Clock"と言う名前のステレオタイプを作っていますが、この時に同時にアイコンも定義することが可能です。

図I10



図I11は、その表示オプションを示しています。
上段左の絵は、通常のステレオタイプの表現ですが、上段真ん中の絵は、ギュメで囲まれたキーワードの代わりに、アイコン(時計のシンボル)で表現しています。
また、上段右側は、四角形を用いずアイコンだけで表現しています。この表現が可能なのは、モデル要素が一つのステレオタイプのみの拡張である時です。
下段のように、複数のステレオタイプの拡張である場合は、アイコンだけの表現は、許されません。
また、複数のアイコンを一つのステレオタイプに定義する事も可能ですが、解り難くなるだけですので、通常は避けた方が良いでしょう。

図I11



もう既に、お気付きの方も多いと思いますが、実はUMLでは、このステレオタイプによる拡張のアイコン表現を標準に含んでいます。代表的なものは、アクター表現のスティックマンです。これは、ステレオタイプ<< Actor >>に定義されたアイコンです。

2007年8月24日金曜日

UML中級講座 第118回 プロファイルの適用

ビジネスの会話の中で、最も避けるべき話題は宗教と政治の話だと言われます。状況は国や文化風土、そして何より相手と自分との関係に大きく依存するとは思いますが、筆者の短見では、いわゆる自由諸国と呼ばれる国々の中で、アメリカはもっともこれらの話題を避けるべき国の一つだと思います。
2001年9月11日のいわゆる同時多発テロが発生してまもない頃、筆者はフランス人の友人達と、アメリカで開催されたPM(プロジェクトマネジメント)関係のあるコンファレンスに参加しておりました。
その当時、アメリカ政府は、このテロはフセイン政権の責任でありその確たる証拠もつかんでいるとして、盛んにイラク攻撃へ向かってボルテージを上げておりました。そして、ご記憶があるかと思いますが、フランスやドイツに代表されるヨーロッパの大陸側の国々は、アメリカの動きに反対していました。
2人のフランス人は、そんな中、アメリカ人に対して盛んにブッシュ政権を攻撃し、「確たる証拠があるのならすぐに提示すべきだ。無いから出せないのだろう」と、今から考えるとまったく正当な発言をして、アメリカ人たちの同意を得ようとしておりましたが、見る見るうちにフランス人と筆者の周りから人がいなくなってしまいました。

プロファイルの適用

今までの所で、既存のメタモデルを拡張しプロファイルを作成することは、ご理解頂けたかと思いますが、実際にそれをモデルレイヤーで適用するためには、明示的な宣言が必要です。これは、包含 <<include>>や<<access>>等で、名前空間を指定してアクセスする場合と同じで、コンピュータ言語では、厳密に宣言して置く必要があります。モデル・ライブラリが大きくなればなるほど、同じ名前や似たような名前が増えて来て、明確に指定しておかないと、この問題は深刻な問題となります。JavaやCなどのプログラミング言語の大部分は、このようなメタ言語部分があります。
例としてC言語の場合を見てみましょう。

#include <stdio.h> ----------A

main()
{
int test;


printf("テスト結果は\n", test); ------------------ B


図 C言語の例

Aで示される文は、Cのコードから見るとメタ言語にあたり、#includeの引数は名前空間で、「標準I/Oライブラリを包含しなさい」と言うCコンパイラに対する命令を表しています。
この命令があるために、コンパイラは、Bのprintf()と言うI/O関数を、標準ライブラリから(標準のUNIXでは、/usr/include/stdio.hあたりから)見つけて来て、コンパイルすることが出来ます。

これと同じような事がプロファイルにも適用されます。


図 I09



図 I09では、”Webshopping”と言うパッケージが、”Java”と”EJB”と言う2つのプロファイルパッケージの適用を宣言しています。この(<<apply>>と言う依存関係で示される)適用宣言により、”Webshopping”パッケージ内では、JavaとEJBパッケージ内の定義が適用されることになります。