SlideShare a Scribd company logo
1 of 33
Download to read offline
UMLモデリングの勘所




             http://www.flickr.com/photos/jcraveiro/114311213


   わんくま同盟 名古屋勉強会 #26
自己紹介
• 名前 : @furuyoshi
• 年齢 : 後厄を過ぎた頃
• 出身 : 空港のあるまち、常滑
• 本職 : システムエンジニア
• UMTP L3モデラー
• OMG Advanced保有者
• 認定スクラムマスター

            わんくま同盟 名古屋勉強会 #26
本日の内容
• UMLを使ったモデリングについて幾つかの
  ポイントをお話したいと思います。
‒単一責任の原則を守ろう
‒「もの」と「こと」を意識しよう
‒レイヤーを意識しよう




        わんくま同盟 名古屋勉強会 #26
単一責任の原則を守ろう




                http://www.flickr.com/photos/75659300@N00/2615848530


      わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね




       わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね
‒オープン・クローズドの原則(OCP)




        わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね
‒オープン・クローズドの原則(OCP)
‒リスコフの置換原則(LSP)




        わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね
‒オープン・クローズドの原則(OCP)
‒リスコフの置換原則(LSP)
‒依存関係逆転の原則(DIP)




        わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね
‒オープン・クローズドの原則(OCP)
‒リスコフの置換原則(LSP)
‒依存関係逆転の原則(DIP)
‒インターフェース分離の原則




        わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね
‒オープン・クローズドの原則(OCP)
‒リスコフの置換原則(LSP)
‒依存関係逆転の原則(DIP)
‒インターフェース分離の原則
‒単一責任の原則(SRP)



        わんくま同盟 名古屋勉強会 #26
オブジェクト指向設計原則
「オブジェクト指向設計原則」って幾つかあり
ますよね
‒オープン・クローズドの原則(OCP)
‒リスコフの置換原則(LSP)
‒依存関係逆転の原則(DIP)
‒インターフェース分離の原則
­単一責任の原則(SRP)



        わんくま同盟 名古屋勉強会 #26
単一責任の原則って?




      わんくま同盟 名古屋勉強会 #26
単一責任の原則って?



 クラスを変更する理由は1つ以上
 存在していてはならない




      わんくま同盟 名古屋勉強会 #26
単一責任の原則って?



 クラスを変更する理由は1つ以上
 存在していてはならない
       要するに




      わんくま同盟 名古屋勉強会 #26
1つのクラスでいろいろやらない


                                                      テキスト




http://www.flickr.com/photos/andreknu/5817696055


                                                   わんくま同盟 名古屋勉強会 #26
守ると何が
嬉しいの?
   わんくま同盟 名古屋勉強会 #26
シンプルに保てる




             http://www.flickr.com/photos/xelvia/3505893018


わんくま同盟 名古屋勉強会 #26
責務が隠れない




http://www.flickr.com/photos/gi/4161241424


                                             わんくま同盟 名古屋勉強会 #26
どうすると守れる?




              http://www.flickr.com/photos/ores2k/394359583



 わんくま同盟 名古屋勉強会 #26
適切な名前を付けて命を吹き込む


    ○○マネージャ、
    ☓☓コントローラとか
    注意
                 http://www.flickr.com/photos/achew/3987039984



     わんくま同盟 名古屋勉強会 #26
重 要
名 前
 わんくま同盟 名古屋勉強会 #26
「もの」と「こと」を意識しよう




                 http://www.flickr.com/photos/msstatelibraries/5514557993


      わんくま同盟 名古屋勉強会 #26
クラスをどうやって見つける?
• ロバストネス分析
 –コントロールクラス
 –バウンダリクラス
 –エンティティクラス

• 名詞抽出法
 –名詞をクラス(属性)にする
 –動詞をメソッドにする

• 責務に着目する
          わんくま同盟 名古屋勉強会 #26
これって「もの」が中心だよね




http://www.flickr.com/photos/jillclardy/5772655733


                                                     わんくま同盟 名古屋勉強会 #26
「もの」と「もの」の間にある関係
(例えば契約とか)にも着目する
http://www.flickr.com/photos/frank3/6053973411



                                                 わんくま同盟 名古屋勉強会 #26
レイヤーを意識しよう




http://www.flickr.com/photos/26790780@N07/2939999926


                                                       わんくま同盟 名古屋勉強会 #26
DDD本に於けるレイヤーの定義
ユーザーインターフェース層     ユーザに情報を表示して、ユーザのコマンドを
(又はプレゼンテーション層)    解釈する責務を負う。

