Tecnología y Synergix

Modelo de Dominio

Posted by: Iván Garcerant on: 10-07-08

Un Modelo de Dominio es un artefacto de la disciplina de análisis, construido con las reglas de UML durante la fase de concepción, en la tarea construcción del modelo de dominio, presentado como uno o más diagramas de clases y que contiene, no conceptos propios de un sistema de software sino de la propia realidad física.

Los modelos de dominio puede utilizarse para capturar y expresar el entendimiento ganado en un área bajo análisis como paso previo al diseño de un sistema, ya sea de software o de otro tipo. Similares a los mapas mentales utilizados en el aprendizaje, el modelo de dominio es utilizado por el análista como un medio para comprender el sector industrial o de negocios al cual el sistema va a servir.

El siguiente diagrama es un pequeño ejemplo de Modelo de Dominio, en este caso, referido al Metro o sistema de transporte subterraneo de una ciudad cualquiera.

Fig. 1 – Ejemplo de Modelo de Dominio de un sistema de subterráneo

En este diagrama se ve que un Usuario del Metro tiene cero o más boletos, comprados estos en una maquina de Venta de Boletos; dicha maquina “crea” los boletos los cuales son consumidos en un viaje, el cual tiene una estación de origen y otra de destino. Finalmente se ve que una estación tiene una o más maquinas de venta así como empleados de limpieza, seguridad y operaciones.

Es posible capturar un mayor grado de detalle en uno de estos modelos; corresponde al analista decidir cuanto detalle va a ser necesario y hasta donde llegar a modelar. El objetivo es capturar lo necesario para comprender donde va a funcionar el sistema que estamos diseñando y esto demanda una cantidad distinta de detalles cada vez.

El modelo de dominio puede ser tomado como el punto de partida para el diseño del sistema. Esto es así ya que cuando se realiza la programación orientada a objetos, se supone que el funcionamiento interno del software va a imitar en alguna medida a la realidad, por lo que el mapa de conceptos del modelo de domino constituye una primera versión del sistema.

En la aproximación llamada Desarrollo Guiado por Modelos al modelo de dominio se le conoce como Modelo Independiente del Computador o CIM, por sus siglas en inglés. El CIM es el que da inicio al proceso de desarrollo y ocupa el rol, tanto de modelo de requisitos como de modelo análisis.

Por otra parte, cuando se sigue una aproximación Centrada en Casos de Uso como RUP/UP, el modelo de dominio es utilizado como entrada en la tarea análisis de los casos de uso en la construcción de los llamados escenarios de análisis.

Es decir, y con esto quiero concluir, que el modelo de dominio ocupa un rol protagonico en el desarrollo moderno de software y constituye un artefacto que vale la pena tener en nuestros proyectos.

11 comentarios para "Modelo de Dominio"

[...] Llamamos Modelo de Dominio a la representación de los conceptos de importancia en el área de la aplicación, así como de [...]

[...] efectos de la tarea análisis de caso de uso, en su versión con modelo de domino, dichas instancias van a pertenecer a alguna de las clases descritas en el modelo de dominio. El [...]

[...] diagrama de clases puede ser utilizado para presentar la vista estática del modelo de dominio, del modelo de diseño, o bien, del detalle de la implementación de un sistema en un lenguaje de [...]

[...] ejecute el flujo alternativo. De ser posible la condición ha de estar expresada en términos del modelo de dominio de forma tal que facilitar su traducción al sistema [...]

Saludos, una pregunta en el modelo de dominio , como puedo representar una clase controlador?

Saludos Luis.

El modelo de dominio es una representación de los conceptos clave de un área o problema. Generalmente se utiliza para representar aspectos del mundo real o físico, por lo cual esta libre de cualquier detalle de implementación.

Esto lo que quiere decir, es que si te refieres a “controlador” por una clase que contiene un algoritmo, pero que modifica los datos contenidos en otras clases, digamos en un contexto de un desarrollo con el patrón MVC, entonces simplemente la respuesta es que en el modelo de dominio no van a aparecer los controladores.

Desde el punto de vista del patrón de diseño MVC, tanto el modelo como las vistas y claro esta, los controladores, son estructuras de implementación y no, un intento de representación de los conceptos directamente presentes en el problema, en el “dominio del problema”.

La diferencia viene a ser relevante a la hora de construir el modelo. Verás Luis, el modelo de dominio puede ser construido en presencia del cliente (stakeholders) y ser entendido perfectamente por este, ya que SOLO contiene conceptos directamente tomados del conocimiento del problema que se esta intentando especificar.

