10 ソフトウェア工学 Software Engineering ソフトウェアモデリング SOFTWARE MODELING.

Slides:



Advertisements
Similar presentations
クラス図(1) FM12013 山口 亨. クラスとは 現実に存在する “ 物体 ” (オブジェクト)の 構造や振る舞いなどに着目して注目し抽 象化したもの クラス図を含む UML のほとんどの図で使用 されている.
Advertisements

Chapter1 UML の概要とオブジェクト指向の基本概念 1 情報工学専攻 MFM10004 奥平 健太.
OWL-Sを用いたWebアプリケーションの検査と生成
メタモデル記述を用いた成果物間の依存関係追跡手法
エンジニアのためのリテラシー 学生番号順に着席する (クラスa) 1 列 12 人で 前 方
シーケンス図の生成のための実行履歴圧縮手法
4 相互作用図 後半 FM13001 青野大樹.
相互作用図 FM11010 田中健太.
Chapter3 クラス図(後半)             FM12014 劉鎧誠.
ソフトウェア工学特論III 第10回 その他の図 情報通信工学専攻 GM11013 堀江 真史
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向プログラミング(4) 静的分析(2)
クラスその2∽(アドバンス)∽ 福岡工業大学  梶原 大慈       .
Chapter 4 相互作用図 FM12010 中山直飛.
第5章 データベースの設計 5.1 データベース設計の概要 5.2 ERモデルとスキーマ設計 5.3 正規化 5.4 一貫性制約.
アルゴリズムとデータ構造1 2007年6月12日
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学特論Ⅲ ユースケース図 後半
ユースケース図 FM12012 比嘉久登.
3-5 クラス図の関係その3 福本研究室 神田 祐輔.
     年  月  日 名前 太郎 1 班.
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
3-3 クラス図の関係その2.
クラス図(1) 後半 FM13010 村上 太一.
UMLの概要と オブジェクト指向の 基本概念
BPMN(Business Process Modeling Notation)
ユースケース図2-4~ FM11012 中島拓也.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
ユースケース オブジェクト指向の要求分析のためのモデル。 スウェーデンのイヴァー・ヤコブソンが1990年代前半に開発。
E-Shopのご提案 ビズ ぱそ 朝日 太郎 2001/12/22 ビズPASO株式会社 E-コマース事業部.
オブジェクト プログラミング 第1回.
UMLとは           032234 田邊祐司.
47070 オブジェクト指向モデリング [4] 2001年10月23日.
オブジェクト指向モデリング [3] 2003年10月14日.
47070 オブジェクト指向モデリング [1] 2001年10月2日.
ソフトウェア工学 知能情報学部 新田直也.
Chapter7 その他の図 FM13010  須崎研 村上 太一.
その他の図 Chapter 7.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
47070 オブジェクト指向モデリング [7] 2001年11月 12日.
10 ソフトウェア工学 Software Engineering ソフトウェアモデリング SOFTWARE MODELING.
暗黙的に型付けされる構造体の Java言語への導入
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
社会シミュレーションのための モデル作成環境
     年  月  日 名前 太郎 1 班.
     年  月  日 名前 太郎 x 班.
オブジェクト指向モデリング [2] 2003年10月 7日.
UML関係のTIPS 2008年5月26日 2010年5月16日改訂 海谷 治彦.
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
UMLモデルを対象とした リファクタリング候補検出の試み
All Rights Reserved, Copyright © 2004, Kobayashi
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
47070 オブジェクト指向モデリング [3] 2001年10月16日.
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
UMLの概要とオブジェクト指向の基本概念
INTRODUCTION TO SOFTWARE ENGINEERING
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
All Rights Reserved, Copyright © 2004, Kobayashi
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
Presentation transcript:

10 ソフトウェア工学 Software Engineering ソフトウェアモデリング SOFTWARE MODELING

ソフトウェアモデリングとは? ソフトウェアの抽象なモデルを,さまざまな視点から簡潔に表現する作業 【表現方法】 グラフィカルモデル: 所定の記法による図で表現 → 流れ図,クラス図など 数 理 モ デ ル: 数式や論理式で表現    → 形式手法(モデル検査など) 【視  点】 外部からの視点: ソフトウェアが利用される環境のモデル 相互作用の視点: システム-環境・利用者間,システム要素間の相互作用のモデル 構 造 の 視 点: システムやデータの静的な構造のモデル ふるまいの視点: システムの動的ふるまい,イベントへの反応のモデル 今回の授業では,UML を学ぶ (さまざまな視点からの記法が国際的に標準化されたグラフィカルモデル)

