問題解決からビジネスモデリングへ

オブジェクト指向モデリング
[10]
2003年12月9日
10. 状態モデル
10.2 活動図(1)
 活動図
状態図の拡張
活動(activity)
遷移
同期バー
判断
開始マーカ
終了マーカ
レーン(アクタ)
会員
[書名が
わかっている]
[書名がわからない]
文献を検索する
書架に本を見つける
図書館の職員に貸出を申し出る
本
[帯出許可前]
貸出の申し出を受ける
貸出を記録する
制御構造を書く
ワークフロー図
図書館の職員
本を受け取って帯出する
本
[帯出許可後]
本の帯出許可をする
split と join
loop
オブジェクトフロー
2
10. 状態モデル
10.2 活動図(6)
 ATOのモデル
 Benetonのビジネスモデル
製品在庫最小化(中間製品での在庫)
染色を最終工程に(オプションを最終工程で実装する)
売れ行き,
注文
市場に対する
情報,知識,
予測
《physical》
材料,部品
《process》
《process》
販売計画
販売
発注
《physical》
製品
[出荷済]
《供給》
《process》
《process》
生産
染色
《physical》
最終製品
《physical》
中間製品
3
11. 静的モデル4
11.5 概念レベルのモデリング
 販売の記録
導出:
/金額
=the商品.単価×数量
商品
1
*
商品名
単価
明細
数量
/金額
導出:
/合計金額
=Σthe明細.金額
販売
*
販売日時
/合計金額
*
1
客タイプ
性別
年齢層
*
インスタンス:
ナックバーガー
ビッグナック
ナックシェーク
:
担当者
担当者
氏名
/客数
氏名
/客数
*
まとめ
販売日
/合計金額
{導出}
*
1
*
商品
商品名
単価
1
*
販売
数量
/金額
*
1
客タイプ
4
11. 静的モデル4
11.5 概念レベルのモデリング
 具体例を考えて
:商品
商品名= ナックバーガー
単価=90
:商品
商品名= ナックポテトS
単価=150
:商品
商品名= ナックシェーク
単価=200
:明細
数量=2
/金額=180
:販売
販売日=031205
/合計金額=530
1:客タイプ
性別=不明
年齢層=40上
:明細
数量=1
/金額=150
:明細
数量=1
/金額=200
:明細
数量=1
/金額=90
:担当者
氏名=山県有朋
/客数=130
:販売
販売日=031206
/合計金額=290
2:客タイプ
性別=女
年齢層=20
:明細
数量=1
/金額=200
5
オブジェクト指向モデリング
シラバス
 授業計画
回
1
2
3
4
5
6
7
8
9
10
11
12
13
月日
9月 30日
10月 7日
10月14日
10月21日
10月28日
11月 4日
11月11日
11月18日
12月 2日
12月 9日
12月16日
1月13日
1月20日
内容
オリエンテーション:モデルとは何か。
モデリング言語:UMLの概要
静的モデル1:概念とクラス
静的モデル2:関連
静的モデル3:オブジェクト図
静的モデル3:オブジェクト図(続き),モデリング
機能モデル1:ユースケース,シナリオ
機能モデル2:要求抽出,協調図,シーケンス図,状態モデル:状態図
機能モデル2:活動図,静的モデル4:ユースケースに基づくモデリング
静的モデル4:モデルの揺さぶり,実装レベル:実装モデルとプログラム
モデリング1:モデル図の理解:アナリシスパターン,事例
モデリング2:モデル図の作成,モデルの評価基準
モデリング3:例題によるモデル図の作成
6
6.高度な関連
6.6 型モデルの演習(2)
 手順
基本定義から基本課題を発明
する
基本課題からユース
ケースを発明する
ワークフローを書い
て,隠れたユース
ケースを洗い出す
初期の概念モデルを書く
モデルを揺さぶる
疑問点を考える
本質的な概念モデルを導く
7
11. 静的モデル4
11.6 揺さぶり(1)
 モデルの洗練
 変更に強いモデルにする
 本質的なモデルを追求する
 要求のエスカレーション
