Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ICONIXプロセスから学ぶオブジェクト指向モデリング/ICONIX for Object-Oriented

ICONIXプロセスから学ぶオブジェクト指向モデリング/ICONIX for Object-Oriented

2020.08.21 チェンジビジョンセミナー
株式会社ミライトデザイン CEO 林 宏勝

- なぜオブジェクト指向にモデリングは必要なのか?
- ICONIXプロセスを使用したドメインモデリング

https://astah.change-vision.com/ja/events/seminar.html

hiro@miraito

August 21, 2020
Tweet

More Decks by hiro@miraito

Other Decks in Programming

Transcript

  1. ICONIXプロセスから学ぶ
    オブジェクト指向モデリング
    チェンジビジョンセミナー 2020.8.21
    @hirodragon112

    View full-size slide

  2. ICONIXプロセスから学ぶオブジェクト指向モデリング
    自己紹介
    林 宏勝
    Twitter : @hirodragon112
    株式会社ミライトデザイン CEO
    https://miraito-inc.co.jp/
    株式会社 Jocy CTO
    https://mezon.jocy.jp/
    主に上流から下流まで色々やるサーバーサイドエンジニア
    オブジェクト指向設計とアジャイル開発が大好きです
    2

    View full-size slide

  3. ICONIXプロセスから学ぶオブジェクト指向モデリング
    自己紹介
    Object-Oriented Conference 2020 主催 書籍「ドメイン駆動設計入門」レビュアー
    MEZON(メゾン)/美容定額サービス
    オブジェクト指向勉強会「ペチオブ」主催
    3

    View full-size slide

  4. ICONIXプロセスから学ぶオブジェクト指向モデリング
    本資料は
    https://speakerdeck.com/hirodragon112/iconix-for-object-oriented
    にアップされておりますので、お手元で確認されたい方はこち
    らよりご確認下さい。
    4

    View full-size slide

  5. ICONIXプロセスから学ぶオブジェクト指向モデリング
    本日お話しする内容
    - オブジェクト指向になぜモデリングが必要なのか?
    - モデルを作る為の手法としてのICONIXプロセス
    5

    View full-size slide

  6. ICONIXプロセスから学ぶオブジェクト指向モデリング
    本日お話しする内容
    - なぜオブジェクト指向にモデリングが必要か?
    - オブジェクト「指向」
    - データ指向とオブジェクト指向
    - オブジェクトとモデル
    6

    View full-size slide

  7. ICONIXプロセスから学ぶオブジェクト指向モデリング
    本日お話しする内容
    - ICONIXプロセスを使用したモデリング
    - ICONIXプロセスとは
    - 今回触れるICONIXプロセスのスコープ
    - 各プロセスの価値
    - 実際の手順
    7

    View full-size slide

  8. ICONIXプロセスから学ぶオブジェクト指向モデリング
    なぜオブジェクト指向にモデリングが必要か?
    8

    View full-size slide

  9. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクト「指向」
    Object-Oriented
    9

    View full-size slide

  10. ICONIXプロセスから学ぶオブジェクト指向モデリング
    Oriented -> Orient + -ed
    オブジェクト
    10

    View full-size slide

  11. ICONIXプロセスから学ぶオブジェクト指向モデリング
    Object Oriented -> Orient + -ed
    「Orient」
    適応させる、正しい位置に置く、正しい方向に置く
    オブジェクト
    11

    View full-size slide

  12. ICONIXプロセスから学ぶオブジェクト指向モデリング
    Object Oriented -> Orient + -ed
    「Orient」
    適応させる、正しい位置に置く、正しい方向に置く
    「Oriented」
    ~指向の、~を重視する、~向きの
    オブジェクトを重視したパラダイム
    12

    View full-size slide

  13. ICONIXプロセスから学ぶオブジェクト指向モデリング
    データ指向とオブジェクト指向
    Data-Oriented - Object-Oriented
    13

    View full-size slide

  14. ICONIXプロセスから学ぶオブジェクト指向モデリング
    変化させる処理
    命令
    何か
    変化した何か
    何かを変化させる
    14

    View full-size slide

  15. ICONIXプロセスから学ぶオブジェクト指向モデリング
    加工機
    命令
    永続化されたデータ
    変化したデータの永続化
    データ指向
    データを加工機に渡し演算をかけ、結果を受け取り保管する
    「何か」を表しているのはデータ
    データを加工させる為にオブジェクトが存在する
    データが「何か」の主要素
    データを加工機にて加工する
    15

    View full-size slide

  16. ICONIXプロセスから学ぶオブジェクト指向モデリング
    命令
    退避しておいた
    オブジェクトの再構築
    オブジェクトの一時退避
    (永続化)
    オブジェクト指向
    永続化データ
    変化後のオブジェクト
    オブジェクトによる加工
    オブジェクトが「何か」の主要素
    データはオブジェクトを
    再構築する為の情報
    データを元にオブジェクトを再構築
    「何か」を表しているのはオブジェクト
    オブジェクトを再構築する為にデータが存在する
    16

    View full-size slide

  17. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクト指向とデータ指向まとめ
    データ指向 オブジェクト指向
    主要素 データ オブジェクト
    永続化の構造 データの都合 オブジェクトの都合
    加工 データを変化させる オブジェクトを変化させる
    オブジェクト指向はオブジェクトを重視しているパラダイム
    17

    View full-size slide

  18. ICONIXプロセスから学ぶオブジェクト指向モデリング
    余談
    オブジェクト指向は銀の弾丸ではありません。
    上記にもある通り永続化の構造はオブジェクトの都合で設計されています。
    そして、多くの場合それは参照時の都合とは異なる事が多いです。
    (表示の為に頑張ってJoinしまくった経験は誰しもがあるはず!)
    オブジェクトを重要視する事によって生まれるデメリットも存在しています。
    それを解決する方法も様々ありますがそれは今回は触れません
    18

    View full-size slide

  19. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクトとモデル
    Object and Model
    19

    View full-size slide

  20. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクトの種類
    - 振る舞いのみを持つオブジェクト
    - 状態のみを持つオブジェクト
    - 状態と振る舞いを持つオブジェクト
    20

    View full-size slide

  21. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクトの種類
    - 振る舞いのみを持つオブジェクト
    - 状態のみを持つオブジェクト
    - 状態と振る舞いを持つオブジェクト
    ドメインオブジェクト
    Use Case Repository
    Controller
    Service
    Enum
    Value Object
    Etc …
    21

    View full-size slide

  22. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクトの種類
    - 振る舞いのみを持つオブジェクト
    - 状態のみを持つオブジェクト
    - 状態と振る舞いを持つオブジェクト
    ドメインオブジェクト
    Use Case Repository
    Controller
    Service
    Enum
    Value Object
    Etc …
    外部要因 内部要因
    ソフトウェアの外部の知識を
    表現する必要がある!!
    22

    View full-size slide

  23. ICONIXプロセスから学ぶオブジェクト指向モデリング
    システムを成立させる為の知識
    システムに取り込む外部知識
    システムを支える幹と表現をする枝葉。
    どちらも機能するシステム設計には重要
    23

    View full-size slide

  24. ICONIXプロセスから学ぶオブジェクト指向モデリング
    オブジェクト
    外部知識
    モデル
    クラス
    内部知識
    システム
    外部知識のモデル化
    外部に存在する知識を取捨選択し、
    システムに必要な知識のみを表現した
    モデルを作成する
    24

    View full-size slide

  25. ICONIXプロセスから学ぶオブジェクト指向モデリング
    前半まとめ
    - オブジェクト指向とはオブジェクトを重要視したパラダイム
    - オブジェクトはソフトウェアの内部と外部の要因で構成される
    - 外部要因をオブジェクト化する為に外部を抽象化した「モデル」が必要不可欠
    25

    View full-size slide

  26. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ICONIXプロセスを使用したモデリング
    26

    View full-size slide

  27. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ICONIXプロセスとは
    What`s ICONIX
    27

    View full-size slide

  28. ICONIXプロセスから学ぶオブジェクト指向モデリング
    https://speakerdeck.com/hirodragon112/iconix-in-ddd
    DDD時代に考えたいICONIXプロセス 明日から使えるDDDのためのユースケース
    駆動開発(ICONIXプロセス)
    https://qiita.com/hirodragon/items/e2330edc1d1a329d17f5
    28

    View full-size slide

  29. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ダグ・ローゼンバーグ
    マット・ステファン 著
    ユースケースからモデリング、実装、テストまで
    開発の一連の流れのやり方を説明したプロセス。
    ロバストネス分析が特徴。
    曖昧なユースケースをドメインモデルと紐づける事で
    堅牢なモデルの構築を行う
    ユースケース  実装
    29

    View full-size slide

  30. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ICONIXプロセス
    1. 要求
    機能要求、ドメインモデリング、振る舞い要求(ドラフト版ユースケース作成)、要求レビュー
    2. 分析 / 予備レビュー
    ロバストネス分析、ドメインモデル更新、論理名付け、ドラフト版ユースケース修正
    3. 予備設計レビュー
    4. 詳細設計
    シーケンス図作成、ドメインモデル更新、静的モデル整理
    5. 詳細設計レビュー
    6. 実装
    コーディングと単体テスト、結合テストとシナリオテスト、次フェーズ準備
    要求を実装へ落としていく
    30

    View full-size slide

  31. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ICONIXプロセス
    1. 要求
    機能要求、ドメインモデリング、振る舞い要求(ドラフト版ユースケース作成)、要求レビュー
    2. 分析 / 予備レビュー
    ロバストネス分析、ドメインモデル更新、論理名付け、ドラフト版ユースケース修正
    3. 予備設計レビュー
    4. 詳細設計
    シーケンス図作成、ドメインモデル更新、静的モデル整理
    5. 詳細設計レビュー
    6. 実装
    コーディングと単体テスト、結合テストとシナリオテスト、次フェーズ準備
    31

    View full-size slide

  32. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ICONIXプロセス
    ユースケース
    - アクター(利用者)とシステムとの対話
    - システムが何ができるかを表している
    - 不明瞭で曖昧、不完全で正しくない
    - 抽象的、具体的な実装には言及されていない
    利用者にとって本質的
    開発者にとっては本質的ではない
    32

    View full-size slide

  33. ICONIXプロセスから学ぶオブジェクト指向モデリング
    要求
    ユースケース図 ユースケース記述
    ドメインモデル
    ロバストネス分析
    要求、ユースケース図、ユースケース記述、ロバストネス分析
    を通じてドメインモデルを構築していく
    分析レビュー 要求レビュー
    33

    View full-size slide

  34. ICONIXプロセスから学ぶオブジェクト指向モデリング
    要求 →ドメインモデル
    - システムには社員アカウントの登録ができなくてはいけない
    - システムは勤怠を打刻できなくてはいけない
    - 勤怠にはコメントを入力できなくてはいけない
    - 管理者は一般ユーザーの勤怠を閲覧できなくてはいけない
    - 管理者は打刻の修正ができなくてはいけない
    - 一般ユーザーは打刻の修正ができてはいけない
    - ユーザーは有給の申請ができなくてはいけない
    - その際上長の承認をとらなくては有給は認定されない
    - 有給には残日数がありそれを越えた申請をする事ができてはいけない
    - 管理者は勤怠一覧をcsvでダウンロードできなくてはいけない
    34

    View full-size slide

  35. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ドメインモデリング
    - 勤怠
    - 勤怠一覧
    - 勤怠csv
    - コメント
    - 有給
    - 承認
    - 有給残日数
    - 管理ユーザー
    - 一般ユーザー
    レビュー
    35

    View full-size slide

  36. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ユースケースモデリング
    ユースケース図 ユースケース記述
    ユースケース図、ユースケース記述はドメインモデルの用語を使用して作成する。
    作成中や要求レビュー中に足りない用語が出た場合は見落としているドメインモデルとなる。
    その際はドメインモデルを更新する。
    36

    View full-size slide

  37. ICONIXプロセスから学ぶオブジェクト指向モデリング
    ロバストネス分析
    ロバストネス図
    ロバストネス図はユースケース記述と本質的には同じ情報を表す。
    ロバストネス分析により、自然言語で表現されたユースケース(アクターとシステムとの対話)
    がオブジェクトへと関連付けられより堅牢なドメインモデルの発見ができる。
    更新
    37

    View full-size slide

  38. ICONIXプロセスから学ぶオブジェクト指向モデリング
    後半まとめ
    - UMLの記法にこだわりすぎない。それよりも「何がおきているか」に注目する
    - ドメインモデルとは「用語集」
    - 全てのダイアグラムはドメインモデルを使用する
    - 各プロセスに時間をかけずに循環的にドメインモデルを育てる
    38

    View full-size slide

  39. ICONIXプロセスから学ぶオブジェクト指向モデリング 39

    View full-size slide

  40. ICONIXプロセスから学ぶオブジェクト指向モデリング
    @hirodragon
    40

    View full-size slide