18. Modelado de dominio y conceptos del negocio

18.1 Introducción

Antes de diseñar una solución técnica, el equipo necesita comprender el dominio del negocio: los conceptos, reglas, procesos y relaciones propias del área donde el software será utilizado. El modelado de dominio ayuda a construir esa comprensión.

Un modelo de dominio representa los conceptos principales de un problema y cómo se relacionan entre sí. No busca mostrar pantallas, bases de datos ni código. Busca responder qué cosas existen en el negocio, qué significan y qué reglas las conectan.

Comprender el dominio reduce malentendidos y permite que usuarios, analistas y desarrolladores compartan un lenguaje común.

18.2 ¿Qué es el dominio?

El dominio es el área de conocimiento o actividad que el sistema debe apoyar. Puede ser educación, salud, comercio, logística, banca, biblioteca, reservas, facturación, recursos humanos u otra realidad específica.

Por ejemplo:

  • En una biblioteca, el dominio incluye libros, socios, préstamos, devoluciones, vencimientos y reservas.
  • En una clínica, incluye pacientes, profesionales, turnos, especialidades, historias clínicas y estudios.
  • En comercio electrónico, incluye productos, clientes, pedidos, pagos, envíos, stock y promociones.
  • En educación, incluye alumnos, docentes, cursos, inscripciones, clases, evaluaciones y certificados.
Idea clave: entender el dominio significa entender el mundo del usuario antes de decidir cómo será el sistema.

18.3 ¿Qué es un modelo de dominio?

Un modelo de dominio es una representación conceptual de los elementos importantes del negocio y sus relaciones. Ayuda a explicar cómo se entiende el problema sin entrar todavía en detalles técnicos de implementación.

Un modelo de dominio puede incluir:

  • Conceptos principales.
  • Relaciones entre conceptos.
  • Atributos relevantes.
  • Reglas de negocio.
  • Estados importantes.
  • Restricciones del dominio.
  • Términos y definiciones compartidas.

Puede representarse con diagramas, tablas, listas o una combinación de formatos. Lo importante es que ayude a comprender y discutir el dominio.

18.4 Conceptos del negocio

Los conceptos del negocio son las ideas principales con las que trabajan los usuarios. Suelen corresponder a cosas, personas, documentos, eventos, transacciones o estados importantes.

Ejemplos:

Dominio Conceptos posibles
Biblioteca Libro, socio, préstamo, devolución, reserva, multa.
Ventas Cliente, producto, pedido, factura, pago, descuento.
Educación Alumno, curso, docente, inscripción, evaluación, certificado.
Salud Paciente, profesional, turno, especialidad, consulta, estudio.

Identificar conceptos ayuda a descubrir datos, reglas, casos de uso y responsabilidades del sistema.

18.5 Relaciones entre conceptos

Los conceptos no existen aislados. Se relacionan entre sí. Entender esas relaciones es fundamental para evitar errores de interpretación.

Ejemplos de relaciones:

  • Un cliente realiza pedidos.
  • Un pedido contiene productos.
  • Un alumno se inscribe en cursos.
  • Un docente dicta clases.
  • Un paciente solicita turnos.
  • Un libro puede tener varios ejemplares.
  • Un préstamo corresponde a un socio y a un ejemplar.

Estas relaciones suelen revelar reglas importantes. Por ejemplo, si un libro puede tener varios ejemplares, el préstamo quizá no debe asociarse al título general, sino a un ejemplar específico.

18.6 Atributos relevantes

Los atributos describen información importante de un concepto. No todos los datos posibles deben incluirse en un modelo de dominio inicial; conviene registrar los que ayudan a comprender reglas o decisiones.

Concepto Atributos posibles Por qué importan
Socio Número de socio, estado, fecha de alta. Permiten validar si puede pedir préstamos.
Préstamo Fecha de inicio, fecha de vencimiento, fecha de devolución. Permiten calcular vencimientos y multas.
Producto Precio, stock, categoría, estado. Permiten vender, filtrar y controlar disponibilidad.
Turno Fecha, hora, estado, profesional, paciente. Permiten gestionar agenda y disponibilidad.

18.7 Reglas de negocio

Las reglas de negocio definen condiciones, restricciones o políticas del dominio. Son esenciales porque determinan qué acciones son válidas y qué resultados deben producirse.

Ejemplos:

  • Un socio suspendido no puede retirar libros.
  • Un alumno no puede inscribirse dos veces al mismo curso.
  • Un pedido no puede facturarse si el pago no fue confirmado.
  • Un turno solo puede cancelarse hasta dos horas antes.
  • Un descuento mayor al 20% requiere aprobación.
  • Un certificado solo se emite si el alumno aprobó la evaluación final.

Muchas reglas de negocio se transforman luego en requerimientos, validaciones, criterios de aceptación y pruebas.

18.8 Lenguaje común

Uno de los beneficios más importantes del modelado de dominio es crear un lenguaje común. Los usuarios y el equipo técnico pueden usar las mismas palabras con el mismo significado.

Sin lenguaje común aparecen confusiones. Por ejemplo, "cliente" puede significar una persona registrada, una empresa que compra, un contacto comercial o un usuario que paga. Si el término no se aclara, el sistema puede quedar mal diseñado.

Para mejorar el lenguaje común conviene:

  • Definir términos importantes.
  • Usar nombres que los usuarios reconozcan.
  • Evitar sinónimos innecesarios para el mismo concepto.
  • Aclarar diferencias entre conceptos parecidos.
  • Registrar ejemplos concretos.
  • Validar vocabulario con especialistas del dominio.

18.9 Diferencias entre conceptos parecidos

En muchos dominios hay conceptos que parecen similares, pero no significan lo mismo. Distinguirlos evita errores.

Conceptos Diferencia posible
Libro y ejemplar El libro es la obra; el ejemplar es una copia física específica que puede prestarse.
Alumno y usuario Alumno es un rol académico; usuario es una cuenta de acceso al sistema.
Pedido y factura El pedido registra una intención de compra; la factura documenta una operación fiscal.
Reserva y turno El turno puede ser un espacio disponible; la reserva es la asignación de ese espacio a alguien.
Producto y stock El producto describe lo que se vende; el stock indica cantidad disponible.

18.10 Estados importantes

Algunos conceptos del dominio tienen estados. Identificar esos estados ayuda a comprender reglas y transiciones válidas.

Ejemplos:

  • Un pedido puede estar pendiente, pagado, preparado, enviado, entregado o cancelado.
  • Una reserva puede estar activa, cancelada, vencida o utilizada.
  • Un préstamo puede estar vigente, vencido, devuelto o perdido.
  • Un alumno puede estar preinscripto, inscripto, regular, aprobado o dado de baja.

Al identificar estados conviene preguntar qué eventos provocan cambios y qué transiciones no están permitidas.

18.11 Cómo construir un modelo de dominio inicial

Un procedimiento simple para comenzar es:

  • Revisar objetivos, alcance y requisitos iniciales.
  • Identificar sustantivos relevantes del dominio.
  • Separar conceptos importantes de detalles secundarios.
  • Definir relaciones entre conceptos.
  • Registrar atributos necesarios para reglas importantes.
  • Identificar reglas de negocio y restricciones.
  • Aclarar términos ambiguos.
  • Validar el modelo con usuarios o especialistas.
  • Ajustar el modelo cuando aparezcan nuevos aprendizajes.

El modelo inicial no necesita ser perfecto. Debe ser útil para aprender y conversar.

18.12 Ejemplo: modelo de dominio de biblioteca

Para una biblioteca, un modelo de dominio inicial podría identificar:

Concepto Descripción Relaciones o reglas
Socio Persona registrada que puede retirar libros. Puede tener varios préstamos activos, con un límite definido.
Libro Obra disponible en el catálogo. Puede tener uno o más ejemplares.
Ejemplar Copia física de un libro. Puede estar disponible, prestado, reservado o perdido.
Préstamo Registro de entrega de un ejemplar a un socio. Tiene fecha de inicio, vencimiento y devolución.
Reserva Solicitud de un socio sobre un libro o ejemplar. Puede estar activa, cancelada o vencida.

Este modelo permite discutir reglas antes de construir pantallas o base de datos.

18.13 Ejemplo: modelo de dominio de comercio electrónico

