オブジェクト指向による 分析と設計

47070
オブジェクト指向モデリング
[9]
2001年12月11日
オブジェクト指向モデリング
前回 動的モデル1
8.1 ユースケース
8.2 アクタ
8.3 システム境界
8.4 ユースケース記述
8.5 ユースケースの使い方
8.6 開発プロセスとユースケース
8.7 ユースケースに潜む問題
2
動的モデル1
ユースケースの意味
 ユースケース
 なぜユースケースにアクタが示されなければならないのか
 なぜアクタは一つだけなのか
 ユースケース記述
在庫を確認する
受注係
注文を受ける
3
オブジェクト指向モデリング
第9回 動的モデル2
9.1 ユースケースを書いてみよう
9.2 コラボレーション図
9.3 シーケンス図
9.4 状態図
9.5 アクティビティ図
4
動的モデル2
9.1 ユースケースを書いてみよう
 自動改札システムのユースケースを考えて
 ユースケース図
 ユースケース記述
自動改札システム
乗客
チェックインする
アクタは誰?
ユースケース名:乗客がチェックインする。
アクタ:乗客
目的:妥当な乗客のみを入場させる。
事前条件:その乗客は入場していない。
基本系列:
①アクタは,自分が妥当な乗客である証明をシス
テムに提示する。
②システムはその証明を確認し,妥当であればゲ
ートを開く。
③アクタはゲートを通過する。
④システムは,そのアクタが通過したとき,直ちに
にゲートを閉じる。
事後条件:その乗客が入場している。
代替系列:
備考:システムは次の乗客を停滞させないこと。
5
動的モデル2
9.1 ユースケースを書いてみよう
 自動改札システムのユースケースを考えて
 ユースケース図
 ユースケース記述
アクタは誰?
ユースケース名:乗客がチェックインする。
アクタ:乗客
目的:妥当な乗客のみを入場させる。再入場を阻止する。
事前条件:その乗客は入場していない。
基本系列:
①アクタは,自分が妥当な乗客である証明をシステムに提示する。
②システムはその証明を確認し,妥当であれば入場を許す。同時
にその乗客が入場した旨を記録する。
③アクタは入場する。
④システムは,そのアクタが入場したとき,その証明を返却し,直
ちに,他の乗客が続いて入場しないようにする。
事後条件:その乗客が入場している。入場が記録されている。
代替系列:
備考:システムは次の乗客を停滞させないこと。
6
動的モデル2
111ページ
9.2 コラボレーション図
 相互作用図
 1つのユースケースに関するオブジェクト群の振る舞い
 コラボレーション図
 シーケンス図
インスタンスレベルなので
シナリオというべき
 コラボレーション図
イニシエータ
 オブジェクトどうしの関わりかた
 オブジェクト(インスタンス)図
 オブジェクト
 アクタ(イニシエータ)
 オブジェクトとロール
 「その会員」
112ページ
技術注釈
:本の借り手
UsingUML:
著書
その会員:
会員
#1234:本
7
動的モデル2
112ページ
9.2 コラボレーション図
著書
1
の印刷物である
 相互作用の表記
0..*
会員
 受渡しメッセージとその順序
借りる/返却する
本
0..*
0..1
 メッセージ番号
 入れ子のナンバリング
 イニシエータが最初のメッセージを発行する
 メッセージを受け取るとアクティブになる
 コントロール(制御権)
 アクティべーション
 応答
 CRC
