本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

ソフトウェア・サービスのためのUML 2.0プロファイル

Simon Johnstonは、IBM RationalソフトウェアのCTO組織に所属し、ビジネス・レベルでのツール戦略の責任者です。これまで、Rational Softwareのために、そして現在はIBMのために、幾つかの標準化関連の活動に従事してきました。これらの中にはXML(W3C Schemaワーキング・グループ)、Webサービス(RosettaNetアーキテクチャー・チーム)、モデリング(OMG UMLチームとOCLチーム)などがあります。彼はビジネス・モデリングやソフトウェア・モデリング等に関する記事を書いており、またこれらのスレッドが、いつ、どこで組み合わさるのかに関心を持っています。

概要: この記事は、ソフトウェア・サービスのためのUMLプロファイルである、UML 2.0用のプロファイルについて説明します。このプロファイルを利用すると、サービスのモデル化やSOA(service-oriented architecture)、サービス指向ソリューションなどを実現することができます。このプロファイルはIBM Rational Sofware Architectに実装されており、複雑な顧客シナリオのモデル開発に活用されています。また、サービス指向ソリューションの開発に関する懸念事項についての教育用にも使われています。

日付:  2005年 4月 13日
レベル:  中級 この記事の原文:  英語
アクティビティー: 1547 ビュー
お気軽にご意見・ご感想をお寄せください: 


ソフトウェア・サービスのためのUMLプロファイルの概要

IBM Rational Sofware Architectに実装されている、このプロファイルの目的は、サービスを記述するための共通言語を提供することです。つまり、この言語は開発ライフサイクルにおける幾つかのアクティビティーを網羅しており、またこの言語が提供するビューを、様々な利害関係者が利用することができます。例えば、アーキテクトがこのプロファイルを利用すると、(ライフサイクルの初期段階に)全体的なサービス設計を行うことができます。つまり、論理パーティションを使って、企業全体に渡ってのサービス・ポートフォリオを記述できるのです。一方(サービス仕様を設計する)設計者は、アーキテクトによるこうしたビューを、サービス・クライアントと実装者間の契約として動作するサービス仕様(構造的な仕様および振る舞い仕様の両方)として、さらに詳細に記述します。また『メッセージ』ビューによって、設計者は共通サービス定義用の情報モデルを再利用することができます

概念的なモデル

下記の図1は、サービスのモデル化に関する重要な概念を示しています。ご覧の通り、概念の数は比較的少なく、サービス指向ソリューションに経験のある人には見慣れたもののはずです。この図が示すUML 2.0プロファイルは、IBM Rational Sofware Architectで実装されており、複雑な顧客シナリオのモデル開発に活用されています。また、サービス指向ソリューションの開発に関する懸念事項についての教育用にも使われています。ただし、確かにUML 2.0プロファイルはこのモデルを実現したものですが、幾つかの概念は、UML 2.0プロファイルでは明示的なステレオタイプとなっていないことに注意してください。例えば、『オペレーション』や『プロトコル』用のステレオタイプはありませんが、これらの概念は既にUML 2.0の中にあるためです。UML 2.0プロファイルでは、曖昧さ無しに、また追加の制約を使用するする必要もなく、これらを再利用できるのです。


図1. サービスのモデル化

UML 2.0で指定されているサブセット

表1は、UML 2.0のメタデータ・モデルの要素を示しています。(これらの要素はUMLプロファイルのステレオタイプに対するメタクラスとして使われています。)


表1. UML 2.0メタモデルの要素
UML 2.0メタクラス ステレオタイプ
Classメッセージ、サービス・パーティション、サービス・プロバイダー
Classifierサービス・コンシューマー
Collaborationサービス・コラボレーション
Connector サービス・チャネル
Interfaceサービス仕様
Port サービス、サービス・ゲートウェイ
Propertyメッセージ添付


プロファイル自体

図2(クリックできます)は、UML 2.0のプロファイル図です。この図は、このプロファイルの実際の詳細を示しており、各ステレオタイプには拡張標記(先頭を塗りつぶした矢印)を使ったメタクラスが付いています。また、モデルの中にある制約の幾つか(特にプロファイル要素間の補助制約)も見ることができます。


図2. UML 2.0のプロファイル図

この先のセクションでは、現在定義されているUML 2.0プロファイル要素の概略について説明します。各セクションでは、各ステレオタイプと、メタクラスを規定する詳細、プロパティー、また、このプロファイルを使用する際に適用される制約についての概略を説明します。

ステレオタイプ: メッセージ

拡張対象

クラス

意味体系

メッセージは、WSDL(Web Services Description Language)仕様の中で定義されている概念を表現します。つまり、『メッセージは、サービスとコンシューマーにとって意味を持つ実際のデータに対するコンテナーである。』メッセージにはオペレーションは無いかも知れませんが、プロパティーや、他のクラス(恐らく何らかのドメイン・モデル)への関連付けは持っている場合があります。メッセージ・ステレオタイプは、想定するエンコード形式(例えば、SOAP-literal, SOAP-rpc, ASN.1など)を記述するプロパティーを持っています。

プロパティー

表2は、メッセージ・ステレオタイプのプロパティーのリストです。


表2.メッセージのプロパティー
種類 名前 タイプ 説明
プロパティーエンコーディング名ストリング型メッセージのスキーマ生成に使用するプラットフォーム・エンコーディング機構を記述します。例としては、SOAP-RPC, Doc-Literal, ASN.1などがあります。


記号
notation

制約

  • 誰かが所有するオペレーションを持ってはならない
  • 誰かが所有する振る舞いを持ってはならない

ステレオタイプ: メッセージ添付

拡張対象

プロパティー

意味体系

このステレオタイプは、『メッセージのうち、一部のコンポーネントは(メッセージ自体の直接的な部分ではなく)メッセージへの添付である』ということを表すために使われます。一般的に言って、上位レベルの設計作業では、このステレオタイプはあまり使わないはずですが、多くのプロセスにとって、添付されたデータと埋め込まれたメッセージ・データの区別は重要です。例えばカタログ・サービスは、製品についての一般的な詳細は構造化されたメッセージの一部として返しますが、画像はメッセージへの添付として返します。またこれによって、画像のエンコーディングは、(メッセージ本体のテキスト・エンコーディングとは異なり)バイナリーであると表すこともできます。

プロパティー

表3は、メッセージ添付ステレオタイプのプロパティーを表しています


表3. メッセージ添付のプロパティー
種類 名前 タイプ 説明
プロパティーエンコーディング名ストリング型メッセージのスキーマ生成に使用するプラットフォーム・エンコーディング機構を記述します。例としては、SOAP-RPC, Doc-Literal, ASN.1などがあります。

記号
notation

制約

  • <<Message>>というステレオタイプのクラスが所有するプロパティーに対してのみ使用できる

ステレオタイプ: サービス

拡張対象

ポート

意味体系

サービス・モデルの要素は、(webサービスの用語での)サービス対話動作でのエンドポイントとなりますが、こうした対話動作の定義はサービス仕様ステレオタイプの一部です。通常のモデルでは、サービスは提供されるインターフェースを指定するだけではなく、必要なインターフェース(コールバック・インターフェースなど)も指定します。サービスにはその他にも、使用されるバインディング(SOAP-HTTPやSOAP-JMSなど)を表すプロパティーがあります。

プロパティー

無し


記号
notation

制約

  • <<Service Provider>>というステレオタイプのクラスに対してのみ使用できる
  • <<Service Specification>>というステレオタイプのインターフェースによって型付けされる

ステレオタイプ: サービス・チャネル

拡張対象

コネクター

意味体系

チャネルは、『2つのサービス間のコミュニケーション・パス』を表します。対話動作はチャネル上で行われますが、チャネルは特定な対話動作を記述するわけではないことに注意することが重要です。Webサービスの世界では、各サービスは、(クライアントがアクセスできるように)そのサービスに関連するバインディングを記述しています。モデリング・プロファイルでは、バインディングを、サービス間のコミュニケーションに対して、あるいはサービスとコンシューマー間でのコミュニケーションに対して記述します。こうすることによって、バインディング要求を柔軟に理解することができます。

プロパティー

表4は、サービス・チャネル・ステレオタイプのプロパティーを表しています。


表4. サービス・チャネルのプロパティー
種類 名前 タイプ 説明
プロパティーバインディング名ストリング型WSDLでサービス・バインディングを生成するために使用するプラットフォーム・エンコーディング機構を記述します。例としては、SOAP-RPC, SOAP-Doc, HTTP-Getなどがあります。

記号
notation

制約

  • 『最低限の場合』でも、コネクターの一方の端は<<Serviceというステレオタイプのポートに接続される必要がある
  • 『最大の場合でも』コネクターの一方の端は、<<Service Gateway>>というステレオタイプのポート、あるいは<<Service Provider>>というステレオタイプのクラス、あるいは<<Service Consumer>>というステレオタイプの分類子(classifier)に接続することができる

ステレオタイプ: サービス・コラボレーション

拡張対象

コラボレーション

意味体系

サービス・コラボレーションは、『サービスの実装を、他のサービスのコラボレーションとして規定するための方法』です。Webサービスの観点から見ると、これはサービス実装を規定する際のBPEL4WS(Business Process Execution Language for Web Services)の使い方に対応します。つまりこれは、サービス・コラボレーションを、サービスの『振る舞い』として使用することを意味しています。もしBPELのような言語の生成に使用する場合には、他にも実装特有の制約があるかも知れません。

プロパティー

無し


記号
notation

制約

  • <<Service Provider>>というステレオタイプのクラスのみがコラボレーションに参加することができる

ステレオタイプ: サービス・コンシューマー

拡張対象

分類子(classifier)

意味体系

『いかなる分類子(クラス、コンポーネントなど)も、サービスのコンシューマーとして動作することができます。』そしてこの中には、他のサービスも含まれます。ほとんどの場合、このステレオタイプはオプションですが、あるモデルの要素(それ自体はサービスではないような要素)を、サービスの『クライアント』として指定するのに便利な場合があります。それ以外の場合には、単なるオーバーヘッドとして、使う必要のないものかも知れません。

プロパティー

無し


記号
notation

制約

無し

ステレオタイプ: サービス・ゲートウェイ

拡張対象

ポート

意味体系

サービス・ゲートウェイはサービスのように見えますが、『パーティションに対してのみ使用できる』ものであり、サービス・プロバイダーに対しては使用できません。ゲートウェイはプロキシー・サービスとして動作し、プロトコルの仲介や、パーティションに利用可能なインターフェースの記述に使用することができます。例えば、「パーティションの中では幾つかのサービスが実装されていますが、パーティション外で使用できるのは一部のみのため、こうしたサービスのためにゲートウェイが提供されます」というような記述をすることができます。これによって、他のサービスやパーティションが、ゲートウェイから公開されていないサービスとコミュニケーションすることを防ぐことができます。

プロパティー

無し


記号
notation

制約

  • <<Service Partition>>というステレオタイプのクラスに対してのみ使用できる
  • <<Service Specification>>というステレオタイプのインターフェースによって型付けされる

ステレオタイプ: サービス・パーティション

拡張対象

クラス

意味体系

パーティションは、『システムの、論理的あるいは物理的な境界』を表します。これはオプションですが、パーティションをモデル化する上で便利です。例えばwebやビジネス、伝統的なn階層アプリケーションのデータ層などを、パーティションを使って表現することができます。また、より物理的な境界(例えば、私のプライマリー・データ・センター、セカンダリー・サイト、顧客サイト、パートナーなど、)を、パーティションを使って記述することもできます。この場合、セキュリティーや許可されているプロトコル、帯域幅などの理由から、パーティションを横断することには特別な制約があるかも知れません。

パーティションは、(サービスであれ、他のパーティションであれ)ネストした部分を表すプロパティーしか持っていない場合があります。『これは制約である』ことに注意してください。つまり、現在このパーティションの中で表現されている要素は、他にないのかも知れません。

またパーティションには、「厳密である」という概念があります。あるパーティションが、他のパーティションとの間の全コミュニケーションは型付けされたゲートウェイを通して行う必要がある、と記述している場合には、『厳密なパーティション(strict partition)』と言われます。

プロパティー

無し


記号
notation

制約

  • 誰かが所有するプロパティーを持ってはならない
  • 誰かが所有するオペレーションを持ってはならない
  • 誰かが所有する振る舞いを持ってはならない
  • 誰かが所有する部分は、<<Service Provider>>というステレオタイプのクラスでなければならない