Para una tienda en línea, algunos conceptos centrales podrían ser:

  • Cliente.
  • Producto.
  • Carrito.
  • Pedido.
  • Pago.
  • Envío.
  • Factura.
  • Promoción.
  • Stock.

Algunas relaciones y reglas posibles:

  • Un cliente puede realizar muchos pedidos.
  • Un pedido contiene uno o más productos.
  • Un pedido puede tener un pago asociado.
  • Un pedido no puede enviarse si el pago no fue aprobado.
  • Una promoción puede aplicar solo a ciertas categorías.
  • El stock debe disminuir cuando se confirma la compra.

18.14 Modelo de dominio y base de datos

Un modelo de dominio no es lo mismo que un modelo de base de datos, aunque pueden estar relacionados. El modelo de dominio busca comprender conceptos del negocio. El modelo de base de datos define cómo se almacenará la información.

Modelo de dominio Modelo de base de datos
Usa lenguaje del negocio. Usa estructuras de almacenamiento.
Puede omitir detalles técnicos. Debe definir tablas, claves, índices o tipos de datos.
Sirve para comprender y conversar. Sirve para implementar persistencia.
Puede existir antes de decidir la tecnología. Depende de decisiones técnicas.

Convertir un modelo de dominio directamente en base de datos sin análisis puede generar problemas. Hay que considerar rendimiento, normalización, historial, integraciones y necesidades técnicas.

18.15 Modelo de dominio y código

El modelo de dominio tampoco es automáticamente el código. Puede inspirar clases, entidades, módulos o servicios, pero la implementación requiere decisiones adicionales.

Por ejemplo, en el dominio existe el concepto "Pedido". En el código puede representarse como una clase, una entidad, una tabla, un documento, un servicio o una combinación de elementos según la arquitectura elegida.

La relación entre dominio y código debe cuidarse para que el sistema mantenga nombres y responsabilidades comprensibles. Cuando el código se aleja demasiado del lenguaje del dominio, aumenta la dificultad de mantenimiento.

18.16 Errores comunes

Al modelar el dominio suelen aparecer errores como:

  • Confundir conceptos del negocio con pantallas del sistema.
  • Diseñar tablas de base de datos antes de entender el dominio.
  • Usar nombres técnicos que los usuarios no reconocen.
  • No distinguir conceptos parecidos.
  • Omitir reglas de negocio importantes.
  • Intentar modelar todo con detalle excesivo desde el inicio.
  • No validar el modelo con especialistas del dominio.
  • Dejar el modelo desactualizado cuando cambian conceptos o reglas.

18.17 Buenas prácticas

Algunas prácticas recomendables son:

  • Usar términos del negocio y definirlos claramente.
  • Empezar con los conceptos centrales y luego agregar detalle.
  • Representar relaciones que ayuden a entender reglas.
  • Registrar dudas y validarlas con usuarios o especialistas.
  • Distinguir modelo de dominio, base de datos y diseño técnico.
  • Incluir ejemplos reales para probar si el modelo tiene sentido.
  • Actualizar el modelo cuando cambian reglas importantes.
  • Relacionar conceptos del dominio con requerimientos y pruebas.

18.18 Qué debes recordar de este tema

  • El dominio es el área de conocimiento o actividad que el sistema debe apoyar.
  • Un modelo de dominio representa conceptos del negocio y sus relaciones.
  • El modelo de dominio ayuda a crear un lenguaje común entre usuarios y equipo técnico.
  • Los conceptos, atributos, relaciones, estados y reglas de negocio son elementos importantes.
  • Modelar el dominio ayuda a descubrir requisitos y aclarar ambigüedades.
  • Un modelo de dominio no es lo mismo que una base de datos ni que el código.
  • El modelo debe ser validado con personas que conocen el negocio real.

18.19 Conclusión

El modelado de dominio permite comprender los conceptos fundamentales del negocio antes de tomar decisiones técnicas. Ayuda a que el equipo hable el mismo lenguaje que los usuarios y evita construir una solución basada en suposiciones incorrectas.

Para quien comienza, la idea principal es esta: antes de modelar pantallas, tablas o clases, conviene entender qué conceptos existen en el negocio, cómo se relacionan y qué reglas los gobiernan.

En el próximo tema veremos una introducción a UML y otros diagramas de apoyo, que permiten representar distintos aspectos del análisis y diseño de software.