(model-driven development) モデリングをいつおこない,いつ使うのか 要求 要求仕様書 要求定義 設計書 プログラム 製品 設 計 実 装 テ ス ト 【要求定義フェーズ】 既存システムのモデリング → 既存システムの明確化(利点・欠点,再利用性) 新 シ ス テ ムのモデリング → 要求の導出と明確化(関係者との対話・合意) 【設計フェーズ】 新システムのモデル → エンジニアへの説明(設計や文書化にモデルを利用) 【実装フェーズ】 新システムのモデル → モデル駆動開発ではモデルから実装の一部を自動生成も (model-driven development) 【テストフェーズ】 新システムのモデル → モデルに基づいたテストケースの生成

UML (Unified Modeling Language) ソフトウェアモデルを表現するためのグラフィカルモデリング言語の1つ 13の図式が規定されている 1990年代に提案された種々のオブジェクト指向モデリング図式を統一したもの 1997年に初版 UML 1.0 が公開 最新版は2015年に公開されたUML 2.5

UMLの主な図式 ■13の図式のうち,今回はつぎの5つを学ぶ ユースケース図 (use-case diagram)  システムの機能群と利用者の関係 クラス図 (class diagram)  クラスの定義とクラス間の関係 アクティビティ図 (activity diagram)  システムがおこなう処理の流れ シーケンス図 (sequence diagram)  オブジェクト間のメッセージ交換の順序 状態機械図 (state machine diagram) イベントに伴うオブジェクトの状態遷移

ユースケース図 【履修管理システムの例】 システムの機能群と利用者の関係を図示 サブジェクト (subject) 履修登録 (actor) 記述しようとしているシステム (subject) 履修管理システム 履修登録 (actor) アクタ 外部のユーザ/オブジェクト /システムの役割の名前 履修者名簿編集 学生 教務担当 事務員 履修者名簿閲覧 成績閲覧 ユースケース (use-case) システムの利用のされ方 (システムの機能群) 成績登録 教員

クラス図 (1/9) 【クラスの定義】(簡易版:要求定義段階) クラスの定義とクラス間の関係を図示 人 母 父 生年月日 父を取得( ) Javaでは  フィールド(field) C++では  メンバ変数(member variable) 抽象化され直接アクセスできないときは  プロパティ(property) と呼ばれる 人 母 父 生年月日 父を取得( ) 母を取得( ) 年齢を計算( ) クラス名 属 性 (attribute) 操  作 Javaでは  メソッド(method) C++では  メンバ関数(member function) と呼ばれる (operation) ※属性と操作は場合によっては省略可

クラス図 (2/9) 【クラスの定義】(詳細版:プログラム設計段階) Person mother: Person father: Person birthday: Date + getFather( ): Person + getMother( ): Person + getAge(today: Date): int クラス名 属性名: 属性の型 操作名(引数: 型): 戻り値の型 可視性 - private(外部からアクセス不可) + public (外部からアクセス可能) (visibility)

クラス図 (3/9) 【クラス間の関係:汎 化】 人 生年月日 スーパークラス 学 生 教 員 B 学生番号 職員番号 汎化 A サブクラス 【クラス間の関係:汎 化】 (generalization) 人 生年月日 スーパークラス A is a B 汎化 B A general special サブクラス 学 生 学生番号 教 員 職員番号 (inheritance) B A 【継承】 ●スーパークラスの  属性と操作は引き継ぐ ●新しい属性と操作を追加可能

クラス図 (4/9) 【クラス間の関係:関 連】 n A B A B 1 0..* (association) 多重度 【クラス間の関係:関 連】 (association) 多重度  クラスAのインスタンスを 1 個固定したとき  クラスBのインスタンスが n 個対応 (multiplicity) A is associated with B A B n 関連名 関 連 n 必ず n n..m n 以上 m 以下 0..* または * 0 以上 1..* 1 以上 A B 単方向関連 誘導可能  クラスAのインスタンスからクラスBのインスタンスにアクセスできる (navigability) 学 部 学 生 個人成績表 1 所 属 0..*