ステレオタイプ: サービス・プロバイダー

拡張対象

クラス

意味体系

サービス・プロバイダーは、『1つ以上のサービスを提供するソフトウェア要素』です。モデリング条件では、通常はここにUMLコンポーネントがあるはずです。しかし、そうした制限は任意なようです。そのため、より柔軟性を高めるために、メタクラスはクラスとして表現されます。サービス・プロバイダーには、その位置の情報をキャプチャーするためのプロパティーがあります(ただし、その意味については実装依存です)。サービス・プロバイダーとして動作するクラスは、直接には属性やオペレーションを公開しないかも知れません。つまりパブリック・ポートのみが(サービスとしてステレオタイプ化された)提供され、これらはサービス仕様によって型付けされます。

位置プロパティーは、実装あるいはプラットフォーム依存ですが、サービス・エンドポイントの名前を生成する上で便利です。例えば(WSDLでは)、位置はhttp://svc.myco.com/ であり、またサービスは『CustInfo』という名前だとしましょう。この場合、サービスに対するエンドポイント名は、http://svc.myco.com/CustInfoとして生成することができます。

プロパティー

表5は、サービス・プロバイダー・ステレオタイプのプロパティーを表しています。


表5. サービス・プロバイダーのプロパティー
種類 名前 タイプ 説明
プロパティーallowedBindingsストリング型サービスに接続する際にチャネルが使用することを許されているプラットフォーム・バインディング機構。例としては、SOAP-RPC, SOAP-Doc, HTTP-Getなどがあります。
プロパティー位置の名前ストリング型プロバイダーの位置。エンドポイント名を作成するためにジェネレーターが使う場合があります。

記号
notation

制約

  • 誰かが所有するプロパティーを持ってはならない
  • 誰かが所有するオペレーションを持ってはならない
  • 誰かが所有する振る舞いを持ってはならない
  • 誰かが所有するポートは、<<Service >>というステレオタイプでなければならない

ステレオタイプ: サービス仕様

拡張対象

インターフェース

意味体系

インターフェースを使うということは、『サービスが提供する一連のオペレーションを記述する』ことです。サービスは1つ以上のインターフェースを実装する場合もあることに注意してください。慣例的に、ある仕様にプロトコル状態マシンやUML 2.0コラボレーションを添付することによって、サービス仕様に対するオペレーション呼び出しの順序を記述することができます。そうした振る舞い仕様を利用すると、任意の実装サービスの構造や振る舞いに関して、静的な仕様だけではなく動的な仕様の面から検証することができます。サービス仕様には公開オペレーションしかないこと、また各オペレーションが利用できるメッセージは最大でも1つ、生成できるメッセージは最大でも1つでなければならないことに注意してください。

プロパティー

表6は、サービス仕様ステレオタイプのプロパティーを表しています。


表6. サービス仕様のプロパティー
種類 名前 タイプ 説明
プロパティー公開名ブール型このプロパティーは、サービスをサービス・リポジトリーの中に公開すべきか否かを記述します。これはUMLでのパブリック/プライベートというプロパティーの概念とは異なります。

記号
notation

制約

  • 誰かが所有するプロパティーを持ってはならない
  • すべてのオペレーションはpublicとしてマーキングされなければならない
  • <<Service>>あるいは<<Service Gateway>>というステレオタイプのポート用の型としてのみ利用できる

参考文献


著者について

Simon Johnstonは、IBM RationalソフトウェアのCTO組織に所属し、ビジネス・レベルでのツール戦略の責任者です。これまで、Rational Softwareのために、そして現在はIBMのために、幾つかの標準化関連の活動に従事してきました。これらの中にはXML(W3C Schemaワーキング・グループ)、Webサービス(RosettaNetアーキテクチャー・チーム)、モデリング(OMG UMLチームとOCLチーム)などがあります。彼はビジネス・モデリングやソフトウェア・モデリング等に関する記事を書いており、またこれらのスレッドが、いつ、どこで組み合わさるのかに関心を持っています。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Rational
ArticleID=277004
ArticleTitle=ソフトウェア・サービスのためのUML 2.0プロファイル
publish-date=04132005
author1-email=skjohn@us.ibm.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。