<< 実践 ICONIXプロセス : コメントは危険な兆候 | main | 実践 ICONIXプロセス : コードを書く視点 >>

実践 ICONIXプロセス : ドメインモデルの実装

ICONIXプロセスでは、イテレーションとかの定義はありません。
しかし、基本的には、ユースケースが最小の開発単位で、ユースケースパッケージが大きな開発単位だと思います。
「ユースケース駆動開発実践ガイド」の開発例も、こういう単位ですね。

ユースケース単位の開発の前に、ユースケースパッケージとかの単位で、準備すべき作業があります。それが、ドメインオブジェクトの実装です。

ドメインモデルのクラスは、テーブル、画面表示、ドメインクラスとして実装します。

テーブルとデータ

だいたいのドメインクラスは、Entity クラスで、永続化の対象ですね。つまりデータベース構築が必要。
ドメインモデルの実装の第一ステップは、テーブルの作成と、テストデータの作成です。

テーブルは、ドメインモデルからデータモデルを作って、DDL文を自動生成すれば、簡単に実装できます。
この段階で、初期テストデータも生成すべきです。データベースを構築するということは、空っぽの入れ物をつくることではなく、必要なデータを用意することです。

テストデータも開発物ですから、初期のデータセットを、しだいに改良・発展させていくというインクリメンタルな開発モデルが良いと思います。

ただし、初期データの段階から、現実のデータやテスト用途を丁寧に考慮したテストデータの設計と実装をやりましょう。

また、テストデータの設計と実装は、テーブル設計、つまりドメインの設計のレビュー活動としても重要です。テストデータの設計過程で、データモデルの不備や不整合を発見することはよくあります。

テーブルは自動生成できちゃっています。ここで余った時間を、テストデータの設計と実装に振り向けましょう。
実データも、ドメインオブジェクトの実装の方法の一つです。
ある意味では、もっとも雄弁に、そのドメインオブジェクトを表現したものです。

画面表示(CSS)

個々の画面は、ユースケース単位の開発で実装します。その前に、CSSを準備します。
CSSは、画面の基本構成とドメインモデルを参考に作成します。

画面の基本構成とは、ヘッダー、ナビゲーション、メインコンテンツ、サブコンテンツ、フッターなど、画面のレイアウトの視点で定義したオブジェクトですね。

これらの体裁を、CSS で定義しておきます。

たいせつなのは、ドメインモデルのオブジェクトごとの体裁指定も、CSSですること。

一覧(テーブル)用の体裁、という考え方ではなく、書籍の一覧の体裁、会員の一覧の体裁、書籍明細の体裁、ちおうように、ドメインオブジェクトごとの体裁指定をCSSで用意するということです。

CSS のコードも、ドメインモデルと同期すべき対象です。

CSS で、Booklist というようにセレクタにドメインクラス名を使います。
結果として、XHTML でも、class 属性に、ドメインクラス名が登場します。

ドメイン駆動設計(DDD)の ユビキタス言語 ですね。実装のあちこちに、どこにでも、ドメインクラス名が使われる。
ドメイン駆動を実践するということは、こういうことだと思っています。
Eric Evans も、重要なドメイン駆動パターンをひとつだけ選ぶとすると、ユビキタス言語だと言っていますね。

ドメインクラス

一番狭い意味でのドメインオブジェクトの実装ですね。

Enterprise Architect などのモデリングツールを使えば、簡単に自動生成できますね。
自動生成ができるように、念いりにモデルを作成し、レビューすることが大切です。

コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< July 2017 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
  • 番号より名前。 ニーモニックコードより名前。 【パターン】
    師子乃 (03/10)
  • Smart UI が優れている?
    masuda220 (03/10)
  • Smart UI が優れている?
    kagehiens (03/09)
  • オブジェクト指向プログラミングの教え方?
    masuda220 (12/05)
  • オブジェクト指向プログラミングの教え方?
    ZACKY (12/04)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    kompiro (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    JHashimoto (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (02/28)
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM