タグ

DDDと設計に関するJGEEMのブックマーク (9)

  • いまどきの分析設計パターン10選

    JJUG CCC 2024 Spring 複雑な業務ロジックに立ち向かうための実践技法 【初級編】 ①値の種類 ②範囲型 ③階段型 【中級編】 ④状態遷移 ⑤入出金履歴と残高 ⑥未来在庫 【上級編】 ⑦セット演算 ⑧割合と端数 ⑨決定表 ⑩経路探索

    いまどきの分析設計パターン10選
  • Software Designドメイン駆動設計に参加 - Qiita

    前書き 業後に以下のDDDイベントに参加してきた。 その議事録とアウトプットとしてここに残す。 画像の上2つが自分が書いたものである。 ドメイン駆動設計概要とユビキタス言語 コンテキストマップとコアドメイン 全体像を俯瞰したコンテキストマップ→その上でのどこにモデリングコストかけるか策定。コアドメインの時間経過に伴う変化(動き)、境界の位置含めて。詳細での検証の上で演繹的に前提となるマクロな境界の位置を修正。 それに対して参加者の方から、 ①コンテキストマップからのコアドメインの定義という順番(トップダウン寄り) ②コアドメイン先に定義してからのコンテキストマップ作成という順番(ボトムアップ寄り) どちらなのか? という良い質問があった。 どっちかというとコアドメインを最初に特定して、それを支える業務サービスとして他のドメインがあるため、わりとボトムアップ式にコンテキストマップ作成という話

    Software Designドメイン駆動設計に参加 - Qiita
    JGEEM
    JGEEM 2024/03/15
    コアドメインの見つけ方が言語化されていて良い。コアドメイン特定→周囲との関係を図示も同意。「BAでの概念モデリングをAA層にてイベントソーシングで相似形に実装すること」を再読しながら噛み締めたい
  • 7つの設計原則とオブジェクト指向プログラミング - ソフトウェア設計を考える

    設計原則はよい設計をするための指針です。 では、よい設計とはなんでしょうか? もっとも重要なソフトウェア品質は発展性 ソフトウェアの発展性がビジネス価値を生む 発展性をうみだす7つの設計原則 モジュール化 モジュール化の2つのアプローチ 型によるモジュール化 手続き的なモジュール化 関心の分離 関心の4象限 入出力と計算・判断の分離 業務の関心と実装の詳細の分離 もっとも複雑な関心事(ビジネスロジック)の分離を徹底する カプセル化と抽象化 カプセル化 ビジネスロジックのカプセル化 抽象化 データ抽象 ビジネスロジックとデータ抽象 高凝集と疎結合 凝集度 結合度 隠された結合性の問題 定義の一点性 見た目が同じコード 7つの設計原則の学び方 コードの実装例 ドメインオブジェクト設計のガイドライン 実践ガイドとして使える 設計の考え方を理解するための もっとも重要なソフトウェア品質は発展性

    7つの設計原則とオブジェクト指向プログラミング - ソフトウェア設計を考える
    JGEEM
    JGEEM 2024/02/10
    ブクマしてなくてむしろこっちが驚いた
  • DDDにおけるドメイン層オブジェクト設計の基本方針[ドメイン駆動設計] - little hands' lab

    株式会社ログラスの松岡(@little_hand_s)です。 ドメイン層のオブジェクトを設計する際に、重要な基方針があります。 ドメインモデルの知識を対応するオブジェクトに書く 常に正しいインスタンスしか存在させない この2つを守ると、非常に保守性の高いコードにすることができます。 以下、詳細に解説します。 ドメインモデルの知識を対応するオブジェクトに書く ドメイン知識(ルール/制約)を表現する実装を、ドメイン層のオブジェクトに寄せていきます。 この判断は、「ドメインモデル図に書かれた吹き出しの内容が、どの層で実装されているか」という基準に基づき行います。 この基準はコード設計の指針として非常に役立ちます。 設計の良し悪しというのはさまざまな基準があるため、レビューをしていてもいわゆる「俺の考えた最強の設計」同士が戦ってしまうことがあります。 しかし、「ドメイン知識はドメイン層に書く」と

    DDDにおけるドメイン層オブジェクト設計の基本方針[ドメイン駆動設計] - little hands' lab
    JGEEM
    JGEEM 2024/01/27
    ドメインモデルの知識を対応するオブジェクトに書く/常に正しいインスタンスしか存在させない。常に正しいインスタンスとするには、生成条件の強制/ミューテーション条件の強制が必要。
  • 実録レガシーコード改善 / Working with Legacy Code: the True Record

    2024/01/15(月) 12:00 〜 13:00 t-wadaさんが後世に残したい、実録レガシーコード改善 https://findy.connpass.com/event/304101/ テストコードが無いコードを引き継いだところからはじまる、実際に2018年に行った受託開発案件のエピソードとコードをプロダクトオーナー(引き継ぎ前のコードを書いた人)の許可を得て使用しています。登場するコードは全て物、登場するデータは講演用の架空のものです。

    実録レガシーコード改善 / Working with Legacy Code: the True Record
    JGEEM
    JGEEM 2024/01/15
    いつもながらためになる。というかもはや読んでて面白いしエキサイトするまである。実コード使ったライブコーディングもさぞ、、とりあえず1/22が楽しみ
  • アーキテクチャの進化はドメインイベントが起点になる - KAKEHASHI Tech Blog

    こちらの記事はカケハシ Advent Calendar 2023 Part2の24日目の記事になります。 adventar.org はじめに 反復的な開発は、変更容易性の高いソフトウェアが不可欠です。ソフトウェア開発の経験がある方なら、デリバリ後の洞察や市場環境の変化から、新しい機能の追加やアーキテクチャの進化の必要性に直面したことが一度はあるでしょう。 私自身、要求分析手法やSOLID原則等の技法を取り入れ、変更容易性に対応する多くのプロジェクトに参加しました。しかし、どれだけ優れた手法や技法を持っていても、変更が難しい要求が出てくることは避けられません。その際、「過去の出来事」を正確に記録していれば、後から見返して問題解決が容易だったと感じることがよくあります。 ドメイン駆動設計(DDD)では、「過去に起こった出来事」を表現するドメインモデルを「ドメインイベント」と呼びます。変更容易性

    アーキテクチャの進化はドメインイベントが起点になる - KAKEHASHI Tech Blog
    JGEEM
    JGEEM 2023/12/25
    ちょうど悩んでるところだったので非常に助かる。感謝。とりあえず熟読しつつチームにも布教しよう。今年のアドベントカレンダーはDDD関連が豊作で嬉しい
  • チュートリアルでDDD体験: ドメインモデルの成長を紹介 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」

    プロダクト技術部の川口です。 3年間、ビッグローブ光といった固定回線のインフラ部門に所属していましたが、今年の4月に BIGLOBE の基幹システムのリニューアルを推進していく部署に異動することになりました。 所属するチームでは、ドメイン駆動設計(DDD)で開発しています。 チームにジョインすると開発チュートリアルをやることになっており、そこで IntelliJ や Spring Boot での開発の仕方を学んだり、チュートリアルを通して DDD を学んだりします。 今回は、DDD のチュートリアルで実際に作成したドメインモデルがどういう風に成長していったかについて紹介します。 勤怠管理アプリ チュートリアル 初期ドメインモデル 中期ドメインモデル 後期ドメインモデル 学んだこと、感想 勤怠管理アプリ チュートリアル お題は GitHub のパブリックリポジトリに公開されています。 ht

    チュートリアルでDDD体験: ドメインモデルの成長を紹介 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」
  • 集約はイベントから考えると考えやすい|かとじゅん(j5ik2o)

    チュートリアルでDDD体験: ドメインモデルの成長を紹介 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」 僕もこのドメインで振る舞い中心のモデリングをしてみた。実装は可能なモデルを書いてみましたが、今回は細かい実装の話はありません。 イベントを抽出まずイベント(起こった事実)から考えました。日々の勤怠で何が起きるのだろう。出勤したり退勤したり休憩したりと打刻するのは間違いない。システムが何か命令(コマンド)を受理したらこういうイベントが発生するはず。 「出勤した」イベントには、誰がいつ出勤したかを説明する事実が記載されている。「退勤した」や「休憩を開始した」や「休憩を終了した」なども同じ。あと、打刻間違いの修正もあるので「打刻を修正した」もある。ちょっと荒削りだがこんな印象。 出勤した 退勤した 休憩を開始した 休憩を終了した 打刻を修正した ちなみに

    集約はイベントから考えると考えやすい|かとじゅん(j5ik2o)
    JGEEM
    JGEEM 2023/11/30
    こちらも今さら。毎度参考にさせていただいております。ストーミングからモデルを起こすところで悩んでいたので実例を示していただき誠に有り難い。コマンド抽出する段階から抽象化を考え始めるんだな、、
  • 徹底解説マイクロサービス 〜マイクロサービスのメリット、デメリット、なぜマイクロサービスを選択するのか〜 /why do you choose microservices architecture

    JAWS UG 函館勉強会 Vol12 徹底解説マイクロサービス 〜マイクロサービスのメリット、デメリット、なぜマイクロサービスを選択するのか〜

    徹底解説マイクロサービス 〜マイクロサービスのメリット、デメリット、なぜマイクロサービスを選択するのか〜 /why do you choose microservices architecture
    JGEEM
    JGEEM 2023/10/04
    マイクロサービスにフックして組織やDDDに言及されてる。マイクロサービスは統廃合が難しいと言われる中でドメイン理解をしっかりしよう!は正論だが、モノリスからいかに切り出すか?の事例が欲しい
  • 1