Archyno
UMLDiagramas de estructura

Cómo dibujar un diagrama de clases UML

Cinco pasos en el orden que funciona: encuentra los sustantivos, traza las líneas, decide las multiplicidades, luego atributos y por último operaciones - y para cuando responda a la pregunta.

7 min de lecturaUML 2.5.16 de 35

La respuesta corta

  • Clases, luego relaciones, luego multiplicidades, luego atributos y por último operaciones. Los atributos parecen el principio y son el peor.
  • Un sustantivo se convierte en clase cuando tiene identidad, estado que cambia y vida propia. Un color o un importe es un atributo.
  • Está terminado cuando responde a la pregunta por la que se dibujó y cada relación lleva una multiplicidad.
  • No cuando aparecen todas las clases ni cuando están listados todos los atributos: un diagrama alcanza ambos estados sin responder a nada.
Un diagrama de clases UML temprano con cuatro clases y sin atributos. Patient está asociada con Appointment, Appointment con Doctor, y Appointment con Prescription.
Después del paso dos. Cuatro sustantivos y tres líneas, sin atributos, y ya merece la pena enseñárselo a alguien.

01Pasos uno y dos: los sustantivos, luego las líneas#

El paso uno es escribir cómo se describe el dominio en voz alta y subrayar los sustantivos."Un paciente pide cita con un médico, y el médico puede emitir una receta" da cuatro candidatos de inmediato. Quédate con los que tienen tres propiedades: identidad (dos de ellos se distinguen), estado que cambia con el tiempo, y una vida propia. Un sustantivo que falla las tres - un color, un importe, un estado - es atributo de otra cosa.

El paso dos es una línea por cada frase que puedas decir sobre el dominio. No por join de base de datos ni por llamada a método: una línea significa que las dos clases se conocen en el sentido de negocio. El diagrama de arriba es donde eso termina, y ya merece ponerse delante de alguien que conozca el dominio, porque la discusión que quieres es si una receta pertenece a una cita o a un paciente, y esa discusión está disponible ahora, antes de teclear un solo atributo.

02Paso tres: las multiplicidades, antes que nada#

Cada línea recibe un número en cada extremo antes de añadir un solo atributo. Este es el paso que la gente se salta y el que compensa, porque una multiplicidad es una decisión sobre qué permite el sistema y un atributo es un detalle que se deriva de ella.

Lee cada extremo como una frase y dila en voz alta. "Un paciente tiene cero o más citas": bien. "Una cita tiene exactamente un paciente": bien, y conviene comprobarlo, porque una consulta que alguna vez reserva un hueco familiar acaba de decirte lo contrario. Las tres preguntas en cada extremo son: ¿puede ser cero?, ¿puede ser más de uno?, y ¿cambia eso en un mal día?

Después elige la clase de relación, y solo dos decisiones merecen que te agobies. ¿Se borra la parte con el todo? Si sí, composición. ¿Algo sostiene el tipo padre sin importarle el subtipo? Si sí, generalización. Todo lo demás es una asociación simple, y los ejemplos trabajados muestran los dos juicios en acción.

03Pasos cuatro y cinco: atributos, operaciones, y parar#

El mismo diagrama de clases UML terminado. Patient tiene id, name y dateOfBirth y está asociada con cero o más Appointment. Doctor tiene id, name y specialty y está asociada con cero o más Appointment. Appointment tiene startsAt, duration y status, ofrece las operaciones book y cancel, y está compuesta de cero o más Prescription.
El mismo modelo en el paso cinco. Fíjate en la composición: una receta no sobrevive a su cita.

Los atributos van en cuarto lugar y cada uno tiene que tener una fuente. Si no puedes decir de dónde sale un valor - un formulario, otro sistema, un cálculo - es una suposición, y las suposiciones son lo que hace que un modelo deje de encajar con aquello que describe. Merece la pena escribir los tipos: startsAt: Instant zanja una discusión que startsAt: Date deja abierta.

Las operaciones van en quinto lugar y la mayoría de las clases no reciben ninguna. Una operación pertenece a una clase cuando el comportamiento necesita de verdad el estado propio de esa clase: cancel() necesita el estado de la cita, así que pertenece ahí. Cualquier cosa que necesite otros tres objetos para hacer su trabajo es un servicio, y ponerla aquí es como un modelo de dominio se convierte calladamente en un diagrama del código en vez de del dominio.

Luego para. El diagrama terminado de arriba tiene cuatro clases y responde a una pregunta; añadir Clinic, Room, Invoice e Insurer lo haría más completo y menos útil. Si hay que responder a una segunda pregunta, dibuja una segunda vista sobre el mismo modelo: para eso están las vistas.

En una línea cada uno

  1. 01Los sustantivos con identidad, estado cambiante y vida propia se convierten en clases. El resto son atributos.
  2. 02Dibuja las líneas antes que los atributos, y enseña la versión fea: es la que la gente corrige.
  3. 03Decide las multiplicidades en tercer lugar, en voz alta, preguntando si cada extremo puede ser cero o más de uno.
  4. 04Todo atributo necesita una fuente. Los tipos zanjan lo que los nombres dejan abierto.
  5. 05Para cuando la pregunta esté respondida, no cuando el sistema esté dibujado entero.

04Preguntas frecuentes#

¿Cómo decido qué se convierte en clase?

Toma los sustantivos de cómo se describe el dominio en voz alta y quédate con los que tienen identidad, estado que cambia y vida propia. Un sustantivo que solo es alguna vez el valor de otra cosa, como un color o un importe, es un atributo y no una clase.

¿En qué orden se dibuja un diagrama de clases?

Clases, luego relaciones, luego multiplicidades, luego atributos y por último operaciones. Los atributos parecen el punto de partida obvio y son el peor, porque son lo primero que se tira cuando las relaciones obligan a replantear qué pertenece a qué.

¿Cuándo está terminado un diagrama de clases?

Cuando responde a la pregunta por la que se dibujó y cada relación lleva una multiplicidad. No cuando aparecen todas las clases del sistema, ni cuando están listados todos los atributos: un diagrama puede alcanzar ambos estados sin responder a nada.

En esta serie

Lecturas relacionadas

Todos los artículos