ソフトウェアモデリング
SOFTWARE MODELING
10
ソフトウェア工学Software Engineering
開発しようとするソフトウェアのモデルを記述するために 標準化されたモデル記述言語
UML
を使用できるソフトウェアモデリングとは?
■ グラフィカルモデル: 所定の記法による図で表現 → 流れ図,クラス図など
■ 数 理 モ デ ル: 数式や論理式で表現
→ 形式手法(モデル検査など)
ソフトウェアの抽象なモデルを,さまざまな視点から簡潔に表現する作業
【表 現】
【視 点】
外部からの視点: ソフトウェアが利用される環境のモデル
相互作用の視点: システム-環境・利用者間,システム要素間 の相互作用のモデル
構 造 の 視 点 : システムやデータの静的な構造のモデル
ふるまいの視点: システムの動的ふるまい,イベントへの反応 のモデル
今回の授業では, UML を学ぶ
(さまざまな視点からの記法が国際的に標準化されたグラフィカルモデル)
モデリングをいつおこない,いつ使うのか
既存システムのモデリング → 既存システムの明確化(利点・欠点,再利用性)
→
新 シ ス テ ムのモデリング 要求の導出と明確化(関係者との対話・合意)
【要求定義フェーズ】
要求 要求定義
設 計 実 装 テ ス ト
要求仕様書 設計書 プログラム 製品
【設計フェーズ】
【実装フェーズ】
【テストフェーズ】
新システムのモデル → エンジニアへの説明(設計や文書化にモデルを利用)
新システムのモデル → モデル駆動開発ではモデルから実装の一部を自動生成も
新システムのモデル → モデルに基づいたテストケースの生成
(model-driven development)
UML (Unified Modeling Language)
ソフトウェアモデルを表現するためのグラフィカルモデリング言語の1つ
13の図式が規定されている
1990年代に提案された種々のオブジェクト指向モデリング図式を統一したもの
1997年に初版 UML 1.0 が公開
最新版は 2015 年に公開されたUML 2.5
■ ユースケース図 (use-case diagram) システムの機能群と利用者の関係
■ クラス図 (class diagram) クラスの定義とクラス間の関係
■ アクティビティ図 (activity diagram) システムがおこなう処理の流れ
■ シーケンス図 (sequence diagram) オブジェクト間のメッセージ交換の順序
■ 状態機械図 (state machine diagram) イベントに伴うオブジェクトの状態遷移
UML の主な図式
■13 の図式のうち,今回はつぎの5 つを学ぶ
ユースケース図
システムの機能群と利用者の関係を図示履修登録
履修者名簿閲覧 履修者名簿編集
成績登録 成績閲覧 履修管理システム
教員
学生 教務担当事務員
サブジェクト
記述しようとしているシステム (subject)
(actor) アクタ
外部のユーザ/オブジェクト
/システムの役割の名前
ユースケース (use-case) システムの利用のされ方
(システムの機能群)
【履修管理システムの例】
クラス図 (1/9)
人 母
父
生年月日 父を取得
( )
母を取得
( )
年齢を計算( )
クラス名 属 性 操 作
【クラスの定義】
(簡易版:要求定義段階)※ 属性と操作は場合によっては省略可
(attribute)
(operation)
クラスの定義とクラス間の関係を図示
Javaでは
フィールド(field) C++では
メンバ変数(member variable) 抽象化され直接アクセスできないとき は プロパティ(property)
と呼ばれる
Javaでは
メソッド(method) C++では
メンバ関数(member function) と呼ばれる
クラス図 (2/9)
Person
- mother:
Person
- father:
Person
- birthday:
Date
+ getFather( ):
Person
+ getMother( ):
Person
+ getAge(today: Date): int
クラス名
操作名(引数: 型): 戻り値の型
【クラスの定義】
(詳細版:プログラム設計段階)属性名: 属性の型
可視性 -
private
(外部からアクセス不可)+ public
(外部からアクセス可能)(visibility)
【クラス間の関係:汎 化】
人
生年月日
年齢を計算
( )
学 生学生番号
教 員 職員番号
スーパークラス
サブクラス
【継承】● サブクラスは,スーパークラスの 属性と操作を引き継ぐ
● サブクラスに,新しい属性と操作を追加可能 (generalization)
(inheritance)
B A
A is a B
汎化
B
A
general
special
クラス図 (3/9)
【クラス間の関係:関 連】
(association)
学 部
1
学 生 個人成績表所 属
0..* 1 1
A n B
関連名 関 連
A
単方向関連B
多重度 クラスA のインスタンスを 1 個固定したと き クラスB のインスタンスが n 個対応
(multiplicity)
誘導可能 クラスA のインスタンスからクラス Bのインスタンスにアクセスで きる
(navigability)
n 必ず n
n..m n 以上 m 以下
0..* または
*
0 以上
1..* 1 以上
クラス図 (4/9)
A is associated with B
【オブジェクト図】
(object diagram)
人
1
車所 有
クラス図 *
オブジェクト図
A さん:
人 そ 56-21:
車 B さん:
人 ふ 33-52:
車
と 8493 :車
リンクでインスタンスを結ぶ クラス図の表す抽象構
造の1つの具体例の表示
インスタンス名:クラス名
(下線を引く)
クラス図 (5/9)
【ロール】
(role)
A B
ロール
この関連においてクラス A が果たす役 割
人 会社
大学
従業員 車
学生
所有者
クラス図 (6/9)
Person
mother: Person father:
Person
birthday: Date
属性,関連:どちらで表現してもよい/混在させてもよい
Person mother:
Person
father:
Person
Date
Person Date
mother father
1
1
*
* birthday
* 1
birthday
* 1
クラス図 (7/9) 【属性/関連】
【集約/コンポジショ ン】
(aggregation / composition)A
集 約B
A
コンポジションB
強い集約関係
クラスA のインスタンスが削除されると クラスB のインスタンスも削除
全体-部分 の関係
クラスB はクラスA の一部 (whole-part)
学 部 授業科目
建 物
学部がなくなると 授業科目はなくなる が建物はなくならない デスクトップ
PC ディスプレイ
ノートPC ディスプレイ PC を廃棄するとき,ディスプレイも廃棄
? デスクトップ PC: NO ノートPC: YES
A has a B
クラス図 (8/9)
授業科目
【履修登録システムの例】
人 生年月日 氏名
学 生 学生番号
履修
*
*
シラバス
1 1
履修登録
ログイン( ) ログアウト( ) 履修登録( ) 履修取消し( ) 履修科目表示( ) 履修登録画面
シラバス画面 時間割画面
クラス図 (9/9)
アクティビティ図 (1/2)
システムがおこなう処理の流れを図示アクティビティ: システムの振る舞いをアクションのフローとして記述したもの (activity)
開始ノード (initial node)
終了ノード (final node) (flow)フロー
アクション (action)
(fork)
フォーク ジョイン (join)
(guard)ガード
レシピを探す
オーブンを加熱
液状材料を混ぜる
固形材料を混ぜる
材料全部を混ぜる
オーブンで焼く オーブンから取り出す
[done]
[not done]
【お菓子作りの例】
(decision)判断
アクティビティ図 (2/2)
スイムレーンによる実行主体の明示レシピを探す
オーブンを加熱
液状材料を混ぜる
固形材料を混ぜる 材料全部 を混ぜる
オーブンで 焼く
オーブンか ら取り出す
[done]
[not done]
(swimlane)
Helen
Mary
Jennie
シーケンス図
オブジェクト間のメッセージ交換の順序を例示【オンラインショッピングの例】
:顧客 :店舗 :メーカー :金融機関
ログイ ン
OK 検索
商品情報 注文
OK
決済
発送指示 OK オブジェクト
メッセージ
返信メッセージ
(lifeline) ライフライン
OK 活動中
休止中
状態機械図
イベントに伴うオブジェクトの状態遷移を図示開いている 閉じてい
る 鍵がかかっている
【ドアの 例】
開く閉じる 鍵をかける
鍵を開ける
(1) つぎのシステムのユースケース図を作成しなさい.
チケット予約システムは,チケットのオンライン予約を管理するものである.利用 者は,チケットの予約,支払い,予約状況の確認,チケットの印刷を行うことができ る.管理者は,販売可能なチケットの総数の設定,予約状況一覧表の表示,チケット の印刷を行うことができる.
演習問題 10
旅費内訳 金額:整数
交通費 交通機関名:文字列 出発地:文字列
到着地:文字列
宿泊費 宿泊日数:整数
(2) 下記のクラス図は,出張申請システムの一部である.ここから読み取れる内容の概略 を簡単に説明しなさい.(社員は出張申請に対して複数の役割をもっていることに注意)
出張申請 申請番号:整数 申請日:日付 出張先:文字列 出張開始日:日付 出張終了日:日付 旅費合計:整数
1 * 社員
社員番号:整数 氏名:文字列
0..1 申請者 承認者1 *
*