アプリケーション層         ソフトウェアが行うことになっている仕事を定義し、
                  ドメインオブジェクトが問題を解決するように導く。
                  ビジネスルールや知識を含まず、やるべき作業を調整す
                  るだけで、実際の処理はドメインオブジェクトによって
                  実行される共同作業に委譲される。


ドメイン層             ビジネスの概念と、ビジネスが置かれた状況に関する情
(又はモデル層)          報、及びビジネスルールを表す責務を負う。
                  この層がビジネスソフトウェアの核心。


インフラストラクチャ層       上位の層を支える一般的な技術的機能を提供する。
                  メッセージの送信、永続化、ウィジェット描画等があ
                  る。

                 わんくま同盟 名古屋勉強会 #26
ユーザーインターフェース層         ユーザーインターフェース層
(又はプレゼンテーション層)        (又はプレゼンテーション層)




              }
アプリケーション層
                      ドメイン層
ドメイン層                 (又はモデル層)
(又はモデル層)




インフラストラクチャ層           インフラストラクチャ層




              わんくま同盟 名古屋勉強会 #26
ユーザーインターフェース層                GUI等
(又はプレゼンテーション層)




ドメイン層
(又はモデル層)




インフラストラクチャ層                  デバイスへのI/F等
                  DB   HDD

              わんくま同盟 名古屋勉強会 #26
薄く保つ

ユーザーインターフェース層                GUI等
(又はプレゼンテーション層)




ドメイン層
(又はモデル層)




インフラストラクチャ層                  デバイスへのI/F等
                  DB   HDD

              わんくま同盟 名古屋勉強会 #26
依存関係逆転の原則


ユーザーインターフェース層    Interface               Interface
(又はプレゼンテーション層)    △                        △




ドメイン層
(又はモデル層)                     Interface               Interface
                                △                        △




インフラストラクチャ層

                               DB                     HDD

              わんくま同盟 名古屋勉強会 #26
依存関係逆転の原則


ユーザーインターフェース層    Interface               Interface
(又はプレゼンテーション層)    △                        △




ドメイン層
(又はモデル層)                     Interface               Interface
                             △ △                         △

 容易に交換可能

インフラストラクチャ層

                   DB           DB                    HDD

              わんくま同盟 名古屋勉強会 #26
まとめ
• クラスに責務が明確になる名前を付けて、
単一責任の原則を守る
• 「もの」だけでなく「こと」にも注目する
• レイヤーを意識してクラス構造を考える




        わんくま同盟 名古屋勉強会 #26

More Related Content

Similar to Umlモデリングの勘所

ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論ymmt
 
マトリックス型モデルによるテキストエディターと作文過程の可視化
マトリックス型モデルによるテキストエディターと作文過程の可視化マトリックス型モデルによるテキストエディターと作文過程の可視化
マトリックス型モデルによるテキストエディターと作文過程の可視化yamahige
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」Yusuke Suzuki
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Hiro Yoshioka
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010Yusuke Suzuki
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみたYoshitaka Seo
 
【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプ【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプkentaro watanabe
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2Yoshitaka Seo
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計アシアル株式会社
 
Pattern mining-scrum gatheringtokyo20130115
Pattern mining-scrum gatheringtokyo20130115Pattern mining-scrum gatheringtokyo20130115
Pattern mining-scrum gatheringtokyo20130115Hironori Washizaki
 
AWSウルトラクイズ第1回全国統一模擬試験_20121124
AWSウルトラクイズ第1回全国統一模擬試験_20121124AWSウルトラクイズ第1回全国統一模擬試験_20121124
AWSウルトラクイズ第1回全国統一模擬試験_20121124真吾 吉田
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルHiroaki Wakamatsu
 

Similar to Umlモデリングの勘所 (20)

ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論
 
マトリックス型モデルによるテキストエディターと作文過程の可視化
マトリックス型モデルによるテキストエディターと作文過程の可視化マトリックス型モデルによるテキストエディターと作文過程の可視化
マトリックス型モデルによるテキストエディターと作文過程の可視化
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
Tdd
TddTdd
Tdd
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみた
 
【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプ【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプ
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
 
Pattern mining-scrum gatheringtokyo20130115
Pattern mining-scrum gatheringtokyo20130115Pattern mining-scrum gatheringtokyo20130115
Pattern mining-scrum gatheringtokyo20130115
 
AWSウルトラクイズ第1回全国統一模擬試験_20121124
AWSウルトラクイズ第1回全国統一模擬試験_20121124AWSウルトラクイズ第1回全国統一模擬試験_20121124
AWSウルトラクイズ第1回全国統一模擬試験_20121124
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 

Umlモデリングの勘所