Modelo de Dominio

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.

About these ads

, , , , , , , , ,

  1. #1 por luis el 25-10-08 - 11:37 am

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

    • #2 por I Ruiz el 27-01-10 - 11:31 pm

      Desde el la perspectiva del dominio, puedes identificar entidades de negocio a controlar o dar seguimiento, estas entidades Peter Coad las clasifiaca como memento intervalo y que según el patron de Modelo de dominio son objeto de un ciclo de vida.

      Mas que centrarte en obtener una clase (componente de Software) controladora, es necesario que durante el modelado de dominio, establescaz las entidades de negocio requeridas por algún escenario de negocio.

      • #3 por pepe el 13-03-12 - 11:48 am

        :o

  2. #4 por Iván Garcerant el 26-10-08 - 1:07 am

    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”.

  3. #5 por luis el 28-10-08 - 12:27 am

    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?

  4. #6 por Iván Garcerant el 28-10-08 - 9:42 pm

    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.

  5. #7 por Gelder de la Ossa el 30-12-08 - 11:12 pm

    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.

  6. #8 por Claudia Perez el 10-02-09 - 1:20 am

    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

  7. #9 por Iván Garcerant el 11-02-09 - 2:35 pm

    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.

  8. #10 por Olga Lucia el 11-07-09 - 8:57 pm

    Hola, felicitaciones, este es un documento muy claro…pero aun sigo teniendo una duda…tal vez sea algo muy ovbio, pero no tengo claro, cuando se refieren a una representación física, se esta hablando de el momento actual, antes de analizar cualquier solucion; o teniendo en cuenta la solucion, es decir visualizando como funcionaría….Gracias..y disculpas si es algo muy tonto…pero prefiero preguntar y hacerlo bien.

    • #11 por Iván Garcerant el 16-07-09 - 11:41 am

      Saludos Olga, y gracias por tu pregunta.

      Según el caso del que hablemos, podemos tener desarrollo de nuevas aplicaciones o bien, implantaciones de aplicaciones ya existentes en nuevas situaciones o clientes.

      Si se habla de desarrollo, todo lo que podamos adelantar del funcionamiento interno del programa sería diseño, por lo que no tendríamos estos detalles en un modelo que busque llamarse “de dominio”.

      Por otra parte, en el caso de tener una implantación de una aplicación existente, algunos conceptos de la aplicación pueden colarse sin problemas al modelo de dominio, ya que son aspectos importantes de la aplicación que se desea poner a funcionar en este nuevo cliente o contexto.

      Por decirlo de otra manera, se tiene en cuenta los conceptos de la solución cuando estos ya existen y no pueden ser cambiados con facilidad. Es el caso de implantar una aplicación ya existente.

      Y es que en cierta forma, los conceptos presentes en el modelo de dominio hacen las veces de restricciones o requisitos sobre la solución, por lo que incluimos lo que ya esta dado y no podemos cambiar pero no aquello que podemos imaginar libremente por pertenecer a una aplicación aún por desarrollar.

      Espero no haberte causado más confusión. La verdad, encuentro tu pregunta muy sutil y propia de un analista que se encuentra en una situación reñida con la teoría. Me parece pues, un aspecto interesante a discutir con mayor amplitud.

      Estamos en contacto.

      • #12 por Olga Lucia el 21-07-09 - 7:39 pm

        Hola, de nuevo gracias…eso es justo lo que necesitaba saber..me encuentro diseñando una aplicacion basada en servicios web, es algo nuevo afortunadamente, no hay que manejar conceptos previos…Bueno, el punto es que tengo bastantes inquietudes, pero como ya lo mencione, estos artículos han sido bastante útiles…Gracias por atenderme…OLCB

  9. #13 por elespaciodejaime el 23-07-09 - 11:47 am

    muy bueno

  10. #14 por Adrian el 14-10-09 - 5:45 pm

    Hola, muy interesante el artículo, quisiera que me dieran una idea de cómo realizar el modelo de dominio de una aplicación WEB que hace uso de una aplicación hecha en Java. Saludos!!

    • #15 por Iván Garcerant el 19-10-09 - 4:30 am

      Hola Adrian.

      Hagamos el siguiente ejercicio.

      Digamos que no te entiendo. No sé cual es la aplicación java, no sé cual es la página web de la que estamos hablando y quizás me creas tonto, pero no veo como la página puede usar a la aplicación.

      Digamos también que todo lo anterior me lo has de explicar en forma muy sencilla, digamos con un bonito diagrama UML.

      Lo que me presentes, ilustrará los conceptos importantes y las relaciones que existen entre estos. Como analista espero que tú tengas bien en claro todo esto, por lo que el diagrama que vas a construir y la explicación que me vas a dar será detallada y respetará en todo momento las necesidades de mi negocio.

      Si eres capaz de hacer lo anterior, habrás construido un modelo de dominio.

  11. #16 por Adrian el 17-02-10 - 3:51 pm

    Quisiera saber si en un modelo de dominio se pueden representar conceptos como servidores de Bases de Datos, Web, etc.

    • #17 por Iván Garcerant el 17-02-10 - 5:53 pm

      Saludos.

      Dado que usualmente los servidores Web y las bases de datos no son conceptos del negocio, no es probable que los vayas a tener presentes en el modelo de dominio.

      En cambio, si lo que quieres indicar es cuales servidores vas a tener, quizás para ilustrar las especificaciones de estos o bien, el software que va a correr en cada uno, entonces te recomiendo que hagas uso de un modelo de despliegue, que también es UML estándar y que está pensado justamente para este tipo de casos.

      En un modelo de despliegue, tendrás uno o más diagramas ilustrando cuales tipos de servidores tienes, la infraestructura de red que los conecta, y el software que se ejecuta en cada uno.

      De esta forma, puedes tener tu infraestructura de servidores bien documentada a la vez, que dejamos el modelo de dominio para lo que es: modelar conceptos de negocio.

      • #18 por Adrian el 17-02-10 - 6:22 pm

        Gracias por responder. Entiendo lo que planteas y me surge una duda pues en mi modelo de dominio modelo el sistema Web que estoy realizando como un concepto de mi negocio, es decir digamos que mi sistema se llama X, este sistema lo relaciono con un servidor, en este caso el Apache. De igual forma, necesito para el desarrollo del sistema de un sistema externo, el cual también lo modelo como un concepto de mi negocio. No sé si esto es correcto.

      • #19 por Iván Garcerant el 18-02-10 - 3:11 am

        Saludos Adrian.

        Por poner las cosas simples, no, no es correcto. Un modelo de dominio solo va a incluir conceptos de negocio y los servidores ciertamente no lo son.

        Ahora bien, la razón de fondo es que los servidores y el software que corre en ellos es mejor documentarlos en un diagrama de despliegue. ¿Has tenido ocasión de ver lo que estos te ofrecen? En verdad creo que los vas a encontrar muy útiles para tus necesidades.

        O bien, quizás un diagrama de componentes. Es otra posibilidad que se me ocurre puede aplicar en tu caso.

        Ahora bien, no te debes amargar mucho la vida por estos asuntos. Desde un punto de vista metodologico, la intención es utilizar siempre la herramienta más correcta y en este caso un diagrama de clases es poco correcto. Lo debes de haber notado, ya que tienes la duda.

        Si por razones propias a tu proyecto, los conceptos de servidores son manejados por el cliente, pues entonces se pueden considerar como parte de los requisitos y quizás del análisis (ciertamente del diseño) pero aún formando parte de tus requisitos igual pienso que deberías mantenerlos en diagramas apropiados, como los de despliegue o de componentes.

        Es decir, siempre debemos utilizar la herramienta apropiada. Y los diagramas son herramientas de nuestro trabajo.

        Si me das más detalles… quizás te pueda ayudar mejor. Has pensado en escribirme un email?

        igarcerant@yahoo.com

        Iván.

  12. #20 por Adrian el 18-02-10 - 3:21 am

    Gracias amigo, buena aclaración. Estaremos en contacto por email.

  13. #21 por Javier Zamora el 8-10-10 - 1:19 am

    creo que ya es de mis delicious.
    Tengo una duda nada mas, en un Diseño Guiado por Dominio, la pregunta es si debemos de tener la Modelo de Dominio entre la fase de revalantamiento de requerimientos y realización de casos de uso.

    Gracias

  14. #22 por jaime el 8-08-11 - 11:37 am

    Una pregunta se complementar el modelo de dominio con el modelo de proceso de negocio?
    gracias

  15. #23 por wilder Claros el 11-10-12 - 10:37 am

    hola disculpen si alguien pudiera ayudarme con las reglas para generar codigo apartir de un diagrama de secuencia segun uml 2.0 es para un sw que me pidieron en la universidad por favor les agradeceria si alguien me las facilitaria

  1. Tareas: Construir Modelo de Dominio « Tecnología y Synergix
  2. Ejemplo de análisis de caso de uso « Tecnología y Synergix
  3. Diagramas de Clase « Tecnología y Synergix
  4. Flujos de eventos alternativos « Tecnología y Synergix
  5. Los números de 2010 « Tecnología y Synergix

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: