Devemos fazer modelagem de relacionamento de entidade ou modelagem orientada a objetos primeiro?


Respostas:


13

Você pode tentar observar o princípio de adiar as decisões de arquitetura o maior tempo possível. O pensamento é que você saberá mais no futuro sobre o domínio do seu problema do que no momento - portanto, qualquer decisão tomada hoje é suspeita.

Outro bom princípio para combinar isso pode ser tentar primeiro tentar as partes mais arriscadas - o pensamento é que, se você faz as partes fáceis, descobre que as partes arriscadas o movem em uma direção diferente, você não tem refazer as partes fáceis. Arriscado aqui significa coisas que você não tem certeza de como deve fazê-las.

Dado esses dois, e como muitas vezes tento abordar as coisas da perspectiva do OO, você pode tentar começar primeiro com um modelo OO das partes mais arriscadas do seu aplicativo e implementar a menor quantidade possível de código que possa funcionar que satisfaça a requisitos de risco. Em seguida, comece a expandir seu modelo OO, conforme necessário, para adicionar a funcionalidade necessária. Durante todo o tempo, você pode adiar completamente sua decisão de usar SQL ou NoSQL ou arquivos simples ou armazenamento em nuvem ou qualquer outra coisa ... e você pode acabar descobrindo que não quer relacional (evitando a necessidade de um modelo de ER).


7

O modelo ER determina como os dados do aplicativo serão mantidos e o modelo OO decide como esses mesmos dados serão armazenados na memória ou enquanto o aplicativo estiver em execução. Portanto, o design do esquema do banco de dados (modelo ER) e o design da estrutura de classe (modelo OO) são considerações de design relacionadas e geralmente podem ser pensadas simultaneamente. De fato, se você estiver usando uma ferramenta de mapeamento objeto-relacional (ORM) , seu modelo de ER e seu modelo de OO podem ser o mesmo. Em outras palavras, suas classes (modelo OO) podem ser anotadas de forma que elas próprias especifiquem o modelo ER.

Antes de projetar, no entanto, verifique se você tem uma idéia muito boa dos requisitos reais do software, para que ele será usado, como será usado e quem o usará. Muitos desenvolvedores começam a pensar nas decisões de design antes de entenderem completamente as necessidades a serem tratadas pelo produto e acabam com um design inadequado para o verdadeiro objetivo do aplicativo.


+1 para identificar a diferença entre os 2 tipos de modelagem. Não concordo plenamente que você possa pensar nos dois modelos simultaneamente. Além disso, alguns fãs de OO consideram que seus modelos de OO e ER nem sempre devem ser os mesmos. No entanto, um modelo OO pode ser usado como base do design do banco de dados, mas essa transformação é um pouco complicada.
NoChance

@EmmadKareem Você está certo, nem sempre é apropriado pensar nos dois modelos simultaneamente. Eu estava falando em referência à idéia de usar um ORM e fazer anotações em classes para que o design do modelo ER seja integrado ao modelo OO, por assim dizer. Algumas pessoas optam por desenvolver aplicativos dessa maneira, que está implementando essencialmente o OO e o ER simultaneamente.
CFL_Jeff 13/03/12

Não confunda o seu modelo de domínio para um modelo de dados - não confunda um objeto (o que representa uma única instância) com uma tabela de banco de dados (que contém uma coleção de coisas)
Narender Parmar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.