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

47070
オブジェクト指向モデリング
[8]
2002年12月 3日
オブジェクト指向モデリング
前回 概念モデルから実装まで
7.1 実装作業の概要
7.2 ユースケース
7.3 実装レベルのクラス図
7.4 シーケンス図
7.5 実装のクラス図
7.6 ソースプログラム
2
静的モデル4
実装作業の概要(1)
カテゴリ
名称
売上集計()
 ドメインの実装
1
*
商品
 型をクラスに
 関連の実装
商品名
単価
*
販売
数量
/金額
*
1
まとめ
販売日
/合計金額
1
*
 参照の入れ物
 参照の方向
 ナビゲーション
ユーザインタフェース
1
*
/売上
日
/売上金額
:カテゴリ
:商品
:販売
:まとめ
1:カテゴリ
1:商品
1:販売
1:まとめ
2:商品
2:販売
3:商品
3:販売
アプリケーション(機能)
ドメイン(概念の世界)
永続化
2:カテゴリ
4:販売
2:まとめ
3
静的モデル4
カテゴリ
名称
売上集計()
実装作業の概要(2)
1
*
商品
商品名
単価
 機能の実装
1
*
販売
数量
/金額
*
1
まとめ
販売日
/合計金額
1
*
 ユースケースの実装
販売:
ユースケース
*
/売上
日
/売上金額
{new}
:まとめ
:販売
{new}
:商品
受注担当
注文
商品ID,数量
new まとめ(日付)
$get商品(商品ID)
new 販売(the商品, 日付)
[注文あり]
add販売(the販売)
[注文なし]
精算
getSoldProductNames( )
getProduct( )
getName( )
getQuantity( )
sumSales( )
getSales( )
金額
getPrice( )
4
オブジェクト指向モデリング
第8回 初歩のケーススタディ
8.1 図書館システム
8.2 ユースケース
8.3 ソフトウェアプロセス
8.4 型の認識
8.5 振る舞いのモデル
8.6 概念モデルから実装モデルへ
27ページ
5
初歩のケーススタディ
8.1 図書館システム
 最初の要求
 大学の図書館の情報システムを開発する
旧システム(1960年代)がある
索引カードによる閲覧サービス
蔵書の管理
対話型のシステムにする
 要求は明確に語られない
 要求の優先順位
 要求間の矛盾
 現行システムとあるべきシステムが区別されない
 ソフトウェアの仕様と情報システムの仕様は別
 システム開発の窓口担当者の能力
 そもそも「要求」が一つひとつ取り出されていない
 その「要求」が妥当なのかどうかもわからない
6
初歩のケーススタディ
8.1 図書館問題
 人間活動システムとしての図書館システム
 基本定義(Root Definition)
「利用者に保有図書の貸出を行うシステム」
 CATWOE分析
 Customer:利用者
 Agent:図書館職員
 Transformation:図書を貸す
 Weltanschauung:目的にふさわしい図書を貸し出すことで,効率的な教育
および研究を促す
 Owner:大学
 Environment:大学内の図書館および他大学の図書館
 基本定義の改訂
「大学が保有する図書を利用者に貸出して,教育および研究を促進
するシステム」
課題:目的にふさわしい図書を取りそろえること(他大学との協力も)
課題:それによってどの程度効率化したかを計測する方法を考えること
7
初歩のケーススタディ
8.1 図書館問題
 Accommodation
 もう一度CATWOE分析
 Customer:利用者
 Agent:図書館職員
 Transformation:図書を貸す
 Weltanschauung:図書館職員の作業量を減らし,コストを削減する
 Owner:大学
 Environment:大学内の図書館および他大学の図書館
 基本定義の再改訂
「大学が保有する図書を利用者に貸出して,返却までを追跡するシ
ステム」
課題:タイミング良く貸し出すためには?
課題:確実に返却できるためには?
8
初歩のケーススタディ
8.1 図書館問題
 基本定義
「大学が保有する図書を利用者に貸出して,返却までを追跡
するシステム」
 システムが備えるべき機能は,
 本と雑誌
 貸出し
 検索
この図書館は本と雑誌を所蔵している。1つの著書(タイトル)に
対してその本が何冊かある。本によっては短期貸出しのみのも
のもある。その他の本は図書館の会員ならば3週間までの貸出し
が可能である。雑誌は教員の会員だけが借りられる。図書館の
会員は通常6冊までを一度に借りられるが,教員の会員は一度
本や雑誌がいつ借りられ,いつ返却されたかを記録する
に12冊まで借りられる。新刊本と雑誌は定期的に届き,古くなっ
のは,現システムがすでに行っていることなので,これは
た本は廃棄されることもある。当年分の雑誌は,年度の終わりに
必須である。新システムが行うことは,本の返却期限が過
業者に委託して1巻にまとめられる。
ぎてしまったときに督促状を作ることである。また将来的
システムは,ユーザがキーワードや著者名など
には,もしその本が予約されていなければ,利用者が貸
によって本を検索したり,本が貸出し可能かを確
出しを延長できるようにする要求も出てくるだろう。
認したり,貸出し可能でなければその本を予約で
きるようにする必要がある。図書館の中で本の検
演習問題17
索は誰でもできるものとする。
9
初歩のケーススタディ
8.2 ユースケース
 ユーザと仕事
本を借りる
 アクタ
 ある役割を持ったシステムの使用者
 役割の名前を持つ
本の借り手
本を返す
 ユースケース
 システムの助けを借りてアクタが実行する仕事
 成功ケース
