4

私たちは、一から設計しなければならない巨大なサービス指向の多層アプリケーションに取り組んでいます。次に、プログラミングを開始し、最初のブロックを組み立てる必要があります。

問題は、どこから始めるかです。より明確なビューを提供する永続的なデータ モデルを設計することから始めるべきだと提案する人もいます。これは良いアプローチですか?

Suirtimed の編集

ここにはアジャイル文化はあまりありません。これは、WCF、SQL Server、Entity Framework (ドメイン オブジェクトの POCO ジェネレーターを使用)、ASP MVC、および Workflow Foundation を使用する SOA スタイルのプロジェクトです。私たちは 4 人の開発者で構成されるチームです。かなり熟練した(しかし専門家ではない)。

4

4 に答える 4

6

私が常に従おうとしている幅広い全体的なアプローチは、ドメインモデルを設計することから始めることです。これは「ユビキタス言語」であり、ビジネスオブジェクトと概念を定義し、ビジネスロジックを含み(後で使用する場合)、一般にシステムのさまざまな部分で使用される共通言語になります。

アイデアは、関係するすべての人が理解する(または少なくとも理解できる)必要があるということです。たとえば、他の部門のマネージャーの中には、リレーショナルデータベースや、自分の部門のデータをそこに保持することについて何も理解しているとは限りません。しかし、彼は自分の部門のビジネスプロセスを理解しています。彼らの言葉、彼らの概念、彼らの相互作用など。遍在する言語は、グループが共有する共通の基盤です。

このプロセスの間、あなたはあなたの心の前にあなたの依存関係を保つべきです。最大のものは通常、データの永続性です。ドメインモデルが一般に永続性を無視するか、依存関係を無視するという、ある種の黄金の夢があります。関心の分離を目的とするのは良いことです。ただし、真の依存関係の無知は、あなたを追い詰める可能性があります。深刻なパフォーマンスの問題やアーキテクチャの問題が発生し、後で多くの再設計が必要になる場合があります。

そのため、ドメインモデリングから離れて、永続性(および、使用する必要のある外部サービスや統合する必要のあるサードパーティアプリケーションなどの他の外部依存関係)について考えることがあります。ドメインをモデル化するときは、モデルが必要なすべてのもので適切に機能することを確認してください。依存関係の制限に対応するために、あちこちで遍在する言語について少し妥協する必要があるかもしれません。

基本的に、データベースを設計する前にドメインモデルを設計します。ただし、そのプロセス中にデータベースを忘れないでください。

于 2010-12-29T14:38:20.740 に答える
2

データベースはエンタープライズアプリケーションを結合する重要な要素になるため、最初にデータベースから開始するか、少なくともアプリケーションの設計と同時にデータベースを作成することをお勧めします。データベースの構造をアプリケーションに依存しないでください。オブジェクト指向ではなく、データの整合性、パフォーマンス、セキュリティを考慮して設計する必要があります。少なくとも第3正規形のデータベース設計から始めます。

データモデルの設計は、パフォーマンスとデータの整合性にとって重要です。そして、後で再設計するのはもっと難しいことです。さらに、エンタープライズ製品の場合、最初から設計する必要があるレコード監査など、データベースにのみ存在するものが必要になります。おそらく、レコードに誰が変更を加えたのか、どのような変更が行われたのか、どのアプリケーションから変更されたのかを知りたいと思うでしょう。これは、不正なデータ変更をロールバックし、不正な変更を引き起こした問題の原因となったアプリケーションを特定するのに非常に役立ちます。

于 2010-12-29T14:44:54.847 に答える
1

完全にゼロから設計している場合は、そうです。データの外観を定義できるという利点があります。

私が言えるのは、私の経験から、できるだけ多くのデータ構造/ビジネスロジックを事前に設計しておくことが役立つということです。

アプリケーションに深く入り込むと、データを変更する必要がある場合にすべてを再調整することが難しくなります。データはどれだけ準備しても変更されるため、これらの変更を事前に最小限に抑える必要があります。

個人的には、そうです、できるだけ多くのデータ設計を邪魔にならないようにしましょう。カートを馬の前に置くことはできません。

于 2010-12-29T14:34:22.907 に答える
1

通常、データを格納するために使用されるエンティティの一部を初期化するために、いくつかのユースケースから始めます。その後、データベースモデリングを実行し、特にエンティティ間の関係を探します。

ベースデータベースモデルが存在する場合は、プロトタイプを開発し、プロトタイプにできるだけ多くのユースケースを含めるようにします。

于 2010-12-29T14:39:10.330 に答える