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

47070
オブジェクト指向モデリング
[13]
2003年 1月21日
オブジェクト指向モデリング
第12回 モデリング1
12.0 概念モデリングの手順
12.1 自動改札システム
12.2 CS4
12.3 実際のモデル
12.4 モデルの良さの基準
テキスト 第15章
2
モデリング1
12.0 概念モデリングの手順
 要求を認識することから始まる
 ドメイン知識とモデリング技術が必要
 とにかく書く
ドメインがある程度分
からないと,要求も分
からない
 書いてから考える(思考のツール,概念の発見・発明)
《プロセス》
知識
初期モデル
を書く
《プロセス》
ユースケース
を書く
初期モデル
シーケンス図,協調図,
ステートチャート図を書い
てモデルをチェックする
《プロセス》
ユースケース
モデルを補強
修正する
改訂モデル
《プロセス》
本質に迫る
《プロセス》
要求
活動図
を書く
知識
要求
補助図
本質モデル
3
モデリング1
12.0 概念モデリングの手順
 要求を導く
 ステークホルダたちの合意のプロセス
 ビジョンの形成
《プロセス》
現状を知る
ビジョン
《プロセス》
前要求
ビジョンを
描く
《プロセス》
基本定義
を書く
知識
《プロセス》
《プロセス》
基本定義
CATWOEに
よるチェック
基本課題
課題を満足す
る要求を書く
要求
4
モデリング1
12.1 自動改札システム
便の日付は有効
期間中であること
日付
 改訂後
時間割
*
便
*
座席
*
* 指定席
グリーン
<<多重>>
有効期限
事業者
普通
*
*
路線
駅
名称
{ordered} 基準キロ数
*
急行
着席権
特急
*
*
入場
*
出場
*
入場日時
出場日時
料金
/運賃
*
入場する()
出場する()
から
get基準キロ数()
まで
*
/運賃
営業キロ数
* 輸送料金
子供
乗車権
割引
*
学割
get運賃()
区間
から
<<動的>> <<多重>>
区間
まで
行使前
行使中
行使済
* 定期券
*
1
乗客
切符
購入料金
回数券
プリペイドカード
/残高
有効期限は
ない
5
モデリング1
12.2 CS4管理システム
担当する
講師
 概念モデリング
*
6
履修する
 主要な概念から着手
 学生,講師,授業科目
DoS
*
授業科目
6..*
学生 1..*
 時間の観念
1..*
聴講生
一般学生
優等コース
*
講師
担当する
* 授業科目
科目紹介
*
6..*
*
170ページ
*
DoS
1..*
*
学生
履修登録
6
1..*
聴講生
一般学生
優等コース
*
*
コースハンドブック
年度
*
6
オブジェクト指向モデリング
第13回 モデリング2
13.1 酒在庫問題
13.2 まとめ
教科書外
7
モデリング2
13.1 酒在庫問題
 課題
酒類卸売り業(A社)の倉庫には,仕入注文に応じて,メーカ(B社)か
ら毎日数個のコンテナが搬入されてくる。その内容はビン詰めの酒で,
1つのコンテナには複数の銘柄が積み込まれている。
倉庫係は,商品(酒)をコンテナから取り出して倉庫に保管し,それを
記録した入庫票を受付係へ手渡す。また逆に,受付係からの出荷指
示によって倉庫から商品を出荷する。
受付係は毎日,電話で小売店からの注文を,納入希望日の前日ま
でに受ける。受付係は,その都度それを受注票に記入し,そのコピー
を出荷指示として倉庫係に渡す。
注文の納入希望日の朝時点で当該商品の在庫数量が不足すると予
測される場合には,受付係は不足分について在庫不足リストに記入し,
当日の夕方に,入庫希望日別,商品別に集計して仕入発注書を作成
し,メーカに発注する。翌日入庫希望分は翌日の夕方に入庫される。
8
モデリング2
13.1 酒在庫問題
 A社のビジネスフロー
卸売商
酒メーカ
B社
小売店
A社
仕入注文
C社
[顧客]注文


仕入発注書
在庫不足リスト
受注係
受注票
倉庫
コンテナ
出荷指示
(受注票コピー)
入庫票
倉庫係
9
モデリング2
13.1 酒在庫問題
 ワークフローの整理
