MENU

『ユースケース駆動開発実践ガイド』1,2章 まとめ

はじめに

先日エヴァンス本を読み終わり、最近『ユースケース駆動開発実践ガイド』を読み始めました。 この本を選んだ理由としては下記の2点です。

  • エヴァンス本を読んで、ドメインモデルとコードを一致させることが大事だということがわかったが、そもそも適切なモデルの作り方がわからない
  • ドメインモデル・ユースケース図を元に実装するというのがどういうことなのか、実際に体験しながら学びたい

やはり読みっぱなしだと頭に残らないので、今回も自分なりにまとめたり、疑問点を書き出しながら読み進めていきます。 あくまで個人の学習メモなので、わかりづらいところ、誤っているところがあると思います。

第1章 ICONIXプロセス

ICONIXプロセスはユースケースを元に、ドメインモデリングから実装・テストまでの一連の開発の流れを示すもの。

出典:ユースケース駆動開発実践ガイド

→ よって、ICONIXプロセスはアジャイルPJによく適合する


ICONIXプロセスは下記の流れで作業が進められる。(詳細は個々の章で説明される)

  1. 要求
    1. 機能要求:システムは何をできるのか定義
    2. ドメインモデリング:PJの全員に、明確な用語で問題領域を理解させる
    3. 振る舞い要求:ユーザーとシステムがどのように対話するか図式化する
    4. マイルストーン1:要求レビュー
  2. 分析/予備レビュー
    1. ロバストネス分析ユースケースをオブジェクトに関連付ける
    2. ユースケースロバストネス図を書きつつ、ドメインモデルを更新する
    3. ユースケースを動かすために必要な、すべてのコントローラに名前を付ける
    4. 最初のドラフト版ユースケースを書き直す
  3. マイルストーン2: 予備設計レビュー(PDR)
  4. 詳細設計
    1. シーケンス図の作成:クラスに振る舞いを割り当てる
    2. ドメインモデルの更新(ドメインオブジェクトに「操作」を追加する)
    3. 静的モデルの整理
  5. マイルストーン3: 詳細設計レビュー(CDR)
  6. 実装
    1. コーディングと単体テスト
    2. 統合テストとシナリオテスト:晴れの日と雨の日のシナリオでテストする
    3. 開発の次ラウンドに向けた準備:次のイテレーション開始前に、モデルとコードを同期させる

第2章 ドメインモデリング

ドメインモデルとは

プロジェクトで使われる単語について、単語間の関係をグラフィカルに表現したもの。プロジェクトの単語集

なぜユースケースの前にドメインモデルなのか

  • ユースケースは抽象的に書かれるべきと言われることが多い
  • しかし、ユースケースから分析と設計の結果を導き出したいのであれば、ユースケースは現実に基づき、設計するシステムに近いものであるべき(オブジェクトモデルの用語を使って書かれるべき)
  • よって、ユースケースを書く前にドメインモデルを書く必要がある

ドメインモデリングガイドライン

  • 現実世界のオブジェクトに焦点を合わせる
  • 汎化・集約関係を使う
  • 最初のドメインモデリングにかかえる時間は2時間に限定する
  • 問題領域中の主要な概念を中心にクラスを構成する
  • ドメインモデルデータモデルは別物
    • RDBのテーブルは、様々なものとの関係を持つ
    • それに対してクラスは、データと振る舞いが比較的小さくまとまっていることが良い設計の条件になる
  • オブジェクトとデータベースのテーブルを混同してはいけない
    • オブジェクトは、何かのインスタンスを表したもの
    • テーブルは、何かの集合を表したもの
  • ドメインモデルをプロジェクトの用語集として使う
  • ユースケースを書く前にドメインモデルを書く
  • 最終的なクラス図がドメインモデルと合致することは期待しない
  • ドメインモデルにはGUI固有の部品クラスを配置しない
    • ドメインモデルは純粋に問題領域に焦点を当てるべき

高レベルの要求から最初のドメインモデルを引き出す

ドメインモデルを1から作成する時は、「システムは~しなければならない」という形式の、抽象度の高い要求からスタートすることが多い

  • そのような要求から名詞・名詞句を抽出する形で、ドメインクラスを抽出していく作業を行う
  • 抽出した名詞リストから、似たような単語を識別し、除去(一つの単語に統一)してしまう
  • 残った単語の内、外部システムはアクターとして扱う
  • あるクラスが別のクラスの「一種」なのであれば、それは汎化関係で表す

→ 上記の作業を行うことで、最初のドメインクラスのプロトタイプが出来上がる

感想

  • エヴァンス本と比べるとものすごい読みやすい。
  • 今まで、「ユースケースから正確にコードを書き起こすのって可能なの...?」とぼんやり疑問に思っていたが、その答えがこの本で見つかりそう。
  • 何もない状態からのドメインモデルの作り方がすごい理解しやすかった。

参考