【チュートリアル】 - 設計編

bn_dsgn.gif (721 バイト)

2. モデル・図の作成
2.1 設計クラスの導入
jun では、まず設計のためのクラスを追加しよう。設計のためのクラスには、分析段階では考えなかった画面のクラスや外部システムとのインターフェースとなるクラスなどがあるよ。
 
<<設計クラスの導入>>
◆設計クラスの導入
  • 設計上の問題を解決するために、設計レベルのクラスを追加する。
  • 各ユースケースごとに、ユースケースの機能を実現するにあたって必要なクラスを追加する。
  • バウンダリクラスを考慮して、ユーザインターフェースの設計について決定しなければならない事項を考える。
(クラスの)ステレオタイプ
  • クラスの意味的な分類を表すためのもの。
  • クラスには、ステレオタイプをひとつだけ指定することができる。
  • よくあるステレオタイプの例
          エンティティ(entity) 問題領域に関連するクラス
バウンダリ(boundary) システムとシステム外部との境界になるクラス
コントロール(control) ひとつまたは複数のユースケースに特有の、制御に関する振る舞いを持つクラス
例外処理(exception)
ユーティリティ(utility)
jun クラスを意味的に分類するために、クラスにステレオタイプを指定することができるんだよ。分析時に抽出したクラスは、問題領域(ドメイン)に対して一般的に考えられるクラスという意味で「entity(エンティティ)」というステレオタイプを持ったエンティティクラスということができるんだ。エンティティクラスは、とりまく環境がシステムとどのようにコミュニケートしているかを関知しないクラスなんだよ。
chen 分かりました。では、ここではどんなステレオタイプのクラスを追加すればいいのですか?
jun まず、バウンダリ(boundary)クラスについて考えてみよう。バウンダリクラスは、システムをとりまく環境とシステム内部の処理の間のインターフェースとなるコミュニケーションを管理するんだ。例えば、ユーザインターフェースとなる画面や、外部のシステムとのインターフェースとなる通信プロトコルなどが考えられるよ。Chen君、今回のモデルでは、どんなクラスが考えられるかな?
chen そうですね、まず、顧客係が注文を入力する「注文登録画面」クラスが考えられます。それから、顧客係が顧客情報を確認するときにアクセスする顧客情報管理システムとのインターフェースとなる「顧客情報管理システムインターフェース」(以降、「顧客情報管理システムIF」)クラスが考えられると思うのですが。
jun そうだね。ユーザインターフェースについては、ウィンドウのレイアウトや数、ユーザからのイベントの処理などを決定して、設計を仕上げるんだよ。早い時点でプロトタイプを作成しておくことで、設計をうまく進めることができるんだ。もちろん、GUIツールも決定しないといけないね。
chen はい。そして、画面設計をするには、画面から何を入出力するのかという要求をきちんと考える必要がありますね。
jun そのとおり。イベントフロー、シーケンス図、コラボレーション図が、インターフェースの要求を知るためのよい情報源になるよ。

ill_30.jpg

chen 分かりました。他にはどんなクラスを追加するのですか?
jun 次は、コントロール(control)クラスについて考えてみよう。コントロールクラスを使って、ひとつまたは複数のユースケースに特有の、制御に関する振る舞いをモデル化することができるんだ。コントロールオブジェクトは、制御対象のオブジェクトの生成、初期化、消滅などを行うんだよ。また、「いつ何をするか」という処理のシーケンスを制御する役割も持つんだ。
chen つまり、コントロールクラスは処理の流れを知っているだけで、処理がどのように行われるかは知らないということですか?
jun そうだよ。コントロールオブジェクトは、ほとんどの場合、現実世界に対応しないオブジェクトで、メッセージを受けて実際に働くのはエンティティクラスのオブジェクトなんだよ。
chen Jun先輩、コントロールクラスの導入は、実装上、どんな意味があるのですか?
jun シナリオ全体をプログラムレベルで見た場合、個々のオブジェクトがばらばらに動作すると、制御が分散されて全体としてのメンテナンス性が悪くなってしまうんだ。また、アプリケーション固有の機能をコントロールクラスにまかせることによって、エンティティクラスの汎用性が高まって、異なるユースケースでも使えるようになるんだよ。
chen なるほど、分かりました。では、今回のモデルでは「注文登録コントローラ」クラスを作成して、「注文を登録する」ユースケースのシーケンスを管理するクラスとすればいいのですね?
jun そういうことだね。

 

 

Prev. Next Home Top