Ingeniería de Software I Modelamiento con UML Ingeniería de Software I
Temas Modelamiento UML Elementos básicos Relaciones Diagramas
Modelamiento
Modelo Representación de una parte de un sistema (aspectos relevantes) Ejemplo: Un Plano Una maqueta Un prototipo etc.
Ventajas Explorar diferentes soluciones Realizar análisis de costos y estimaciones Minimizar los riesgos y errores Simplificar la complejidad del mundo real omitiendo aspectos no tan importantes
Modelamiento Visual Generar productos a partir del modelo Mecanismo de comunicación Claro Fácil de modificar Generar productos a partir del modelo Documentar las decisiones tomadas
Unified Modeling Language UML Unified Modeling Language
UML “Es un lenguaje para la especificación, visualización, construcción y documentación de los diferentes elementos de un sistema de software” Especificación UML
UML Desarrollado inicialmente por un equipo de personas (Rumbaugh, Jacobson, Booch) Adoptado en 1997 por OMG Versión actual: 1.4
UML No es una metodología ni un proceso Notación No define etapas No define cómo elaborar cada diagrama Puede usarse en diversas metodologías Notación Sintaxis Semántica
UML Componentes de UML Elementos Relaciones Diagramas
Elementos básicos
Clase Colección de objetos con estructura, comportamiento, relaciones y semántica común Representa un concepto dentro del sistema Deben tener un nombre único dentro del paquete al cual pertenecen
Clase Estructura Comportamiento Relaciones con otros elementos Atributos Comportamiento Operaciones (Métodos) Relaciones con otros elementos Notación Rectángulo con tres partes: Nombre, Atributos, Operaciones
Clase Nombre Clase atributo: tipo … método (parámetos): tipo
Clase Ejemplo: Municipio nombre: String extensión: double habitantes: int +setHabitantes(cantidad:int):String +getDensidad():double
Interfaz Conjunto de operaciones que caracterizan el comportamiento de un elemento No especifica estructura interna No tiene atributos No implementa las operaciones que define No es origen de asociaciones
Interfaz Notación Ejemplo: Un rectángulo con dos partes: Nombre precedido de: <<interface>> Operaciones Un círculo con el nombre de la interfaz en la parte inferior Ejemplo:
<<interface>> Interfaz <<interface>> ItemInventario +getCódigo():String +establecerFecha (fecha:Date):void ItemInventario
Objeto Instancia de una clase Tiene: Notación Identidad Valores Rectángulo con dos partes: Nombre - Clase Atributos - Valores
Objeto nombre: Clase atributo = valor …
Objeto Ejemplo: capitalDepto: Municipio unMunicipio: Municipio nombre = “Cali” extensión = 564 habitantes = 2.264.256 unMunicipio: Municipio
Componente Parte modular y reemplazable de un sistema, que encapsula una implementación y expone un conjunto de interfaces Puede ser implementado por uno o más “productos de software” (artifacts), como archivos binarios o ejecutables
Componente Notación Nombre
Nodo Objeto físico que representa un recurso de procesamiento Incluyen Dispositivos de cómputo Recursos humanos Recursos mecánicos …
Nodo Notación
Use Case (Caso de Uso) Unidad de funcionalidad proporcionada por un sistema, formada por: Secuencia de mensajes intercambiados entre el sistema y elementos externos, y Acciones llevadas a cabo por el sistema
Use Case Notación Nombre
Actor Conjunto coherente de roles que los usuarios ejecutan cuando interactúan con el sistema Notación Nombre
Diagramas
Diagrama de clases Representación visual de la estructura estática del sistema Clasificadores (clases, interfaces, paquetes) Relaciones estáticas
Diagrama de clases Relaciones Asociación Generalización Dependencia Realización
Asociación Relación entre dos clasificadores (clases) que implica conexión entre las instancias Notación: nombre
Asociación Multiplicidad Número de instancias de una clase relacionadas con UNA instancia de la otra Ejemplos: 1 0..4 1..* 2..5,8,10..20
Asociación Navegabilidad Roles rol ClaseA ClaseA
Asociación Ejemplo: Empresa Empleado empleador empleado Trabaja 1..* 0..2
Asociación Agregación Asociación Todo-Parte Ejemplo: Polígono Punto 1 3..* vértice
Asociación Composición Agregación más fuerte. Una parte está incluida en UNA sola composición La composición es responsable por la disposición de sus partes.
Asociación Ejemplo: Materia Curso 1..*
Generalización Relación entre un elemento más general (padre) y otro más específico (hijo) Jerarquía - Relación “es”
Generalización Ejemplo: SerVivo Animal Planta
Realización Relación entre una especificación y su implementación Significa que el cliente soporta (al menos) todas las operaciones definidas en el proveedor
<<interface>> Realización Ejemplo: <<interface>> ItemInventario +getvalor():double Libro +Libro() … Libro ItemInventario
Dependencia Relación no estructural entre dos elementos, donde un cambio en uno de ellos (el independiente) puede afectar al otro (el dependiente)
Dependencia Ejemplos: Libro ItemInventario Venta Materias Matrícula
Diagrama de objetos Representa instancias de las clases y relaciones entre ellas (pueden ser temporales) “Foto” del estado del sistema en un momento dado Sirve para ejemplificar algún elemento complejo del sistema
Diagrama de objetos Ejemplo: Alexandra:Empleado Icesi: Empresa Andrés:Empleado Daniel:Empleado
Diagrama de componentes Diagrama de implementación Muestra la organización y las dependencias entre los componentes de software Incluye: Componentes Relaciones de dependencia (usando interfaces)
Diagrama de componentes Ejemplo: A B <<EJBSession>> Sesión Catálogo <<EJBEntity>> Catálogo
Diagrama de deployment (despliegue) Diagrama de implementación Configuración de los elementos de procesamiento y los componentes de software en tiempo de ejecución Muestra qué componentes pueden ejecutarse en cada nodo
Diagrama de deployment Ejemplo: :Servidor :Cliente :compA :compB
Diagramas de interacción Permiten modelar el comportamiento Colección de interacciones (mensajes) entre instancias (objetos) para lograr un objetivo específico Muestra llamados, creación y destrucción de instancias
Diagramas de interacción Tipos Diagrama de Secuencia Énfasis en el tiempo (secuencia de los mensajes) Diagrama de Colaboración Énfasis en la estructura (relaciones entre los objetos)
Diagrama de secuencia Dos dimensiones: Elementos Vertical tiempo Horizontal instancias (no tienen orden) Elementos Línea de vida Representa la existencia de la instancia
Diagrama de secuencia Elementos (cont.) Activación o Foco de control Período durante el cual una instancia está llevando a cabo una acción Mensaje – Estímulo Comunicación entre dos instancias Invocar una operación Creación Destrucción Envío de una señal
Diagrama de secuencia Mensaje – Estímulo Anidado: Asíncrono: De retorno:
Diagrama de secuencia objeto:Clase nuevo:Clase new(…) mensaje(…) X
Diagrama de colaboración Representa diferentes instancias, sus roles, las relaciones entre ellas y sus interacciones La secuencia se indica numerando los mensajes Los enlaces entre las instancias pueden tener información adicional
Diagrama de colaboración Formato mensajes: Predecesor / Expresión de secuencia Valor de retorno := Nombre (lista de parámetros) 3.6 [x>0]: mover(5,7) 5 repaint() 1.2 *[i:=1..n]: dibujarSegmento(i)
Diagrama de colaboración objeto:Clase otro:Clase2 1 mensaje(…) rol nuevo:Clase3 new()
Diagrama de estados Describen el comportamiento de instancias de un elemento Máquinas de estado Pueden incluir variables Modelar comportamiento discreto
Diagrama de estados Elementos Estado Estado inicial Estado final Transición Entradas/Salidas Variables
Diagrama de estados Listo Eliminado terminar eliminar / control=0
Diagrama de actividades Variación de diagrama de estados Modelar procesos de negocio y flujos de datos/trabajo (workflow) Elementos adicionales: Subactividad Decisiones Íconos de control Bifurcaciones “Carriles” (Swimlanes)
Diagrama de actividades Calcular costo total Autorizar [costo>=50] [costo<50]
Diagrama de use case Representa la funcionalidad de un sistema, de acuerdo a la interacción con el exterior Puede mostrar gráficamente el límite del sistema Sirve como herramienta de comunicación con los usuarios
Diagrama de use case Relaciones Asociación: Actor-Use Case Generalización: Actor, Use Case Extends: Use Case – Use Case El comportamiento de un caso de uso (extendido) puede ser incluido en otro (base) Include: Use Case – Use Case El comportamiento de un caso de uso contiene al otro
Actualizar beneficios Diagrama de use case Empleado Actualizar perfil Actualizar beneficios Administrador Actualizar valor hora <<include>>
Bibliografía The Unified Modeling Language User Guide. Booch, Jacobson, Rumbaugh The Unified Modeling Language Reference Manual. Rumbaugh, Booch, Jacobson. Especificación UML: www.omg.org