このアプリケーションは、公立図書館の司書業務をサポートするソフトウェアです。
- 貸出と返却 ◎
- 書架の整理 △
- 選書と受入 〇
司書の役割や関心事を理解するための参考情報です。 アプリケーションの仕様を検討する時に、司書の業務の全体を理解することが役に立ちます。
- レファレンスサービス(相談) △
- リファレンスサービス(記録) -
- イベント(企画・運営・評価) -
- RDRA 2.0 ハンドブックを入手
- このリポジトリーをクローン
- Gradleタスク bootRunを実行(アプリケーションの起動)
- Gradleタスク jigReportを実行(設計ドキュメントの出力)
この実装例の内容を学ぶためのチュートリアルが公開されました。
図書館サンプルのチュートリアル
RDRA 2.0 ハンドブックのサンプル「図書館システム」の以下の業務を実装しています。
アプリケーションは、http://localhost:8080
でトップ画面を表示できます。
モデルベースの要件定義手法 RDRA2.0 ハンドブックのサンプル「図書館システム」の実装です。
- RDRA 2.0 ハンドブック (Kindle Unlimited会員は無償です)
JIGを使ってソースコードから設計ドキュメントを自動生成します。ドキュメントはbuild/jig に出力されます。
JIGドキュメントの生成には、 Graphviz のインストールが必要です。
ビジネスルールを中心に実装しています。
RDRA 2.0で可視化した以下のビジネスルールと関連するユースケース、画面、テーブルを実装しています。
- 貸出制限ルール
- 予約の状態遷移
以下の業務は未実装です。
- 蔵書管理(資料の注文と蔵書として登録する)
- 会員管理(会員の登録)
この図書館サンプルは、以下の考え方とやり方で実装しています。
- 三層構造 + ビジネスロジック
- 仕様の記述にプログラミング言語(Java,SQL,HTML)を使う
- 仕様の可視化にツール(JIG)を使う
ビジネスロジックを独立させるドメイン駆動設計のアプローチを採用しています。
RDRAの要件定義モデルと実装を、以下のように対応させています。
Spring MVCとMyBatisを使い、ドメインオブジェクトを中心に周辺の外部形式との双方向のマッピングを実現するアプリケーション構造を採用しています。
ソースコードから、JIGで自動生成したドメインモデルのパッケージ構成図です。
このモデルを中心に図書館アプリケーションを組み立てています。
開発手法として、要件定義・仕様化・実装の継ぎ目をなくすCCSR手法を採用しています。
この図書館サンプル実装は、CCSR手法の実践例として開発しています。
参考記事: 要件定義・仕様化・実装の継ぎ目をなくすCCSR開発手法
RDRA手法のモデリングツールとして、Enterprise ArchitectのRDRAアドインを使っています。
Javaで記述した内容を、俯瞰したり、一覧するためのツールです。
プログラミング言語で仕様を記述するCCSR手法を実践するために必須のツールです。
RDRAのモデル要素(左)、三層+ビジネスロジックの構造(中央)、JIGの出力ドキュメント(右)の対応関係です。
図の青背景でしめした、RDRAで可視化したビジネスルールをドメインモデルとして実装することが、このアプリケーションの中核です。
RDRA 2.0で可視化された内容と、実装された内容の対応は、以下のJIGドキュメントで確認できます。
- ユースケース複合図
- パッケージ関係図(depth4, depth5)
- 区分図と区分使用図
- メソッド呼び出し関係図
- 書籍:現場で役立つシステムの原則 ~変更を楽で安全にするオブジェクト指向の実装技法
- ドメインオブジェクトの設計パターン:設計ガイドライン
- オブジェクトと外部形式のマッピング技法の説明:CCSRオブジェクトマッピング