17. Introducción al análisis y modelado del software

17.1 Introducción

Antes de construir una solución de software conviene comprender el problema, sus conceptos principales, sus reglas, sus actores, sus procesos y las relaciones entre sus partes. A esta actividad la llamamos análisis. Para comunicar y razonar sobre esa comprensión usamos modelos.

Un modelo es una representación simplificada de una parte de la realidad o de la solución. Puede ser un diagrama, una tabla, una lista estructurada, un prototipo o una descripción organizada. No muestra todo, sino aquello que necesitamos entender o discutir.

El análisis y el modelado ayudan a reducir ambigüedad, detectar errores temprano y construir software más alineado con las necesidades reales.

17.2 ¿Qué significa analizar software?

Analizar software significa estudiar el problema y la solución antes o durante la construcción para tomar mejores decisiones. No se trata solo de leer requisitos, sino de comprender qué ocurre en el dominio, qué necesitan los usuarios y qué condiciones debe respetar el sistema.

Durante el análisis se busca responder preguntas como:

  • ¿Qué problema queremos resolver?
  • ¿Quiénes participan en el proceso?
  • ¿Qué información se maneja?
  • ¿Qué reglas de negocio existen?
  • ¿Qué casos especiales o excepciones deben considerarse?
  • ¿Qué límites tiene el sistema?
  • ¿Qué partes del problema son más riesgosas o ambiguas?
  • ¿Qué necesita quedar claro antes de diseñar o programar?
Idea clave: analizar no es retrasar el desarrollo; es evitar construir demasiado rápido sobre una comprensión equivocada.

17.3 ¿Qué es un modelo?

Un modelo es una representación simplificada que ayuda a comprender, comunicar o evaluar una parte del sistema. Como el software es complejo e invisible, necesitamos modelos para hacerlo más manejable.

Ejemplos de modelos:

  • Un diagrama que muestra cómo interactúan actores y sistema.
  • Una tabla que describe reglas de negocio.
  • Un modelo de dominio con conceptos y relaciones.
  • Un diagrama de flujo de un proceso.
  • Un prototipo de pantalla.
  • Un esquema de arquitectura.
  • Una lista priorizada de casos de uso.

Un modelo no es la realidad completa. Es una herramienta para pensar y comunicar.

17.4 Para qué sirven los modelos

Los modelos pueden cumplir varios propósitos dentro de un proyecto:

  • Entender el problema antes de construir.
  • Compartir una visión común entre usuarios, analistas y desarrolladores.
  • Detectar ambigüedades o contradicciones.
  • Explorar alternativas de solución.
  • Documentar decisiones importantes.
  • Guiar diseño, implementación y pruebas.
  • Facilitar mantenimiento futuro.
  • Reducir dependencia de explicaciones informales.

Un buen modelo debe ayudar a decidir o comprender algo. Si no aporta claridad, probablemente necesita simplificarse o eliminarse.

17.5 Abstracción

La abstracción consiste en concentrarse en lo importante y dejar de lado detalles que no son necesarios para el objetivo actual. Es una habilidad central en análisis y modelado.

Por ejemplo, si estamos analizando un sistema de biblioteca, puede ser importante representar socios, libros, préstamos y devoluciones. Pero quizá no sea necesario representar el color de la tapa del libro si esa información no afecta el proceso.

El nivel de detalle depende de la pregunta que queremos responder:

  • Para entender el negocio, conviene modelar conceptos y reglas.
  • Para diseñar una base de datos, conviene detallar entidades, atributos y relaciones.
  • Para explicar una interacción, conviene mostrar actores y pasos.
  • Para discutir una interfaz, conviene usar prototipos o bocetos.

17.6 Modelo del problema y modelo de la solución

Conviene distinguir entre modelos orientados al problema y modelos orientados a la solución.

Tipo de modelo Pregunta principal Ejemplo
Modelo del problema ¿Cómo funciona el dominio que queremos comprender? Conceptos como socio, libro, préstamo y vencimiento.
Modelo de la solución ¿Cómo organizaremos el sistema para resolver el problema? Módulos de préstamos, catálogo, usuarios y notificaciones.

Ambos son útiles, pero no deben confundirse. Primero conviene entender el problema; después se decide cómo resolverlo.

17.7 Tipos de modelos frecuentes

Existen muchos tipos de modelos. Algunos se enfocan en estructura, otros en comportamiento, otros en interacción o datos.

Tipo Qué representa Ejemplo de uso
Modelo de dominio Conceptos principales del negocio y sus relaciones. Cliente, pedido, producto, pago y envío.
Modelo de procesos Pasos de un flujo de trabajo. Proceso de inscripción a un curso.
Modelo de casos de uso Objetivos de actores al interactuar con el sistema. Reservar turno, cancelar turno, consultar historial.
Modelo de datos Información que debe almacenarse y relacionarse. Tablas o entidades para alumnos, cursos e inscripciones.
Modelo de estados Estados posibles de un objeto y transiciones. Pedido pendiente, pagado, enviado, entregado o cancelado.
Modelo de arquitectura Componentes principales y sus relaciones. Frontend, API, base de datos y servicio de notificaciones.
Prototipo de interfaz Aspecto o flujo de pantallas. Boceto de pantalla de registro.

17.8 Modelos estructurales y modelos de comportamiento

Una clasificación útil distingue entre modelos estructurales y modelos de comportamiento.

Tipo Qué muestra Ejemplo
Estructural Elementos, conceptos, componentes y relaciones relativamente estables. Un modelo de dominio con cliente, pedido y producto.
De comportamiento Acciones, eventos, pasos, cambios de estado o interacción en el tiempo. Un flujo para registrar una compra o un diagrama de estados de un pedido.

Ambos se complementan. Saber qué conceptos existen no alcanza; también hay que entender cómo cambian e interactúan.

17.9 Modelado y comunicación

Un modelo es útil si mejora la comunicación. No debe hacerse solo para cumplir una formalidad. Un diagrama sencillo, bien explicado y validado con usuarios puede ser más valioso que un modelo muy completo que nadie entiende.

Al usar modelos para comunicar conviene:

  • Elegir el nivel de detalle adecuado al público.
  • Usar nombres del dominio que los usuarios reconozcan.
  • Evitar símbolos innecesarios si no aportan claridad.
  • Validar el modelo con quienes conocen el proceso real.
  • Actualizarlo cuando cambian decisiones importantes.
  • Explicar qué muestra y qué no muestra el modelo.

17.10 Modelado y requisitos

El modelado ayuda a descubrir y mejorar requisitos. Al representar un proceso o concepto, pueden aparecer preguntas que no estaban claras.

Por ejemplo, al modelar una reserva, el equipo puede descubrir preguntas como:

  • ¿Una reserva puede estar pendiente de confirmación?
  • ¿Quién puede cancelarla?
  • ¿Hasta cuándo se permite cancelar?
  • ¿Qué ocurre si dos usuarios intentan reservar el mismo horario?
  • ¿La reserva requiere pago?
  • ¿Debe enviarse una notificación?
  • ¿Qué datos deben conservarse si se cancela?

Estas preguntas pueden convertirse en requisitos, reglas de negocio o criterios de aceptación.

17.11 Modelado y diseño

El análisis se orienta a comprender el problema. El diseño se orienta a decidir cómo será la solución. El modelado puede participar en ambas actividades.

En análisis, un modelo puede mostrar cómo trabaja actualmente una organización. En diseño, puede mostrar cómo se organizará el sistema para soportar ese trabajo.

Ejemplo:

Modelo de análisis Modelo de diseño
Un pedido tiene cliente, productos, pago y estado. El sistema tendrá módulos de catálogo, carrito, pagos y órdenes.
Un turno puede estar disponible, reservado, cancelado o atendido. Se implementará una entidad Reserva con reglas de transición de estado.

17.12 Modelos y trazabilidad

Los modelos también pueden formar parte de la trazabilidad. Un requerimiento puede estar relacionado con un proceso, una entidad del dominio, un caso de uso, una pantalla o una decisión de arquitectura.

Por ejemplo:

  • La necesidad "reducir errores de inscripción" puede relacionarse con el proceso de inscripción.
  • El requerimiento "un alumno no puede inscribirse dos veces al mismo curso" se relaciona con el modelo de dominio alumno-curso-inscripción.
  • El criterio de aceptación se relaciona con pruebas de inscripción duplicada.
  • La solución se relaciona con el módulo de inscripciones.

