Faut-il d'abord faire de la modélisation relation-entité ou de la modélisation orientée objet?

9

Lorsque je crée une application à partir de zéro, dois-je commencer par le modèle orienté objet (OO) ou le modèle entité-relation (ER)?

pphanireddy
la source

Réponses:

13

Vous voudrez peut-être essayer d'observer le principe de retarder les décisions architecturales aussi longtemps que possible. L'idée est que vous en saurez plus à l'avenir sur votre domaine problématique que vous ne le faites actuellement - donc, toutes les décisions que vous prenez aujourd'hui sont suspectes.

Un autre bon principe pour associer cela pourrait consister à essayer d'abord les parties les plus risquées de vos besoins - la pensée étant que si vous faites les parties faciles, alors trouvez que les parties risquées vous déplacent dans une direction différente, vous n'avez pas pour refaire les pièces faciles. Risque ici, ce qui signifie des choses dont vous ne savez pas comment les faire.

Compte tenu de ces deux, et étant donné que j'essaie souvent d'approcher les choses du point de vue OO, vous pouvez essayer de commencer par un modèle OO des parties les plus risquées de votre application, et mettre en œuvre le moins de code possible qui puisse fonctionner et qui satisfasse le exigences risquées. Ensuite, commencez à étendre votre modèle OO au besoin pour ajouter les fonctionnalités dont vous aurez besoin. Pendant tout ce temps, vous pouvez complètement retarder votre décision d'utiliser SQL ou NoSQL ou des fichiers plats ou un stockage cloud ou autre ... et vous finirez par trouver que vous ne voulez pas du tout relationnel (ce qui évite la nécessité d'un modèle ER).

Kyle Hodgson
la source
7

Le modèle ER dicte la persistance des données de l'application et le modèle OO décide de la façon dont ces mêmes données seront stockées en mémoire ou pendant l'exécution de l'application. Ainsi, la conception de schéma de base de données (modèle ER) et la conception de structure de classe (modèle OO) sont des considérations de conception liées et peuvent généralement être envisagées simultanément. En fait, si vous utilisez un outil de cartographie relationnelle-objet (ORM) , votre modèle ER et votre modèle OO peuvent être identiques. En d'autres termes, vos classes (modèle OO) peuvent être annotées de telle manière qu'elles spécifient elles-mêmes le modèle ER.

Avant de concevoir, cependant, assurez-vous d'avoir une très bonne idée des exigences réelles du logiciel, à quoi il sera utilisé, comment il sera utilisé et qui l'utilisera. De nombreux développeurs commencent à réfléchir aux décisions de conception avant de bien comprendre les besoins auxquels le produit doit répondre et se retrouvent avec une conception qui ne convient pas au véritable objectif de l'application.

CFL_Jeff
la source
+1 pour identifier la différence entre les 2 types de modélisation. Je ne suis pas entièrement d'accord pour dire que vous pouvez penser aux 2 modèles simultanément. De plus, certains fans OO considèrent que vos modèles OO et ER ne devraient pas toujours être les mêmes. Cependant, un modèle OO peut être utilisé comme base de la conception de la base de données, mais cette transformation est un peu délicate.
NoChance
@EmmadKareem Vous avez raison, il n'est pas toujours approprié de penser simultanément aux deux modèles. Je parlais en référence à l'idée d'utiliser un ORM et d'annoter des classes pour que la conception du modèle ER soit intégrée dans le modèle OO, pour ainsi dire. Certaines personnes choisissent de développer des applications de cette manière, qui implémente essentiellement OO et ER simultanément.
CFL_Jeff
Ne confondez pas votre modèle de domaine avec un modèle de données - Ne confondez pas un objet (qui représente une seule instance) avec une table de base de données (qui contient une collection de choses)
Narender Parmar