Caprices

第1部 UMLの基礎知識

第1章 UMLとは

1.1 UMLとは

Unified Modelling Languageの略で統一モデリング言語と言う。 標準化を進める団体はOMG(Object Management Group)という。 モデリング(Modeling)のためのもの。 モデルを作成するもの。

UMLのメリット
誰にでもわかりやすい世界共通の表記法が定義されている。 追跡可能性(Traceability、トレーサビリティ)があり、工程の違うモデルが変更されても容易に反映ができる。 UMLのデメリットとして具体的な開発方法を含まない点が上げられる。
UMLを利用する際の注意点
UMLは使用で表記方法だけ定められている。 いろいろな図(Diagram、ダイアグラム)があるが、必ずしも全て利用する必要性はない。

1.2 UMLの誕生

メソドロジスト(方法論を提唱する人)
  • Grady Booch(グラディー・ブーチ)氏のBooch法
  • Ivar Jacobson(イバー・ヤコブソン)氏のOOSE法
  • James Rumbaugh(ジェームス・ランボー)氏のOMT法
  • Sally Shlaer(サリー・シュレイアー)氏とStephen J.Mellor(スティーブ・J・メラー)氏のShlaer-Mellor法

ブーチ氏、ランボー氏、ヤコブソン氏でUML1.0を誕生させた

スリーアミーゴ:ブーチ氏、ランボー氏、ヤコブソン氏

歴史
1994
ブーチ氏、ランボー氏がモデル表記表統一を開始
OOPSLA'95
1995
Unified Method 0.8(Booch法、OMT法)
ヤコブソン氏がモデリング技法の統一作業に参加
1996
UML0.9(OOSE法、ほかの手法)
1997/ 1
UML1.0
OMG提案
1997/ 9
UML1.1
OMG標準化
1997/11
UML1.1がOMG標準となる
1998
UML1.2
1999
UML1.3
2001
UML1.4
2003
UML1.5
2005
UML2.0
2007
UML2.1

1.3 UML2.Xについて

  • タイミング図(timing diagram)
  • コンポジット構造図(composite stracture)

が追加された。

CBD:コンポーネントベース開発
コンポーネント同士を組立ててシステムを開発する手法。UML2.xにおけるコンポーネントとはインターフェース(interface)を備えた論理的なソフトウェア部品。 例:ERP(Enterprise Resource Planning:企業資源計画)
MDA:モデル駆動型アーキテクチャ
プラットフォーム(フレームワーク等)に依存しないモデルに変換し、さらに特化したモデルのプラットフォームにする。
CIM:Computation Independent Model
コンピュータに依存しないモデル。
PIM:Platform Independent Model
プラットフォームに依存しないモデル
PSM:Platform Specific Model
プラットフォームに依存(特化)したモデル
ソースコードが生成できるレベルのモデル。 メタモデル(Meta-model)の整理・詳細化を行っている。
  • シーケンス図(sequence diagram)
  • アクティビティ図(activity diagram)
  • ステートマシン図(state machine diagram)
などの詳細化・厳密化がされている。

第2章 オブジェクト指向とは

2.1 オブジェクト指向とは

オブジェクト(Object)とは「物体、対象」 人間が考える単位であるモノやコトの単位を、システム開発でも利用しようというのがオブジェクト指向の考え方です。
  • 振る舞い(Behavior)
  • 属性(property)
  • 責任(responsibility)
オブジェクトとは、「振る舞いや属性などの特性を持ち、特定の責任を果たす」ものである。
  • データ中心アプローチ(DOA:Data Oriented Approach)
  • プロセス中心アプローチ(POA:Process Oriented Approach)

2.2 オブジェクト指向の概念

属性
  • オブジェクトが持つ構造的特性
  • 名前と値を持つ
  • 属性が変化すると、オブジェクトの状態(state)が変化する
  • オブジェクトの状態変化を表現するダイアグラムとしてステートマシン図がある