Si se intenta introducir el concepto de un patrón de diseño, seguramente va a ser necesario explicar este en términos abstractos al cliente, y en este punto, seguramente lo vamos a confundir. Nuestros clientes no van a ser necesariamente capaces de expresar sus ideas en términos de un patrón de diseño particular. Hacer esto es parte del diseño, trabajo que justamente nos han contratado a nosotros.

Si por otra parte te refieres a un concepto “controlador” tomado de la especificación y que esta presente en la visión del cliente, pues claro que se hace como cualquier otro concepto: con una clase en el diagrama de clases.

Si nos fijamos un momento en la aproximación guiada por modelos al desarrollo de software (MDA/MDD) veremos que el modelo independiente de plataforma (PIM) si puede contener elementos como los controladores a los que te refieres, pero el modelo independiente del computador (CIM) no puede hacer esto. Dado que el Modelo de Dominio es un símil del CIM, espero que quede claro que el concepto de controlador no va a tener cabida aquí.

Espero que me haya podido dar a entender. Pienso que todo el asunto es un poco abstracto y que quizás merezca una respuesta más detallada que la que te he dado aquí. Si así lo consideras prudente, puedes preguntar de nuevo para darte mayores detalles. Y por favor, pregunta de nuevo en caso que haya entendido mal a que te has referido por “clase controlador”.

Saludos ivan, mira yo tenia entendido que el modelo de dominio si es una representacion de los objetos del mundo real que intervienen en el negocio, de hecho estoy haciendo uno para un trabajo escolar y cuando se lo enseñe a mi profesor me dijo, que me faltaban la clase controlador por que si no no indico donde el comienza el sistema y como interactua con esos objetos, asi que me sorprendi cuando me dijo esto

Buscando lei en el libro uml y patrones de craigman, que el controlador es un objeto con responsabilidades, que representa:
un sistema global, dispositivo o subsistema,
un escenario de caso de uso que tiene lugar el evento del caso de uso
entonces mi pregunta seria en que diagramas podria estar representado un controlador?podria ser en el diagrama de clases?

Saludos.

Si quieres representar el concepto al que te refieres en el modelo de Dominio pues sí, sería en un diagrama de clases.

Ahora que no estoy de acuerdo en la necesidad de tener “una clase controlador” ya que me parece que es un concepto de implementación.

Quizás podamos reconciliar ambos puntos de vista si hablamos entonces de un Modelo de Dominio para capturar al negocio, junto con un Modelo de Diseño, que expresa la solución técnica al problema planteado. Ambos son muy similares, pero uno esta libre de conceptos de implementación en tanto que el otro se enfoca justamente en estos.

Por otra parte, yo utilizo los llamados “Escenarios de Análisis” para representar la interacción entre los objetos, según lo dicho en un caso de uso. Si miras mi “Ejemplo de Análisis de Caso de Uso” veras a que me refiero.

Entonces en conclusión, veo que tenemos diferencias de método con tu profesor. Dado que estas en clase seguro te conviene hacer lo que él te indica, pero con miras a tener una presentación coherente y completa del método pienso que tenemos puntos que resolver antes de adoptar su idea de “Clase Controlador” dentro del modelo de dominio.

¿Le has mostrado esta página a ver que piensa? Quizás sea útil para llegar a un mejor entendimiento de ambas partes.

El módelo de dominio sólo contiene objetos relacionados con entidades que modelan el problema en cuestión, el uso clases controladoras se utiliza al momento de realizar un modelo de clases, que bien el modelo de dominio es una base para iniciarlo.

Hola Ivan, Me podrias indicar ojala con algun ejemplo la diferencia entre el modelo de Negocio y el modelo de Dominio porque yo los veo muy parecidos.
saludos

Saludos Claudia.

Tampoco les veo diferencia. Si uno tiene un montón de conceptos relacionados y los pone en un diagrama de UML se obtiene un modelo. Si dichos conceptos son sobre el negocio se da pie a hablar de un modelo de negocio así que ciertamente sería igual al modelo de dominio.

Sin embargo hay un choque en la terminología que utilizo. Yo llamo “Modelo de Negocio” a la forma en que la empresa de desarrollo gana dinero con su trabajo. Del modelo de negocio se desprende la llamada “Apuesta Económica” que es básicamente la decisión de proceder con los gastos del proyecto ya que según se ha analizado, es posible obtener beneficios de este.

Así que al menos en los limites de este blog, el Modelo de Dominio expresa los conceptos propios del área que va a utilizar el sistema, en tanto que el Modelo de Negocio habla de como el proyecto se financia.

Escribe un comentario

ClustrMaps