Open4

基幹系システムとデータモデリング

Kazu1Kazu1

データモデリングでドメインを駆動する
――分散/疎結合な基幹系システムに向けて
https://gihyo.jp/book/2024/978-4-297-14010-6

帳簿

  • 日々の経済活動や取引の記録に使用される。
  • 財務状況や業績の追跡に役立つ。
  • 元帳、日記帳、買掛金帳、売掛金帳などが含まれる。
  • 資産、負債、資本、収入、費用などの財務情報を体系的に管理する。
    主な目的は異なるタイミングで実行される業務を紐づけること
    SOR(System Of Record)
    単に記録自体が目的ではなく、活動を指示・制御する手段として記録している

データモデリング

  • 帳簿をデザインすること
  • どのような形で情報を帳簿に記載するか設計することがビジネスモデルのデザインになる
    新規にデータモデリングする際のことに視点をおく

基幹系システム

  • 企業の活動を指示・制御することを目的とする情報処理システム
    • 必要になるのが帳簿
      2つの区分(この書籍固有の表現)
  • SoA(System of Actions):活動のシステム
  • SoM(System of Management):経営管理のシステム
    これらは異なる要因で変化するので、ソフトウェア設計で用いられる「関心の分離」の適用例
    例) 在庫の現物管理と適正在庫水準の維持は管理が異なる
Kazu1Kazu1

SoA

2階層に分かれる

  • 業務プロセス
    - 例)「販売管理業務」= 受注から出荷・請求・回収までの一連の業務の流れ、業務フロー
  • 業務機能
    • 例)受注・在庫・購買・請求回収・支払い / 管理

業務機能の分割は「残」に基づく

    • 受注残
    • 在庫残
    • 売掛金
    • 買掛金
      現場活動は残に駆動して回っている
      特定の残の解消に向けての仕事の単位が業務機能の最小単位として切り出すことが可能
      残を軸とするのは責任の所在を明確にするためでもある

SoM

3層構造

  • 下位層:現場に近い経営管理
    • SoaとSoMを接合するもの
      • 受注管理の業務機能に付随するSom
        • 受注先の信用ランクを踏まえた受注可否判定
        • 受注先の所在に基づく出荷元倉庫の決定
      • 売掛金管理の業務機能に付随するSom
        • 与信枠に基づく与信可否の判定
        • 滞留債権の把握
    • 異なる要因で繁華するのでSoAとSoMは切り離す設計へ
  • 中位層:業務分野別の計画管理
    • PDCA、MRP
  • 上位層:財務的な計画管理
    • 企業全体の活動調整・資源配分
Kazu1Kazu1

帳簿デザインの進め方

  • 手法
    1. 帳票/画面などのUI設計ベース
    2. DB設計ベース
    3. データモデルベース
    • データ中心の設計アプローチ

一般的なシステム設計

  • データベース設計(内)
    • プログラム設計(内)
      • UI設計(外)
      • 処理機能設計(外)
        データベース設計がプログラム設計に依存

データ中心アプローチ

  • データベース設計(内)
    • プログラム設計(内)
      • UI設計(外)
      • 処理機能設計(外)
  • データモデリング(外)
    プログラム設計がデータベース設計に依存(データベース設計をもとにプログラムを設計)
    外部設計=ユーザーが関知すること
    データモデルが永続化データ(データベース)に関するユーザーの関心事を扱う

UI設計ベースだけではなぜだめなのか
ここの画面や帳票は帳簿データを特定の視点からのみ表示するのが普通であり、画面・帳票は部分的である。
そのため帳簿データの構造自体を、画面・帳票から切り離した別の対象として設計する必要がある。

UI設計とデータモデリングの分離

  • ユースケースに依存しない帳簿デザインを追求する
    • ユースケースは複数存在するが、帳簿は単一
      • 業務の流れに対して横断的な要件を満たすために帳簿は存在する
        => 業務プロセスとユースケースに依存した不安定な画面と、ユースケースに依存しにくく安定的な帳簿のデザインは分離して考える方が良い
Kazu1Kazu1

基幹系システム設計のアプローチ

  1. UIベース
  2. DBベース
  3. データモデルベース
  • データ中心のアプローチ
  • データモデルで帳簿をデザイン

3の利点

  • 帳簿の内容と表示の設計を分離
    • 帳簿データ構造の設計がデータモデル
      • UIと切り離し、データモデルに構造を記載することで画面間の不整合を防ぐ
      • UI設計を楽にかつ整合性をもって、データモデル以降の設計を包括的に行えるようになる
    • ユースケースに依存しない帳簿デザインを追求できる
      • 帳簿デザインはなぜユースケース依存しない方が良いのか
        • 各部署や画面間で手段は異なるが、業務要件は共通であり、その横断的なユースケースの要件を満たすために帳簿が存在するため
        • 業務流れが表面的に変わっても、業務の要件は変わらないことが多いので、帳簿デザインも安定させることが可能な場合が多い

画面や帳票のデザインは、ユースケースに依存
帳簿の構造は、ユースケースに依存しない(業務要件(残)に依存)

データモデルは技術的関心ごとから分離する、ユーザーの関心ごとのみを扱う
データモデリングをDB設計の際にやってしまう、包括してしまうがなぜだめなのか?
それはDB設計には技術的関心ごとが混入するため

データモデリングはユーザーの関心ごとに集中
データモデリングをDB設計とは異なる設計としておくのは、帳簿デザインに関するユーザーの関心ごとに集中する場を設けたいから

データモデリング

  • UI設計と異なり、業務の特定場面でのデータの見え方やユースケースに依存しない
  • DB設計と異なり、技術的/実装的観点を含まない、ユーザー視点からの帳簿デザイン