UMLの概要とオブジェクト指向の基本概念(1)

FM12004
川原 正
FM12006
澤田佑基
ソフトウェア工学特論III
2012/4/16




UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
(澤田)
(川原)
(澤田)
(川原)
ソフトウェア工学特論III
2012/4/16




UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16

UMLとは?
◦ UMLとは
◦ UMLの利点
◦ オブジェクト指向と利点



UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16


UML:Unified Modeling Language
(統一モデリング言語)
オブジェクト指向で業務を分析、設計、開発するときに
必要なクラス、オブジェクトなどの要素と、それらを描
画する図(ダイアグラム)の表記を規定したもの。
ソフトウェア工学特論III
2012/4/16

表現力が高く、理解が容易である

すべての工程で用いる表記法が一貫している

世界の共通言語
ソフトウェア工学特論III
2012/4/16

手続き型言語のプログラムをフローチャートで設計す
るように、オブジェクト指向のプログラムをUMLを使っ
て描くことができる。

オブジェクト指向の開発には反復型開発プロセスが
用いられる。
ソフトウェア工学特論III
2012/4/16

システムの全体をいくつかに分割し、各工程を反復し
ながら段階的に開発する。
ソフトウェア工学特論III
2012/4/16




システムの問題を早期に発見し、早期にフィードバッ
クすることが可能になる。
システムの使用の変更や機能の追加に柔軟に対応
できる。
システムのより高い品質を実現できる。
開発プロセスが分割されることにより1回の開発規模
が小さくなり複雑さが低減される。
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16




UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16


UMLとは?
UMLの歴史
◦
◦
◦
◦


共通言語の重要性
UMLの誕生
UMLの開発年表
質疑応答
UMLの図(ダイヤグラム)
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16

共通言語が無い場合
ソフトウェア工学特論III
2012/4/16

共通言語が無い場合
ソフトウェア工学特論III
2012/4/16

共通言語の重要性
ソフトウェア工学特論III
2012/4/16

共通言語の重要性
ソフトウェア工学特論III
2012/4/16

共通言語の重要性
子供がブランコで
遊んでいる
ソフトウェア工学特論III
A kid is playing
the swing.
2012/4/16

共通言語の重要性
子供がブランコで
遊んでいる
伝えたいことは同じでも
伝え方が異なる
ソフトウェア工学特論III
A kid is playing
the swing.
2012/4/16

UML誕生以前は・・・
◦ 開発方法論や表記法が多く存在していた。
ソフトウェア工学特論III
2012/4/16

UML誕生以前は・・・
◦ 開発方法論や表記法が多く存在していた。
◦ OMT法、Booch法、Objectory法 等の様々な開発方法論
が提案されていた。
ソフトウェア工学特論III
2012/4/16

UML誕生以前は・・・
◦ 開発方法論や表記法が多く存在していた。
◦ OMT法、Booch法、Objectory法 等の様々な開発方法論
が提案されていた。
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
統一言語UMLの開発が行われる
ソフトウェア工学特論III
2012/4/16
Rumbaugh氏
Booch氏
Jacobson氏
ソフトウェア工学特論III
2012/4/16
Rumbaugh氏
Booch氏
Jacobson氏
スリーアミーゴ
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
その他の手法
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
その他の手法
Rumbauh氏とBooch氏が提携
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
その他の手法
Rumbauh氏とBooch氏が提携
Unified Method 0.8
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
その他の手法
Rumbauh氏とBooch氏が提携
Unified Method 0.8
UML 0.9
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
その他の手法
Rumbauh氏とBooch氏が提携
Unified Method 0.8
UML 0.9
UML 1.0
ソフトウェア工学特論III
2012/4/16
OMT法
Rumbaugh氏
Booch法
Booch氏
Objectory法
Jacobson氏
その他の手法
Rumbauh氏とBooch氏が提携
Unified Method 0.8
UML 0.9
UML 1.0
UMLはバージョンアップを繰り返す
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16




UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16



UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
◦
◦
◦
◦
◦
◦

ユースケース図
クラス図
シーケンス図
コミュニケーション図
ステートマシーン図
アクティビティ図
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16

システムを多面的に捉える場合、
複数の図(ダイヤグラム)を必要となる。
• 構造図
• クラス図
• オブジェクト図
• パッケージ図
• 合成構造図
• コンポーネント図
• 配置図
• 振る舞い図
• ユースケース図
• アクティビティ図
• ステートマシン図
• 相互作用図
• シーケンス図
• コミュニケーション図
• 相互作用概要図
• タイミング図
• ステートマシン図
ソフトウェア工学特論III
2012/4/16

