Unidad V. UML Tema I. Conceptos Básicos Tema II. Definición de UML. Vocabulario Tema III. Elementos UML Tema IV. Diagramas Objetivos Conocer el modelo UML Utilizar el modelo UML como parte de la metodología para el desarrollo de software Generar documentación basada en UML Conocer y utilizar algunas herramientas de modelado UML Transformar modelos UML en código de distintos lenguajes de programación Tema I. Conceptos Básicos Proceso de desarrollo de software Proceso -> necesario para responder a las preguntas ¿quién?, ¿qué?, ¿cuándo? Y ¿cómo?. Objetivo de la ingeniería del software: construir un producto de software o mejorar uno existente. Un proceso efectivo reduce el riesgo del proyecto haciéndolo más predecible -> Visión y cultura comunes. Proceso Unificado de desarrollo de software Es un marco de trabajo genérico que puede especializarse para una gran variedad de sistemas de software, diferentes áreas de aplicación, diferentes tipos de organizaciones, niveles de aptitud y tamaños de proyecto. Es el producto final de 30 años de desarrollo y uso práctico. Resultado de la evolución del proceso de desarrollo de Ericsson, el proceso Objectory de Rational. Está dirigido por los casos de uso. Está centrado en la arquitectura. Es iterativo Es incremental Casos de uso Un caso de uso es una descripción de un conjunto de secuencias de acciones, incluyendo variaciones, que un sistema lleva a cabo y que conduce a un resultado observable de interés para un actor determinado. Los casos de uso no sólo inician el proceso de desarrollo sino que le proporcionan un hilo conductor. El proceso unificado está dirigido por casos de uso porque avanza a través de una serie de flujos de trabajo que parten de los casos de uso. Arquitectura La arquitectura del software se centra tanto en los elementos estructurales significativos del sistema, como subsistemas, clases, componentes y nodos, como en las colaboraciones que tienen lugar entre estos elementos a través de las interfaces. Los casos de uso guían la arquitectura del sistema y la arquitectura influye en la selección de los casos de uso. Ambos maduran según avanza el ciclo de desarrollo. Proceso Unificado iterativo e incremental Dividir en miniproyectos -> Iteración planificada El resultado de cada miniproyecto se traduce en un incremento del proyecto global. Iteración: pasos en el flujo de trabajo Incremento: crecimiento del producto Ciclos El Proceso Unificado se repite a lo largo de una serie de ciclos que constituyen la vida de un sistema. Cada ciclo concluye con una versión del producto para los clientes. Cada ciclo tiene cuatro fases: inicio, elaboración, construcción y transición. Cada fase se subdivide en iteraciones. Tema II. Definición de UML. Vocabulario Introducción Desde los inicios de la informática se han estado utilizando distintas formas de representar los diseños de una forma más bien personal o con algún modelo gráfico•La falta de estandarización en la manera de representar gráficamente un modelo impedía que los diseños gráficos realizados se pudieran compartir fácilmente entre distintos diseñadores•Con este objetivo se creo el Lenguaje Unificado de Modelado (UML: Unified Modeling Language).•UML se ha convertido en ese estándar tan ansiado para representar y modelar la información con la que se trabaja en las fases de análisis y, especialmente de diseño Historia El lenguaje UML comienza a gestarse en octubre de 1994•Rumbaughy Boochse unen en Rationalcon el objetivo de unificar dos métodos que habían desarrollado: el método Boochy el OMT (Object Modelling Tool)•En 1995 se les une también Jacobson •Todas estas colaboraciones conducen a la definición de la primera versión de UML. Definición El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables. Objetivos del UML Los objetivos de UML son: Visualizar, expresa de forma gráfica Especificar, las características de un sistema Construir, a partir de los modelos especificados Documentar, los propios elementos gráficos sirven de documentación Vocabulario UML Elementos Estructurales De comportamiento Interacción, Máquina de Datos De agrupación Paquete, Modelo, Subsistema De anotación Nota Relaciones Dependencia, Asociación, Generalización Diagramas Casos de Uso, Clase, Objeto, Secuencia, Colaboración, Estados, Actividad, Componente, espliegue Tema III. Elementos UML ¿Qué forma un modelo de UML? Un modelo UML está compuesto por tres clases de bloques de construcción Elementos: Los elementos son abstracciones de cosas reales o ficticias (objetos, acciones, etc.) Relaciones: relacionan los elementos entre sí Diagramas: Son colecciones de elementos con sus relaciones Elementos Pueden ser estructurales, de comportamiento de agrupación o de anotación Elementos estructurales: actores, casos de uso, clases, objetos Elementos de comportamiento: mensajes Elementos de agrupación: paquetes Elementos Estructurales Clases. Agrupan objetos atributos y operaciones similares. Interfaz. Colección de operaciones que especifican un servicio de una clase o componente. En una clase no se define la implementación de las operaciones. Actor: Una definición previa, es que un Actor es un rol que un usuario juega con respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto se especifica que un Actor no necesariamente representa a una persona en particular, sino más bien la labor que realiza frente al sistema. Caso de Uso. Es una operación/tarea específica que se realiza tras una orden de algún agente externo, sea desde una petición de un actor o bien desde la invocación desde otro caso de uso. Describen la interacción entre actores y sistema. Elementos de Comportamiento Interacciones. Comportamiento que comprende un conjunto de mensajes intercambiados entre un conjunto de objetos, dentro de un contexto particular, para alcanzar un propósito específico. Máquina de Estados. Especifica la secuencia de estados por las que pasa un objeto. Elementos de Agrupación Paquetes. Es un mecanismo de propósito general para organizar elementos en grupos. Tema IV. Diagramas Diagrama de clases. Muestran un conjunto de clases y sus relaciones. Diagrama de objetos. Muestran un conjunto de objetos y sus relaciones. Diagrama de casos de uso. Son muy útiles en tres áreas: Determinación de los requerimientos Comunicación con los clientes Generar los casos de prueba Los diagramas de casos de uso proporcionan una visión externa del sistema. Ejemplo: Se muestra como ilustración los casos de uso de la máquina de café. Diagramas de Secuencia. Un diagrama de secuencia muestra la interacción de un conjunto de objetos en una aplicación a través del tiempo. Esta descripción es importante porque puede dar detalle a los casos de uso, aclarándolos al nivel de mensajes de los objetos existentes, como también muestra el uso de los mensajes de las clases diseñadas en el contexto de una operación. Diagramas de Colaboración. Un diagrama de colaboración es una forma de representar interacción entre objetos, alterna al diagrama de secuencia. A diferencia de los diagramas de secuencia, pueden mostrar el contexto de la operación (cuáles objetos son atributos, cuáles temporales, ... ) y ciclos en la ejecución. Diagrama de Estados. determina los estados que un objeto puede tener y cómo los eventos afectan esos estados a través del tiempo. Un diagrama de estado debe abarcar todas las clases que tengan estados y conducta definidos claramente. Diagrama de Actividades. Un diagrama de actividades es un caso especial de un diagrama de estados en el cual casi todos los estados son estados de acción (identifican que acción se ejecuta al estar en él) y casi todas las transiciones son enviadas al terminar la accion ejecutada en el estado anterior. Puede dar detalle a un caso de uso, un objeto o un mensaje en un objeto. Sirven para representar transiciones internas, sin hacer mucho énfasis en transiciones o eventos externos. Diagrama de Componentes. describe componentes de software y sus dependencias con otros componentes, representando la estructura del código. Los componentes de software pueden ser: componentes de código, componentes binarios que son los generados por la compilación de los componentes de código y los componentes ejecutables. Diagrama de Despliegue. Un diagrama de despliegue muestra las relaciones físicas entre los componentes hardware y software en el sistema final, es decir, la configuración de los elementos de procesamiento en tiempo de ejecución y los componentes software (procesos y objetos que se ejecutan en ellos). Estarán formados por instancias de los componentes software que representan manifestaciones del código en tiempo de ejecución (los componentes que sólo sean utilizados en tiempo de compilación deben mostrarse en el diagrama de componentes).