クラス図 (5/9) 【オブジェクト図】 クラス図 オブジェクト図 1 * (object diagram) 人 車 所 有 Aさん:人 所 有 * クラス図 オブジェクト図 Aさん:人 そ 56-21:車 クラス図の表す抽象構造の1つの具体例の表示 Bさん:人 ふ 33-52:車 と 8493:車 インスタンス名:クラス名 に下線を引く リンクでインスタンスを結ぶ

クラス図 (6/9) 【ロール】 (role) A B ロール この関連においてクラスAが果たす役割 人 会社 大学 車 授業員 学生 所有者

クラス図 (7/9) 【属性/関連】 属性,関連:どちらで表現してもよい/混在させてもよい Person mother: Person father: Person birthday: Date Person mother: Person father: Person birthday 1 * Date Person Date mother father 1 * birthday

クラス図 (8/9) 【集約/コンポジション】 A B A B 0..* 1 0..1 (aggregation / composition) A has a B A B 集 約 全体-部分 の関係 クラスBはクラスAの一部 (whole-part) A B コンポジション 強い集約関係 クラスAのインスタンスが削除されると クラスBのインスタンスも削除 学 部 授業科目 建 物 0..* 1 0..1 デスクトップPC ディスプレイ ノートPC ディスプレイ 学部がなくなると 授業科目はなくなるが 建物はなくならない PCを廃棄するとき,ディスプレイも廃棄? デスクトップPC: NO ノートPC: YES

クラス図 (9/9) 【履修登録システムの例】 * 1 人 生年月日 氏名 履修登録画面 履修登録 ログイン( ) ログアウト( ) 履修登録( ) 履修取消し( ) 履修科目表示( ) 学 生 学生番号 履修 * シラバス画面 時間割画面 授業科目 1 シラバス

アクティビティ図 (1/2) 【お菓子作りの例】 システムがおこなう処理の流れを図示 フロー アクション ガード 判断 終了ノード アクティビティ: システムの振る舞いをアクションのフローとして記述したもの (activity) レシピを探す オーブンを加熱 液状材料を混ぜる 固形材料を混ぜる 材料全部を混ぜる オーブンで焼く オーブンから取り出す [done] [not done] 【お菓子作りの例】 フロー (flow) アクション (action) (guard) ガード 開始ノード (initial node) 判断 (decision) 終了ノード (final node) (fork) フォーク ジョイン (join)

アクティビティ図 (2/2) スイムレーンによる実行主体の明示 (swimlane) Helen [not done] Mary オーブンを加熱 Helen オーブンから取り出す [not done] レシピを探す 液状材料を混ぜる オーブンで焼く Mary [done] 固形材料を混ぜる 材料全部を混ぜる Jennie

シーケンス図 【オンラインショッピングの例】 オブジェクト間のメッセージ交換の順序を例示 オブジェクト 活動中 メッセージ 休止中 :顧客 :店舗 :メーカー :金融機関 ログイン 活動中 休止中 OK メッセージ 検索 (lifeline) ライフライン 商品情報 返信メッセージ 注文 決済 OK 発送指示 OK OK

状態機械図 【ドアの例】 イベントに伴うオブジェクトの状態遷移を図示 開く 鍵を開ける 閉じる 鍵をかける 開いている 閉じている 鍵がかかっている 閉じる 鍵をかける

演習問題 10 (1) つぎのシステムのユースケース図を作成しなさい.  チケット予約システムは,チケットのオンライン予約を管理するものである.利用者は, チケットの予約,支払い,予約状況の確認,チケットの印刷を行うことができる.管理者は, 販売可能なチケットの総数の設定,予約状況一覧表の表示,チケットの印刷を行うことがで きる. 0..1 申請者 承認者 1 * 社員 社員番号:整数 氏名:文字列 出張申請 申請番号:整数 申請日:日付 出張先:文字列 出張開始日:日付 出張終了日:日付 旅費合計:整数 * 1 旅費内訳 金額:整数 (2) 右のクラス図は,出張申請システムの 一部である.ここから読み取れる内容の 概略を簡単に説明しなさい.(社員は出 張申請に対して複数の役割をもっている ことに注意) 交通費 交通機関名:文字列 出発地:文字列 到着地:文字列 宿泊費 宿泊日数:整数