動作をユーザ視点で捉え、システムが外部に提供す
る機能を表現する
ソフトウェア工学特論III
2012/4/16

システム化する領域の概念や言葉(クラス)を用いて
静的に表現する図。
ソフトウェア工学特論III
2012/4/16

オブジェクトなどの“もの”同士のやり取り(メッセージ)
を表現した図
ソフトウェア工学特論III
2012/4/16

シーケンス図よりもメッセージのやり取りを
表現しやすい図
ソフトウェア工学特論III
2012/4/16

1つのオブジェクトに着目し、生成から消滅までどのよ
うな状態があるかを表現する図。
ソフトウェア工学特論III
2012/4/16

システムや業務の流れ(フロー)
を表現する図
ソフトウェア工学特論III
2012/4/16

UMLで規定されていない図を選択しなさい。
① クラス図
② シーケンス図
③ アクション図
④ ユースケース図
⑤ 配属図
⑥ コンポーネント図
ソフトウェア工学特論III
2012/4/16

UMLで規定されていない図を選択しなさい。
① クラス図
② シーケンス図
③ アクション図
④ ユースケース図
⑤ 配属図
⑥ コンポーネント図
ソフトウェア工学特論III
2012/4/16
UMLの図一覧
• 構造図
• クラス図
• オブジェクト図
• パッケージ図
• 合成構造図
• コンポーネント図
• 配置図
• 振る舞い図
• ユースケース図
• アクティビティ図
• 相互作用図
• ステートマシン図
• シーケンス図
• コミュニケーション図
• 相互作用概要図
• タイミング図
• ステートマシン図
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16




UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
ソフトウェア工学特論III
2012/4/16




UMLとは?
UMLの歴史
UMLの図(ダイヤグラム)
UMLの共通の要素
◦
◦
◦
◦
◦
◦
◦
ノート
型/インスタンス
ステレオタイプ
パッケージ
フレーム
練習問題
質疑応答
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16

UMLの要素に対して、コメントや制約などの情報を付
加する。
ソフトウェア工学特論III
2012/4/16

UMLの要素に対して、コメントや制約などの情報を付
加する。
買い物かご
ソフトウェア工学特論III
2012/4/16

UMLの要素に対して、コメントや制約などの情報を付
加する。
購入予定の商品を入れておく。
買い物かご
ソフトウェア工学特論III
2012/4/16

UMLの要素に対して、コメントや制約などの情報を付
加する。
購入予定の商品を入れておく。
買い物かご
ソフトウェア工学特論III
2012/4/16

UMLの要素に対して、コメントや制約などの情報を付
加する。
購入予定の商品を入れておく。
ノート
買い物かご
ソフトウェア工学特論III
2012/4/16

UMLの要素に対して、コメントや制約などの情報を付
加する。
購入予定の商品を入れておく。
買い物かご
点線(アンカ)を付けることにより
どの要素に対する情報なのかを
明確にする
ソフトウェア工学特論III
ノート
2012/4/16
ソフトウェア工学特論III
2012/4/16

UMLではモデル要素に、型/インスタンスという2面
性を持たせている。
ソフトウェア工学特論III
2012/4/16

クラス/オブジェクト、関連/リンクなどの2面性
商品
ソフトウェア工学特論III
2012/4/16

クラス/オブジェクト、関連/リンクなどの2面性
商品
インスタントラーメン:商品
ソフトウェア工学特論III
2012/4/16

クラス/オブジェクト、関連/リンクなどの2面性
商品
インスタントラーメン:商品
ソフトウェア工学特論III
2012/4/16

クラス/オブジェクト、関連/リンクなどの2面性
商品
インスタントラーメン:商品
型/インスタンス の対応関係が
分かるように下線を引いて表現する
ソフトウェア工学特論III
2012/4/16

クラス/オブジェクト、関連/リンクなどの2面性
商品
インスタントラーメン:商品
型/インスタンス の対応関係が
分かるように下線を引いて表現する
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16

システム開発には、様々な分野が存在する
ソフトウェア工学特論III
2012/4/16

システム開発には、様々な分野が存在する
スケジューリング
リアルタイム
組み込み
Webシステム
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16

