私が読んで見たすべてのドメイン駆動設計(DDD)は、費用と時間のかかる作業です。実際、Eric EvansやGreg Youngを含め、私が見たすべての人はDDDを使用しないと言いますを除いて「競争上の優位性」があります。その利点を見つけるために、ビジネスやTシャツに関するさまざまな議論に取り掛かります。それはいいです。これはビジネス上の決定であり、必ずしもDDDが適切であるとは限りませんが、DDDがそれを特定するのに役立ちます。
既製のソフトウェアを購入できないシステムの競争力のない側面について、企業は何をしますか?
たとえば、在庫プログラム。多くの企業が在庫プログラムを持っています。それらのほとんどは同じ機能を備えています。それらのほとんどと評判を分けるのはマーケティングです。 DDDの場合、これらすべてに競争上の優位性があることは知りません。
DDDはこれらのシナリオにどこに適合しますか? DDDの原則が好きなので、本当にDDDを使用したいのですが、支持者の注意事項を考えると、少なくとも私にとってはDDDはほとんど意味がないと感じています。
だから、私は他の設計方法論から始めたところにすぐに戻ります(それが悪いというわけではありません)。そして、DDDは原則に関するものであり、多くの「方法」がそうであるように、私は単語「方法論」を大まかに使用します。私はここで原則(ユビキタス言語など)のみをとることができますが、他のことはできません。
システムの競争優位領域を定義して適用できない場合、ドメイン駆動設計の代替として何を使用しますか?とにかくDDDを使用する必要がありますか?そのようではないようです。
私が本当に得られないのは、誰かがアナリストなどを使ってビジネスを理解していないときです。開発者は他にどのように書くべきかを知っていますか?それはDDDではありません。それは単なる常識です。
ここでは戦術について尋ねるのではなく、むしろ戦略(Wordを読んだ人もいるので)。
Vaughn Vernonの例 https://vaughnvernon.co/?p=879
Entity FrameworkとDDDについて言えば、「Entity Frameworkがエンティティをマッピングして、この競争の世界で違いを生むものに戻ることを許可するだけです:あなたの市場を区別するアプリケーション。」
DDDは世界の90%ではなく、マジッククアドラントだけのようです。
ロバートの求人のルール(3つのR)に従うのはどうですか?
メリットがコストを超える場合にのみ、ツールを使用してください。*
「競争上の優位性」だけが基準ではないことに注意してください。他にもたくさんあります。
ここに別のものがあります。ロバートの補充のルール。
クールエイドの水差し全体を必ずしも飲む必要はありません。
ツールキット全体から1つのツールが必要な場合もあります。 DDDの場合、多くの開発者は「ユビキタス言語」の概念からのみ利益を得ることができ、他のツールを学んだり利用したりしていません。
そして最後に、ロバートのベストプラクティスの法則:
「ベストプラクティス」などはありません。特定の要件を最も効果的に満たすものだけがあります。
ロバートのスケールの法則:
ボールピーンハンマーで十分な場合は、手持ち削岩機を使用しないでください。
*常に費用がかかります。
Redブック(DDDの実装)には、11ページにDDDスコアカードがあります。これは、DDDを検討する必要がある時期を認識するのに役立ちます。
例えば
つまり、ドメインがより複雑で変化するほど、DDDがもたらすメリットは大きくなります。軽量の代替手段は、おそらくコーディングのプロシージャスタイル(データベースストアドプロシージャ内またはコントローラアクション内のビジネスロジック)です。