日別の商品別売上げを得る
カテゴリ別の商品別売上げを得る
作り置きがあれば
そこから出庫する
店長
日別の利益額を得る
作り置きがあればそこから出庫する
窓口係
調理係
[解答例]
商品ごとの調理時刻を記録する
8
11. 静的モデル4
11.6 揺さぶり(2)
 ある日の商品別売上合計を計算する
 日別の「売上」型を設ける
日別の商品別売上げを得る
店長
9
11. 静的モデル4
11.6 揺さぶり(3)
 ある日の商品別売上合計を計算する
 日別の「売上」型を設ける
 「売上」は導出型(必要のつど生成し,永続化しない)
 基本型としての「日」
担当者
導出:
the./売上.売上金額は,the明細.the販売とナビ
ゲートして得られる販売オブジェクトの集合のうち,
その販売日が,the/売上.the日.日と一致するものに
ついて,金額を合計して得る
氏名
/客数
*
商品
1
商品名
単価
*
明細
数量
/金額
*
販売
1
販売日
/合計金額
1
売上金額
1
客タイプ
性別
年齢層
*
販売日 1
*
/売上
*
*
日
1
日
10
11. 静的モデル4
11.6 揺さぶり(4)
 オブジェクト図
:日
:/売上
:商品
日=031205
売上金額=180
商品名= ナックバーガ
単価=90
:日
:/売上
:商品
日=031206
売上金額=90
商品名= ナックポテトS
単価=150
:/売上
売上金額=
:商品
商品名= ナックシェーク
単価=200
:明細
数量=2
/金額=180
:販売
販売日=031205
/合計金額=530
:明細
数量=1
/金額=150
:明細
数量=1
/金額=200
:担当者
氏名=山県有朋
/客数=130
:/売上
売上金額=
:明細
数量=1
/金額=90
:販売
販売日=031206
/合計金額=290
:明細
数量=1
/金額=200
11
11. 静的モデル4
11.6 揺さぶり(5)
 ある日の商品別売上をカテゴリ別に集計する
カテゴリ別の商品別売上げを得る
店長
12
11. 静的モデル4
11.6 揺さぶり(6)
 カテゴリ別売上げを集計する
1
メソッド:
the./カテゴリ別売上./売上金額は,the明細.the販
売とナビゲートして得られる販売オブジェクトの集
合のうち,the明細.the商品.theカテゴリがthe/カテ
ゴリ別売上.theカテゴリと一致するものについて,
金額を合計して得る
カテゴリ
名称
売上集計()
1
*
/カテゴリ別売上
売上金額
*
*
1
商品
商品名
単価
1
*
明細
数量
/金額
*
1
販売
販売日
/合計金額
*
1
客タイプ
性別
年齢層
1
*
日
日
1
*
/売上
売上金額
13
11. 静的モデル4
11.6 揺さぶり(7)
 作りおきがあれば,そこから出庫する
窓口のサービス時間を短縮して,
客の回転率を上げたい
作り置きがあれば
そこから出庫する
窓口係
14
11. 静的モデル4
11.6 揺さぶり(8)
 作りおきがあれば,そこから出庫する
カテゴリ
導出:
the/在庫.在庫数量は,新たな販売オブ
ジェクトが生成されたときに,以前の在庫
値からthe明細.数量を差し引いたもの
客タイプ
名称
性別
年齢層
1
1
*
/在庫
在庫数量
*
1
商品
商品名
単価
*
1
*
明細
数量
/金額
*
*
1
販売
販売日
/合計金額
1
*
日
日
1
/売上
売上金額
15
11. 静的モデル4
11.6 揺さぶり(9)
 現時点での在庫がわかるように
 入庫の情報を加える
調理係
商品ごとの調理時刻を記録する
16
11. 静的モデル4
11.6 揺さぶり(10)
 現時点での在庫がわかるように
 入庫の情報を加える
導出:
この在庫は,新たな販売オブジェクトが
生成されたときに,以前の在庫値からthe
商品.the明細.数量を差し引いたもの,ま
た,製造オブジェクトがときに,以前の在
庫数量にthe製造.数量を加えたもの
カテゴリ
客タイプ
名称
性別
年齢層
1
1
*
日時
日
時刻
1 *
/在庫
在庫数量
*1
1
商品
1
商品名
単価
1
*
明細
数量
/金額
*
*
1
販売
販売日時
/合計金額
1
*
日
日
1
*
/売上
/売上金額
製造明細
* 数量
*
1
製造
製造日時
17
11. 静的モデル4
11.6 揺さぶり(11)
 作りおき分は10分経っても売れなければ捨てる
 現物の管理
 期限の管理
 販売予測