UMLの基本要素だけでは表現しきれない場合の拡張
のメカニズム。
ソフトウェア工学特論III
2012/4/16

UMLの基本要素だけでは表現しきれない場合の拡張
のメカニズム。
<<boundary>>
一覧画面
<<entity>>
商品リスト
ソフトウェア工学特論III
2012/4/16

UMLの基本要素だけでは表現しきれない場合の拡張
のメカニズム。
<<boundary>>
一覧画面
<<entity>>
商品リスト
ソフトウェア工学特論III
2012/4/16

UMLの基本要素だけでは表現しきれない場合の拡張
のメカニズム。
<<boundary>>
一覧画面
<<entity>>
商品リスト
ソフトウェア工学特論III
2012/4/16

UMLの基本要素だけでは表現しきれない場合の拡張
のメカニズム。
ステレオタイプ名を
<< >>(ギュメ)で囲み
UML要素の名前上部(または前方)
に記述する。
<<boundary>>
一覧画面
<<entity>>
商品リスト
ソフトウェア工学特論III
2012/4/16

UMLで定義されたモデル要素をまとめる。
ソフトウェア工学特論III
2012/4/16

UMLで定義されたモデル要素をまとめる。
WebShopping
ソフトウェア工学特論III
2012/4/16

UMLで定義されたモデル要素をまとめる。
展開
WebShopping
GUI
Control
Domain
ソフトウェア工学特論III
2012/4/16

UMLで定義されたモデル要素をまとめる。
WebShopping
パッケージ名を
タブの中に書く
展開
WebShopping
GUI
Control
Domain
ソフトウェア工学特論III
2012/4/16

UMLで定義されたモデル要素をまとめる。
WebShopping
展開
WebShopping
GUI
Control
要素が別の要素を参照
している場合は
依存関係(矢印付の線)を引く
Domain
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16

フレームの中に図を入れ、図の種類、名称、範囲を明
確にすることができる。
ソフトウェア工学特論III
2012/4/16

フレームの中に図を入れ、図の種類、名称、範囲を明
確にすることができる。
class 会員登録クラス図
ブラックリスト
会員リスト
会員登録画面
会員
ソフトウェア工学特論III
2012/4/16

フレームの中に図を入れ、図の種類、名称、範囲を明
確にすることができる。
class 会員登録クラス図
ヘッダ
ブラックリスト
会員リスト
会員登録画面
会員
ソフトウェア工学特論III
2012/4/16

フレームの中に図を入れ、図の種類、名称、範囲を明
確にすることができる。
図の種類
class 会員登録クラス図
ヘッダ
ブラックリスト
会員リスト
会員登録画面
会員
ソフトウェア工学特論III
2012/4/16

フレームの中に図を入れ、図の種類、名称、範囲を明
確にすることができる。
図の種類
図の名称
class 会員登録クラス図
ヘッダ
ブラックリスト
会員リスト
会員登録画面
会員
ソフトウェア工学特論III
2012/4/16

フレームの中に図を入れ、図の種類、名称、範囲を明
確にすることができる。
図の種類
図の名称
フレーム
class 会員登録クラス図
ヘッダ
ブラックリスト
会員リスト
会員登録画面
会員
ソフトウェア工学特論III
2012/4/16

パッケージに含めることができるものを選択しなさい
① クラス
② オブジェクト
③ パッケージ
④ 上記すべて
ソフトウェア工学特論III
2012/4/16

パッケージに含めることができるものを選択しなさい
① クラス
② オブジェクト
③ パッケージ
④ 上記すべて
ソフトウェア工学特論III
2012/4/16

パッケージにはUMLの要素全てを含むことが可能。
ソフトウェア工学特論III
2012/4/16

ノートについて正しいものを選択しなさい。
① クラスに付けるもの
② メッセージに付けるもの
③ 図に付けるもの
④ 関連に付けるもの
⑤ モデル要素すべてに付けて良いもの
ソフトウェア工学特論III
2012/4/16

ノートについて正しいものを選択しなさい。
① クラスに付けるもの
② メッセージに付けるもの
③ 図に付けるもの
④ 関連に付けるもの
⑤ モデル要素すべてに付けて良いもの
ソフトウェア工学特論III
2012/4/16

ノートは、全てのモデル要素に対してコメント、制約、
メソッドなどの情報を付加する際に使用する。
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16
ソフトウェア工学特論III
2012/4/16