入庫
仕入注文
倉庫係
受付係
受付係
商品を倉庫に
保管する
在庫不足リストを
日別商品別に分類
注文を受ける
入庫票に記入
する
仕入を発注する
受注
在庫を確認する
出荷
[在庫数量不足]
在庫不足リスト
に記入する
受付係
倉庫係
出荷指示をする
出荷する
出荷を記録する
当日分だけを
選択
10
モデリング2
13.1 酒在庫問題
 問題
 在庫があるとき
酒メーカ
小売店
C社
B社
受注係
倉庫係
注文する
出庫を指示する
出荷を報告する
出荷する
受領を報告する
11
モデリング2
13.1 酒在庫問題
 問題
当日,翌日納入の場合は欠
品する可能性がある
 在庫がないとき
 翌々日にしか出荷できない(機会損失)
酒メーカ
小売店
C社
B社
受注係
在庫不足リスト書く
倉庫係
注文を受ける
0日
仕入注文する
入庫する
+1日
入庫票を渡す
出庫を指示する
出荷する
+2日
12
モデリング2
13.1 酒在庫問題
 基本定義
「商品の仕入と販売を的確に行うことを支援するシステム」
 CATWOE分析
Customer:小売店
Agent:受付係,倉庫係
Transformation:商品を仕入れて販売する
Weltanschauung:的確に…?
Owner:A社
Environment:酒類市場
 的確さを決める世界観
課題記述には直接
現れない概念
 在庫負担を最小にする(保有量を最小に,かつ滞留期間を最短に)
or
 受注から出荷までの日数(リードタイム)を最短に
メーカ依存
or
 機会損失を最小にする(欠品しない;安全在庫は保有する)
13
モデリング2
13.1 酒在庫問題
 基本定義の再設定
「安全在庫を確保しつつ,販売状況に合わせて商品を仕入れ
ることを支援するシステム」
 CATWOE分析
Customer:小売店
Agent:受付係,倉庫係
Transformation:商品を仕入れて販売する
Weltanschauung:在庫負担を最小化するが,欠品は避ける
Owner:A社
Environment:酒類市場
 安全在庫
 飛び込み注文対応分
在
庫
量
安全在庫
 翌日夕方入庫までのつなぎ
 注文のキャンセルや変更もある
期首
現在
実績
予定
時間
14
モデリング2
13.1 酒在庫問題
 ユースケース
仕入販売支援システム
受注する
入庫を記録する
在庫を引き当てる
受付係
倉庫係
出荷指示する
仕入注文をする
出荷を記録する
安全在庫を設定する
15
モデリング2
13.1 酒在庫問題
 ユースケース記述
ユースケース名:受注する。
アクタ:受付係
目的:小売店からの注文を記録して,出荷指示をしたい。
事前条件:注文が記録されていない。
基本系列:
①アクタは,システムに注文を記録する旨を示す。
②システムはアクタに注文の入力を促す。
③アクタは注文内容(送り先名,{商品名,数量,納入希望日},受注日)を入
力する。
④システムは,注文内容が妥当であることを確認し,注文番号を発行して,
それらを記録する。
事後条件:注文が記録されている。
代替系列:A 基本系列④で注文内容が妥当でなかった場合,...
備考:注文内容が妥当であるとは,...
注文番号は一連番号とし,ユニーク性を保証すること。
16
モデリング2
13.1 酒在庫問題
 ユースケース記述
計画ホライゾン
商品名 1/14 1/15 1/16 1/17 1/18 1/19
マッカラン 12
12
2 12
-8
2 12
-8
2 12
-8
2 12
-8
2
ユースケース名:在庫を引き当てる。
アクタ:受付係
注文日:1/14
マッカラン 10本 1/15
目的:注文に対する在庫不足分を明らかにしたい。
マッカラン 10本 1/16
事前条件:未処理の注文がある。
基本系列:
①アクタは,システムに在庫の確認処理を要請する。仕入注文日:1/14
②システムは,商品別,納入希望日順に在庫量から注文分を減じる。当日お
マッカラン 10本 1/15
よび翌日の在庫が安全在庫を割った場合はアクタに警告する。
③システムは,処理した注文に対して「処理済み」をマークする。
事後条件:未処理の注文がない。
代替系列:なし
備考:在庫引き当ては,商品別,日別の予定在庫を減じることで表現する。
「仕入注文をする」ユースケースでは,安全在庫を加味して仕入数量を
決める)。
当日夕方までの受注分を対象とするバッチ処理。
安全在庫量は別途設定する。
17
モデリング2
13.1 酒在庫問題
 概念モデリング
 初期モデル
