2006-10-01から1ヶ月間の記事一覧

ユースケースコントローラをWFで作成してみる(2)

WF

ワークフローとその他のコンポーネントの関係および実装イメージが分かりやすいようにシーケンス図を記述。 アクターから「オーダユースケースコントローラ」に入ってくるのがシステム・サービスになる。ユースケースの処理シーケンスは「オーダユースケース…

ユースケースコントローラをWFで作成してみる(1)

WF

WFを利用してどのようなことが可能かいろいろ考えてみたい。 まずは、アプリケーションロジックの実装としてユースケースコントローラを考えてみる。 ユースケースのシナリオとしては以下の通り。単純なオーダ業務を想定。 顧客からのオーダを受注担当者がシ…

ドメインモデルのJOIN処理

DDD

ドメインモデルが使えないという指摘でよくあがるの1つとしてエンティティのJOIN処理がある。 主な指摘ポイントは、パフォーマンス面とJOIN処理の簡便さの2点であると思っている。 データ操作自体はRDBMSの得意分野なので基本的にはドメインモデルよりもい…

ドメインモデルとワークフロー

.NETのWFがもう少しでリリースされるが、どのような利用方法があるか。 ヒューマンワークフローやビジネスオートメーションの利用が考えられるが、ドメインモデルに関連して利用できないか。まずは、ドメインモデルからWFを利用する方法としては、エンティテ…

複数のエンティティをまたがるビジネスルールの実装

DDD

ビジネスルールを実装するとき、特定のエンティティで収まるであればドメインモデルでの実装は簡単。では、複数のエンティティにまたがるビジネスルール(以後複雑なビジネスルール)を実装する場合、どのように取り扱っていますか?多くの場合はビジネスル…

モデルの一般化のアイデア

モデルの一般化をどこですれば良いか、 クラス図などを眺めながら発見的に見つけたり、パターンを適用したりいろいろ考えられる。しかし、エンドユーザとの会話をしながらこのようなことは難しいかもしれない。そこでユーザとの会話で利用する台帳レベルでで…

ハンバーガショップの商品をモデリング(改訂)

いろいろ見直してみると、商品についてはカタログ(M1レベル)で、販売商品がインスタンス(M0レベル)で考えるのが良さそうなので再度改訂したいと思います。また、お買い上げの販売商品をもう少しベタベタなモデルにしてみました。 商品クラス 最初のモデ…

ベタベタなモデル

DDD

モデルを作成する時にベタベタでも構わないので、ビジネスで利用されている情報・ルールをそのまま写像したようなモデルを作成できればと考えている。これはモデルの要素を発見するのではなく、マップしていくイメージに近いものがある。(そういえば誰かが…

高負荷トランザクションでのドメインモデル

DDD

高負荷なトランザクションが予想される処理に対しては、パフォーマンス重視の処理方法が求められる。これには、以前DataMapperを最適化することでデータアクセスの効率を上げれることは書いた。更新系の場合、このデータアクセスの効率化以外にもうひとつ厄…

サンプルモデル

リアルなドメインモデルのサンプルって少ないな思っていたけど、リアルなERのモデルのサンプルも案外少ないですね。また、あっても単純化(手抜き)されているんだよな。説明用に単純化しているのはわかるけど、その除外しているところが知りたいんだよな。 …

開発標準は意思決定を減らす

開発標準やプロセスを導入する時に、「そんなものは役立たない」ということを意見は良くある。文書化など管理者向けのヘビーなものを押し付けれた場合、重い税金のように感じる。 しかし、開発標準にも多くのメリットがある。まずよく言われるのは大規模なチ…

IDが999のエンティティ

ダイアグラムを描いてみた。一時取引先IN購買がIDが999の取引先になる。 ついでに論理ERも描いてみた。冗長(JOINコストが影響する)と感じた場合は物理ERでサブタイプをまとめるなどすることになるが、購買と取引先の関係は元の論理ERのほうが分かり易いと…

エンティティの定義

DDD

手法によってエンティティの定義は違ってくるのだろうが、僕の利用している定義は以下のようなものだ。 ・ID(識別子)を持つ ・IDが同じであれば同じものとして扱う ・IDは不変である(IDは変わらない)IDの不変性についてはよく議論されているが、エンティ…

オブジェクト指向方法序説

ジェームスマーチンの古い本ですが、非常に良い本ですね。OOADはもちろんDOAの開発者でより深くデータの意味論を含めて考えたい方にお勧めです。 たとえば、イベントについては イベントとは状態の注目に値する変化であると定義して、以下のようなに分類して…

今日は通天閣まで行って来た

今日は自転車で久しぶりに街ポタ(ポタリング)をした。 自宅からキタ・ミナミを通って通天閣までいった。ミナミは高校まで良く遊んでいた場所なので懐かしかった。 建物や店などの多くは当時からだいぶ変わっていたが、ミナミ独特の匂いは相変わらず感じる…

サブタイプとロールタイプ

ER

ERを書くとき僕はサブタイプ表現は当たり前のように使っているのだが、一般的にはあまり使わないのかな?T字はサブタイプをきっちり分析するが、他はどううなんだろう。ERとサブタイプで検索するとTHも引っかかったからTHもあるのかな。それ以外の正規化・関…

ユニークなキーの生成

ER

サロゲートキーやIDなどは自動的に生成することを考える。これには、データベースの機能を利用してシーケンシャルなIDを生成させることが多い。でもこの方式では、複数のテーブルやDB間で保障はされない。 自動生成されたキーであれば変更されることはないと…

ハンバーガのお買い上げ

前回作成した商品をお買い上げするモデルを作成してみます。 概念モデル クラス図 グルーバル識別子をもつクラスだけで構成されるのでシンプルになっています。新しく、お買い上げと店舗の概念が追加されました。お買い上げの台帳分析は以下のようなものにな…

ハンバーガショップの商品はセミオーダー商品なのか?

ハンバーガショップのセット商品は、いろいろなアイテムを選択できる。このため、1つのハンバーガセットであっても、ドリンクがコーラやコーヒなどオプションが選べる、さらにサイズ変更のできたりする。これらのバリエーションを1つの商品IDで同一視すべ…

区分をテーブルするか?カラムにするか?

ER

これはサブタイプの実装をどうするかで変わるではと考えている。 多くの場合、区分はサブタイプを表している。サブタイプの実装をテーブルごとにするようにした場合、必然的に区分がテーブルになる。逆に、サブタイプを1つのテーブルで実装した場合、区分が…

ハンバーガショップの商品をモデリング(改訂)

前回のモデルはだめでした。orz 商品構成のパターンを表現しようと作成したモデルだったのですが、パターンだけ表現できれば良いと安直に商品構造の制約も構造として表現してしまいました。「セット商品_構成アイテム」クラスなんかがそれにあたります。結果…

ハンバーガショップの商品をモデリング

いろいろなものをモデリングしてみようということで、まずはハンバーガショップの商品をやってみました。 簡単にできるかな思っていたが思ったよりも大変だった。一様、セット商品のオプションの扱いやソースの種類の選択、グループ商品も対応しているつもり…

こんどのC#はすごいな(その2)

Haskellなどの関数型言語が少しブームになっていますが、次期C#にも関数型の思想が入ってくる。 それを応用すると遅延評価(lazy evaluation)などを自然*1に含めることができるらしい。 // Now, the parameters are functions that // can be used for calc…

トランザクションスクリプトのメリットは?

DDD

たぶん、現在最も利用されているビジネスロジックの実装方法はトランザクションスクリプトなんだろう。 なぜトランザクションスクリプトが好まれるのかな?単純に昔からこの方法だからかな? でもOOPバリバリの人でも業務アプリはトランザクションスクリプト…

ドメインモデルでサマリー帳票を作成の補足

DDD

前回の話はサマリー帳票を取り扱うときにデータ指向の処理をどのように取り扱うかを目的に説明しました。このため、あまりモデルの導出がテクニカルでなく、最終のモデルがパッと発見的にでてきているようなストーリになってしまったので最終的なモデルをど…

ドメインモデルでサマリー帳票を作成

DDD

日報や月報などの明細データをサマリーしたレポートを作成することは業務アプリケーションでは多い。このようなデータ集計が中心の処理をドメインモデルでどのように扱えばよいか考えてみたい。 まずは、元になるシナリオということで、目標とする帳票イメー…

ドメインモデルでどうやって一意制約チェックを実装するか

DDD

まずは、ナイーブなOO的な発想?で、全てのデータをメモリに読み込んでやる方法。これは基本的には難しいですよね。よっぽど少数のデータであればOKかも知れませんが。次は、ドメインモデルでやらないで、その手前の処理(入力チェックなど)で行う方法が考…

データベースの物理設計

アーキテクチャ設計を行う時にいろいろな方針を決めるようにしているのですが、データベースについても論理から物理に変換する基準を決定します。 僕らのチームではアプリケーションごとに以下の点について考えます。 非正規化をおこなってもよい基準 可変長…

あなたは、リソースに他のリソースのIDを含める派?含めない派?

ER

一般のERではイベントの中に関連するリソースのIDを含めますよね。リソースの中に他のリソースのIDを含めるかは、いろいろあるようで、T字の場合はリソース間では含めないで対照表を作成しますね。 この基準って案外あいまいになっているように感じています…

組織構造は親子構造か?

DDD

組織構造には親と子の関係がある。同じように注文と注文明細にも親子関係がある。これらは同じものなのか? ドメインモデルでは、一般的には注文と注文明細は集約関係で表現されるけど、組織構造は集約関係ではなく通常の関連であらわされることが多い。やっ…