UML速習会
図で表現するということ
住友孝郎/Takao Sumitomo
シゴトでココロオドル
• 住友 孝郎(Takao Sumitomo)
• たぶんAndroidアプリ開発者
• その他
– 電子工作
– OpenCV
– 技術同人誌の執筆
• Twitter:@cattaka_net
• ウォンテッドリー株式...
シゴトでココロオドル
UMLとは
シゴトでココロオドル
• Unified Modeling Languageの略
• 複数の図から構成される表現方法
• OMG(Object Management Group)が管理
• 様々な側面から対象を描くことができる
概要
シゴトでココロオドル
• 一般的な表記法
– フローチャート
– バブルチャート
– データフロー図
• 主な問題
– 表現力が弱い
– オレオレ記法を入れざるを得ない
なぜUMLか
シゴトでココロオドル
• オレオレ記法が入ると、、、
– 描いた人にしかわからない
– 矛盾が発生しやすい
• なので、こなれた表記法を使いましょう
– すなわちUMLを用いる
なぜUMLか
シゴトでココロオドル
• スケッチとして
• 設計図として
• プログラミング言語として
何に使えるか
シゴトでココロオドル
• 紙に描けないものは実装できない
• 実装できても正しく動いてるか確認できない
主張
もちろん設計の全てを描き出す必要はない
シゴトでココロオドル
• 主語-動詞-目的語の関係
– 例:「ファイル送信機能」は「チャット機能」を拡張する
• 物やデータの移動の関係
– 例:「商品」を「倉庫」からお客様のところへ配送する
余談:オレオレ記法に見られる矢印
これらを区別なく...
シゴトでココロオドル
UMLの使った開発の進め方
シゴトでココロオドル
• 実装は大きく3つの側面がある
実装の三面図
実装
振る舞い 構造
相互作用
シゴトでココロオドル
• 実装の幻を思い浮かべる
実装
の幻
開発の進め方1
シゴトでココロオドル
• 3つの側面の図を描く
開発の進め方2
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
• お互いの図に矛盾が無いことを確認する
開発の進め方3
振る舞い図 構造図
相互作用図
シゴトでココロオドル
• 実際の実装を作っていく
開発の進め方4
振る舞い図 構造図
相互作用図
本物
の
実装
シゴトでココロオドル
UMLの各図の紹介
シゴトでココロオドル
• 構造図
– オブジェクト図
– クラス図
– パッケージ図
– コンポーネント図
– コンポジット構造図
– 配置図
UMLの図の種類
• 振る舞い図
– ユースケース図
– アクティビティ図
– ステートマシン図
•...
シゴトでココロオドル
• ユーザー視点でシステムの振る舞いを描く
• システムの要件とその関連の整理に便利
振る舞い図:ユースケース図
シゴトでココロオドル
• ユーザー視点でシステムの振る舞いを描く
• システムの要件とその関連の整理に便利
振る舞い図:ユースケース図
シゴトでココロオドル
• 書き方
– 登場人物を洗い出す
– ユースケース(やりたいこと)をリストアップする
– 登場人物とユースケースを図に描き出す
– それぞれの関連の線を引く
振る舞い図:ユースケース図
シゴトでココロオドル
振る舞い図:ユースケース図
シゴトでココロオドル
• 順次処理や並列処理を表記できる
• フローチャートに似た表記法である
• 開始ノードから終了ノードへの一連の流れで表す
振る舞い図:アクティビティ図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物のアクション(やること)をリストアップす
る
– アクションを図に描き出す
– それぞれの順序の線を引く
振る舞い図:アクティビティ図
シゴトでココロオドル
振る舞い図:アクティビティ図
シゴトでココロオドル
• 相互作用の順序を厳密に表すことが出来る
• 横方向にオブジェクトを並べて表記する
• 上から下へ時系列順に表記する
• マルチスレッド処理の記述に威力を発揮する
相互作用図 :シーケンス図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物間のメッセージ(やりとり)をリストアップ
する
– メッセージの順番を整理する
– 登場人物のライフラインを引く
– メッセージをライフライン上に描いていく
相互作用図:シー...
シゴトでココロオドル
• オブジェクト間の相互作用を表す
• オブジェクト間の接続(関係)を表す
相互作用図:コミュニケーション図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物間のメッセージ(やりとり)をリストアップ
する
– 登場人物を図に描く
– 登場人物間で関連があるものに線を引く
– 番号を振りならがメッセージを書き込んでいく
相互作用図:...
シゴトでココロオドル
• システムの構造を表現する
• システム全体の構成を見渡せる
構造図:コンポーネント図
シゴトでココロオドル
• 描き方
– コンポーネントを洗い出す
– 各コンポーネントが提供する機能を洗い出す
– 各コンポーネントが必要とする機能を洗い出す
– 提供する機能と必要とする機能を繋いでいく
構造図:コンポーネント図
シゴトでココロオドル
• クラス間の構造や関連を表現する
• ER図のように多重度の表現にも強い
構造図:クラス図
リンク
コンポジション
シゴトでココロオドル
• 描き方
– 登場するクラスを洗い出す
– 関連するものに線を引く
– ユースケースなどから多重度を決定する
– 必要な属性や操作を埋めていく
構造図:クラス図
シゴトでココロオドル
例:反社チェックをUMLで描く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
反社チェックをアクティビティ図で描く
シゴトでココロオドル
反社チェックをシーケンス図で描く
シゴトでココロオドル
例:Syncの全体設計をUMLで描
く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
Syncの全体設計をユースケース図をUMLで描く
シゴトでココロオドル
Syncの全体設計をコンポーネント図をUMLで描く
シゴトでココロオドル
例:認証の流れをUMLで描く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
認証の流れをアクティビティ図
シゴトでココロオドル
認証の流れをシーケンス図
シゴトでココロオドル
認証の流れをコミュニケーション図
シゴトでココロオドル
実装
の幻
振る舞い図 構造図
相互作用図
例:Syncアプリの構成をUMLで
描く
シゴトでココロオドル
Syncアプリの構成をクラス図で描く
シゴトでココロオドル
Syncアプリの状態遷移をステートマシン図で描く
シゴトでココロオドル
実習:UMLで書こう
シゴトでココロオドル
• コンソールアプリの三目並べ
• 先手と後手が交互に入力する
• 勝負がつくと終了する
お題:三目並べ
シゴトでココロオドル
ユースケース図
シゴトでココロオドル
アクティビティ図
シゴトでココロオドル
クラス図
シーケンス図
シゴトでココロオドル
まとめ
シゴトでココロオドル
• メリット
– 矛盾が発生しにくい
– 一つの事象を複数の方面から捉えられる
– 他人との意思疎通に使える
• デメリット
– 冗長な表記が多い
– 図の数が多い
UMLについて
シゴトでココロオドル
• UMLに限らず物事をモデル化して捉えよう
• 自身の思考のモデルを増やそう
• 意思疎通を取る手段を増やそう
最後に
シゴトでココロオドル
ご清聴ありがとうございました
Upcoming SlideShare
Loading in...5
×

Uml速習会

160

Published on

UML速習会の発表資料です。

Published in: Education

Uml速習会

  1. 1. UML速習会 図で表現するということ 住友孝郎/Takao Sumitomo
  2. 2. シゴトでココロオドル • 住友 孝郎(Takao Sumitomo) • たぶんAndroidアプリ開発者 • その他 – 電子工作 – OpenCV – 技術同人誌の執筆 • Twitter:@cattaka_net • ウォンテッドリー株式会社所属 自己紹介
  3. 3. シゴトでココロオドル UMLとは
  4. 4. シゴトでココロオドル • Unified Modeling Languageの略 • 複数の図から構成される表現方法 • OMG(Object Management Group)が管理 • 様々な側面から対象を描くことができる 概要
  5. 5. シゴトでココロオドル • 一般的な表記法 – フローチャート – バブルチャート – データフロー図 • 主な問題 – 表現力が弱い – オレオレ記法を入れざるを得ない なぜUMLか
  6. 6. シゴトでココロオドル • オレオレ記法が入ると、、、 – 描いた人にしかわからない – 矛盾が発生しやすい • なので、こなれた表記法を使いましょう – すなわちUMLを用いる なぜUMLか
  7. 7. シゴトでココロオドル • スケッチとして • 設計図として • プログラミング言語として 何に使えるか
  8. 8. シゴトでココロオドル • 紙に描けないものは実装できない • 実装できても正しく動いてるか確認できない 主張 もちろん設計の全てを描き出す必要はない
  9. 9. シゴトでココロオドル • 主語-動詞-目的語の関係 – 例:「ファイル送信機能」は「チャット機能」を拡張する • 物やデータの移動の関係 – 例:「商品」を「倉庫」からお客様のところへ配送する 余談:オレオレ記法に見られる矢印 これらを区別なく描くとグラフを見た人が混乱する
  10. 10. シゴトでココロオドル UMLの使った開発の進め方
  11. 11. シゴトでココロオドル • 実装は大きく3つの側面がある 実装の三面図 実装 振る舞い 構造 相互作用
  12. 12. シゴトでココロオドル • 実装の幻を思い浮かべる 実装 の幻 開発の進め方1
  13. 13. シゴトでココロオドル • 3つの側面の図を描く 開発の進め方2 実装 の幻 振る舞い図 構造図 相互作用図
  14. 14. シゴトでココロオドル • お互いの図に矛盾が無いことを確認する 開発の進め方3 振る舞い図 構造図 相互作用図
  15. 15. シゴトでココロオドル • 実際の実装を作っていく 開発の進め方4 振る舞い図 構造図 相互作用図 本物 の 実装
  16. 16. シゴトでココロオドル UMLの各図の紹介
  17. 17. シゴトでココロオドル • 構造図 – オブジェクト図 – クラス図 – パッケージ図 – コンポーネント図 – コンポジット構造図 – 配置図 UMLの図の種類 • 振る舞い図 – ユースケース図 – アクティビティ図 – ステートマシン図 • 相互作用図 – コミュニケーション図 – シーケンス図 – タイミング図 – 相互作用概要図
  18. 18. シゴトでココロオドル • ユーザー視点でシステムの振る舞いを描く • システムの要件とその関連の整理に便利 振る舞い図:ユースケース図
  19. 19. シゴトでココロオドル • ユーザー視点でシステムの振る舞いを描く • システムの要件とその関連の整理に便利 振る舞い図:ユースケース図
  20. 20. シゴトでココロオドル • 書き方 – 登場人物を洗い出す – ユースケース(やりたいこと)をリストアップする – 登場人物とユースケースを図に描き出す – それぞれの関連の線を引く 振る舞い図:ユースケース図
  21. 21. シゴトでココロオドル 振る舞い図:ユースケース図
  22. 22. シゴトでココロオドル • 順次処理や並列処理を表記できる • フローチャートに似た表記法である • 開始ノードから終了ノードへの一連の流れで表す 振る舞い図:アクティビティ図
  23. 23. シゴトでココロオドル • 描き方 – 登場人物を洗い出す – 登場人物のアクション(やること)をリストアップす る – アクションを図に描き出す – それぞれの順序の線を引く 振る舞い図:アクティビティ図
  24. 24. シゴトでココロオドル 振る舞い図:アクティビティ図
  25. 25. シゴトでココロオドル • 相互作用の順序を厳密に表すことが出来る • 横方向にオブジェクトを並べて表記する • 上から下へ時系列順に表記する • マルチスレッド処理の記述に威力を発揮する 相互作用図 :シーケンス図
  26. 26. シゴトでココロオドル • 描き方 – 登場人物を洗い出す – 登場人物間のメッセージ(やりとり)をリストアップ する – メッセージの順番を整理する – 登場人物のライフラインを引く – メッセージをライフライン上に描いていく 相互作用図:シーケンス図
  27. 27. シゴトでココロオドル • オブジェクト間の相互作用を表す • オブジェクト間の接続(関係)を表す 相互作用図:コミュニケーション図
  28. 28. シゴトでココロオドル • 描き方 – 登場人物を洗い出す – 登場人物間のメッセージ(やりとり)をリストアップ する – 登場人物を図に描く – 登場人物間で関連があるものに線を引く – 番号を振りならがメッセージを書き込んでいく 相互作用図:コミュニケーション図
  29. 29. シゴトでココロオドル • システムの構造を表現する • システム全体の構成を見渡せる 構造図:コンポーネント図
  30. 30. シゴトでココロオドル • 描き方 – コンポーネントを洗い出す – 各コンポーネントが提供する機能を洗い出す – 各コンポーネントが必要とする機能を洗い出す – 提供する機能と必要とする機能を繋いでいく 構造図:コンポーネント図
  31. 31. シゴトでココロオドル • クラス間の構造や関連を表現する • ER図のように多重度の表現にも強い 構造図:クラス図 リンク コンポジション
  32. 32. シゴトでココロオドル • 描き方 – 登場するクラスを洗い出す – 関連するものに線を引く – ユースケースなどから多重度を決定する – 必要な属性や操作を埋めていく 構造図:クラス図
  33. 33. シゴトでココロオドル 例:反社チェックをUMLで描く 実装 の幻 振る舞い図 構造図 相互作用図
  34. 34. シゴトでココロオドル 反社チェックをアクティビティ図で描く
  35. 35. シゴトでココロオドル 反社チェックをシーケンス図で描く
  36. 36. シゴトでココロオドル 例:Syncの全体設計をUMLで描 く 実装 の幻 振る舞い図 構造図 相互作用図
  37. 37. シゴトでココロオドル Syncの全体設計をユースケース図をUMLで描く
  38. 38. シゴトでココロオドル Syncの全体設計をコンポーネント図をUMLで描く
  39. 39. シゴトでココロオドル 例:認証の流れをUMLで描く 実装 の幻 振る舞い図 構造図 相互作用図
  40. 40. シゴトでココロオドル 認証の流れをアクティビティ図
  41. 41. シゴトでココロオドル 認証の流れをシーケンス図
  42. 42. シゴトでココロオドル 認証の流れをコミュニケーション図
  43. 43. シゴトでココロオドル 実装 の幻 振る舞い図 構造図 相互作用図 例:Syncアプリの構成をUMLで 描く
  44. 44. シゴトでココロオドル Syncアプリの構成をクラス図で描く
  45. 45. シゴトでココロオドル Syncアプリの状態遷移をステートマシン図で描く
  46. 46. シゴトでココロオドル 実習:UMLで書こう
  47. 47. シゴトでココロオドル • コンソールアプリの三目並べ • 先手と後手が交互に入力する • 勝負がつくと終了する お題:三目並べ
  48. 48. シゴトでココロオドル ユースケース図
  49. 49. シゴトでココロオドル アクティビティ図
  50. 50. シゴトでココロオドル クラス図
  51. 51. シーケンス図
  52. 52. シゴトでココロオドル まとめ
  53. 53. シゴトでココロオドル • メリット – 矛盾が発生しにくい – 一つの事象を複数の方面から捉えられる – 他人との意思疎通に使える • デメリット – 冗長な表記が多い – 図の数が多い UMLについて
  54. 54. シゴトでココロオドル • UMLに限らず物事をモデル化して捉えよう • 自身の思考のモデルを増やそう • 意思疎通を取る手段を増やそう 最後に
  55. 55. シゴトでココロオドル ご清聴ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×