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

47070
オブジェクト指向モデリング
[3]
2001年10月15日
授業資料の置き場
URL http://www.crew.sfc.keio.ac.jp/
lecture/2002objmodel/index.html
2
良い情報システムを作るために
 複雑な現代のシステム
A
 人間が一度に理解できる量を越えている
 ビジネスの本質に関わっている
B
 複雑さを低下させる方法
D
C
 モジュール化
 よいモジュール(高い凝集度)
 制約されたアクセス(低い結合度)
 契約(限定されたインタフェース)
 ソフトウェア工学
 作り方の工夫(品質)
 情報システム工学
client
A
A’
B’
依存性
D’
server
B
C’
 業務の選択・創造(効果)
3
質問カードから
 分析→設計→制作→検査のほかに「比較」が必要?
 どんなシステムを作るかを分析の中で検討します。
 機能や性能の比較や評価(定量的,定性的),実現可能性
などを検討します。
 設計や制作においても比較は有効です。
 現場で分析・設計に時間はかけられないのでは
 「十分」の基準がないので
 満足なモデルができたかどうかを基準にしては
 4つのワークフローに割く時間の比率は
 ケースバイケースです
事例
工程 分析 設計 制作 検査 受入
"Zelkowitz"
"Zelkowitz & NASA"
Griffin
20 15 20 45
22 49 16 13
15 23 28 24
4
質問カードから
 「2-4-2-3」の法則は「4」で突っ走るべきか
 2の見積もりが甘いだけです
 すべての必要機能を前もって知ることは難しいのです
 1つの解決策は,小さく段階的に作っていくことです
 要求記述の方法は
 ユースケースを使います
 要求の取り出しについては形式的な方法がありません
 経営コンサルでもUMLを使うの?
 目的と人によります。
 モデルを概念の整理と業務設計に使う人がいます。
 ビジネスプロセスの記述に使います。
5
質問カードから
 OO(Object Oriented)とは何かについて触れて欲しい
 今日,触れます
 OOの成功例はあるか
 OOプログラミングは成功しています(OSやGUIなど)
 OOシステムの成功例は少ないです(OO以外でもできる)
 私がやっているシステムはOOでなければできないもので
すが,なかなか受け入れられません(受け取った側が保守
できないから)。
 抽象的な話を一方的にだらだらしゃべるだけでは眠く
なるだけ。インタラクティブにテンポよくやってほしい
 当てていきます。答えてくださいね。
6
オブジェクト指向モデリング
第3回 オブジェクトの概念とUML
3.1 オブジェクトとは何か
3.2 型とクラス
3.3 オブジェクトは良いシステム作りに役立つか
3.4 継承
3.5 UML
テキスト 第2章
7
3.オブジェクトの概念とUML
3.1 オブジェクトとは何か
 オブジェクト指向パラダイム
 世界は「オブジェクト」の相互作用で成立しているという想
定に基づいてソフトウェアを作成する
16ページ
 認識の世界(Universe of Discourse)
 オブジェクト
 メッセージを受け取って反応する(behavior)
 反応の結果はオブジェクトの内部状態(state)に依存する
 個々のオブジェクトが識別される(identity)
resetTimeTo(07:43)
resetTimeTo(newTime)
reportTime()
myClock
8
3.オブジェクトの概念とUML
3.1 オブジェクトとは何か
 非オブジェクト指向
 関数呼び出し
 1つのコード
 ケース分けのロジック
A
B
A
B
 オブジェクト指向
 状態を持つ「もの」
 メソッド呼び出し
 メッセージ
 個別のコード
A
B
resetTimeTo(07:43)
OK
reportTime()
A
13:18
07:43
B
16:47
It’s 16:47
9
3.オブジェクトの概念とUML
3.1 オブジェクトとは何か
 メッセージ
送信先オブジェクト セレクタ
引数
Obj.resetTimeTo(07:43)
 自分自身にも送ることができる
 インタフェース
 受理可能なメッセージの定義
 公開インタフェース(public)
 非公開インタフェース(private)
resetTimeTo()
reportTime()
resetTimeTo()
reportTime()
Obj1.resetTimeTo(07:45)
resetTimeTo()
reportTime()
obj1
obj2
obj3
OK
10
3.オブジェクトの概念とUML
3.1 オブジェクトとは何か
17ページ
 クラス
 類似のオブジェクトをグループ化
 何をもって類似と判断するか
 振る舞い,属性,インタフェース
 クラスに属するオブジェクトの生成
 Object の工場としてのクラス
 なぜクラスが必要か
 同じ特性をまとめて記述する
 write once!
resetTimeTo()
resetTimeTo()
reportTime()
reportTime()
resetTimeTo()
resetTimeTo()
reportTime()
reportTime()
 型としての効果
 型チェック
11
3.オブジェクトの概念とUML
3.1 オブジェクトとは何か
 何がオブジェクトか
 次のうちオブジェクトと考えられるのはどれか