Esta relación permite comprender cómo cada modelo apoya decisiones concretas.

17.13 Ejemplo: sistema de cursos

Supongamos que se analiza un sistema para gestionar cursos en línea.

Durante el análisis pueden identificarse conceptos como:

  • Alumno.
  • Curso.
  • Docente.
  • Inscripción.
  • Clase.
  • Evaluación.
  • Certificado.

También pueden identificarse procesos:

  • Publicar un curso.
  • Inscribir un alumno.
  • Acceder a clases.
  • Rendir una evaluación.
  • Emitir un certificado.

Modelar estos elementos ayuda a detectar reglas, como: un alumno solo obtiene certificado si aprueba la evaluación final y completa las clases obligatorias.

17.14 Nivel de detalle adecuado

Un error común es intentar modelar todo con máximo detalle desde el inicio. Otro error es no modelar nada y confiar únicamente en conversaciones informales. El nivel adecuado depende del riesgo, la complejidad y el uso del modelo.

Conviene aumentar el detalle cuando:

  • Hay reglas de negocio complejas.
  • Participan muchos actores.
  • Existen integraciones importantes.
  • El costo de equivocarse es alto.
  • El equipo necesita compartir conocimiento.
  • El sistema será mantenido durante mucho tiempo.

Conviene mantener modelos simples cuando el objetivo es explorar, conversar o validar una idea inicial.

17.15 Herramientas de modelado

Se pueden usar muchas herramientas para modelar. La herramienta importa menos que la claridad del modelo.

  • Pizarras físicas o digitales.
  • Diagramas simples en documentos.
  • Herramientas de diagramación.
  • Prototipos de baja o alta fidelidad.
  • Tablas en hojas de cálculo.
  • Wikis o documentación colaborativa.
  • Herramientas específicas de UML o modelado.
  • Herramientas de diseño de interfaces.

Lo importante es que el modelo pueda compartirse, entenderse y mantenerse cuando sea necesario.

17.16 Errores comunes

Al analizar y modelar software suelen aparecer errores como:

  • Modelar la solución antes de comprender el problema.
  • Hacer diagramas demasiado complejos para el público destinatario.
  • Usar nombres técnicos cuando el modelo debería representar el negocio.
  • No validar modelos con usuarios o especialistas del dominio.
  • Creer que un modelo reemplaza la conversación.
  • Dejar modelos desactualizados sin aclararlo.
  • Modelar detalles que no influyen en ninguna decisión.
  • No relacionar modelos con requisitos, pruebas o decisiones de diseño.

17.17 Buenas prácticas iniciales

Al comenzar a modelar, conviene aplicar algunas prácticas simples:

  • Definir qué pregunta debe responder el modelo.
  • Elegir el tipo de modelo según el problema.
  • Usar lenguaje del dominio cuando se modele el negocio.
  • Empezar simple y agregar detalle solo cuando aporte valor.
  • Validar con personas que conocen el proceso real.
  • Registrar decisiones o dudas que surgen del modelo.
  • Indicar fecha o versión si el modelo puede cambiar.
  • Mantener trazabilidad con requisitos importantes.

17.18 Qué debes recordar de este tema

  • El análisis busca comprender el problema, sus actores, reglas, datos y procesos.
  • Un modelo es una representación simplificada que ayuda a entender o comunicar algo.
  • Los modelos son útiles porque el software es complejo e invisible.
  • No existe un único modelo para todo; cada modelo responde una pregunta diferente.
  • Conviene distinguir modelos del problema y modelos de la solución.
  • El nivel de detalle debe ser proporcional al objetivo, riesgo y público del modelo.
  • Un modelo útil debe mejorar comprensión, comunicación, decisiones o mantenimiento.

17.19 Conclusión

El análisis y el modelado permiten comprender mejor el problema antes de comprometer decisiones de construcción. Ayudan a descubrir requisitos, aclarar reglas, comunicar ideas y reducir el riesgo de construir una solución equivocada.

Para quien comienza, la idea principal es esta: modelar no significa dibujar por dibujar, sino representar lo necesario para entender, discutir y decidir mejor.

En el próximo tema veremos modelado de dominio y conceptos del negocio, una forma fundamental de comprender las entidades, relaciones y reglas principales del problema.