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

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

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

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

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

26e25726fc9da2f1e1f88c7be665407d?s=128

hiro@miraito

August 21, 2020
Tweet

Transcript

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

  2. ICONIXプロセスから学ぶオブジェクト指向モデリング 自己紹介 林 宏勝 Twitter : @hirodragon112 株式会社ミライトデザイン CEO https://miraito-inc.co.jp/

    株式会社 Jocy CTO https://mezon.jocy.jp/ 主に上流から下流まで色々やるサーバーサイドエンジニア オブジェクト指向設計とアジャイル開発が大好きです 2
  3. ICONIXプロセスから学ぶオブジェクト指向モデリング 自己紹介 Object-Oriented Conference 2020 主催 書籍「ドメイン駆動設計入門」レビュアー MEZON(メゾン)/美容定額サービス オブジェクト指向勉強会「ペチオブ」主催 3

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

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

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

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

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

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

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

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

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

    ~指向の、~を重視する、~向きの オブジェクトを重視したパラダイム 12
  13. ICONIXプロセスから学ぶオブジェクト指向モデリング データ指向とオブジェクト指向 Data-Oriented - Object-Oriented 13

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

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

    データを加工機にて加工する 15
  16. ICONIXプロセスから学ぶオブジェクト指向モデリング 命令 退避しておいた オブジェクトの再構築 オブジェクトの一時退避 (永続化) オブジェクト指向 永続化データ 変化後のオブジェクト オブジェクトによる加工

    オブジェクトが「何か」の主要素 データはオブジェクトを 再構築する為の情報 データを元にオブジェクトを再構築 「何か」を表しているのはオブジェクト オブジェクトを再構築する為にデータが存在する 16
  17. ICONIXプロセスから学ぶオブジェクト指向モデリング オブジェクト指向とデータ指向まとめ データ指向 オブジェクト指向 主要素 データ オブジェクト 永続化の構造 データの都合 オブジェクトの都合

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

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

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

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

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

    Case Repository Controller Service Enum Value Object Etc … 外部要因 内部要因 ソフトウェアの外部の知識を 表現する必要がある!! 22
  23. ICONIXプロセスから学ぶオブジェクト指向モデリング システムを成立させる為の知識 システムに取り込む外部知識 システムを支える幹と表現をする枝葉。 どちらも機能するシステム設計には重要 23

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

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

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

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

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

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

     実装 29
  30. ICONIXプロセスから学ぶオブジェクト指向モデリング ICONIXプロセス 1. 要求 機能要求、ドメインモデリング、振る舞い要求(ドラフト版ユースケース作成)、要求レビュー 2. 分析 / 予備レビュー ロバストネス分析、ドメインモデル更新、論理名付け、ドラフト版ユースケース修正

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

    3. 予備設計レビュー 4. 詳細設計 シーケンス図作成、ドメインモデル更新、静的モデル整理 5. 詳細設計レビュー 6. 実装 コーディングと単体テスト、結合テストとシナリオテスト、次フェーズ準備 31
  32. ICONIXプロセスから学ぶオブジェクト指向モデリング ICONIXプロセス ユースケース - アクター(利用者)とシステムとの対話 - システムが何ができるかを表している - 不明瞭で曖昧、不完全で正しくない -

    抽象的、具体的な実装には言及されていない 利用者にとって本質的 開発者にとっては本質的ではない 32
  33. ICONIXプロセスから学ぶオブジェクト指向モデリング 要求 ユースケース図 ユースケース記述 ドメインモデル ロバストネス分析 要求、ユースケース図、ユースケース記述、ロバストネス分析 を通じてドメインモデルを構築していく 分析レビュー 要求レビュー

    33
  34. ICONIXプロセスから学ぶオブジェクト指向モデリング 要求 →ドメインモデル - システムには社員アカウントの登録ができなくてはいけない - システムは勤怠を打刻できなくてはいけない - 勤怠にはコメントを入力できなくてはいけない -

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

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

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

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

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

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