UML (統一モデリング言語)
UMLの概要
- UML とは
UML (Unified Modeling Language:統一モデリング言語)は,オブジェクト指向によるシステム開発で用いられるさまざまなモデルの表記法を標準化したものである.1997年に OMG(Object Management Group:オブジェクト指向技術の標準化団体)の標準となり,その後オブジェクト指向業界での表記法のデファクトスタンダードとして使われている.
UML は,オブジェクト指向を使ってシステムをモデリングする際に使われる統一的な言語であり,次の特徴がある.
- オブジェクト指向をベースとするソフトウェアの構造をソースコードよりも抽象化した形で構造的かつ形式的に表記する言語である.
- UML というモデリング言語を使ってソフトウェアの構造を整理することが「モデリング」という行為そのものであり,その結果作成された成果が「モデル」である.
- 対象問題について深い理解を得るために,その対象をある目的または観点から眺め,細かく余計な部分を取り除くことで,本質的な部分だけを浮かび上がらせる手法である.
UML はオブジェクト指向を使ったシステム開発において,分析から設計,実装まで終始一貫して使われる.
- UML の構成要素
- ビュー
複数の図式を用いて,ある観点に従ってシステムの持つ抽象的な構造を図式的に表す.
- 図式
ビューの具体的な内容を表現する.
- モデル要素
- システムを図式によりモデル化するために必要となる図式の構成要素
- モデル要素間の関係には,関係,依存,汎化,遷移などがある.
- 一般機構
すべての図式に共通して用いられる一般的な表現機構である. 装飾,注釈,プロパティなどがある.
- 拡張機構
- タグ値:プロパティ名とその値の組により既存のプロパティを拡張する.
- 制約:モデル要素の使用法や意味を制限する.
- ステレオタイプ:既存のモデル要素に対して意味を追加する.
UMLとプロセス
- システムのビュー (アーキテクチャ)
- ユースケース
システムが何を行うか
- 設計(論理)
システムの静的/構造的側面,動的/振る舞い的側面
- プロセス(並行性)
制御のタイミングや制御フロー
- 実装(コンポーネント)
ソースコード,実行コード,データベース,ドキュメント他
- 配置
ハードウェアやシステムを構成する要素とソフトウェア要素の関連
- フェーズ (サイクル)
- 方向付け
- システムの範囲定義の明確化
- アーキテクチャ候補の列挙
- 致命的なリスクの識別,リスクの取り扱い方法と時期
- 費用,工数,スケジュール,品質の初期見積り
- 推敲
同じクラス内のメソッドによってのみアクセスできる.
- 作成
開発環境において動作するシステムを作成
- 移行
ユーザに完全なシステムを提供
- ワークフロー
すでに定義されている1つまたは複数のクラス(基底クラス)から,その特性(メソッドとインスタンス変数)を受け継ぐ新しいクラス(派生クラス)を作る.
- 要求
ユースケースモデルの構築(システムの機能要求の把握)
- 分析
分析モデルの構築(機能要求の分析,洗練,構築)
- 設計
設計モデルの構築(物理的な実現方法)
- 実装
実装モデルの構築(ソフトウェアコンポーネントの構築)
- テスト
テストモデルの構築(結合テスト,システムテスト)
UML図式
UML を用いたオブジェクト指向設計では,次の図式な用いられる.
- 構造図
システムの静的な構造や物理的な構成を表すために記述する図式
- クラス図
システムを構成するクラスの内部構造とクラス間の関係を記述する.
- オブジェクト図
システムのある時点におけるオブジェクト (インスタンス) 間の関係を記述する.
- パッケージ図
クラスなどをグループ化し整理された関係を表現する.
- コンポジット構造図
クラスやコンポーネントの内部構造を表現する.
- コンポーネント図
ソフトウェアを構成するコンポーネント間の関係を記述する.
- 配置図
オブジェクトやコンポーネントの物理的な配置関係を記述する.
- 振舞い図
システムの動的な構造を表すために記述する図式
- ユースケース図
外部環境とシステムの機能との関係を記述する.
- アクティビティ図
一連の作業を構成するアクティビティ間の関係を記述する.
- 状態遷移図
オブジェクトの状態遷移を記述する.
- シーケンス図
オブジェクト間のメッセージの送受信関係を時系列で記述する.
- コミュニケーション図(コラボレーション図)
クラスやオブジェクト間の関連と応答を視覚的に表現する.
- 相互作用概要図
相互作用図(ユースケース図やシーケンス図など)を構成要素として,より広域な処理の流れを表現する.
- タイミング図
クラスやオブジェクトの状態遷移を時系列で表現する.
UMLによる記述
- アクタとユースケース
- アクタ
- システムに対してユーザが果たすことのできるロール
- 他システムやデータベース等のシステム外に存在する実体
- ユースケース
- 特定の目的を達成するためにアクタがシステム内で実行する動作
- アクタの視点から現在形,能動態で表現する。
- 「どのように」実行するかではなく,「何を」すべきかを表現する.
- ユースケースの組織化
- 包含(include)
- 他のユースケースの振る舞いが前提として含まれているユースケース
- 包含されたユースケースは単独では存在せず,他の基本ユースケースに関連している.
- 拡張(extend)
- 他のユースケースの振る舞いが暗黙的に含まれている.
- 選択的なあるいは特定の状況下で発生する振る舞いを表現する.
- 汎化
- ユースケースの親子関係
- 子ユースケースは親ユースケースの振る舞いを継承する.
- アクション
- 呼び出しアクション
オブジェクトのメソッドを呼び出す.
- 戻りアクション
呼び出しアクションに対する応答として戻り値を返す.
- 生成アクション
オブジェクトを生成する.
- 破棄アクション
オブジェクトの破棄を指示する.
- 送信アクション
オブジェクトにシグナルを送信する.
- イベント
- シグナル
オブジェクト間の非同期通信
- 呼び出しイベント
他オブジェクトのメソッドや自身のメソッドを呼び出す同期通信
- タイムイベント
特定時間後に発生するイベント("5 秒後に"など)
- チェンジイベント
一定の条件が満たされると発生するイベント("最大ループ=100の場合に"など)