振る舞い
  • オブジェクトが持つ動作上の特性(操作ともいう)
責任
  • オブジェクトが果たすべき役割
抽象化
  • 登場するオブジェクトの振る舞いや属性の共通部分を抽出して、枠組みを定義する(これをクラスという)
  • オブジェクトからクラスを抽出して、一般化することを抽象化(abstraction)という
具象化(インスタンス化)
  • クラスから具体的なオブジェクトを作成することを、具象化もしくはインスタンス化(instantiation)という
  • インスタンス化で生み出された具象物はインスタンス(instance)という
カプセル化
  • あるオブジェクトに関連する操作と属性を1つのまとまりとして扱い、さらにはそれらも保護してシステムの保守性や再利用を確保しようとする考え方
  • 一般的には、オブジェクトの状態や振る舞いを外部から自由に変えることができないように、オブジェクトを保護する必要がある。
  • オブジェクトを利用する側は、オブジェクトの内部構造を知る必要がなくなり、オブジェクトの内部構造が変更されても利用するオブジェクトには影響が及ばない
インターフェース
  • オブジェクトを保護するためには、なんらかの影響を与えたり、振る舞いを呼び出したりするための窓口が必要でこれをインターフェースという
汎化・特化・継承
  • いくつかのクラスからより一般的なクラスを作り出すことを汎化(generalization)という。
  • 一般的なクラスから、性質を持ちつつ、個別の振る舞いを持つクラスを作成することを特化(specialization)という。
  • 一般的なクラスの特徴を引き継いだ個別のクラスを作ることを継承(inheritance)という。
  • 継承元のクラスを「親クラス」(またはスーパークラス)、継承先のクラスを「子クラス」(またはサブクラス)と呼ぶ。
多態性
  • 複数のオブジェクトが同じシグニチャ(名前、引数など)を持つことによって、同じ振る舞いを呼び出しても異なる機能を果たすことを多態性(polymorphism)もしくは多様性という。
メッセージ
  • 振る舞いを呼び出す際に行われるもの。
  • UMLではシーケンス図などの相互作用図によって、オブジェクト間のメッセージのやり取りを表します。

2.3 オブジェクト指向とUML

2.4 オブジェクト指向の原則(発展内容)

