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

47070
オブジェクト指向モデリング
[10]
2001年12月18日
オブジェクト指向モデリング
前回 動的モデル2
9.1 ユースケースを書いてみよう
9.2 コラボレーション図
9.3 シーケンス図
9.4 状態図
9.5 アクティビティ図
2
動的モデル2
相互作用図
著書
UsingUML:
著書
:本の借り手
2.1:borrowed
borrow(#1234)
1
その会員:
会員
の印刷物である
0..*
会員
借りる/返却する
0..*
0..1
 責任の配置
 あるユースケース
本
#1234:本
2:borrow
1:okToBorrow
:本の借り手
その会員:
会員
#1234:本
UsingUML:
著書
 コラボレーション図
 オブジェクト図
 メッセージ
 シーケンス図
 通信
 タイミング
borrow(#1234)
1:okToBorrow( )
2:borrow( )
2.1:borrowed( )
3
動的モデル2
状態図
状態
遷移
貸出し中
 ステートチャート図
 あるオブジェクトの状態
 遷移
 イベント[ガード]/アクション
 開始状態、終了状態
 アクティビティ図
 アクティビティ
 制御の流れ
 制御構造
 split,join
イベント
return()
書架にある
borrow()
会員
司書
[借りる人] 書架に本を
見つける
[返却する人]
並んで待つ
[返却する]
[借りる]
返却を記録
 レーン
 アクタ
本を書架に
戻す
貸出しを記録
次の利用者
に備える
4
オブジェクト指向モデリング
第10回 モデル図の理解
10.1 責任関係
10.2 勘定
10.3 生産管理システム
10.4 素材発注システム
すべて
教科書外
5
モデル図の理解
10.1 責任関係(1)
 責任関係(accountability)パターン
Fowler, M.,
Analysis Patterns
 明示的なレベルを持った組織
事業部
1
*
地域
1
部門
*
1
営業所
* 売上
 変更に弱い
 操作(メソッド)の重複,類似の属性
 オブジェクト(インスタンス)図
コーヒー:事
業部
首都圏:
地域
神奈川:
部門
藤沢:営
業所
東京:部
門
川崎:営
業所
6
 パターンランゲージ
 Christopher Alexander
 よい建築がもつ性質
 無名の質(Quality Without A Name)
 生き生きと生きること(alive)
 パターンの重層
 パターンの記述
 パターン名
 背景,問題意識
 解決策
 フォース(有効である状況,他のパターンとの関係)
 体系づけられたパターンの順序
 ソフトウェアにおけるパターン
213~216ページ
 デザインパターン(GoF)
 アナリシスパターン(Fowler)
 アーキテクチャパターン(POSA)
7
モデル図の理解
10.1 責任関係(2)
このインスタンス
図はどうなる?
 階層関係を持つ組織
 類似の操作,属性はスーパタイプに持つ
<<階層>>
親
組織
制約:
親は持たない
事業部
0..1
子
制約:
親は部門
*
地域
制約:
親は事業部
部門
営業所
制約:
親は地域
 制約の変更が煩わしい
 マトリックス組織にはどう対応する?
8
コーヒー:事 親
業部
子 首都圏:
地域
親
子 神奈川:
部門
東京:部
門
親
子 藤沢:営
業所
川崎:営
業所
9
モデル図の理解
10.1 責任関係(3)
このインスタンス
図はどうなる?
 2系統の階層
<<階層>>
<<階層>>
*
子営業
*
組織
親営業
*
*
事業部
制約:
地域
制約:
親サービス
子サービス
部門
制約:
営業所 サービス地域 サービス部門 サービスセンタ サービスチーム
制約:
制約:
親営業は部門
制約:
制約:
制約:
親サービスは
サービスセンタ,
親営業は営業所
 制約変更の煩わしさが2倍に
10
コーヒー:事
業部
首都圏:
地域
東京:部
門
首都圏:サ
ービス地域
神奈川:
部門
川崎:営
業所
藤沢:営
業所
神奈川:サ
ービス部門
横浜:サー
ビスセンタ
親営業
子営業
東京:サー
ビス部門
藤沢:サー
ビスセンタ
親サービス
子サービス
川崎:サー
ビスチーム
藤沢:サー
ビスチーム
11
モデル図の理解
10.1 責任関係(4)
このインスタンス
図はどうなる?
 関連型の使用
インスタンス:
営業組織
サービス組織
組織構造型
制約:
営業所の親は部
門….
サービスチームの
親は営業所および
サービスセンタ….
型1
*
組織構造
*
親
1
*
組織
子
1
*
1 有効期間
期間
事業部
地域
部門
営業所
サービス
チーム
 組織構造の制約は,組織構造の変化に敏感
12
神奈川:
部門
神奈川:サ
ービス部門
親
営業組織:
組織構造型
:組織構
造
:組織構
造
:組織構
造
:組織構
造
子
川崎:営
業所
藤沢:営
業所
横浜:サー
ビスセンタ
藤沢:サー
ビスセンタ
:組織構
造
:組織構
造
:組織構
造
サービス組織
:組織構造型
親
:組織構
造
:期間
2001/10/1 _
2002/1/22
子
川崎:サー
ビスチーム
藤沢:サー
ビスチーム
13
モデル図の理解
10.1 責任関係(5)
このインスタンス
図はどうなる?
 「組織構造型」と「ルール」
組織構造型 *
1
ルール
型1
*
組織構造
*
親
1
*
組織
子
1
*
1 有効期間
期間
事業部
地域
部門
営業所
サービス
チーム
 組織構造型ごとのルール
 組織の変化に弱い
14
営業所の親は部門,
部門の親は地域,...
神奈川:
部門
営業組織型
:ルール
神奈川:サ
ービス部門
サービスチームの親
は営業所およびサー
ビスセンタ,サービス
センタの親は,….
営業組織型
:ルール
親
営業組織:
組織構造型
:組織構
造
:組織構
造
:組織構
造
:組織構
造
子
川崎:営
業所
藤沢:営
業所
横浜:サー
ビスセンタ
藤沢:サー
ビスセンタ
:組織構
造
:組織構
造
:組織構
造
サービス組織
:組織構造型
親
:組織構
造
:期間
2001/10/1 _
2002/1/22
子
川崎:サー
ビスチーム
藤沢:サー
ビスチーム
15
モデル図の理解
10.1 責任関係(6)
 組織階層を「責任関係」として一般化
責任関係型
型 1
*
*
責任関係
依頼者
1
*
実行者
*
パーティ
1
1 有効期限
期間
人
組織
 依頼者→実行者
 Customer-Performerの関係
16
モデル図の理解
10.1 責任関係(7)
このインスタンス
図はどうなる?
 知識レベルと操作レベル
 パワータイプ(ベキ型)
 操作レベルの型の制約を記述
 鏡像関係
責任関係型
inv:
collx:set(責任関係)=self.the責任関係
collX->forALL( x |
x.型.依頼者->includes(x.依頼者.型)
and
x.型.実行者->includes(x.実行者.型))
作業
*
依頼者
*
実行者
1..*
型 1
*
*
*
*
依頼者
1
*
*
型 1
知識レベル
責任関係
*
パーティ型
1..*
操作レベル
パーティ
実行者
1
1 有効期限
期間
人
組織
17
 シナリオ
 同意:責任関係
患者:鈴木一郎は医師:山田太郎との間で,2001年12月18日に内視鏡検
査を受けることについて同意した
同意:責任
関係型
型
依頼者 患者
:パーティ型
医師
実行者 :パーティ型
型
型
内視鏡検
査:作業
:責任関
係
:期間
2001/12/18
依頼者 鈴木一郎
:パーティ
実行者 山田太郎
:パーティ
18
モデル図の理解
10.2 勘定(1)
このインスタンス
図はどうなる?
 移動の記録
 勘定(account)
 多肢トランザクション
勘定
/残高 : 量
エントリ
1
*
数量 : 量
2..*
1
トランザクション
実施日:日
<<business rule>>
inv:
self.エントリ.数量->sum = 0
19
 シナリオ
航空券の購入:多肢トランザクション
2001年5月1日,航空券を買うためにA航空に45,000円をクレジットカー
ドで払った。2001年5月31日,当座預金からクレジット勘定へ,それを埋
合わせるトランザクションを作成した
:エントリ
クレジット:勘定
-45000円
:エントリ
:トランザクション
2001年5月1日
+45000円
A航空:勘定
:エントリ
-45000円
当座預金:勘定
:エントリ
:トランザクション
2001年5月31日
+45000円
20
モデル図の理解
10.2 勘定(2)
このインスタンス
図はどうなる?
 移動の記録
 二肢トランザクション
導出:
残高=self.~繰入.the量->sum self.~払出.the量->sum
残高
1
量
1
{導出}
*
勘定
*
1
繰入
*
払出
*
1
トランザクション *
時点
1
21
 シナリオ
航空券の購入:二肢トランザクション
2001年5月1日,航空券を買うためにA航空に45,000円をクレジットカー
ドで払った。2001年5月31日,当座預金からクレジット勘定へ,それを埋
合わせるトランザクションを作成した
:量
:量
残高
45000円
:量
残高
45000円
クレジット:勘定
払出
:トランザクション
:時点
繰入
2001年5月1日
A航空:勘定
繰入
:トランザクション
:量
45000円
残高
45000円
当座預金:勘定
払出
:量
45000円
:時点
2001年5月31日
22
モデル図の理解
10.2 勘定(3)
このインスタンス
図はどうなる?
 要約
 ロールアップ
{抽象}
構成要素
勘定
* / 残高 : 量
{階層}
/対象エントリ
*
0..1
要約勘定
対象エントリ
明細勘定
1
*
エントリ
数量 : 量
トランザクション
2..*
1
inv:
/対象エントリ=self.対象エントリ
inv:
/対象エントリ=self.構成要素./対象エントリ
23
旅費交通費:要約勘定
構成要素
航空旅費:要約勘定
構成要素
A航空:明細勘定
/対象エントリ
B航空:明細勘定
クレジット:明細勘定
/対象エントリ
対象エントリ
:エントリ
:エントリ
:エントリ
+45000円
+66000円
+128000円
:トランザクション
2001年5月1日
:トランザクション
2001年1月31日
:トランザクション
2001年11月21日
:エントリ
-45000円
24
モデル図の理解
10.3 生産管理システム
顧客注文
顧客オーダ番号
顧客名称
*
数量
希望納期
受注日時
品目群
品目群名
1..1
1
0..*
座席予約
1..*
生産計画
1..* 製造番号
出来数量
/製造納期
/実績原価
pegging
<<導出>>
対象
*
/品目
/製造リードタイム
最終製品
*
用途使用条件種
0..*
/構成部品
(from 技術データ管理)
1
1
用途使用条件種
1
1
*
用途使用条件値
(from 技術データ管理)
未定
*
* /変更可能用途使用条件
用途使用条件種
1..*
製造方法
/ 着手日
/ 完了日
/ 加工原価
ロットサイズ
/加工機能
加工機能名
加工時間
工順 * 着手日
完了日
{ordered}
加工データ
*
1
1
群加工機能
加工資源
投入資源
投入数量
生産品目
* 生産数量
*
1
assembly
投入品目
* 投入数量
*
1
component
*
1
*
部品調達計画
制約:
最終製品の完
成時に未定であっ
てはならない
部品期首在庫
部品実在庫量
* 期首 : 日付
1
指定日
1
/在庫
/
部品有効在庫量
0..1
1
<<動的>>
加工終了
加工中
未着手
内作品
/製造原価
調達品
調達原価
加工資源
単位原価
加工データ
25
モデル図の理解
10.4 素材発注システム
アクタ
: 在庫調整
create
移動元_ :
エントリ
create
移動元 :
在庫単位
移動先_ :
エントリ
移動先 :
在庫単位
findAccount
if not found
createAccount
create
findAccount
場所
if not found
createAccount
製品メーカ
*
素材メーカ
発注
*
素材
*
/在庫単位
*
*
*
*
*
*
進捗
SKU
/エントリ
/トランザクション
2..*
*
/在庫
出庫
入庫
移動
在庫調整
<<動的>>
染色
裁断
完成
26