Introducción a UML
UML (Unified Modeling Language, Lenguaje Unificado de Modelado) es un lenguaje visual extensible de modelado de sistemas orientado a objetos, de propósito amplio y genérico estandarizado por el Object Management Group (OMG).
Nace del intento de unificar los lenguajes de modelado visuales más extendidos en 1994 (Booch, OMT…). En 1996 OMG lanzó una RFP (Request for Proposal) aceptado en 1997, marcando el nacimiento de UML. Hoy es un estándar de facto abierto en la industria del software.
UML concibe el mundo como colecciones de objetos que interactúan, por eso resulta idóneo para utilizarse en desarrollo de software con lenguajes orientados a objetos. Se utiliza para especificar o describir sistemas, artefactos, métodos y procesos durante todo el ciclo de vida del sistema sin importar la implementación ni el proceso de desarrollo, incorporando las mejores prácticas de modelado para que puedan ser fácilmente legibles por personas e implementarse por las herramientas software de modelado.
Existen dos aspectos en un modelo UML que no están completos el uno sin el otro.
- Estructura estática, describe qué tipo de objetos conforman el sistema y cómo se relacionan.
- Comportamiento dinámico, describe los ciclos de vida de estos objetos y cómo interactúan entre sí para entregar la funcionalidad requerida.
Un modelo UML tiene al menos dos dimensiones:
- Textual, contiene las especificaciones de los diferentes elementos de modelado.
- Gráfica, muestra gráficamente el modelo textual utilizando diagramas e iconos, son simplemente vistas o proyecciones visuales de ese plano posterior semántico. Pueden existir elementos elididos (si no se muestran gráficamente), incompletos (pueden faltar en ambas dimensiones) e incoherentes (contradicciones entre los elementos).
UML se compone de 3 Bloques de Construcción.
- Elementos.
- Estructurales. Son los nombres de un modelo UML, como una clase, interfaz, colaboración…
- Comportamiento. Son los verbos de un modelo UML, como interacciones, actividades, máquinas de estado.
- Agrupación. Paquetes que se utilizan para agrupar los elementos semánticamente en unidades cohesivas.
- Anotación. Notas que se anexan al modelo para capturar información ad hoc.
Relaciones, unen a los elementos entre sí especificando cómo dos o más elementos se relacionan semánticamente.
- Dependencia. El elemento origen depende del elemento destino y se puede ver afectado por cambios en éste.
- Asociación. La descripción de un conjunto de vínculos entre objetos.
- Agregación. El elemento destino es una parte del elemento origen.
- Composición. Una forma de agregación más fuerte, más restringida.
- Contención. El elemento origen contiene el elemento destino.
- Generalización. El elemento origen es una especialización del elemento destino más general y se puede sustituir por éste.
- Implementación. El elemento origen garantiza llevar a cabo el contrato especificado por el elemento destino.
Diagramas, nos muestran qué hará el sistema (diagramas a nivel de análisis) o cómo lo hará (diagramas a nivel de diseño).
UML utiliza 4 Mecanismos comunes para conseguir objetivos específicos:
- Especificaciones, descripciones textuales de la semántica de un elemento.
- Adornos, que se añaden a los elementos gráficos para hacer visibles aspectos de la especificación del elemento textual.
- Divisiones comunes.
- Clasificador/instancia (abstracción/especificación). Comparten icono pero las instancias tienen el nombre subrayado. UML proporciona 33 clasificadores (actor, clase, componente, interfaz, caso de uso…)
- Interfaz/implementación. Separando lo que se hace de cómo se hace, los contratos ocultan la complejidad.
- Mecanismos de extensión. UML no puede ser universal y satisfacer las necesidades presentes y futuras de todos los proyectos, por los que incorpora:
- Restricciones, cadena de texto entre llaves que especifica cierta condición o regla sobre el elemento. UML define como una extensión estándar OCL (Object Constraint Language o Lenguaje de Restricción de Objetos).
- Estereotipos, variaciones de un elemento de modelo existente con la misma forma pero con un propósito modificado, representado con el nombre del nuevo elemento entre cursores, <<…>>.
- Valores etiquetados, son palabras claves que puede tener un valor anexado, al modo del valor de una propiedad.
Una funcionalidad de un aplicativo software describe un funcionamiento que debe cumplir dicho sistema, esto es define cuáles y cómo deben ser los datos de salida y el comportamiento del sistema dados unos datos de entrada.
No hay nada como el visualizar e interactuar como un sistema para darnos cuenta de qué y cómo queríamos realmente que fuera el sistema. Es la visión moderna de la industria, la visión ágil basada en las nuevas 


Acabo de tener la oportunidad de hacerme esta pregunta profesionalmente, Qué es un persona en una aplicación web ? Y yo pensando que a estas alturas ya debería de estar más que contestada y clara porque todas y cada una de las aplciaciones web que construimos manejan los conceptos "Persona" y "Usuario".
Pero las personas cambian con el tiempo, de dirección, de móvil, de nacionalidad, e incluso de sexo ! Por lo tanto debemos guardar la "foto" de la persona en el momento en el cursó cada póliza, solicitud o compra.