何のために。何がうれしいの
か。それは課題を解決するの
か。
名称:本を借りる
アクタ:本の借り手
目的:アクタは本を読みたい
基本系列:
(1) アクタはこのユースケースを起動する。
(2) システムは会員の識別と本の識別を要求する。
(3) アクタは会員の識別と本の識別を提示する。
(4) システムは,会員が妥当で,貸出し可能な冊数の上限に達していないことを
確認して,その本が借りられたことを記録する。
代替系列:借り手が妥当でなければ,貸出しを拒否する。
備考:貸出し可能な冊数の上限は,教員の場合は12冊,教員以外は6冊。
10
初歩のケーススタディ
8.2 ユースケース
 ユースケースのポイント
 システムの外部を述べる
 ユースケース図とユースケース記述
名称:
アクタ:
目的:アクタの目的,ownerの目的
事前条件:
基本系列:
事後条件:
代替系列:
本の借り手
備考:
本を借りる
本を返す
 要求を書く
 機能=変換
 アクタの目的とシステムの目的
 「でっち上げない」と「漏れをなくす」
 ユーザインタフェースの設計ではない
11
初歩のケーススタディ
8.2 ユースケース
 ユースケース記述
 「本を返却する」のユースケース記述を完成してください。
名称:本を返却する
アクタ:
目的:
したい。
事前条件:本の借り手がその本を借りている。
基本系列:
①アクタはシステムに返却の旨を告げる。
②システムは返却しようとする本の識別を要求する。
③アクタはそれらの識別を提示する。
④システムは,識別を確認して,本が当日返却されたことを記録する。
事後条件:その本が返却されている。
代替系列:
A.基本系列④で,本の識別が妥当でない場合,…
備考:
本の識別には,本に付けられたバーコードを使う。
返却された現物の本は,...
12
初歩のケーススタディ
8.3 ソフトウェアプロセス
 反復プロセス
 少しずつ建て増ししていく
 範囲(スコープ)を決める
 アーキテクチャ
 優先順位づけ
 リスク最小化
方向づけ
演習問題19
推敲
構築
移行
要求
分析
設計
制作
検査
13
初歩のケーススタディ
8.4 型(クラス)の認識
 ドメイン
UoD
 注目しているアプリケーションの領域
 型の認識
 名詞抽出法
 名詞・名詞句
 候補の選択
 責任(インタフェース)の割付・・・・・CRCカード
 もの-こと
 型間の構造
 型図
 型と関連
 ロールと多重度
 ナビゲーション可能性,可視性
14
初歩のケーススタディ
8.4 型(クラス)の認識
 概念
本
著書(書誌情報)
会員
:
本が借りられた
ことを誰が知っ
ているべきか
1
 概念の名前
の印刷物である
 初期モデル
 モデルの改訂
1..*
借りる/返却する
会員
0..1
 冗長性のチェック
0..*
本
0..*
 似た概念の整理
 責任の配置
 結合度
 凝集度
 よい抽象
著書
借りる/返却する
0..1
教員の会員
借りる/返却する
0..1
0..*
雑誌
 拡張する
15
初歩のケーススタディ
8.4 型(クラス)の認識
 改訂版(1)
著書
1
の印刷物である
1..*
会員
教員の会員
借りる/返却する
0..1
0..*
借りる/返却する
0..1
0..*
本
雑誌
16
初歩のケーススタディ
8.4 型(クラス)の認識
 改訂版(2)
著書
1
の印刷物である
1..*
会員
借りる/返却する
0..1
教員の会員
本
0..*
制約:
雑誌は教員の会
員だけが借りられる
雑誌
17
初歩のケーススタディ
8.4 型(クラス)の認識
 拡張版
 他のユースケース
「本を予約する」
著書
0..*
1
予約する
の印刷物である
0..1
会員
教員の会員
1..*
借りる/返却する
0..1
0..*
本
制約:
雑誌は教員の会
員だけが借りられる
雑誌
18
初歩のケーススタディ
8.5 振る舞いのモデル
 相互作用図
 シーケンス図
 オブジェクト間
 メッセージ
 順序(制御構造)
 アクティベーション
A:本の借り手
本を借りる
:ユースケース
会員ID=A,本ID=#123
基本系列:
(1) アクタはこのユースケースを起動する。
(2) システムは会員の識別と本の識別を要求する。
(3) アクタは会員の識別と本の識別を提示する。
(4) システムは,会員が妥当で,貸出し可能な冊数の上限に達し
ていないことを確認して,その本が借りられたことを記録する。
A:会員
#123:本
UsingUML:
著書
0: find(A)
0: find(#123)
1: borrow(#123)
1.1: okToBorrow( )
1.2:borrow( )
1.2.1:borrowed( )
19
初歩のケーススタディ
8.5 振る舞いのモデル
 相互作用図
 コラボレーション図
 メッセージつきのオブジェクト図
本の借り手
会員ID=A,本ID=#123
UsingUML:
著書
本を借りる
:ユースケース
1.2.1:borrowed( )
1: borrow(#123)
A:会員
#123:本
1.2:borrow( )
1.1: okToBorrow( )
20
初歩のケーススタディ
8.5 振る舞いのモデル
 状態図
 ステートチャート
「著書」の状態
returned()
 オブジェクトの状態
 事象
returned()
 アクティビティ図
貸出不可
貸出可
borrowed()[最後の本]
borrowed()[最後の本でない]
貸出を申し出る
貸出を記録する
本を帯出する
21
初歩のケーススタディ
8.6 概念モデルから実装モデルへ
 概念モデル
 重要な型と構造
 重要な属性と操作
 重要なインタフェース
仕様レベル
要求定義
実装レベル
分析
設計
概念レベル
 実装モデル
 実装の都合
制作
検査
 クラス,データ,メソッド
 インスタンスオブジェクトの生成と消滅
 オブジェクトの管理(コレクションの表現),ナビゲーションの方法
 非機能要求
 ユーザインタフェース層,永続層
 パフォーマンス,耐変更性(拡張性),移植性
22