introduction

UML入門
UML PRESS vol.1 より
時松誠治
2003年5月19日
1
UMLとは
• Unified Modeling Language
• OMG(Object Management Group)が標準化
– http://www.omg.org/
• オブジェクト指向分析、設計においてシステム
をモデル化する(記法)図法を規定したビジュ
アル言語(モデリング言語)
• 用途
– 自分の考えを整理
– チーム開発でのコミュニケーション
– ユーザや顧客との対話
2
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
3
開発プロセスとUML(1)
• 開発プロセス
– ウォーターフォール型
– 反復型
• RUP(Rational Unified Process)
– http://www.rational.com/products/rup/index.jsp
– http://www.rational.co.jp/products/unified_process/index.html
– アジャイル型
• XP(eXtreme Programming)
– http://www.atmarkit.co.jp/fjava/devs/process02/process02_2.html
UMLは開発プロセスとは独立
4
開発プロセスと UML(2)
• 分析フェーズ
– ユースケース図を中心に要求を分析、定義
– クラス図で問題領域の概念をモデル化
– アクティビティ図、状態図、シーケンス図、コラボレーショ
ン図を用いて補助
• 設計フェーズ
– クラス図を中心に論理的な設計モデルの構築
– コンポーネント図、配置図を用いて物理アーキテクチャ
を記述
– アクティビティ図、状態図、シーケンス図、コラボレーショ
ン図を用いて補助
• 実装フェーズ
–
5
UMLを見ながらコーディング
使用例(勤怠システム)
• 社員の出退社時間を管理するシステム
• 社員は出退社処理のみ行うことが可能
• 総務の人は勤怠変更入力を行うことが可
能
• 次期開発で遅刻、早退の理由を入力する
機能を追加予定
6
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
7
ユースケース図
• システムの使用機能 (ユースケース)と、外部
環境(アクタ)との関連を表す図
図の要素
•ユースケース
–システムの使用機能に名前を付けたもの
•アクタ
–システムの外部でシステムと相互作用を行うもの
•ノート
–モデルに影響を与えない要素(コメント)
8
勤怠システムユースケース図
ステレオタイプ
要訂正
ノート
アクタ
汎化
9
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
10
アクティビティ図
• 関連する複数の業務や処理を順序立てて
配置したもの(フローチャート)
図の要素
•
•
•
•
•
アクティビティ
開始状態
終了状態
分岐
ガード
11
勤怠入力システムのアクティビティ図
開始状態
ガード
終了状態
分岐
アクティビティ
12
アクティビティ図のその他の要素
図の要素
• 同期バー
– 制御の分割や同期した結合を示す
• レーン
– 振る舞いの責任範囲を分けるために図を縦に
分割する実線
13
勤怠システム開発ワークフロー
のアクティビティ図 レーン名
レーン
同期バー
14
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
15
状態図
• ひとつのオブジェクトの状態変化を表す図
– ただし、粒度はさまざま
図の要素
•名前
•変数
•関数
• 状態
–オブジェクトがとる状態
• 状態遷移
–ある状態から他の状態への移行
16
勤怠入力システムの状態図
状態遷移
状態
17
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
18
クラス図
• モデルの時間的な振る舞いを含まない静
的構造を表す図
図の要素
• クラス
• 関連
• 特殊な関連
– 集約・コンポジション
• 依存関係
• 汎化
• 実現
19
勤怠入力クラス図
20
クラス
• 三つの区間
– クラス名
– 属性
– 操作
勤怠入力コントローラ
+ ログイン():void
+ 出社():void
+ 退社():void
+ ログアウト():void
クラスの例
• 可視性
– 他のクラスからのア
クセスを規制
表記
意味
+
public
#
protected
-
private
~
package
可視性一覧
21
関連
• クラス間の何らかのつながりを表す
– 矢印
• 関連の方向を表現
– 多重度
• 関連に参加するオブジェクトの数的関係を表現
– ロール
• 役割を示す
関連の例
22
特殊な関連
• 集約
• コンポジション
集約の例
– いずれも全体-部分の関係
– コンポジションは集約より強い関係
23
依存関係
• 相手の変更によって影響を受ける関係
依存関係の例
データベースラッパークラスの仕様変更によって
データベース操作クラスも変更しなければならない24
汎化
• 属性・操作・関連を引き継ぐ
– JAVA、C++等における継承に相当する
汎化の例
25
実現
• 操作のインターフェイスを引き継ぐ
– JAVAのinterfaceに相当
実現の例
勤怠入力ボタンリスナインターフェイスをもとに
勤怠入力コントローラクラスを実現
26
UMLの拡張メカニズム
• ステレオタイプ
• 制約
27
ステレオタイプ
• 要素のもっている特徴を表現する
ステレオタイプの例
Interfaceステレオタイプにより、振る舞いのみを
定義したクラスであることを明示
28
制約
• 一定の規則を持つ場合を明示
制約の例
年月日をキーとして整列した形でデータを
持つことを表現
29
モデルの管理
• パッケージ
– クラスやコンポーネントをグループ化したもの
パッケージ
クラス
ユーザーイン
ターフェース
勤怠入力ボタンリスナ
勤怠入力システ
ム
勤怠入力コントローラ
勤務時間データ
データベース操作
データベース
データベースラッパー
30
パッケージの例:クラスのパッケージ
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
31
相互作用図
• オブジェクト間の相互作用を表現
– シーケンス図
– コラボレーション図
クラスを実体化
したもの
32
シーケンス図
• あるシナリオに沿ったオブジェクト間のメッ
セージのやり取りを時系列に沿って表現
• コラボレーション図と同種の内容を表現
– シーケンス図の特色
• 活性区間とライフライン
33
シーケンス図の要素
図の要素
• オブジェクト
• ライフライン
– オブジェクトの生存期間
• 活性区間
– オブジェクトに制御が移ったことを示す
• メッセージ
– 矢印の形で同期と非同期を表現
– リターン
• 返り値を記述したいケースで用いる
34
シーケンス図の例
35
コラボレーション図
• あるシナリオに沿ったオブジェクト間のメッ
セージのやり取りを、接続関係に着目して表
現
• シーケンス図と同種の内容を表現
– コラボレーション図の特色
• オブジェクト間の関係をわかりやすく表現できる
36
コラボレーション図の要素
図の要素
• リンク
– クラス図における関連
• メッセージ
– 順序番号をつける
37
コラボレーション図の例
38
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
39
オブジェクト図
• オブジェクトのある時点のスナップショット
• メッセージのないコラボレーション図
属性値を明示することもできる
40
UMLのダイアグラム
•
•
•
•
ユースケース図
アクティビティ図
状態図
クラス図
• 相互作用図
– シーケンス図
– コラボレーション図
• オブジェクト図
• コンポーネント図
• 配置図
41
コンポーネント図
• 実装段階での要素(コンポーネント)間の関係を表現
• コンポーネント
– ソースコードやランタイム/実行ファイルなど
コンポーネント図の例
42
配置図
• ハードウェアとコンポーネントの関係を表現
コンポーネント図の例
43
まとめ
• UMLとはオブジェクト指向のモデリング言語
• UMLは開発プロセスとは独立
• UMLでは9つの図を描ける
– 実際に多用されるのは、ユースケース図、クラス
図、シーケンス図
44