15ページ
かなづち
球体
化学合成
愛
霧
川
怒り
猫
灰色さ
灰色の猫
12
3.オブジェクトの概念とUML
3.2 型とクラス
教科書外
 クラスはOOプログラミングにおけるモジュール
 UoDの概念と対応していなければならない理由はない
 型は分析で扱うクラス候補
 UoDにおける概念に対応させる
 世界の理解,共有
 semantic data modeling
 概念を集合として扱う
クラス
 集合と要素
型
型
現実世界
活動
活動
翻訳
パッケージ
コンポー
ネント
解釈
実装レベル
概念レベル
13
3.オブジェクトの概念とUML
3.2 型とクラス
型
 概念
顧客
 類似のものをひとまとめにしてとらえる
 境界を定める
 集合
小林商店
児玉公信
 共通の属性種
 個別の属性値
大岩商店
 インタフェース
小泉一郎
 操作
山田太郎
 クラス
 型の実装
 データ項目
 メソッド
 実装上の都合
集合
概念
プログラム
要求
型
クラス
ユースケース
要素 インスタンス オブジェクト
シナリオ
14
3.オブジェクトの概念とUML
3.3 オブジェクトは良いシステム作りに役立つか
 オブジェクト指向プログラミング
20ページ
 良いモジュール
 OOの制約によって良いモジュールとなる
 凝集度が高いクラス
 インタフェースによる結合度の制約
 良いコンポーネント
 再利用可能
 オブジェクト指向の世界観
UoD
 「オブジェクトの世界」を「ユーザの世界」と整合させたい
 概念と概念構造
 ユーザの要求を把握しやすい
 要求獲得を容易に
 変更要求に追随する
 オブジェクトメタファーが有効?
15
3.オブジェクトの概念とUML
3.3 オブジェクトは良いシステム作りに役立つか
 コンポーネントが再利用可能となる前提
 アーキテクチャ
ユーザインタフェース
HTML
アプリケーション(機能)
ドメイン(概念の世界)
SQL
永続化
16
3.オブジェクトの概念とUML
22ページ
3.4 継承
 実装レベル
 サブクラス
 最もオブジェクト指向らしいメカニズム
 機能の拡張(追加,上書き)
 ポリモーフィズムのベース
 概念レベル
 サブタイプ
顧客
国内
 部分集合
 分類
 部分集合
 多重分類
 動的分類
一般
重要
 状態の分類
国外
17
3.オブジェクトの概念とUML
3.5 UML
 Three Amigos
 James Rumbaugh
 Grady Booch
 Ivar Jacobson
 Unified Modeling Language
1995年10月
1997年1月
1998年6月
2001年2月
Unified Method V0.8
UML 1.1 on OMG
UML 1.3 on OMG
UML 1.4 on OMG
Openなプロセスに
よって改良
ISO化の動き
UML 1.4.1
18
3.オブジェクトの概念とUML
3.5 UML
 表記法
関心
観点
静的側面
概念レベル
仕様レベル
実装レベル
図の要素
モデル管理
汎用拡張機構
機能側面
ユースケース図
クラス図
オブジェクト図
協調図
シーケンス図
動的側面
物理側面
ステート
チャート 活動図
コンポーネント図
図
配置図
ノート,型-インスタンスの対応
パッケージ
制約と注釈,ステレオタイプ
19
3.オブジェクトの概念とUML
3.5 UML
 表記法
 クラス図
 相互作用図
 シーケンス図,コラボレーション図
 状態図
 ステートチャート図,アクティビティ図
 ユースケース図
 パッケージ
 配置図
 モデリングプロセスは別!
アイコンを自由に定義で
きる→拡張可能
20
3.オブジェクトの概念とUML
3.5 UML
 クラス図
 概念レベル
 Universe of Discourseの表現
 概念と概念の構造
 実装レベル
 プログラムの設計
self.observer
->update()
A
*
Notify()
Attach(Observer)
Detach(observer)
ConcreteA
GetState()
return subjectState
subjectState
B
update()
observer
subject
ConcreteB
update()
observerState
self.observerState=
subject.GetState()
21
3.オブジェクトの概念とUML
3.5 UML
 シーケンス図
 概念の境界を定める
 責任の配分
 相互作用
SetState( )
b1:B
a:A
b2:B
Notify( )
Update( )
GetState( )
Update( )
GetState( )
22
3.オブジェクトの概念とUML
3.5 UML
 アクティビティ図
 ワークフロー
受注係
出荷係
輸送係
注文を受ける
在庫を確認する
出荷指示をする
出荷する
納入する
23
3.オブジェクトの概念とUML
3.5 UML
 ユースケース図
 概念レベル
 要求の切り出し
 要求の記述
 仕様レベル
在庫を確認する
 対話の詳細化
受注係
注文を受ける
出荷を指示する
24