Ir al contenido principal

El Modelo de Dominio


Cuando se va a desarrollar un software es esencial estudiar y analizar el problema que se desea resolver. Este problema puede estar enfocado por ejemplo a la automatización de un proceso de negocio de alguna empresa. El software a desarrollar seguramente permitirá registrar información que necesite el proceso de negocio y generar resultados de valor para sus usuarios. También deberá permitir validar o hacer cumplir muchas reglas de negocio. Por lo tanto, los ingenieros de software necesitan usar algunas técnicas que les ayuden a entender mejor la problemática que están analizando antes de iniciar con la implementación del software. 


Una de estas técnicas es elaborar modelos conceptuales que representan los conceptos y sus relaciones que participan en el contexto de estudio o dominio de problema. Los conceptos se entienden como las entidades de información que representan objetos físicos o lógicos del dominio de problema. Para elaborar un modelo conceptual se usa el diagrama de clases de UML en donde se deben representar sólo el nombre de las clases y sus atributos junto con las relaciones entre clases, pero no las operaciones de las clases. El RUP como metodología de desarrollo de software recomienda el uso de esta técnica y lo define como el Modelo de Dominio. Por lo tanto, un modelo de dominio es un diagrama de clases UML que no representa un diseño de software si no un modelo conceptual.

El modelo de dominio sirve para:
  • Identificar y representar conceptos del dominio de problema.
  • Establecer y entender las relaciones entre los conceptos.
  • Identificar atributos de cada concepto.
  • Representar entidades de negocio en el modelado de procesos.
  • Apoyar en el análisis de los requisitos.
  • Elaborar un diccionario de datos.
  • Elaborar un glosario de términos.
  • Evolucionar hacia un modelo de diseño y modelo de datos.

Para que el ingeniero de software pueda elaborar un modelo de dominio se necesita de la colaboración de un experto del dominio. Este experto del dominio deberá ser alguien que conoce muy bien la problemática que se está analizando o el proceso de negocio que se desea automatizar. Gracias a la colaboración del experto del dominio se podrá elaborar buenos modelos conceptuales y evolucionar hacia un adecuado modelo de diseño que finalmente concluirá con su implementación del software.

La elaboración del modelo de dominio puede iniciar desde la primera fase del desarrollo del proyecto y ser refinado durante la fase siguiente. En RUP se puede trabajar con este modelo en la fase de inicio y la fase de elaboración. En sí, este modelo debe servir de inspiración para el modelo de diseño en las primeras fases y no se necesita que se siga actualizando o refinando en todas las fases. Cuando ya se tenga un modelo de diseño se debe dejar de lado el modelo de dominio y seguir evolucionado el software sólo con el modelo de diseño.

Por último, se puede aplicar el enfoque Domain Driven Design (DDD) para el desarrollo de software de dominios complejos y ya en la etapa de diseño e implementación definir una Arquitectura de software basado en un patrón N-Capas con orientación al Dominio o también llamado N-Capas DDD.

En la próxima publicación se presentará un ejemplo de modelo de dominio.


Gracias por visitar este blog y espero sus comentarios.

Comentarios

  1. Cuando habla de un experto en el dominio, ¿Quien podría ser la persona ideal? o ¿Como identificarías a esa persona?

    ResponderEliminar
    Respuestas
    1. Hola, el experto en el Dominio es aquel que conoce del proceso de negocio que se está analizando, es quien domina el tema o lo que se necesita para el Sistema que se desea desarrollar. Por lo general es un usuario del negocio, pero el de mayor conocimiento del tema o contexto de problema. Por ejemplo, si se desea desarrollar un Sistema para la Gestión de Contabilidad de un negocio, entonces el experto del dominio seguro será el Contador.

      Saludos.

      Eliminar

Publicar un comentario

Gracias por comentar.

Entradas populares de este blog

Mapa conceptual sobre la Ingeniería de Software

A continuación se muestra un mapa conceptual que rescata los principales conceptos relacionados a la Ingeniería de Software como tema central. Agradezco tus comentarios y aportaciones, puedes sugerir otros conceptos que creas importantes relacionados a la Ingeniería de Software y comentarlo.

Aplicación de buenas prácticas en la gestión de requisitos

En esta oportunidad les comparto un artículo relacionado a la gestión de requisitos, lo cual es parte fundamental en todo proyecto de desarrollo de software. 1. INTRODUCCIÓN En todo proyecto de desarrollo de software, sobre todo en proyectos medianos o grandes, el analista debe capturar y describir los requisitos que los clientes o usuarios desean que el sistema haga o cumpla. Sin embargo, no basta sólo con capturar y describir los requisitos para que sean entregados a los diseñadores y desarrolladores de software, sino que también es necesario hacer una adecuada gestión de los mismos a lo largo del proyecto o ciclo de vida del sistema que se está desarrollando. En consecuencia, muchos proyectos de software fracasan debido a una mala o escasa gestión de los requisitos y este fracaso se puede percibir cuando el producto entregado no satisface las expectativas de los clientes o usuarios, o cuando los requisitos no han sido cumplidos por el sistema, es decir, no se ha construido ...

Introducción a la Ingeniería de Software

El software como programa de computador o sistema informático es parte indispensable de nuestro mundo moderno y cada vez más las personas, las organizaciones o empresas están muy dependientes de su uso o aplicación, esto debido a que el software ha permitido agilizar y automatizar muchas tareas logrando incrementar la productividad en las personas y empresas. Por tanto, los ingenieros de software tenemos la responsabilidad de crear software de calidad y el reto de seguir innovando para incrementar cada vez más la satisfacción de los usuarios y empresas. Sólo aplicando Ingeniería de Software podremos lograr software de calidad.