Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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