【チュートリアル】 - 分析編

bn_model
3. モデル・図の作成
3.5 モデルの詳細化
jun ここでは、これまでに作成したクラス図やシーケンス図を使って、それぞれの情報を補い合うことによって、モデルを詳細化していくんだよ。
<< モデルの詳細化 >>
◆クラス図の詳細化
     
  • クラスの振る舞いを考え、クラスに操作を定義する。
  • シーケンス図から、クラスの属性や操作をトレースする。
  • シナリオやシーケンス図から、クラスの仕様や関係、多重度などを見直し、不足している情報がないかどうかを検証する。
◆シーケンス図の詳細化
     
  • オブジェクトにクラスを関係付ける。
  • メッセージに操作名を割り当てる。
  • クラスの変更が起こった場合は、シーケンス図を修正する。
  • クラス図との整合性がとれているかどうかを確認する。
jun ではまず、シーケンス図のオブジェクトにクラスを関係付けるところから考えてみよう。前に作成したシーケンス図はオブジェクトだけを表示したものだったから、そのオブジェクト名の後ろにコロン「:」で区切ってクラス名を記述すればいいよ。シーケンス図で登場するオブジェクトはどのクラスのオブジェクトなのか、クラス図を見ながら考えてみよう。
chen 別の配送センター扱いの注文商品がある場合のシーケンス図の場合、それぞれ次のようにクラスを関係付けることができると思います。(図3.5.1)
図3.5.1  オブジェクトとクラスの関係(シーケンス図の一部) 
ref1
 

「注文A」オブジェクトには「注文」クラス、「顧客情報」オブジェクトには「顧客」クラス、「チョコレートの注文」オブジェクトには「注文商品」クラス、「大阪配送センター」オブジェクトと「神戸配送センター」オブジェクトには「配送センター」クラスを関係付けることができます。

ill_24

jun そうだね。これは分かりやすいよね。でも、これだけではクラス図の情報がシーケンス図に反映しきれているとはいえないよね?
chen そういえば、クラス図には他に「配送」クラスや「商品」クラス、それに「在庫」クラスがあるのに、シーケンス図にはその情報がありませんね。
jun そうなんだ。これらのクラスのオブジェクトに関するメッセージのやりとりも、シーケンス図に表しておかないといけないんだよ。また、「配送」クラスについては、配送情報が必要になったときにインスタンスが生成されるものだよね。ここで更新するシーケンス図では、インスタンスの生成についての情報も追加してみよう。
chen あるタイミングでインスタンスが生成されるのは、「顧客」クラス、「注文」クラス、「注文商品」クラス、「配送」クラスですよね?
jun そうだよ。だから、シーケンス図では、インスタンス生成が分かるような描き方をしよう。またここでは、活性区間を描き込んでもいいかもしれないね。活性区間によって、オブジェクトが直接あるいはそれに伴う手続きを通してアクションを実行している期間がよく分かるからね。
 
 
図3.5.2 Chen君が変更したシーケンス図:注文商品が別の配送センターで扱われている場合
ref2new

 

chen 前に作成したシーケンス図に、「在庫」クラスの「キャンディーの在庫」オブジェクト、「商品」クラスの「キャンディー」、「配送」クラスの「キャンディーの配送」オブジェクトを追加して、処理の全体の流れを見直してみました。また、インスタンスの生成が分かるような図にしました。
ill_31
jun 「在庫」クラスを追加したことによって、予約可能な在庫数を取得するときのメッセージのやりとりが変更されたようだが?
chen はい。前のシーケンス図では、「在庫情報管理システム」が持つ実在庫数から、それまでに既に予約されている数の合計を減算することによって予約可能な在庫数を取得するようにしていました。しかし、ここでは「キャンディーの在庫」オブジェクトが、予約可能な在庫数に対する責務を持つように考えました。そこで、「キャンディーの注文」オブジェクトが「神戸配送センター」から「キャンディーの在庫」オブジェクトを取得し(12.在庫の取得)、その「キャンディーの在庫」オブジェクトに対して、予約可能な在庫数を取得するメッセージを送っています(13.予約可能な在庫数の取得)。また、実在庫数については、システムの起動時に「在庫情報管理システム」から情報を参照しますので、それについては別のシーケンス図で表すことにして、ここでのシーケンス図からは「在庫情報管理システム」アクターを省きました。
jun よくできたね。このように、作成したすべてのシーケンス図について、クラス図の情報がシーケンス図に反映されているか、クラスが割り当てられていないオブジェクトがないかなどを調べるんだよ。そうすることで、クラス図とシーケンス図の整合性をとっていくんだよ。
chen はい、分かりました。
 

 

 

Prev. Next Home Top