Open-Close Principle(OCP)
オブジェクト指向の要素(クラスやコンポーネントに対して仕様変更が加えられる場合、拡張に対しては開かれて(open)、修正については閉じられて(close)いなければならないという原則。機能拡張が容易で、機能を追加する場合に他の部分に悪影響を与えないようになり、保守性/拡張性の面で優れたシステムを作成できるようになる。
Liskov Substitution Principle
子クラスは親クラスと置換(substitution)可能でなければならない、つまり親クラスで可能なことは全ての子クラスでも可能である必要があるという原則。

第3章 ユースケース図

  • ユースケース(use case)とは、システムが外部に提供する機能のこと。
  • システムのユーザが認識できるレベルの機能であり、システムの内部の詳細な機能は表現しない。
  • ユースケース図(use case diagram)は、ユーザ視点でシステムの機能を把握するのに役立つダイアグラムで、主に要求分析で使用される。

3.1 ユースケース図の例

3.2 ユースケース図の構成要素

  • 関連(association)
  • 汎化(generalization)
  • 包含(include)
  • 拡張(extend)
ユースケース
アクターから見たシステムの機能を表す。楕円の中にユースケース名を記述した図形で表す
アクター
システムを操作するユーザー

3.3 ユースケースの詳細(発展内容)

3.4 UML1.Xからの変更点

3.5 構成要素まとめ

第4章 オブジェクト図

4.1 オブジェクト図の例

4.2 オブジェクト図の構成要素

4.3 オブジェクト図の作成(発展内容)

4.4 UML1.Xからの変更点

4.5 構成要素まとめ

第5章 クラス図

5.1 クラス図の例

5.2 クラス図の構成要素

5.3 UML1.Xからの変更点

5.4 構成要素まとめ

第6章 コンポジット構造図

6.1 コンポジット構造図の例

6.2 コンポジット構造図の構成要素

6.3 UML1.Xからの変更点

6.4 構成要素まとめ

第7章 コンポーネント図

7.1 コンポーネント図の例

7.2 コンポーネント図の構成要素

7.3 UML1.Xからの変更点

7.4 構成要素まとめ

第8章 シーケンス図

目的は、ユーザーが要求する機能(ユースケース)を実現するためのオブジェクト間の相互作用(メッセージのやり取り)を時系列に沿って表現すること。 どの程度の詳細情報を図示したいのか(粒度)に合わせて、分析目的にも設計目的にも用いることができる。

8.1 シーケンス図の例

8.2 シーケンス図の構成要素

相互作用
四角形のフレームで表現し、左上隅のヘッダ部分に相互作用名を記述する。
相互作用名には先頭にsequence diagramの略称である「sd」というプレフィックスをつける。
あるシーケンス図から別のシーケンス図を参照するときは、「ref」を使用。
ライフライン
ライフラインにはオブジェクト、クラス、コンポーネント、アクターなどがあたる。
ヘッド(head)と呼ばれるオブジェクトやクラスを示す長方形のボックス、 アクターを示す人型のステックマン、およびヘッドから下方に伸ばした破線を使用する。 このヘッド(長方形・スティックマン)と破線をライフラインと呼ぶ。
相互作用を自ら開始できる種類のオブジェクトやクラスがあり、アクティブオブジェクトやアクティブクラスを呼ばれ、両端に線を追加した長方形で表現する
メッセージ
ライフライン間で行われるコミュニケーション。メッセージがライフラインに受信する瞬間のことをオカレンス指定と呼ぶ。
同期メッセージ
「そのメッセージによって呼び出された処理が終了するまで次のメッセージ送信に進めない。」黒く塗りつぶされた三角形を先端に付けた実践の矢印で表現。メッセージ名を「操作名(引数)」の形式で記述。
戻りメッセージ
「メッセージによって起動された操作が終了したこと」メッセージ名は「割当先名 = 操作名(-):戻り値」という形式。先端を「く」の字にした破線の矢印で表現。
非同期メッセージ
「このメッセージが起動した操作が終了しなくても(応答がなくても)、次のメッセージ送信に進むことができる」先端を「く」の字にした実践の矢印で表現します。
生成メッセージ
「そのメッセージが送信されることにより、オブジェクトが生成される」生成されるオブジェクトに向けて先端が「く」の字の破線の矢印を引くことにより表現
消失メッセージ
送信されたメッセージを受け取るためのオカレンス指定が存在しないメッセージ。メッセージの先端に黒く塗りつぶした円を付加して表現
出現メッセージ
メッセージの矢印の始点に黒く塗りつぶした円をふかします。
破棄イベント
ライフラインの破線上に×印をつけて表現。
オカレンス指定
メッセージがライフラインと関連する瞬間を示す。メッセージの端、もしくは実行指定の開始点および終了点で表現。
実行指定
ライフライン上に灰色もしくは白色の細い四角形を記述し表現
相互作用使用
大規模なシーケンス図を描く必要がある場合などに、任意の部分を別フレームに切り分けて記述する際に使用。
1つの相互作用を複数の相互作用に参照させることで、共通の処理を作る。
フレームの左上のヘッダにつける名前のプレフィックスは「ref」(referenceの略)
ゲート
相互作用の外部に送られたり、相互作用の外部から入ってくるときのメッセージと相互作用との境界点のこと。
メッセージと相互作用のフレームが接する点にある。
状態不変式
ある時点における制約(満たされるべき条件)をあらわす。
角が丸い四角形を記述し、その中に状態を表す条件式や文章を記入する
複合フラグメント
一部をフレームで囲むことで、その範囲に対して何らかの意味や操作を加える。
12種類の機能が定められている
オルタナティブ(alt)
流れがガード条件によって分岐する。
領域を破線によって上下に区切り、ガード条件を領域内の関係するライフライン上に角括弧で囲んで記述。
どの条件にも含まれない場合のガード条件には[else]を記述。
オプション(opt)
ある条件を満たす場合にだけ実行される領域。
複合フラグメント内部が複数の領域に分かれない。
ループ(loop)
ループの条件は、ヘッダ部に記述するloopという名前の右側に置かれ、minint(最小繰り返し回数)、maxint(最大繰り返す回数)の順にカンマ区切りで記述。
ガード条件が真である間は繰り返し実行される。繰り返しに「*」を指定すると、回数に制限がない(無制限である)ことを意味する。
ブレイク(break)
ブレイクで囲まれたメッセージが送信されるとそれを含む複合フラグメントを中断できる。
パラレル(par)
相互作用内の区切られた領域(相互作用オペランド)を並行して実行します。
クリティカル領域(critical)
処理が非常に重要な処理

8.3 UML1.Xからの変更点

8.4 構成要素まとめ

第9章 コミュニケーション図

9.1 コミュニケーション図

9.2 コミュニケーション図の構成要素

9.3 コミュニケーション図のメッセージ(発展内容)

9.4 UML1.Xからの変更点

9.5 構成要素まとめ

第10章 タイミング図

10.1 タイミング図の例

10.2 タイミング図の構成要素

10.3 UML1.Xからの変更点

10.4 構成要素まとめ

第11章 相互作用概要図

11.1 相互作用概要図

11.2 相互作用概要図の構成要素

11.3 UML1.Xからの変更

11.4 構成要素まとめ

第12章 ステートマシン図

12.1 ステートマシン図の例

12.2 ステートマシン図の構成要素

12.3 UML1.Xからの変更

12.4 構成要素まとめ

第13章 アクティビティ図

13.1 アクティビティ図の例

13.2 アクティビティ図の構成要素

13.3 UML1.Xからの変更

13.4 構成要素まとめ

第14章 配置図

14.1 配置図の例

14.2 配置図の構成要素

14.3 UML1.Xからの変更

14.4 構成要素まとめ

第15章 パッケージ図

15.1 パッケージ図の例

15.2 パッケージ図の構成要素

15.3 パッケージの再利用(発展内容)

15.4 UML1.Xからの変更

15.5 構成要素まとめ

第16章 UMLの基礎概念

16.1 共通要素

16.2 モデリング言語の階層

16.3 UMLの構造

16.4 UMLの拡張

16.5 UML1.Xからの変更

第2部 UMLの適用

第17章 現状業務(AsIs)分析

17.1 現状業務の把握

17.2 モデル化対象の分割

17.3 現状のビジネスプロセスの洗い出し(業務分析)

17.4 ビジネスプロセスの分割と構造化

第18章 現状業務の改善(ToBe)

18.1 現状の問題点の抽出

18.2 新しいビジネスプロセスの検討

18.3 画面サンプルの作成

第19章 要求分析

19.1 ユースケース図の作成

19.2 ユースケースシナリオの作成

第20章 システム分析

20.1 オブジェクト図の作成

20.2 分析クラス図の作成

20.3 エンティティを抜き出す方法

第21章 システム設計(システム全体の俯瞰とアーキテクチャの決定)

21.1 初期コンポーネント図の作成

21.2 アーキテクチャの決定

第22章 システム設計(ユースケースの実現)

22.1 相互作用概要図の作成

22.2 ユースケースの詳細化

22.3 シーケンス図の作成

第23章 システム設計(システム全体の構造決定)

23.1 設計クラス図の作成

第24章 プラットフォームへの展開

24.1 マッピングとモデル変換

24.2 システムの配置構成を決定する