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

47070
オブジェクト指向モデリング
[4]
2001年10月23日
オブジェクト指向モデリング
前回 オブジェクトの概念とUML
3.1 オブジェクトとは何か
3.2 オブジェクトは良いシステム作りに役立つか
3.3 継承
3.4 ポリモーフィズムと動的束縛
3.5 UML
2
3.オブジェクトの概念
3.1 オブジェクトとは何か
 オブジェクト指向パラダイム
 世界は「オブジェクト」の相互作用で成立しているという想
定に基づいてソフトウェアを作成する
 オブジェクト
 メッセージを受け取って反応する(behavior)
 反応の結果はオブジェクトの内部状態(state)に依存する
 何らかの属性値を持つ
 個々のオブジェクトは区別される(identity)
 オブジェクトをまとめる
 クラス
型
resetTimeTo(07:43)
resetTimeTo(newTime)
reportTime()
myClock
3
オブジェクト指向モデリング
第4回 初歩のケーススタディ
4.1 図書館問題
4.2 ユースケース
4.3 ソフトウェアプロセス
4.4 型の認識
4.5 振る舞いのモデル
4.6 概念モデルから実装モデルへ
4
初歩のケーススタディ
4.1 図書館問題
 最初の要求
 大学の図書館の情報システムを開発する
旧システム(1960年代)がある
索引カードによる閲覧サービス
蔵書の管理
対話型のシステムにする
 要求は明確に語られない
 要求の優先順位
 要求間の矛盾
 現行システムとあるべきシステムが区別されない
 ソフトウェアの仕様と情報システムの仕様は別
 システム開発の窓口担当者の能力
 そもそも「要求」が一つひとつ取り出されていない
 その「要求」が妥当なのかどうかもわからない
5
初歩のケーススタディ
4.1 図書館問題
 人間活動システムとしての図書館システム
 基本定義(Root Definition)
「利用者に保有図書の貸出を行うシステム」
 CATWOE分析
 Customer:利用者
 Agent:図書館職員
 Transformation:図書を貸す
 Weltanschauung:目的にふさわしい図書を貸し出すことで,効率的な教育
および研究を促す
 Owner:大学
 Environment:大学内の図書館および他大学の図書館
 基本定義の改訂
「大学が保有する図書を利用者に貸出して,教育および研究を促進
するシステム」
課題:目的にふさわしい図書を取りそろえること(他大学との協力も)
課題:それによってどの程度効率化したかを計測する方法を考えること
6
初歩のケーススタディ
4.1 図書館問題
 Accommodation
 もう一度CATWOE分析
 Customer:利用者
 Agent:図書館職員
 Transformation:図書を貸す
 Weltanschauung:図書館職員の作業量を減らし,コストを削減する
 Owner:大学
 Environment:大学内の図書館および他大学の図書館
 基本定義の再改訂
「大学が保有する図書を利用者に貸出して,返却までを追跡するシ
ステム」
課題:タイミング良く貸し出すためには?
課題:確実に返却できるためには?
7
初歩のケーススタディ
4.1 図書館問題
 基本定義
「大学が保有する図書を利用者に貸出して,返却までを追跡
するシステム」
 システムが備えるべき機能は,
 本と雑誌
 貸出し
 検索
この図書館は本と雑誌を所蔵している。1つの著書(タイトル)に
対してその本が何冊かある。本によっては短期貸出しのみのも
のもある。その他の本は図書館の会員ならば3週間までの貸出し
が可能である。雑誌は職員の会員だけが借りられる。図書館の
会員は通常6冊までを一度に借りられるが,職員の会員は一度
本や雑誌がいつ借りられ,いつ返却されたかを記録する
に12冊まで借りられる。新刊本と雑誌は定期的に届き,古くなっ
のは,現システムがすでに行っていることなので,これは
た本は廃棄されることもある。当年分の雑誌は,年度の終わりに
必須である。新システムが行うことは,本の返却期限が過
業者に委託して1巻にまとめられる。
ぎてしまったときに督促状を作ることである。また将来的
システムは,ユーザがキーワードや著者名など
には,もしその本が予約されていなければ,利用者が貸
によって本を検索したり,本が貸出し可能かを確
出しを延長できるようにする要求も出てくるだろう。
認したり,貸出し可能でなければその本を予約で
きるようにする必要がある。図書館の中で本の検
演習問題17
索は誰でもできるものとする。
8
初歩のケーススタディ
4.2 ユースケース
 ユーザと仕事
本を借りる
 アクタ
 ある役割を持ったシステムの使用者
 役割の名前を持つ
本の借り手
本を返す
 ユースケース
 システムの助けを借りてアクタが実行する仕事
 成功ケース
