Desarrollo de Software Orientado a Objeto usando UML Contenido • • • • • • • • • • introducción modelado de sw claves en desarrollo de si abstracción - modelado visual notación (visual) - Beneficios introducción: UML que es UML?. Historia del UML. Participantes en UML 1.0 UML "aglutina" enfoques OO. Perspectivas de UML. Contenido • • • • • • • • • • • • Proceso de desarrollo de SW basado en UML. Que es un proceso de desarrollo de sw?. Rational Unified Process (RUP). Fases e Hitos (Milestones). Elementos en RUP. Características Esenciales de RUP. Proceso dirigido por los Casos de Uso. Proceso Iterativo e Incremental. Proceso Centrado en la Arquitectura. Fases del ciclo de vida. Esfuerzo respecto de las Workflows. Esfuerzo respecto de las Fases. Contenido • • • • • • • • Diagramas de UML. Modelos y diagramas. Diagramas de UML. Organización de los modelos Diagrama de actividad Diagrama de Casos de Uso. Fully Use Case. Diagrama de clases. Contenido • • • • • • • • Diagramas de UML. clases clases : notación grafica clases : encapsulación. Relaciones entre clases Asociación. Agregación. Composición. Contenido • • • • • • • • • • Diagramas de UML. Clases y Objetos. Generalización. Polimorfismo. Diagrama de secuencia. Diagrama de colaboración. Diagrama de estados. Diagrama de componentes. Diagrama de despliegue. Resumen. Introducción Modelado de SW I. Introducción: Modelado de SWI Claves en Desarrollo de SI Notación Herramientas Proceso I. Introducción: Modelado de SW Abstracción - Modelado Visual (MV) “El modelado captura las partes esenciales del sistema” Orden Item envío Proceso de Negocios Sistema Computacional II. Notación (Visual) - Beneficios Manejar la complejidad Interface de Usuario (Visual Basic, Java, ..) Lógica del Negocio (C++, Java, ..) Múltiples Sistemas Servidor de BDs (C++ & SQL, ..) “Modelar el sistema independientemente del lenguaje de implementación” Componentes Reutilizados Promover la Reutilización Introducción: UML I. Introducción: UML ¿Qué es UML? UML = Unified Modeling Language Un lenguaje de propósito general para el modelado orientado a objetos Documento “OMG Unified Modeling Language Specification” UML combina notaciones provenientes desde: – Modelado Orientado a Objetos – Modelado de Datos – Modelado de Componentes – Modelado de Flujos de Trabajo (Workflows) I. Introducción: UML Historia de UML I. Introducción: UML Historia de UML UML 2.0 2001-2003 UML 1.4 2000 1999 1998 Nov ‘97 UML 1.3 Revisiones menores UML aprobado por el OMG UML 1.2 Proceso de Desarrollo de SW basado en UML ¿Qué es un Proceso de Desarrollo de SW? • Define Quién debe hacer Qué, Cuándo y Cómo debe hacerlo Requisitos nuevos o modificados Proceso de Desarrollo de Software Sistema nuevo o modificado No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable Dos Dimensiones IV. Proceso de Desarrollo de SW basado en UML Fases e Hitos (Milestones) Inception Elaboration Objetivos (Vision) tiempo Construction Arquitectura Transition Capacidad Operacional Inicial Release del Producto IV. Proceso de Desarrollo de SW basado en UML Elementos en RUP • Workflows (Disciplinas) Workflows Primarios • Business Modeling (Modado del Negocio) • Requirements (Requisitos) • Analysis & Design (Análisis y Diseño) • Implementation (Implementación) • Test (Pruebas) • Deployment (Despliegue) Workflows de Apoyo • Environment (Entorno) • Project Management (Gestión del Proyecto) • Configuration & Change Management (Gestión de Configuración y Cambios) IV. Proceso de Desarrollo de SW basado en UML ... Elementos en RUP Workflow, Workflow Detail , Workers, Actividades y Artefactos Ejemplo Workflow: Requirements Workflow Detail:Analyse the Problem Workers Actividades Artefactos IV. Proceso de Desarrollo de SW basado en UML ... Elementos en RUP Artefactos Resultado parcial o final que es producido y usado durante el proyecto. Son las entradas y salidas de las actividades Un artefacto puede ser un documento, un modelo o un elemento de modelo Conjuntos de Artefactos Business Modeling Set Deployment Set Requirements Set Project Management Set Analysis & Design Set Configuration & Change Management Set Implementation Set Environment Set Test Set IV. Proceso de Desarrollo de SW basado en UML Características Esenciales de RUP • Proceso Dirigido por los Casos de Uso • Proceso Iterativo e Incremental • Proceso Centrado en la Arquitectura IV. Proceso de Desarrollo de SW basado en UML Proceso dirigido por los Casos de Uso Capturar, definir y validar los casos de uso Requisitos Análisis & Diseño Implementación Pruebas Casos de Uso integran el trabajo Realizar los casos de uso Verificar que se satisfacen los casos de uso IV. Proceso de Desarrollo de SW basado en UML ... Proceso dirigido por los Casos de Uso «trace» Caso de Uso «trace» Realización de Análisis Realización de Diseño «trace» «trace» Pruebas Unitarias Pruebas Funcionales X Caso de Prueba [The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999] IV. Proceso de Desarrollo de SW basado en UML ... Proceso dirigido por los Casos de Uso IV. Proceso de Desarrollo de SW basado en UML ... Proceso Iterativo e Incremental Las actividades se encadenan en una mini-cascada con un alcance limitado por los objetivos de la iteración Análisis Diseño Codific. n veces Pruebas e Integración IV. Proceso de Desarrollo de SW basado en UML Proceso Iterativo e Incremental Enfoque Cascada Enfoque Iterativo e Incremental IV. Proceso de Desarrollo de SW basado en UML ... Proceso Iterativo e Incremental Grado de Finalización de Artefactos IV. Proceso de Desarrollo de SW basado en UML Proceso Centrado en la Arquitectura • • Arquitectura de un sistema es la organización o estructura de sus partes más relevantes Un arquitectura ejecutable es una implementación parcial del sistema, construida para demostrar algunas funciones y propiedades RUP establece refinamientos sucesivos de una arquitectura como Inception Elaboration ejecutable, Construction construida Transition un prototipo evolutivo • Architecture Esfuerzo respecto de las Workflows Inception Elaboration Construction Transition 15% Requisitos Una iteración en la fase de elaboración Análisis 10% Diseño 15% 30% Implementación 15% Pruebas P re lim ina ry Ite ra tion (s) ite r. #1 ite r. #2 ite r. #n ite r. # n+ 1 ite r. # n+2 ite r. #m 5% mantenimiento 10% gestión cambios ite r. #m +1 IV. Proceso de Desarrollo de SW basado en UML ...Esfuerzo respecto de las Fases Inception Elaboration Construction Transition Requisitos Una iteración en la fase de elaboración Análisis Diseño Implementación Pruebas P re lim ina ry Ite ra tion (s) Esfuerzo: Duración: 5% 10% ite r. #1 ite r. #2 20% 30% ite r. #n ite r. # n+ 1 65% 50% ite r. # n+2 ite r. #m ite r. #m +1 10% 10% Diagramas de UML II. Breve Tour por UML ... Diagramas de UML Los diagramas expresan gráficamente partes de un modelo Use Case Use Case Diagramas de Diagrams Diagrams Secuencia Use Case Use Case Diagramas de Diagrams Diagrams Casos de Uso Scenario Scenario Diagramas de Diagrams Diagrams Colaboración Scenario Scenario Diagramas de Diagrams Diagrams Estados State State Diagramas de Diagrams Diagrams Clases Modelo Diagramas de Actividad State State Diagramas de Diagrams Diagrams Objetos State State Diagramas de Diagrams Diagrams Componentes Component Component Diagrams Diagramas Diagrams de Distribución II. Breve Tour por UML Diagrama de Actividad Buscar Bebida [ no hay café ] [ no zumo ] [ hay café ] [ hay zumo ] Poner café en filtro Añadir agua al depósito Coger taza Coger zumo Poner filtro en máquina Encender máquina / cafetera.On Café en preparación indicador de fin Servir café Beber II. Breve Tour por UML … Otro Ejemplo (con swim lines) Pasaj ero Solicitar pasaje Vendedor Airline Verificar existencia vuelo Dar detalles vuelo Informar alternativas y precios Seleccionar vuelo Solicitar pago Reservar plazas Confirmar plaza reservada Pagar pasaje Emitir billete Práctica 9 II. Breve Tour por UML Diagrama de Casos de Uso Casos de Uso es una técnica para capturar información de cómo un sistema o negocio trabaja, o de cómo se desea que trabaje No pertenece estrictamente al enfoque orientado a objeto, es una técnica para captura de requisitos II. Breve Tour por UML Diagrama de Casos de Uso ud Casos De uso modulo de•••••••••••••••••••••••••• servicios del fotografo •••••••••••••••••••••••••• ••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• CU_SFG_MS_001•••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• Agregar serv icio •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• CU_SFG_MS_002eliminar serv icio •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• «include» CU_SFG_MS-005buscar serv icio •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• Fotografo CU_SFG_MS-003modificar serv icio administrador «include» •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• «include» •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• CU_SFG_MS_008_Aceptar Solicitd CU_SFG_MS_004CU_SFG_MS_006•••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• Consultar Ver Datos «extend» Usuario •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• «extend» «include» •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• CU_SFG_MS_007•••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• Solicitar serv icio CU_SFG_MS_010_Buscar Solicitd •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• CU_SFG_MS_009_Rechazar Solicitd «include» •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••• Fully use case • • Es un documento escrito que dispone de la explicación detallada del caso de uso Esto lo logra organizando la información de una determinada forma – Nombre – Breve descripción – Actores – Pre condiciones – Post condición – Flujo principal – Flujos alternativos – Condiciones especiales. • Existe una amplia variedad de modelos de fully use case. Diagrama de Clases • Método del sustantivo – Determinar todos los sustantivos – Eliminar sustantivos de acuerdo a los siguientes criterios: • Redundantes • Irrelevantes • Vagos • Operaciones • Constructores de implementación • Meta lenguajes • Atributos – Establecer relaciones • Asociaciones • Cardinalidades • generalizaciones III. El Paradigma OO: Diagrama de Clases •••••••••••• •••••••••••••••••••••••• Diagrama de clases •••••••••••• •••••••••••••••••••••••• cd Ej emplos cd Ej emplos •••••••••••• •••••••••••••••••••••••• Persona Persona # + nombre: String fechaDeNacimiento: Date direccion: String telefono: String # + nombre: String fechaDeNacimiento: Date direccion: String telefono: String •••••••••••• •••••••••••••••••••••••• •••••••••••• •••••••••••••••••••••••• + calcularEdad(Date) : void + calcularEdad(Date) : void + + setNombre(String) : void getNombre() : String + + setNombre(String) : void getNombre() : String •••••••••••• •••••••••••••••••••••••• III. El Paradigma OO: Diagrama de Clases Asociación La asociación expresa una conexión bidireccional entre objetos Una asociación es una abstracción de la relación existente en los enlaces entre los objetos Univ. de Murcia : Universidad Un enlace Antonio : Estudiante Estudiante Universidad Una asociación III. El Paradigma OO: Diagrama de Clases … Asociación Ejemplo: marido casado-con mujer jefe 0..1 0..1 Persona nombre s.s. 0..1 * Administra empleado * emplea-a Compañía trabaja-para nombre dirección * III. El Paradigma OO: Diagrama de Clases Agregación La agregación representa una relación en que cada uno puede existir por separado • • Un ejemplo de esto es estante libro • cd Ej emplos • Estante Libro 0..1 cd Ej emplos Estante 0..1 • 0..* • • • • • • • 0..* • • • • • • • Libro III. El Paradigma OO: Diagrama de Clases Composición • La composición representa el caso que un • objeto no puede existir sin el otro • • En este caso podemos ir al ejemplo de • • • Factura – ítem • cd Ej emplos Factura 1..1 cd Ej emplos Factura 1..1 • • • 1..* • • • • • • • 1..* • • • • Item Item III. El Paradigma OO: Diagrama de Clases ... Generalización Vehículo Veihículo Terrestre Coche Camión Vehículo Aéreo Avión Helicóptero III. El Paradigma OO: Diagrama de Clases ... Generalización Esta relación se da cuando existe un conjunto de atributos que se repiten en la clases y lleva a la generación de un padre Por esa razón las clases hijas tienen todo lo que tiene • • el padre mas las particularidades • • • • • • cd Ej emplos cd Ej emplos Caj aDeAhorro Cuenta • • - codigo: int saldo: double • + + + acreditar(double) : void debitar(double) : void getSaldo() : double CuentaCorriente • - codigo: int saldo: double interes: double + + + + acreditar(double) : void debitar(double) : void getSaldo() : double • setInteres(double) : void • • - codigo: int saldo: double descubierto: double + + + + acreditar(double) : void debitar(double) : void getSaldo() : double setDescubierto(double) : void • • Caj aDeAhorro • • • • • CuentaCorriente - interes: double - descubierto: double + setInteres(double) : void + setDescubierto(double) : void III. El Paradigma OO: Diagrama de Clases Polimorfismo El término polimorfismo se refiere a que una característica de una clase puede tomar varias formas El polimorfismo representa en nuestro caso la posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones III. El Paradigma OO: Diagrama de Clases Polimorfismo Ejemplo: toda cuenta debita de forma distinta, la caja de ahorro debita hasta llegar a 0 y la cuenta corriente debita• hasta llegar al descubierto • • cd Ej emplos • Cuenta • - codigo: int saldo: double • + + + acreditar(double) : void debitar(double) : void getSaldo() : double • • Caj aDeAhorro • • • CuentaCorriente - interes: double - descubierto: double + + debitar(double) : void setInteres(double) : void + + debitar(double) : void setDescubierto(double) : void II. Breve Tour por UML Diagrama de Secuencia : Encargado :WInPréstamos :Socio prestar(video, socio) verificar situación socio verificar situación video registrar préstamo entregar recibo :Video :Préstamo II. Breve Tour por UML Diagrama de Colaboración :Socio :Video 2: verificar situación socio 1: prestar(video, socio) 3: verificar situación video :WInPréstamos 5: entregar recibo : Encargado 4: registrar préstamo :Préstamo II. Breve Tour por UML Diagrama de Estados alta baja sin préstamos número_préstamos = 0 Socio número : int nombre : char[50] número_prestamos : int = 0 prestar devolver[ número_préstamos = 1 ] alta() baja() prestar(código_libro : int, fecha : date) devolver(código_libro : int, fecha : date) número_préstamos > 0 con préstamos prestar devolver[ número_préstamos > 1 ] II. Breve Tour por UML Diagrama Componentes Interfaz de Terminal Gestión de Cuentas Rutinas de conexión Control y Análisis Acceso a BD II. Breve Tour por UML Diagrama de Despliegue Servidor Central Control y Análisis Acceso a BD Comment Comment Rutinas de Coneccion Comment Terminal de Consulta Rutinas de Coneccion Comment Punto de Venta Rutinas de Coneccion Comment Gestión de Cuentas Interfaz de Terminal Comment Comment Interfaz de Terminal Comment II. Breve Tour por UML Resumen UML define una notación que se expresa como diagramas sirven para representar modelos/subsistemas o partes de ellos El 80 por ciento de la mayoría de los problemas pueden modelarse usando alrededor del 20 por ciento de UML-- Grady Booch