More Related Content
PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月) PDF
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ PDF
PDF
PDF
PDF
ドメイン駆動設計のための Spring の上手な使い方 PDF
What's hot
PDF
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する PDF
PDF
強いて言えば「集約どう実装するのかな、を考える」な話 PDF
PDF
PDF
PDF
PDF
PDF
PDF
KEY
PDF
PPTX
PDF
PDF
PPT
PDF
オブジェクト指向プログラミングのためのモデリング入門 PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版) PDF
Similar to アジャイルなソフトウェア設計を目指して
PDF
オブジェクト指向による変更容易性の高いソフトウェア設計技法 PDF
PDF
AgileJapan2010 官公庁でも取り組み始めたアジャイル! 山形県庁 PDF
AgileJapan2010 官公庁でも取り組み始めたアジャイル! 山形県庁 PDF
PDF
なぜアジャイルなのですか?改めて考察するウォーターフォールとの違い PDF
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423 PPT
PDF
PDF
PDF
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0 PDF
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011 PDF
PDF
プロエンジニアになるための「アジャイル開発」再入門 PDF
PDF
PDF
AJ2010_20100409_maegawasensei PPTX
Application Development Oveview PDF
Devlove2012 どうしたら良いシステムが作れるのか PDF
More from 増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述 PDF
PDF
PDF
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer PDF
PDF
PDF
PDF
PDF
DDD sample code explained in Java PDF
PDF
PDF
PDF
PDF
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる PDF
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル PDF
PDF
アジャイルなソフトウェア設計を目指して
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
開発のスタイル 技法やドキュメント 関心の焦点モジュール構造
機能分割駆動
三階層の機能一覧/機能詳細
部門/業務/職務の分解
アプリケーション層
トランザクション
スクリプト
データモデル駆動
ER図
テーブル定義書
CRUD分析
データソース層
データベーススクリプト
スマート Entity
ワークフロー・
ユースケース駆動
アクテビティ図
ユースケースモデル
ユースケース記述
アプリケーション層
トランザクション
スクリプト
画面/API 駆動
(インタフェース駆動)
ワイヤフレーム
画面一覧/画面遷移
API一覧/API定義
プレゼンテーション層
スマートUI
ファットコントローラ
開発のスタイルとモジュール構造
どの開発スタイルでも、データ処理の手続き単位のモジュールになる
(モジュール=ソースコードファイルの分割単位)
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
値オブジェクトとは?
Fact の表現
数値、時間、場所、識別番号、識別名称、…
オブジェクトのフィールド変数(インスタンス変数)とメソッドの引数
ビジネスとして適切な値の範囲を定義する
Rule (計算ロジックや判定ロジック)の置き場所
Factを使う計算や判定をメソッドとして記述する
Factと持つオブジェクトに、関連するロジックを集める
Goal 知りたいこと(計算結果、判定結果)の表現手段
知りたいことを表現した型(値の種類)を設計する
メソッドの返す型として使う
- 43.
値オブジェクトの分類表
単一の値 from-to [from-to, … ]
数
値
金額型
Amount, Money
金額範囲
x円以上 y円未満
金額範囲のコレクション
価格帯
数量型
Quantity, NumberOfXxx
数量範囲
m人以上 n人以下
数量範囲のコレクション
数量別割引率
時
間
日付型
DueDate, XxxDate
期間
開始日 - 終了日
期間のコレクション
シーズン
時刻型
HourTime, XxxTime
時間
開始時刻 – 終了時刻
時間のコレクション
時間帯
空
間
地点型
Point
接続
Path:出発点 – 到達点
接続のコレクション
Route [Path,…]
地域型
Area, Zone
-
地域のコレクション
階層、fuzzy、重複、…
参考: アナリシスパターン 基本型
- 44.
- 45.
- 46.
計算の種類 説明、メソッド例 結果の型
等値判定isEqual( other ) , notEqual( other ) boolean / enum
大小判定 greaterThan( other ), lessThan( other ), … boolean / enum
加算・減算 同じ型同士の計算 同じ型
乗算 同じ型同士の乗算は意味がないことが多い 別の数値型
除算 同じ型の除算と、異なる型の除算では、意味が異なる 別の数値型
境界 Max, Min の存在 同じ型(の固定値)
列挙 prev(), next() が可能な集合 (循環が可/不可) 同じ型
文字列表現 その値の標準的な文字列表現 toString() 文字列
文字列からの生成 標準的な文字列表現からのオブジェクト生成 parse() 同じ型
どんな計算が必要か、値の種類ごとに検討する
計算の意図を、結果の型とメソッド名で説明する
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
attendance.Attendance 勤怠
attendance.AttendanceStatus 勤怠状況
attendance.Recorded勤務記録有無
attendance.TimeRecords 勤務実績一覧
attendance.TotalWorkTime 総勤務時間
attendance.WorkMonth 勤務月
contract.Contract 従業員契約
contract.Contracts 従業員契約一覧
contract.ContractStartingDate 契約開始日
contract.ContractStatus 契約状態
contract.ContractWage 契約給与
contract.ContractWages 契約給与一覧
contract.HourlyWage 時給
contract.MidnightHourlyExtraWage 深夜時給割増額
contract.OverTimeHourlyExtraWage 深夜時給割増額
contract.WageCondition 給与条件
employee.ContractingEmployees 契約中従業員一覧
employee.Employee 従業員
employee.EmployeeNumber 従業員番号
employee.MailAddress メールアドレス
employee.Name 氏名
employee.PhoneNumber 電話番号
legislation.DailyOvertimeWork 時間外労働
legislation.ExtraPayRate 割増率(%)
legislation.Midnight 深夜
legislation.MidnightExtraRate 深夜割増率
legislation.OverTimeExtraRate 時間外割増率
payroll.PaymentAmount 支払い金額
payroll.PaymentWorkTime 支払い対象時間
payroll.Payroll 給与
payroll.Payrolls 給与一覧
payroll.PayrollStatus 給与ステータス
timerecord.ActualWorkTime 勤務時間実績
timerecord.bindingtime.BindingTime 拘束時間
timerecord.bindingtime.DaytimeBindingTime 日中拘束時間
timerecord.bindingtime.MidnightBindingTime 深夜拘束時間
timerecord.breaktime.BreakTime 休憩時間合計
timerecord.breaktime.DaytimeBreakTime 日中休憩時間
timerecord.breaktime.MidnightBreakTime 休憩時間(深夜)
timerecord.DaytimeWorkTime 日中勤務時間
timerecord.EndTime 勤務終了時刻
timerecord.MidnightWorkTime 深夜勤務時間
timerecord.OverWorkTime 時間外勤務時間
timerecord.StartTime 勤務開始時刻
timerecord.TimeRange 勤務の開始と終了
timerecord.TimeRecord 勤務実績
timerecord.WorkDate 勤務日付
timerecord.WorkTime 勤務時間
amount.Amount 金額
amount.Percentage 率(割増や税などの金額に掛けられるもの)
amount.RoundingMode 端数処理
date.Date 日付
date.DayOfWeek 曜日
date.Month 月
date.Year 年
date.YearMonth 年月
time.ClockTime 時刻を時分単位で表す
time.ClockTimeRange 開始時刻と終了時刻を表現する(時刻間の時間間隔を返す
time.Hour 時間(数)
time.HourAndMinute x時間y分
time.Minute 分(数)
time.QuarterHour 15分単位の時間
time.QuarterRoundClockTime 15分単位の時刻
time.QuarterRoundClockTimeRange 15分単位の時刻
給与計算に関するFact-Rule-Goalを表現したクラス群=ビジネスルール用語集
(ソースコードから自動生成したドキュメント)
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
VETRO
ビジネス
メッセージ
Event 通知、Document送付
Query 問い合わせ、Command指示
Validation
妥当性検証
メッセージ内容の妥当性を検証する
データ形式、必須属性、値範囲、…
Enrich
情報付加
メッセージに含まれたIDなどから、関連する情報
を収集するルール(ex. 顧客ID->顧客購買履歴)
Translate
情報導出
付加された情報を元に、新たな情報を導出する
ルール (ex. 購買履歴 → 顧客ランク )
Routing
分岐判定
導出された情報を元に、適切なオペレーションに
分岐させるルール ( ex. 顧客ランクごとの対応 )
Operation
通知/記録
通知ルール:誰に何を通知すべきか?
記録ルール:どこに何を記録すべき?
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.