250 likes | 324 Views
47070. オブジェクト指向モデリング [11]. 2002 年 1 月 8 日. オブジェクト指向モデリング. 前回 モデル図の理解. 10.1 責任関係 10.2 勘定 10.3 生産管理システム 10.4 素材発注システム. 依頼者. *. *. 責任関係型. パーティ型. 1..*. 1..*. 実行者. *. *. 1..*. 1..*. 型. 1. 1. 型. 1. 1. 知識レベル. 操作レベル. *. *. 依頼者. *. *. *. *. パーティ. 1. 1. 責任関係. *.
E N D
47070 オブジェクト指向モデリング[11] 2002年1月8日
オブジェクト指向モデリング 前回 モデル図の理解 10.1 責任関係 10.2 勘定 10.3 生産管理システム 10.4 素材発注システム
依頼者 * * 責任関係型 パーティ型 1..* 1..* 実行者 * * 1..* 1..* 型 1 1 型 1 1 知識レベル 操作レベル * * 依頼者 * * * * パーティ 1 1 責任関係 * * 作業 実行者 * * * 1 1 * * 有効期限 1 期間 人 組織 モデル図の理解 責任関係 • 知識レベルと操作レベル • パワータイプ(ベキ型) • 操作レベルの型の制約を記述 • 鏡像関係 inv: collx:set(責任関係)=self.the責任関係 collX->forALL( x | x.型.依頼者->includes(x.依頼者.型) and x.型.実行者->includes(x.実行者.型))
{抽象} 勘定 構成要素 / 残高 : 量 * {階層} /対象エントリ * 0..1 エントリ 対象エントリ 要約勘定 明細勘定 トランザクション 数量 : 量 1 * 2..* 1 inv: /対象エントリ=self.対象エントリ inv: /対象エントリ=self.構成要素./対象エントリ モデル図の理解 勘定 このインスタンス図はどうなる? • 要約 • ロールアップ
オブジェクト指向モデリング 第11回 モデリング1 11.1 自動改札システム 11.2 CS4 11.3 モデルの良さの基準 テキスト 第6章
自動改札システム チェックインする チェックアウトする 乗車料金を決定する 新幹線にチェックインする 乗客 事業者 検札する 切符を買う モデリング1 11.1 自動改札システム • 自動改札システムのユースケースを考えて • ユースケース図 • ユースケース記述 • システム境界 アクタは誰?
回数券 子供 学割 通勤 モデリング1 11.1 自動改札システム 普通 特急 急行 • 自動改札システム グリーン <<多重>> 便 座席 サービス * 指定席 事業者 有効期間 割引 * +乗車 * * * * * 乗車区間 駅 乗車権 +降車 * * /料金 * +経由 * * 乗客 行使前 行使中 行使済 決済方法 1 定期券 切符 プリペイドカード *
モデリング1 11.1 自動改札システム • ユースケース記述 ユースケース名:チェックインする。 アクタ:乗客 目的:妥当な乗客であることを証明し入場する。 事前条件:アクタは入場していない。 基本系列: ①アクタは,自分が妥当な乗客である証明をシステムに提示する。 ②システムはその証明を確認し,妥当であれば入場を許す(同時にその乗 客が入場した旨を記録する)。 ③アクタは入場する。 ④システムは,そのアクタが入場したとき,その証明を返却する(直ちに,他 の乗客が続いて入場しないようにする)。 事後条件:アクタは入場している(入場が記録されている)。 代替系列:A 基本系列②で証明が妥当でなかった場合,... 備考:システムは次の乗客を停滞させないこと。 システムは乗客の再入場を阻止する。
アクタ U/I 自動改札機 切符 ドメイン アクタ : 乗車権 : 乗車区間 乗車駅 :駅 checkIn isValid isValid mark OK モデリング1 11.1 自動改札システム • チェックインする • アクタ • 乗客か自動改札機か • 現物とオブジェクトは別
打診 契約 Customer Performer Customer Performer 実行 報告 モデリング1 166~172ページ 11.2 CS4管理システム • CS4の優等コースの管理を支援するシステム • RFP(Request for Proposal) • 要求仕様書 • 複数のProposal • 目的 • スコープ(機能) • 体制 • 見積もり(工数,工期,スケジュール) • 入札,業者選定 • 契約 • 実行 • 納入
打診 契約 Customer Performer 実行 報告 モデリング1 11.2 CS4管理システム 166ページ • CS4コースの管理の現状説明 • 優等コース • CS学科のシラバス策定委員会 • 来年度の授業科目(module)を決定する • 学科主任 • 授業科目の講義担当者(講師;lecturer)の割当 • 講師 • コースハンドブックの紹介文の更新 • CS4とりまとめ担当者 • コースハンドブックの中核部分(紹介文以外)の更新 • 講師が書いたコースハンドブックの紹介文のチェック • ハンドブック(LATEX)をHTMLに変換 • 進級以外のCS4受講者(聴講生)をUTOに通知 • CS3とりまとめ担当者 • 進級する学生の一覧をCS4のとりまとめ担当者とUTOに通知
モデリング1 11.2 CS4管理システム 166ページ • CS4コースの管理の現状 • 学習指導担当者(DoS) • Dosは1年生の時に一人ひとり決められて,以来,卒業まで固定 • 学生にアドバイスする • 履修授業科目選択の相談 • 学生 • 授業科目への仮登録;履修申請書を教務課に提出 • 教務課(UTO) • ハンドブックの印刷 • CS4学生原本を保守 • 履修者むけメーリングリスト(cs4class)の保守 • 履修申請をチェック • CS4の学生であること • 授業科目の組み合わせの妥当性 • 学生との話し合い • 履修者一覧を作成し,講師に渡す • 開講から3週以内に渡してほしい これは単なる意味の説明 これが本音?
モデリング1 11.2 CS4管理システム 167ページ • RFPを受けての質問 • 認識の確認 • 不明の点 • 記述されない状況の明示化 • 不合理点の指摘 • 提案の方向性の確認 • 調査と分析 • こんな機能が欲しい? • 全職員(特にCS4とりまとめ担当者)の業務負荷を減らしたい • 学生が直接,オンラインで授業科目を登録するようにしたい • 最新の正確な情報を容易に得たい • 情報ソースの追跡を可能にしたい • 情報作成を自動化して,講師に対する情報提供を迅速にしたい 168ページ
モデリング1 11.2 CS4管理システム • われわれの方法 • 基本定義 • コースハンドブックの作成から履修登録までを,より迅速かつ正確に行うことを支援するシステム Customer:講師,UTO,学生,CS4とりまとめ担当 Agent:講師,UTO,学生,CS4とりまとめ担当,CS3とりまとめ担当,学科主任,DoS Transformation:コースハンドブックを作成し,履修登録を行う Weltanschauung:講師の手間を省いて,授業に集中させたい Owner:大学 Environment:CS4学科 • 基本課題 • 迅速かつ正確な情報の収集と提供 →ワークフロー自動化(コミュニケーション) →進度管理 すなわち,基本的な現状モデル(as-is)が新モデル(to-be)
シラバス策定委員会 学科主任 CS4とりまとめ担当者 講師 UTO 授業科目の設定 担当講師を決める コースハンドブックの中核部分を作成する コースハンドブック紹介文を更新する コースハンドブックをチェックする [問題あり] コースハンドブックをHTMLに変換 コースハンドブックを印刷する モデリング1 11.2 CS4管理システム • ワークフローの確認 • コースハンドブックの作成
モデリング1 11.2 CS4管理システム • ワークフローの確認 • CS4学生一覧表の作成 CS3とりまとめ担当者 CS4とりまとめ担当者 UTO 進級学生一覧をとりまとめる CS4への聴講生一覧をとりまとめる CS4学生一覧表原本の保守 メーリングリストの更新
モデリング1 11.2 CS4管理システム • ワークフローの確認 • 履修者一覧表の作成 学生 UTO DoS 履修申請書を作成する 履修申請書をチェックする [不明点あり] or UTOと話し合う 問い合わせを受ける [不明点なし] 授業科目ごとの履修者一覧の作成 一覧表の配付
アクティビティの取り出し システム境界を決める 概念モデリング 機能の発明 モデリング1 11.2 CS4管理システム 教科書(p.168)のユースケースの粒度は大きすぎる • ユースケースの作成 • どのアクティビティを取り出すか • コースハンドブックを作成する • CS4学生リストを生成する • 履修申請する • システム境界を決める • 機能の発明 • 概念モデルを作る ユースケースの候補 1. コースハンドブックの授業科目紹介文を書く。 2. コースハンドブックの中核部分を書く。 3. コースハンドブックを編集する。 4. コースハンドブックをHTMLに変換する。 5. コースハンドブックを印刷する。 6. CS3→CS4進級者を登録する。 7. CS4聴講生を登録する。 8. CS4登録学生を保守する。 9. CS4メーリングリストを保守する。 10. 履修申請を行う。 11. 履修申請を照会する。 12. 履修申請を確定する。 13. 履修予定者リストを作成する。
打診 契約 Actor System 実行 報告 モデリング1 11.2 CS4管理システム • ユースケースの作成 ユースケース名:コースハンドブックの授業科目 紹介文を書く。 アクタ:講師 目的:学生が授業科目を正しく選択できるように情報を提供する。 事前条件:当該年度の紹介文は登録されていない。 基本系列: ①アクタは,対象の授業科目を指定して紹介文の入力を要請する。 ②システムは授業科目のインデックス情報(と,過去の紹介文があればそれ) を表示して,紹介文の入力を促す。 ③アクタは紹介文を入力する。 ④システムは,当該年度の紹介文が入力されたことを登録する。 事後条件:当該年度の紹介文が登録されている。 代替系列:... 備考:紹介文は400文字程度であること。
担当する 講師 授業科目 * * 6..* 6..* 6 6 履修する DoS 学生 1..* 1..* * * 1..* 1..* 聴講生 一般学生 優等コース * モデリング1 11.2 CS4管理システム • 概念モデリング • 主要な概念から着手 • 学生,講師,授業科目 • 時間の観念 170ページ
授業科目 <<UserInterface>> Login 科目名 講師 紹介文 担当する setup() * * 氏名 setLecturer() adminstratorLogin() checkOutDescription() addStudent() teachModule() checkInDescription() addLecturer() isUpToDate() addModule() makeStudentList() changeLecturer() studentLogin() 6..* 6..* DoS lecturerLogin() 1..* 1..* 履修登録 * * 成績 学生 氏名 registerEnroll() 6 6 deregisterEnroll() <<Facade>> chooseModule() Registry chooseStudent() 1..* 1..* 優等コース getStudent() 一般学生 getLecturer() 名称 聴講生 getDos() 一般説明文 getModule() * * validateChoices() getCourse() isHandbookReady() getEnroll() isAcceptable() モデリング1 11.2 CS4管理システム • 実装モデリング • 責任の配置 • 操作上の人工物 • 冗長な参照の削除
アクタ : Registry : 学生 : 優等コース : 履修登録 getStudent( ) getModule( ) chooseModule( ) isAcceptable( ) new setEnroll( ) registerEnroll( ) モデリング1 11.2 CS4管理システム • ユースケース「履修申請を行う」 • シーケンス図の例
モデリング1 11.2 CS4管理システム • ユースケース「授業科目紹介文を書く」 • シーケンス図の例
モデリング1 11.3 モデルの良さの基準 • ユースケース • 妥当なユースケース • 目的充足性(効果的) • 型モデル(概念レベル) • 世界(UoD)が記述できている • 適度な抽象性 • 一般性 • 単純性(良い概念,良い構造) • 耐変更性 • 再利用性 • ユースケースが実現できている • 理解の共有 無名の質
モデリング1 宿題 • 別紙の課題(酒在庫問題)を読んで, ①基本定義を想定する ②基本的なユースケースを記述する ③型モデル(概念レベル)を作ってください。 必要に応じてアクティビティ図などを作ってもかまいません。