大規模な基幹システムの再構築にドメイン駆動設計を適用する取り組みの簡単な紹介です。
基幹システムの変更を楽で安全にする2022年1月17日有限会社システム設計 増田
View Slide
基幹システムを作り変える大手損害保険会社の基幹システム• 開発費用の総額1200億円?年商2000億円規模の通販会社の基幹システム• 開発費用 数十億円 × 数回• 年間IT費用 数十億円/年
共通のテーマ• ビジネスの要求に応えるシステム変更スピード向上• ソフトウェア開発コスト(初期・拡張)の削減• 修正コストの削減
NRIでの実証実験現行システム実績 今回の試作初期開発開発規模 183 千行 97 千行設計書ボリューム 153本1枚(規定集・マニュアルを使用)変更要求への対応モジュール数 追加3 修正65 追加1 修正2変更規模 5 千行 9 百行設計書ボリューム 26 枚0 枚(業務マニュアル改訂版を使用)「NRI ドメイン駆動設計」で検索すると実験の報告書をダウンロードできます。
実際にどう進めているか
現場でやっていることwhy の合意形成「良い設計は悪い設計より変更が楽で安全」・悪い設計で失っているものの言語化・数値化・良い設計で得られるものの言語化・数値化how の認識合わせ・ビジネスルール(計算判断ロジック)中心の構造・事実の記録中心のテーブル設計・一覧網羅ではなく濃淡づけとカテゴライズwhat の体験学習・ドメインオブジェトを実際に書いて動かす・イミュータブルなテーブル設計で実際に動かす・一覧の分類、要点の絞り込み、ノイズの除去
変更を楽に安全にするための設計方針ドメインモデルパターン組み立て思考で開発イミュータブルデータモデルトランザクションスクリプトパターンミュータブルデータモデル分解思考で開発
ドメインモデルパターンへの切り替えトランザクションスクリプトパターン ドメインモデルパターン入出力中心(画面+データベース操作) ビジネスルール(計算判断ロジック)中心手続き的なプログラミング(データクラスと機能クラス)オブジェクト指向プログラミング(ロジックとデータのカプセル化)外部設計書 ⇒ 内部設計書 規程集・業務マニュアル⇒クラス設計入出力項目定義⇒入出力処理の記述 計算判断ロジックの記述⇒必要な入出力
イミュータブルデータモデルへの切り替えミュータブルデータモデル イミュータブルデータモデル状態の変更と参照が中心 事実の記録が中心SELECT FOR UPDATEINSERTDELETE大きなテーブル 小さなテーブル制約はずし/制約のがれ制約の徹底(主キー・外部キー・一意・NOT NULL)
開発のやり方の切り替え分解思考で開発 組み立て思考で開発最終形を確定 最終形を仮置き機能一覧・画面一覧・テーブル一覧 主要な要素・全体の枠組み・構造の軸分業・分担 協業・補完標準化・均一化 重みづけ・濃淡・取捨選択
手を動かして習得・納得・手ごたえ
実際に手を動かして習得する/実証するクラス定義using Javagithubissue/projectテーブル定義using DDL詳細設計書概念ER図テーブル定義書WBS・ガントチャート機能一覧