アプリケーションをゼロから構築する場合、オブジェクト指向(OO)モデルまたはエンティティリレーションシップ(ER)モデルから始める必要がありますか?
アプリケーションをゼロから構築する場合、オブジェクト指向(OO)モデルまたはエンティティリレーションシップ(ER)モデルから始める必要がありますか?
回答:
アーキテクチャの決定を可能な限り遅らせるという原則を遵守するようにしてください。将来的には、問題のある領域について今よりも詳しく知ることができると考えています。したがって、今日の決定は疑わしいものです。
これと組み合わせるもう1つの良い原則は、要件の最もリスクの高い部分を最初に試すことです-簡単な部分を実行すると、危険な部分が別の方向に移動することがわかり、簡単なパーツをやり直す。ここでのリスクとは、どうすればよいかわからないことを意味します。
これら2つと、オブジェクト指向の観点から物事にアプローチしようとすることが多いので、最初にアプリケーションの最もリスクの高い部分のオブジェクト指向モデルから始めて、機能することができる最小限のコードを実装して、危険な要件。次に、必要に応じてOOモデルを拡張し、必要な機能を追加します。その間、SQLやNoSQL、フラットファイル、クラウドストレージなどを使用するかどうかの決定を完全に遅らせることができます。最終的には、リレーショナルがまったく必要ないことに気付く場合があります(ERモデルの必要性がなくなります)。
ERモデルはアプリケーションのデータがどのように永続化されるかを決定し、OOモデルは同じデータがメモリに格納される方法、またはアプリケーションの実行中に決定されます。したがって、データベーススキーマの設計(ERモデル)とクラス構造の設計(OOモデル)は関連する設計上の考慮事項であり、通常は同時に考えることもできます。実際、オブジェクトリレーショナルマッピング(ORM)ツールを使用している場合、ERモデルとOOモデルは同じものになる可能性があります。つまり、クラス(OOモデル)は、それ自体がERモデルを指定するように注釈を付けることができます。
ただし、設計する前に、ソフトウェアの実際の要件、使用目的、使用方法、および使用者について十分に理解していることを確認してください。多くの開発者は、製品で対処する必要があるニーズを完全に理解する前に、設計の決定について考え始め、最終的にアプリケーションの真の目的には不適切な設計になってしまいます。