[技術情報]
(株)オージス総研
オブジェクトテクノロジーソリューション部
そして
事業模型倶楽部
山内 亨和
前回はエンタープライズモデル(特にエンティティ)の複雑性を軽減する概念として、エンタープライズモデリング(以後、EM)手法に登場する組織ロールとエンティティロールを紹介しました。今回はもう一歩進めて、エンティティを詳細に定義するための概念であるバリューについて説明します。
前回の記事を公開してからだいぶ期間が経ってしまいましたので、バリューについて説明する前に組織ロール、エンティティ、エンティティロールについて復習しましょう。
組織ロールとは組織内にある機能の分類です。例えば、会計ロール、マネジメントロール、製造ロール、プランニングロールなどが組織ロールになります。エンティティとはビジネス中に存在する資源や資産や人や会社とそれらにまつわる情報、振る舞いのことです。エンティティロールとはエンティティの情報や振る舞いを組織ロール単位に分離したものです。エンティティロールを定義することによってエンタープライズモデルの複雑性を軽減することができます。
組織ロール、エンティティ、エンティティロールの関係をクラス図で表現したものが下の図です。
組織ロール・エンティティ・エンティティロールの関係
組織ロール内では様々なエンティティが登場します(組織ロールからエンティティへの関連、多重度N)。エンティティは様々な組織ロール上に登場し、その組織ロールはエンティティをモデリングするためのコンテキスト(文脈、背景)となります(エンティティから組織ロールへの関連、多重度N)。あるエンティティがある組織ロール中に登場するとき、エンティティは組織ロール特有のエンティティロールを提供します。
前回エンティティとエンティティティロールを説明するために、SIドメインを例題としてシステム開発者のエンティティロールのモデリングを行いました。下の図がそのときのクラス図です。
エンティティロールモデリングの例
システム開発者はプロジェクトマネジメントの視点から見るとプロジェクトメンバです。この関係を組織ロール、エンティティ、エンティティロールに当てはめると、プロジェクトマネジメントが組織ロール、システム開発者がエンティティ、プロジェクトメンバがエンティティロールとなります。
図中ではシステム開発者エンティティから進捗クラス、スキルクラス、成果クラス、単価クラスなどのクラスに関連が引かれています。これはシステム開発者エンティティは多くの情報や振る舞いを持っていることを示しています。
と同時に、プロジェクトメンバエンティティロールはシステム開発者エンティティから関連が引かれているクラスのうち、進捗クラス、スキルクラス、成果クラスのみに関連が引かれています。これはプロジェクトメンバエンティティロールがシステム開発者エンティティの情報、振る舞いのうち進捗、スキル、単価のみを使用することを意味します。
EM手法では進捗、スキル、成果などのエンティティの情報、振る舞いの定義をバリューと定義しています。
バリューとエンティティ、エンティティロールの関係をクラス図で表現したものが下の図です。
エンティティ・エンティティロール・バリューの関係
エンティティ、エンティティロール、バリュー間でそれぞれ関連性があり、その関連性をクラス図の関連で表現しています。
|
|
|
いま、コード自動生成ツールエンティティがプロジェクトマネジメント組織ロール上ではプロジェクトメンバとして振る舞うという、苦し紛れともとれる例を出しました。しかし、これは苦し紛れで出した例ではありません。この問題を整理していくことでエンティティとエンティティロールとバリューの重要な特徴と有用性を理解できるはずです。
システム開発者もプロジェクトメンバがもつバリューと同様のバリューを持っています。システム開発者はシステムを開発するスキルを持ち、作業の進捗、作業の成果を記録できます。またシステム開発者には人月単位の単価も設定されています。 ここまでいくとプロジェクトメンバとシステム開発者がほとんど同じバリューを持っていることが見て取れます。実はこのモデルは以下の式に従うように記述されたモデルなのです。 |
![]() エンティティがエンティティロールとして振る舞うには、そのエンティティロールに関連付けられているバリューをエンティティも持っていなければならないのです。この関係はクラスとインタフェースと操作の関係と似ています。クラスがインタフェースを実現(implement)するためにはインタフェースで定義されている操作をクラスで実装しなければなりません。 ということで、システム開発者が持つバリューとプロジェクトメンバの持つバリューがほぼ一致しているのは偶然ではなく、そうしないとシステム開発者はプロジェクトメンバになれなかったということが分かったかと思います。 |
![]() ![]() |
![]() システム開発者と同様にコード自動生成ツールもプロジェクトメンバの持つバリューを持っています。コード自動生成ツールはある決まった仕様に基づいたコードのみ自動生成することができます。これは限定的にコーディングスキルを持っているといえます。コード自動生成ツールの自動生成の進捗も記録することができます。コード自動生成ツールの自動生成の成果も記録することができます。このため、コード自動生成ツールはプロジェクトメンバとして振る舞っている、コード自動生成ツールエンティティのエンティティロールとしてプロジェクトメンバエンティティロールがあるという例を出したわけです。 システム開発者とコード自動生成ツールの2つのエンティティがプロジェクトメンバとして振る舞うという事実はプロジェクトマネジメントの観点から非常に有用です。プロジェクト中のタスクの内容によってこの2つのエンティティのどちらにタスクを遂行させるかを臨機応変に変えることができるからです。 この有用性は当然エンティティロールとエンティティの関係にも当てはまります。あるエンティティロールとして振る舞うエンティティはいくらあってもよいわけで、それぞれのエンティティで特徴が違う場合には状況に適したエンティティを選択し、適用できるわけです。もし既に定義したエンティティのパフォーマンスが優れない場合には、新しいエンティティを発見し、定義し、エンティティロールに適用することも許されます。エンティティはコンポーネントのように取り替え可能(pluggable)なのです。 |
注1:このクラス図はUML仕様のセマンティクスに従ったものではなく、あくまでイメージです。
ここまではエンティティの静的構造についての説明でした。今度はエンティティの動的側面について着目します。 ![]() ![]() エンティティはプロセス中のプロセスステップを実行するために使用されます。実際にはプロセスステップはエンティティを直接使用するのではなく、エンティティロールを使用します。プロセスステップは必要であればエンティティロールに対して、エンティティの持つバリューを取得するように問い合わせることもできます。またエンティティロールに対して、エンティティにバリューを追加、更新、削除するように問い合わせることもできます。 エンティティはプロセス、プロセスステップで使用されていく過程で様々なバリューが追加、更新、削除されていきます。エンティティにバリューが記録されていく流れをシステム開発者エンティティを例にとって説明します。 まず、人事評価組織ロールの採用プロセスステップでシステム開発者エンティティは生成されます。エンティティの生成は評価対象エンティティロールを介して行われます。採用プロセスステップで獲得した氏名、スキルなどのバリューや、決定した給料のバリューは評価対象エンティティロールを介して追加します。 プロジェクトマネジメント組織ロールのアサインプロセスステップでプロジェクトメンバエンティティロールを介してシステム開発者エンティティを使用します。アサインプロセスステップでは、プロジェクトメンバエンティティロールを介して、システム開発者エンティティのスキル(バリュー)を取得します。取得したスキルからアサインするタスクを決定し、タスクの進捗(バリュー)をプロジェクトメンバエンティティロールを介してシステム開発者エンティティに追加します。 開発組織ロールの設計プロセスステップで設計者エンティティロールを介してシステム開発者エンティティを使用します。設計プロセスステップでは、設計者エンティティロールを介して進捗(バリュー)を更新、成果(バリュー)を追加、更新します。 ![]() このようにエンティティは様々なプロセスステップで使用される過程で、そのプロセスステップに応じたエンティティロールのバリューが追加されていきます。エンティティはエンティティロールによって進化していくわけです。 |
次回はEM手法の総復習としてこれまで説明してきたプロセス、組織ロール、エンティティの概念を使って学習塾モデルのエンタープライズモデルを構築します。
どうぞお楽しみに!
本稿は以下の書籍やホームページを参考にして執筆しました。このリストがみなさんのエンタープライズモデリングの理解に役立てば幸いです。
[1] Chris Marshall 著 : "Enterprise Modeling with UML", Addison-Wesley, 1999 (邦訳:児玉公信 『企業情報システムの一般モデル―UMLによるビジネス分析と情報システムの設計』 , ピアソン・エデュケーション)
© 2002 OGIS-RI Co., Ltd. |
|