何のために。何がうれしいのか。
それは課題を解決するのか。
本を借りる
(1) アクタ 「本の借り手」は本を提示する。
(2) システムは,借りようとする者が図書館の会員であること,およびその人の借り
ている本がすでに貸出し可能な冊数の上限に達していないかを確認する。
(3) 確認されれば,システムはこの本が借りられていることを記録する。
(4) 確認されなければ,貸出しを拒否する。
備考
貸出し可能な冊数の上限は,職員の場合は12冊,職員以外は6冊。
9
初歩のケーススタディ
4.2 ユースケース
 ユースケースのポイント
 システムの外部を述べる
 ユースケース図とユースケース記述
名称:
アクタ:
目的:
事前条件:
基本系列:
事後条件:
代替系列:
備考:
本を借りる
本の借り手
本を返す
 要求を書く
 変換
 アクタの目的とシステムの目的
 「でっち上げない」と「漏れをなくす」
 ユーザインタフェース
10
初歩のケーススタディ
4.2 ユースケース
 ユースケース記述
 「本を返却する」のユースケース記述を書いてください。
名称:本を返却する
アクタ:
目的:
事前条件:本の借り手がその本を借りている。
基本系列:
①アクタはシステムに返却の旨を告げる。
②システムは本の借り手,返却しようとする本の識別を要求する。
③アクタはそれらの識別を提示する。
④システムは本が当日返却されたことを記録する。
事後条件:その本が返却されている。
代替系列:
A.基本系列④で,本の借り手が妥当でない場合,…
備考:
本の識別には,本に付けられたバーコードを使う。
返却された現物の本は,...
11
初歩のケーススタディ
4.3 ソフトウェアプロセス
 反復プロセス
 少しずつ建て増ししていく
 範囲(スコープ)を決める
 アーキテクチャ
 優先順位づけ
 リスク最小化
方向づけ
演習問題19
遂行
構築
移行
分析
設計
制作
検査
12
初歩のケーススタディ
4.4 型(クラス)の認識
 ドメイン
UoD
 注目しているアプリケーションの領域
 型の認識
用語集(データ辞書)
 名詞抽出法
ユースケース記述
インタビュー記録など
から
 名詞・名詞句
 候補の選択
 責任(インタフェース)の割付・・・・・CRCカード
 もの-こと
 型間の構造
 型図
 型と関連
 ロールと多重度
 ナビゲーション可能性,可視性
13
初歩のケーススタディ
4.4 型(クラス)の認識
 概念
本
著書(書誌情報)
会員
:
本が借りられた
ことを誰が知っ
ているべきか
1
 概念の名前
の印刷物である
 初期モデル
 モデルの改訂
1..*
借りる/返却する
会員
0..1
 冗長性のチェック
0..*
本
0..*
 似た概念の整理
 責任の配置
 結合度
 凝集度
 よい抽象
著書
借りる/返却する
0..1
職員の会員
借りる/返却する
0..1
0..*
雑誌
 拡張する
14
初歩のケーススタディ
4.4 型(クラス)の認識
 改訂版(1)
著書
1
の印刷物である
1..*
会員
職員の会員
借りる/返却する
0..1
0..*
借りる/返却する
0..1
0..*
本
雑誌
15
初歩のケーススタディ
4.4 型(クラス)の認識
 改訂版(2)
著書
1
の印刷物である
1..*
会員
借りる/返却する
0..1
職員の会員
本
0..*
制約:
雑誌は職員の会
員だけが借りられる
雑誌
16
初歩のケーススタディ
4.4 型(クラス)の認識
 拡張版
 他のユースケース
「本を予約する」
著書
0..*
1
予約する
の印刷物である
0..1
会員
職員の会員
1..*
借りる/返却する
0..1
0..*
本
雑誌
17
初歩のケーススタディ
4.5 振る舞いのモデル
 相互作用図
 シーケンス図
 オブジェクト間
 メッセージ
 順序(制御構造)
 アクティベーション
 コラボレーション図
:本の借り手
Aさん:会員
#1234:本
UsingUML:
著書
borrow(#1234)
1:okToBorrow( )
2:borrow( )
2.1:borrowed( )
18
初歩のケーススタディ
4.5 振る舞いのモデル
 状態図
「著書」の状態
 ステートチャート
returned()
 オブジェクトの状態
 事象
returned()
 アクティビティ図
貸出不可
貸出可
borrowed()[最後の本]
borrowed()[最後の本でない]
貸出を申し出る
貸出を記録する
本を帯出する
19
初歩のケーススタディ
4.6 概念モデルから実装モデルへ
 概念モデル
 重要な型と構造
 重要な属性と操作
 重要なインタフェース
 実装モデル
 実装の都合
 クラス,データ,メソッド
 オブジェクトの生成と消滅
 コレクションの表現
 ナビゲーションの方法
 ユーザインタフェース
 永続化
20