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
© Copyright 2024 ExpyDoc