ObjectSquare [1999 年 4 月号]

[新人およびOO初心者に贈る「オブジェクト指向」本格入門]


3.オブジェクト指向とモデリング技法

オブジェクト指向は、内部状態をもつオブジェクトの集団を用いて、それらオブジェクトのイベントのやり取りによって各オブジェクトの内部状態を更新していき、その副作用として処理を行うという計算モデルです。いってみれば、イベントをお互いに授受する有限状態機械の集合としてシステムを構成します。したがって、問題領域やシステムをモデル化するのに、静的な視点からは、各オブジェクトの内部構造および各オブジェクト間の接続構造を併せて表現する「クラス-関連図」、動的な視点からは各オブジェクトの状態機械としてのライフサイクルを外部イベントと対応するアクションとして表現する「状態遷移図」がモデル表現の基礎となります。

実際には、他にもいくつかのモデル表現を組み合わせて開発を進めていくのが普通です。一度に複数のことを考えられない、静的な構造に比べ動的な振る舞いについての推論能力が弱いという人間の性質を考慮してのことです。

問題やシステム全体をその環境中で大局的に捉えるという視点が必要です。対象領域全体をブラックボックスオブジェクトとして捉え、それが外部のどんなタイプの利用者に対しどのようなサービスを提供してくれるのか、を定義したユースケース図を描きます。利用者のタイプのことをアクター、個々のサービスのことをユースケースと呼びます。システムの利用(ユース)の事例パターン(ケース)という意味で、スウェーデンのI.Jacobson氏によって導入された概念です。ユースケースは、構造化技法における機能分割と変わりがないのではないか、本当にオブジェクト指向にフィットするのかという批判がありますが、両者の大きな違いは、機能分割が最終的に実装コードにおちるまで繰り返し適用されるのに対し、ユースケースはあくまで利用者の視点から彼らに意味のある機能やサービスを提供するというレベルで定義しそれ以下には分割しない点です。このことは、オブジェクト指向で企業活動自体をモデル化するに際し、顧客満足度という観点から企業をリエンジニアリングをする際の基本的視点としてユースケースが用いられていることからもわかります。

ユースケースはあくまでもそれを実現するオブジェクトの集団とそれらの相互作用を導き出すためのきっかけです。同じシステムがいろいろな利用者から様々な要求を出されそれに反応してある機能を発揮して処理が進んでいきます。このとき、どのような実現方式をとるかは、各ユースケースをどのようなオブジェクトの組み合わせでどのように協調動作させるかで決まります。そうした実現方式を検討するのに、通常、シーケンス図やコラボレーション図が使われます。

(a)ユースケース図

Fig.3a

(b)ユースケースとオブジェクト集合

Fig.3b

図3:システムとユースケースとオブジェクト集合

1つのユースケースはMVCアーキテクチャによって構成すると機能変更や拡張等の保守の点からも便利です。MVCとは、モデル-ビュー-コントローラの3組みでシステムを実現する構成法で、SmalltalkのGUIフレームワークとして採用されたことから広く知られるようになりました。知識(モデル)と外部との情報のやり取りの仕方(ビュー)とそれらを特定の機能を発揮させるためにコーディネートするマネージャ(コントローラ) を分離して管理するわけです。それをユースケースの構成に応用したのもやはりJacobsonn氏です。ユーザや外部システムあるいは他のユースケースとの対話を管理するバウンダリオブジェクト(論理ビュー)、ユースケースを実現するためにバウンダリや各ドメインオブジェクトとの間でのワークフロー・メッセージの流れを制御管理するコントローラオブジェクト、そしてユースケース実現に必要な問題領域の知識や情報を保持するドメインオブジェクト群(モデル)という3種類のオブジェクトカテゴリを用います。外部とのやり取りは必ずバウンダリオブジェクトを通し、またドメインオブジェクトどうしのやり取りも特定のユースケースに関する場合は必ずコントローラ経由で行うというのがMVCの基本です。こうすることで、ドメインオブジェクトが特定のアプリケーション機能(つまりユースケースやビュー)に依存した実装になることを防ぎ汎用性・再利用性を確保し、また複数のユースケースから同時に利用できることにもなります。

Fig.4
図4:ユースケースとその実現としてのコラボレーション

こうして各ユースケースごとに識別されたドメインオブジェクト群をマージし、整理してクラス分類し、各クラス間の関連や集約を識別して、問題領域を表現した分析モデルをクラス-関連図として記述します。またコントローラも場合によってはユースケース間で共有できることがあります。コントローラやバウンダリオブジェクトも整理しクラス-関連図を作成しますが、これは設計モデルを作成する際の核になります。またユースケース単位の状態遷移は結局、各ユースケースを制御するコントロールオブジェクトの状態遷移ということになります。

このようなオブジェクト指向モデルに対する様々なビューを図式表現する標準的なモデリング言語としてUML(Unified Modeling Language)が1997年12月にOMGで採択されました。今後、UMLがオブジェクト指向システム開発のさまざまな局面でドキュメント記述に利用されていくことになります。


© 1999 OGIS-RI Co., Ltd.

Prev.

Index

Next