UsingUML:
著書
:本の借り手
2.1:borrowed
borrow(#1234)
 責任の配置
問
イニシエータ
O
その会員:
会員
P
7.3.1:mes1
#1234:本
2:borrow
__:mes2
1:okToBorrow
8
動的モデル2
114ページ
9.3 シーケンス図
 シーケンス図
 オブジェクトどうしの関わりかた
 オブジェクト
 受渡しメッセージとその順序
オブジェクト
 生存線とアクティべーション
問
 矢線はなぜアクティ
べーションの先頭を
指しているか
:本の借り手
その会員:
会員
#1234:本
生存線
borrow(#1234)
アクティべーション
UsingUML:
著書
1:okToBorrow( )
2:borrow( )
2.1:borrowed( )
9
動的モデル2
9.3 シーケンス図
 自分自身へのメッセージ送信
 戻り値に名前をつける
 オブジェクトの生成と削除
 シーケンス図
 コラボレーション図
 タイミング
:本の借り手
122ページ
 制約
 時間の経過
A
{C-A < 5sec.}
117ページ
119ページ
120ページ
その会員:
会員
#1234:本
UsingUML:
著書
borrow(#1234)
1:okToBorrow( )
2:borrow( )
2.1:r =borrowed( )
制約
C
2.2:destroy(r)
10
動的モデル2
9.3 シーケンス図
 コラボレーション図とシーケンス図
 基本的に同じ内容
 型/クラス図の修正
 コラボレーション図
 オブジェクト間の関連性を強調
 シーケンス図
 時間経過,タイミングを強調
11
動的モデル2
9.3 シーケンス図
 デメテルの法則
なんでも管理者
115ページ
getJC(j:仕事):仕事の管理者 1
パネル
 保守のしにくさ
仕事の管理者
0..* do( )
1
1
「仕事の管理者」と関連の変化
→「何でも管理者」とそのクライアントに影響
「何でも管理者」から先のクラス構造まで露出
モジュールの境目としては悪構造
0..*
0..*
仕事
 メッセージへの応答
theJob:仕事
:O
:何でも
管理者
:仕事の
管理者
mes(n)
1:jc =getJC(theJob)
①
n:N
②
new
O
Q
2:jc .do( )
p:P
③
q:Q
④
12
動的モデル2
134-7ページ
9.4 状態図
状態
 状態図(ステートチャート図)
貸出し中
 状態,遷移,イベント
 オブジェクトの状態
イベント
return()
書架にある
borrow()
 状態を持つオブジェクト
 開始,終了状態
遷移
return()/book.returned(self)
貸出し中
 開始マーカ
 終了マーカ
書架にある
borrow()/book.borrowed(self)
 遷移
アクション
 イベント[ガード]/アクション
returned()
returned()
貸出し不可
貸出し可
borrowed()[最後の本]
borrowed()[最後の本でない]
ガード
13
動的モデル2
137ページ
9.4 状態図
 状態図(ステートチャート図)
 状態
 do/アクティビティ
 entry/入状アクション
 exit/出状アクション
/最初の品目を取り出す
チェック中
[未チェックの品目あり]
/次の品目を取り出す
do/品目チェック
[全品目チェック済み]
出荷中
do/出荷準備
[出荷完了]
a:注文
出荷済み
14
動的モデル2
教科書外
9.4 状態図
 状態と型図
 動的分類
 実装
本
<<動的>>
 stateパターンが利用できる
書架に
ある本
本
貸出し中
の本
{abstract}
状態
書架に
ある
貸出し中
15
動的モデル2
9.5 アクティビティ図
 アクティビティ図
 状態図の拡張
 アクティビティ
 遷移
 同期バー
 判断
 開始マーカ
 終了マーカ
 レーン(アクタ)
142ページ
会員
[借りる人]
司書
書架に本を
見つける
[返却する人]
並んで待つ
[返却する]
[借りる]
返却を記録
本を書架に
戻す
 制御構造を書く
 ワークフロー図
 split と join
 loop
貸出しを記録
次の利用者
に備える
16
動的モデル2
教科書外
9.5 アクティビティ図
 ビジネスプロセス
 ワークフローで表現
 ワークフローの基本単位
 Customer-Performer
 アクティビティと情報システムの支援
打診
Customer
契約
Performer
Customer
報告
Performer
実行
17
動的モデル2
教科書外
9.5 アクティビティ図
 ワークフロー図で書かれないもの
 アクティビティ
 アクタの作業
ユースケース
 情報システムの支援あり
 情報システムの支援なし
 状態遷移するオブジェクト
 書かれないもの
 システム外部のコミュニケーション
control
 Customer-Performer
 コミュニケーションの媒体
 情報システムの本質
resource
<<Activity>>
resource
control
18
動的モデル2
教科書外
9.5 アクティビティ図
 ワークフロー図
 WfMC+Kodama
 アクティビティ(アクタの振舞い)
 システム外のアクタ間の通信
 実行コスト(所要時間,必要スキル)
顧客→受注係
注文を受け
る
受注係
在庫を確認
する
受注係
出荷係
出荷指示を
する
出荷する
輸送係
納入する
cancel
出荷指示書
19
動的モデル2
教科書外
9.5 アクティビティ図
 Eriksson & Penkerの拡張
 プロセス図
<<goal>>
<<people>>
Process Goal:
QuantitativeGoal
PeopleObj
<<control>>
<<achieve>>
<<information>>
InputObjA
<<process>>
<<physical>
Process
OutputObj
<<physical>>
InputObjB
<<supply>>
<<physical>>
PhysicalObj
B
<<supply>>
<<information>>
InformationObj
20
動的モデル2
教科書外
9.5 アクティビティ図
 ATOのモデル
 Benetonのビジネスモデル
 製品在庫最小化
 中間製品での在庫
 染色を最終工程に
 (オプションを最終工程で実装する)
売れ行き,
注文
<<process>>
<<process>>
販売計画
出荷
<<発注>>
市場に対す
る情報,知
識,予測
<<process>>
生産
<<resource>>
中間製品
納品物
<<供給>>
<<process>>
最終工程
生産能力
21