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

DDD時代に考えたいICONIXプロセス/ICONIX in DDD

DDD時代に考えたいICONIXプロセス/ICONIX in DDD

DDD をより駆動させるための ICONXプロセスとの付き合い方を紹介します。

BPStudy#151〜オブジェクト指向、モデリング、設計 LT大会[リモート開催]
2020/03/30

hiro@miraito

March 30, 2020
Tweet

More Decks by hiro@miraito

Other Decks in Programming

Transcript

  1. DDD時代に考えたいICONIXプロセス
    BPSTUDY#151〜
    オブジェクト指向、モデリング、設計 LT大会
    @hirodragon

    View Slide

  2. DDD時代に考えたいICONIXプロセス 2
    いつも時間内におさまりきらなくてごめんなさい

    View Slide

  3. DDD時代に考えたいICONIXプロセス 3
    Today's Topic
    ICONIX in the DDD era
    My Assumptions / Prerequisites
    Looking for clues on DDD modeling
    I will talk about
    What`s ICONIX ?
    How to Use ICONIX in DDD
    I will NOT talk about
    What`s DDD
    ICONIX Detail

    View Slide

  4. DDD時代に考えたいICONIXプロセス 4
    My assumptions / Prerequisites
    Looking for clues on DDD modeling
    DDD
    ドメインを運用者と開発者がコミュニケーションをとりながら「モデル」育てる
    そして、そのモデルをソフトウェアとしてコードで表現する為の設計手法。
    戦略設計
    ドメインエキスパートと共にユビキタス言語を使いながら
    モデルを育てる
    戦術設計
    ドメインを表現したモデルをコードに落とし込む実装パターンやテクニック。
    またはその考え方

    View Slide

  5. DDD時代に考えたいICONIXプロセス 5
    My assumptions / Prerequisites
    Looking for clues on DDD modeling
    DDD
    ドメインを運用者と開発者がコミュニケーションをとりながら「モデル」育てる
    そして、そのモデルをソフトウェアとしてコードで表現する為の設計手法。
    戦略設計
    ドメインエキスパートと共にユビキタス言語を使いながら
    モデルを育てる
    戦術設計
    ドメインを表現したモデルをコードに落とし込む実装パターンやテクニック。
    またはその考え方
    ここ難しくないですか?

    View Slide

  6. DDD時代に考えたいICONIXプロセス 6
    要件定義 > 基本設計 > 詳細設計 > 実装 >
    UT > ITa(ITb) > (ST) > UAT
    一般的なシステム開発の流れ

    View Slide

  7. DDD時代に考えたいICONIXプロセス 7
    要件定義 > 基本設計 > 詳細設計 > 実装 >
    UT > ITa(ITb) > (ST) > UAT
    一般的なシステム開発の流れ
    戦略設計ってどこからどこまで??
    なんとなくこの辺ぽい

    View Slide

  8. DDD時代に考えたいICONIXプロセス 8
    I will talk about
    What`s ICONIX ?
    How to Use ICONIX in DDD
    今日はその辺のあまり話題にあがらない部分をフォーカスして、
    プロセスの例を紹介しようというお話です。

    View Slide

  9. DDD時代に考えたいICONIXプロセス 9
    自己紹介
    林 宏勝
    Twitter : @hirodragon112
    株式会社ミライトデザイン CEO
    株式会社 Jocy CTO
    OOP/DDD/CQRS/ICONIX/Agile/
    PHP/RDRA/ペチオブ/OOC
    らへんが好きなサーバーサイドエンジニア
    上流から下流まで色々やります。

    View Slide

  10. DDD時代に考えたいICONIXプロセス 10
    ICONIXプロセス

    View Slide

  11. DDD時代に考えたいICONIXプロセス 11
    ダグ・ローゼンバーグ
    マット・ステファン 著

    View Slide

  12. DDD時代に考えたいICONIXプロセス 12
    ICONIXプロセス
    ユースケースからソースコードを作るプロセス

    View Slide

  13. DDD時代に考えたいICONIXプロセス 13
    ICONIXプロセス
    ユースケース
    分析者は抽象的かつ本質的、技術に依存せず実装から独立したユースケースを書く
    序文より
    アクター目線でこのシステムが何ができるのかを表している。
    当然裏でどのような言語、技術が使用されているかはスコープではない

    View Slide

  14. DDD時代に考えたいICONIXプロセス 14
    ICONIXプロセス
    ユースケース(開発者目線)
    不明瞭で曖昧、不完全で正しくない
    序文より
    システムがやりたい事はわかる。
    ただし、抽象的で具体的な方法論は記されていない。

    View Slide

  15. DDD時代に考えたいICONIXプロセス 15
    ICONIXプロセス
    ICONIXプロセスはそのギャップを埋める為のプロセス
    本質的ではあるが不明瞭なユースケースを具体的な実装に変換する為のフレームワーク

    View Slide

  16. DDD時代に考えたいICONIXプロセス 16
    論理的には「理論」と「実際」に違いはない。
    しかし、実際には違いがある

    View Slide

  17. DDD時代に考えたいICONIXプロセス 17
    ICONIXプロセス
    1. 要求
    2. 分析 / 予備レビュー
    3. 予備設計レビュー
    4. 詳細設計
    5. 詳細設計レビュー
    6. 実装

    View Slide

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

    View Slide

  19. DDD時代に考えたいICONIXプロセス 19
    要件定義 > 基本設計 > 詳細設計 > 実装 >
    UT > ITa(ITb) > (ST) > UAT
    一般的なシステム開発の流れ
    ICONIXは開発の大半をカバーする

    View Slide

  20. DDD時代に考えたいICONIXプロセス 20
    ICONIX in the DDD era

    View Slide

  21. DDD時代に考えたいICONIXプロセス 21
    戦術的DDD
    → わかりやすい
    戦術設計はオブジェクト指向のパターンなので開発者が理解しやすい
    調べれば答えが見つかりやすい
    集約, Entity, ValueObject 等々

    View Slide

  22. 戦略的DDD
    → 難しい(く感じる)
    実装やツールの操作方法とは違い、実際のプロダクトの中にのみ答えがある。
    調べても正解がわからない。
    だから難しく感じる
    DDD時代に考えたいICONIXプロセス 22

    View Slide

  23. DDD時代に考えたいICONIXプロセス 23
    例えば

    View Slide

  24. DDD時代に考えたいICONIXプロセス 24
    戦略設計
    ドメインエキスパートと共にユビキタス言語を使いながら
    モデルを育てる
    モデルを育てるって?
    - ドメインモデリングって具体的にどうやる?
    - ドメインエキスパートと話せばモデルを作れる?
    ここが解決しない限りDDDなんてそもそも難しいよね?

    View Slide

  25. DDD時代に考えたいICONIXプロセス 25
    ICONIX in the DDD era
    (3回目)

    View Slide

  26. DDD時代に考えたいICONIXプロセス 26
    MDD
    DDD
    TDD
    RDRA

    要件定義
    分析設計
    戦略設計
    戦術設計
    UT
    UCDD
    (ICONIX)
    これがないと、いき
    なり戦略設計をして
    も精度が悪い

    View Slide

  27. DDD時代に考えたいICONIXプロセス 27
    ICONIXプロセス
    1. 要求
    機能要求、ドメインモデリング、振る舞い要求(ドラフト版ユースケース作成)、要求レビュー
    2. 分析 / 予備レビュー
    ロバストネス分析、ドメインモデル更新、論理名付け、ドラフト版ユースケース修正
    3. 予備設計レビュー
    4. 詳細設計
    シーケンス図作成、ドメインモデル更新、静的モデル整理
    5. 詳細設計レビュー
    6. 実装
    コーディングと単体テスト、結合テストとシナリオテスト、次フェーズ準備
    ICONIXの分析部分を取り入れるだけでも
    より効率的にDDDを回せるのでは

    View Slide

  28. DDD時代に考えたいICONIXプロセス 28
    そろそろ時間なくなってますよね

    View Slide

  29. DDD時代に考えたいICONIXプロセス 29
    要求
    ドメインモデリング (概念モデル DDDの文脈とは粒度が違うので注意)
    - プロジェクトの用語集
    - プロジェクトで実際に使われるすべての単語を辞書にする
    - 用語の洗い出しをしながら関連も洗い出す
    - システム目線ではない。現実世界に焦点を置く
    - ユースケースを洗い出す前に行う
    ※ ユースケース駆動実践ガイドより引用

    View Slide

  30. DDD時代に考えたいICONIXプロセス 30
    要求
    ユースケースモデリング (振舞要求)
    - 機能要求かをユースケースとドメインオブジェクトに割り当てる
    - 通常ケース代替ケースを考慮する
    - 関連に時間をかけない。何がおきているかにのみ着目する
    - アルゴリズムではない。アクターとシステムの対話ステップ
    ※ ユースケース駆動実践ガイドより引用

    View Slide

  31. DDD時代に考えたいICONIXプロセス 31
    要求
    要求レビュー
    - ドラフトユースケースが出来たタイミングで顧客の要求に合致しているかを確認する
    - ドメインモデリングが顧客のわかる言葉(ユビキタス言語)で作成されているか確認できる
    - スコープを明確にする
    - ユースケースから全ての要求が追跡できるかを確認する
    - ユーザーの望みがユースケースに網羅されているかを確認する

    View Slide

  32. DDD時代に考えたいICONIXプロセス 32
    分析 / 予備レビュー
    ロバストネス分析
    - 分析でもあり設計でもある
    - ユースケースとオブジェクトを紐づける
    - 概念の発見
    - ユースケース記述からあいまいさを取り除く
    - ロバストネス分析中もユースケースの修正を行う
    - 関連線は気にしない
    - シーケンスではない
    ※ ユースケース駆動実践ガイドより引用

    View Slide

  33. DDD時代に考えたいICONIXプロセス 33
    分析 / 予備レビュー
    予備設計レビュー
    - ロバストネス図、ユースケース図、ドメインモデル図の辻褄があっているかを確認する
    - 代替コースが漏れていないかを確認する
    - 技術者以外(顧客等)双方が参加する

    View Slide

  34. DDD時代に考えたいICONIXプロセス 34
    分析 / 予備レビュー
    テクニカルアーキテクチャ
    - ここからでDDDの戦略設計に移行する
    - アーキテクチャ、パッケージ、コンポーネント等の選定
    - 要求をベースにアーキテクチャの選定ができる
    - 非機能要件等の考慮
    - テスタビリティ
    - コンテキストマップ

    View Slide

  35. DDD時代に考えたいICONIXプロセス 35
    ICONIXプロセスを一部取り入れる事により
    DDDはより駆動する

    View Slide

  36. DDD時代に考えたいICONIXプロセス 36
    @hirodragon

    View Slide