¿Deberíamos hacer modelado de relación de entidad o modelado orientado a objetos primero?

9

Al crear una aplicación desde cero, ¿debería comenzar con el modelo orientado a objetos (OO) o el modelo de entidad-relación (ER)?

pphanireddy
fuente

Respuestas:

13

Es posible que desee tratar de observar el principio de retrasar las decisiones arquitectónicas el mayor tiempo posible. La idea es que sabrás más en el futuro sobre tu dominio del problema que lo que sabes ahora, por lo que cualquier decisión que tomes hoy es sospechosa.

Otro buen principio para combinar esto podría ser tratar de intentar primero las partes más arriesgadas de sus requisitos: la idea es que si hace las partes fáciles, entonces descubre que las partes arriesgadas lo mueven en una dirección diferente, no tiene rehacer las partes fáciles. Arriesgado aquí significa cosas que no estás seguro de cómo debes hacerlas.

Dados estos dos, y dado que a menudo trato de abordar las cosas desde una perspectiva OO, primero puede intentar comenzar con un modelo OO de las partes más riesgosas de su aplicación e implementar una cantidad mínima de código que pueda funcionar que satisfaga el requisitos arriesgados Luego, comience a expandir su modelo OO según sea necesario para agregar la funcionalidad que va a necesitar. Mientras tanto, puede retrasar por completo su decisión sobre si usar SQL o NoSQL o archivos planos o almacenamiento en la nube o lo que sea ... y eventualmente puede encontrar que no quiere nada relacional (obviando la necesidad de un modelo ER).

Kyle Hodgson
fuente
7

El modelo ER dicta cómo se conservarán los datos de la aplicación, y el modelo OO decide cómo se almacenarán esos mismos datos en la memoria o mientras la aplicación se está ejecutando. Por lo tanto, el diseño del esquema de la base de datos (modelo ER) y el diseño de la estructura de la clase (modelo OO) son consideraciones de diseño relacionadas y, por lo general, incluso se puede pensar al mismo tiempo. De hecho, si está utilizando una herramienta de mapeo relacional de objetos (ORM) , su modelo ER y su modelo OO pueden ser uno y el mismo. En otras palabras, sus clases (modelo OO) pueden ser anotadas de tal manera que ellas mismas especifiquen el modelo ER.

Sin embargo, antes de diseñar, asegúrese de tener una muy buena idea de los requisitos reales del software, para qué se usará, cómo se usará y quién lo usará. Muchos desarrolladores comienzan a pensar en las decisiones de diseño antes de comprender completamente las necesidades que debe abordar el producto, y terminan con un diseño que no es adecuado para el verdadero propósito de la aplicación.

CFL_Jeff
fuente
+1 para identificar la diferencia entre los 2 tipos de modelado. No estoy totalmente de acuerdo en que pueda pensar en los 2 modelos al mismo tiempo. Además, algunos fanáticos de OO consideran que sus modelos OO y ER no siempre deben ser iguales. Sin embargo, puede usarse un modelo OO como base del diseño de la base de datos, pero esta transformación es un poco complicada.
NoChance
@EmmadKareem Tienes razón, no siempre es apropiado pensar en los dos modelos al mismo tiempo. Estaba hablando en referencia a la idea de usar un ORM y anotar clases para que el diseño del modelo ER se integre en el modelo OO, por así decirlo. Algunas personas optan por desarrollar aplicaciones de esta manera, que esencialmente implementa OO y ER simultáneamente.
CFL_Jeff
No confunda su modelo de dominio con un modelo de datos: no confunda un objeto (que representa una sola instancia) con una tabla de base de datos (que contiene una colección de cosas)
Narender Parmar