独習UML 第4版
第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)は、ユーザ視点でシステムの機能を把握するのに役立つダイアグラムで、主に要求分析で使用される。