©2013 Shintaro Hosoai U M L Unified Modeling Language 細細 細細細 2013/8/21 1
May 06, 2015
©2013 Shintaro Hosoai
U M LUnified Modeling Language
細合 晋太郎
2013/8/211
©2013 Shintaro Hosoai2
そもそもモデリングってなあに?• システムって超複雑
いきなり作る ( 考える ) のは無理
• ある観点だけをある抽象度で抽出したもの → モデル• 世にあるほとんどの~図はモデルと言ってもいい
• Ex) 上から見た構造 → 上面図• Ex) 粘土で形だけ → クレイモデル• Ex) 音階とタイミングで音楽を分解 → 楽譜2013/8/21
観点
観点
おおまかにどんな構造?どん
な形?
どう動く?
具体的ににどんな構造?
どんな順番で動く?どんな状態がある?どんなメッセージをやりとりする?
抽象度
いろんな観点と抽象度で 考えて(設計して)から実装
©2013 Shintaro Hosoai3
構造モデルと振舞いモデル
• 観点は大きく分けると構造と振舞いに大別できる。• どんな形をしているのか?どんな動きをするのか?
• UML では、構造と振舞いのモデルが様々な抽象度と観点で定義されている。
UML モデルは厳密に定義されている。• UML の仕様書( Super Structure )• http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF/
2013/8/21
©2013 Shintaro Hosoai4
UML の歴史
1990 年代。世は OOP 開発方法論戦国時代開発方法論ごとに数多のモデリング言語が入り乱れ、表記法で表記法を洗う熾烈なモデル存在競争を繰り広げていたこのままでは、開発者同士の意思の疎通すら難しい現代版バベルの塔となってしまう
3 人の漢が立ち上がった。
2013/8/21
©2013 Shintaro Hosoai5
Three Amigos
2013/8/21
Grady Booch Ivar JacobsonJames Rumbaugh
http://www.itmedia.co.jp/im/articles/0212/18/news001.htmlhttp://en.wikipedia.org/wiki/Grady_Booch http://en.wikipedia.org/wiki/Ivar_Jacobson
画像は以下より転載
©2013 Shintaro Hosoai6
モデリング言語の統一
2013/8/21
http://thinkit.co.jp/free/compare/12/1/より転載
UML 2.1.1
UML 2.1.2
UML 2.2
UML 2.3
UML 2.4
UML 2.4.1
2007,Aug
2007,Nov
2009,Feb
2010,May
2011,Mar
2011,Aug
2013/08/10 現在
©2013 Shintaro Hosoai7
UML Diagrams (version 2.4.1)
2013/8/21 http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF/ pp710
©2013 Shintaro Hosoai8
構造モデル
•Deployment Diagram :配置図• Component Diagram :コンポーネント図• Composite Structure Diagram :複合構造図• Package Diagram :パッケージ図• Class Diagram :クラス図•Object Diagram :オブジェクト図
• Profile Diagram :プロファイル図
2013/8/21
抽象度
低
高
これは別観点
©2013 Shintaro Hosoai9
振舞いモデル
•Use Case Diagram :ユースケース図• Activity Diagram :アクティビティ図• State Machine Diagram :ステートマシン図• Interaction Diagram :相互作用図• Sequence Diagram :シーケンス図• Communication Diagram :コミュニケーション図• Interaction Overview Diagram :相互作用概念図• Timing Diagram :タイミング図
2013/8/21
振舞いモデルは、見たい観点がそれぞれ異なる。
外界との関係、要求システムフロー状態
オブジェクト間フローオブジェクト相互関係図間のオーバービュー動作タイミング
©2013 Shintaro Hosoai10
クラス図
システムのクラス構造を書くためのモデル箱でクラスの構造を、線でクラス間の関係を表現する
線種
2013/8/21
クラス名属性 *
操作 *
ここにクラス名
クラス変数
メソッド
クラス A クラス B
子クラス C
11
多重度
単方向関連
双方向関連
継承
集約コンポジション
©2013 Shintaro Hosoai11
ステートマシン図
• 状態と遷移を可視化するモデル• ある状態の時に、その状態から
の遷移に指定されているイベントが入ると次状態に遷移する• Guard
• イベントが入った際でも Guard に指定された条件が満たされていないと遷移しない
• Action• 遷移が発生した際にここで指定した Action が
実行される
• EntryEvent• その状態に入った際にここで指定した Action
が実行される
2013/8/21
StateEntryAction()
状態 初期状態
終了状態EntryAction
状態名 Event[Guard]/Action
StateA StateB
StateC
EventA
EventBEventC
EventD
遷移
©2013 Shintaro Hosoai12
クラス図・ステートマシン図のモデリング
• 何を作りたいかを明確にする• 作りたいシステムの機能を洗い出す• 近い機能ごとにまとめてみる → クラスに出来そうか考える• クラスとして書き出す、クラス間の関係を考える• クラスが状態を持つか考える• 状態を持つクラスをステートマシンに書き出す• ステートマシン図、クラス図に齟齬がないか確認• 適宜、リファクタリングを行い設計を進める
2013/8/21