18
モデリング2
13.1 酒在庫問題
 在庫とは
累
積
量 入庫
 実在庫
仕入
滞留時間
期首在庫+Σ入庫-Σ出荷
注文
 ある時点での予定在庫
 入庫,出荷は実績
 仕入,注文は
入庫予定,出荷予定
 ユースケースは不変?
②システムは,商品別,納入希望日順に
在庫量から注文分を減じる。当日および
翌日の在庫がマイナスになった場合はア
クタに警告する。
在庫
出荷
実在庫+Σ仕入-Σ注文
期首
現在
実績
予定
在
庫
量
安全在庫
期首
現在
実績
予定
flow
時間
stock
時間
内部を書きすぎだった
19
モデリング2
13.1 酒在庫問題
 代替案
 ものの動きに注目
 最初の案はビジネスプロセスにのみ注目していた
20
モデリング2
13.1 酒在庫問題
 さらに代替案
 ビジネスプロセスとものの動きの両方をとらえる
 一方を導出型とする
e.g. 「仕入」のインスタンスを書くと同時に「入庫・予定のトランザクション」,
「エントリ」を書く
21
モデリング2
13.1 酒在庫問題
 責任の配置
 ユースケース:受注する
受付係 : アクタ
create
: 注文
: 小売店
: 銘柄
isValid
isValid
22
モデリング2
13.1 酒在庫問題
 責任の配置
 ユースケース:在庫を引き当てる
 注文からトランザクションを生成
受付係 : アクタ
process
: 注文
: /トランザクシ
ョン
: 勘定
: 払い
: 勘定
: 受け
getUnprocessed
create
getAccount
create
getAccount
create
23
モデリング2
13.1 酒在庫問題
 仕様モデル,実装モデル
 機能実現の具体的な方法
 設計判断
 実装判断
ユーザーインタフェース層
アプリケーション層
ドメイン層
 アーキテクチャの設計
 レイヤリング
 フレームワークの当てはめ
 ユーザインタフェース設計
 オブジェクト永続化の方法
永続層
RDB
OODB
 オブジェクト指向データベース
 リレーショナルデータベースへは複雑なマッピングが必要
 インピーダンスのミスマッチ
 関連の実装
24
モデリング2
13.1 酒在庫問題
 情報システムによらない解決法
 A社に一旦保管するから1日余計にかかる
 メーカから直接小売店に配送する
 卸売業の自滅?
 輸送費は?
 キャッシュフローは?
25
モデリング2
13.2 まとめ
 情報システム工学
 人間活動システム
 システム論
 システム要素間の相互作用→創発
 階層と通信
 ソフトな問題
 構造化できない問題
 自分自身がシステムの一部分
正解がない
対策がまた新たな問題の原因に
 効果的な情報システム
 目的(ビジョン,ミッション,ゴール,目標値)の達成
 アプローチ(戦略,戦術,作戦)の選択と合意形成
 フィードバックと目的・アプローチの修正の繰り返し
 目標値と現状との乖離=動的テンション
 敏感でいること
Embrace Change !
26
モデリング2
13.2 まとめ
 情報システム学
 変化し続ける人間活動システム
 現実世界(real world)と認識世界(Universe of Discourse)
 システムの基本定義
 CATWOE分析
Customer:
Agent:
Transformation:
Weltanschauung:
Owner:
Environment:
 基本定義のrefine
 基本課題の合意
 基本課題を満足する機能要求
27
モデリング2
13.2 まとめ
 モデリング
 理解と合意のプロセス
 モデリング言語(UMLの登場)
 ドメインと外部機能の分離
ユーザインタフェース
 ドメインの定義
 Ownerによる世界認識(UoD)
をそのまま実装したい
 レイヤー構造
 要求記述としてのユースケース
 外部機能の実現
 良いモデルの基準
アプリケーション(機能)
ドメイン(概念の世界)
永続化
 適度な抽象性
 一般性,単純性,耐変更性,再利用性
 piecemeal growth
28
モデリング2
13.2 まとめ
 情報システム工学とオブジェクト指向
 概念モデルとの素直な対応
 概念の実装としてのクラス-インスタンス
 概念階層
 ソフトウェア工学からの「良い概念」の基準
 結合度
 凝集度
 オブジェクトメタファー
 通信と相互作用
 変更吸収の仕組み
 拡張のメカニズム
 継承
 フレームワークの発想
 リファクタリングのプラクティス
29