賞味期間を越えた現物を特定する
調理係
18
11. 静的モデル4
11.6 揺さぶり(12)
 作りおき分は10分経っても売れなければ捨てる
 現物の管理
 期限の管理
 販売予測
カテゴリ
客タイプ
この関連が導出されるので,
the商品.the/在庫の導出
ルールはそのままでよい
名称
性別
年齢層
1
1
*
/在庫
1
/在庫数量
1
商品
1 {導出} *
商品名
単価
1
1
*
識別番号
/賞味期限
数量
*
1 /金額
{導出}
*
*
1
製造ロット
数量
製造時刻
1
販売
販売日
/合計金額
廃棄は,マイナス数
量で表すことで,在
庫のつじつまを合わ
せる
1
製造
*
現物
導出:
賞味期限は,the製造の
製造日時+10分
明細
*
*
製造日
どれを廃棄するかを見定めるため,1つひと
つの商品を区別する必要が出てきた
19
11. 静的モデル4
11.6 揺さぶり(13)
 「現物」を追跡する(オブジェクト図)
:製造
:製造ロット
:現物
:商品
製造日=031205
数量=2
製造時刻=11:10
識別番号=002
賞味期限=11:20
商品名= ナックバーガ
単価=90
:現物
:商品
識別番号=003
賞味期限=11:20
商品名= ナックポテトS
単価=150
:製造
:製造ロット
:現物
製造日=031205
数量=2
製造時刻=12:00
識別番号=004
賞味期限=12:10
:商品
商品名= ナックシェーク
単価=200
:明細
数量=2
/金額=180
:販売
販売日=031205
/合計金額=530
:明細
数量=1
/金額=150
:明細
数量=1
/金額=200
:現物
識別番号=005
賞味期限=12:10
:明細
数量=1
/金額=90
:販売
販売日=031206
/合計金額=290
:明細
数量=1
/金額=200
20
11. 静的モデル4
11.6 揺さぶり(14)
 利益(粗利)は売上高から製造原価を引いたもの
店長
日別の利益額を得る
21
11. 静的モデル4
11.6 揺さぶり(15)
 利益(粗利)は売上高から製造原価を引いたもの
導出:
the/売上げ.製造原価は,the製造明細.the
製造とナビゲートして得られる製造オブ
ジェクトの集合のうち,それぞれの製造日
が,the/売上げの日と一致するものについ
て,the製造明細.数量を合計したものに
self.原価を乗じて得る
カテゴリ
客タイプ
名称
性別
年齢層
1
1
*
日
日
商品
/売上
1
* /売上金額
/製造原価
/利益
*
1 {導出} *
商品名
単価
原価
1
1
導出:
利益=売上金額-製造原価
数量
/金額
{導出}
*
1
販売
販売日時
/合計金額
廃棄をマイナス数量で表す
ことにすると,製造原価が減
ることになって,おかしい
*
*
現物
ロット番号
/賞味期限
明細
*
*
1
製造明細
数量
製造日時
*
1
製造
製造日時
22
11. 静的モデル4
11.6 揺さぶり(16)
 汎化も使って概念を整理
導出:
the/売上げ.製造原価は,the明細.the取引
とナビゲートして得られる取引オブジェクト
の集合のうち,それぞれのサブタイプが
「製造」または「廃棄」で,その日時の日が,
the/売上げ.日と一致するものについて,the
明細.数量を合計したものにこの原価を乗
じて得る
カテゴリ
名称
1
*
商品
/売上
/売上金額
/製造原価
/利益
1
1
商品名
日 単価
原価
{導出}
*
現物
限定子を使ってみた
ロット番号
/賞味期限
明細
数量
/金額
取引
1
*
日時
1
1
消費税はどうす
る
*
*
廃棄
製造
販売
*
客タイプ
性別
年齢層
1
23