Modelado de Software Orientado a Objetos usando UML
Modelado de Software Orientado a Objetos usando UML Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 1
Contenido I. II. III. IV. V. Pedro Mejia Introducción – Modelado de Software – UML Breve Tour por UML El Paradigma Orientado a Objeto usando UML – Fundamentos del Modelado OO – Requisitos del software – Interacción entre objetos – Clases y relaciones entre clases – Comportamiento de objetos – Componentes – Distribución y despliegue de componentes – Object Constraint Language (OCL) Proceso de Desarrollo de SW basado en UML Conclusiones Curso de Ingeniería de Software, CINVESTAV-IPN 2
I Introducción Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 3
Introducción: Modelado de SW Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 4
Construcción de Algoritmo de Fibonacci int fib(int val){ if ((val==1)||(val==2)) return 1; else return (fib(val-1)+fib(val-2)); } Puede hacerlo una sola persona Requiere: Modelado mínimo Proceso simple Herramientas simples Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 5
I. Introducción: Modelado de SW Construcción del software para un cajero automatico Construida eficientemente y en un tiem razonable por un equipo Requiere: Modelado Proceso bien definido Herramientas más sofisticadas Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 6
Sistema de Radar de Aeropuerto Notación Herramientas Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN Proceso 7
Pero, como se modela un sistema con esta complejidad ? Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 8
Beneficios del Modelado 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” Pedro Mejia Componentes Reutilizados Promover la Reutilización Curso de Ingeniería de Software, CINVESTAV-IPN 9
Introducción: UML Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 10
¿Qué es UML? § § UML = Unified Modeling Language Un lenguaje de propósito general para el modelado orientado a objetos. Impulsado por el Object Management Group (OMG, www. omg. org) Documento “OMG Unified Modeling Language Specification” UML combina notaciones provenientes desde: • • Pedro Mejia Modelado Orientado a Objetos de Datos de Componentes de Flujos de Trabajo (Workflows) Curso de Ingeniería de Software, CINVESTAV-IPN 11
Antes de UML § § Diversos métodos y técnicas OO, con muchos aspectos en común pero utilizando distintas notaciones. Modelos de Constantine, Jackson, Gane Sarson, Shlaer. Mellor, etc. Inconvenientes para el aprendizaje, aplicación, construcción y uso de herramientas CASE, etc. Pugna entre distintos enfoques Objetivo: Establecer una notación estándar Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 12
Antes de UML § § Modelos de descripción de procesos: Diagramas de flujo de datos. Modelos de descripción de datos: Diagramas de entidad -relación, diccionario de datos. Modelos de descripción arquitectural: Diagramas de Estructura. Modelos de descripción de comportamiento: State. Charts. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 13
Historia de UML § § Comenzó como el “Método Unificado”, con la participación de Grady Booch y Jim Rumbaugh. Se presentó en el OOPSLA’ 95 El mismo año se unió Ivar Jacobson. Los “Tres Amigos” son socios en la compañía Rational Software. Herramienta CASE Rational Rose Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 14
Historia de UML 2005? 2003 2000 1999 1998 Nov ‘ 97 Pedro Mejia UML 2. 0 UML 1. 5 UML 1. 4 UML 1. 3 Revisiones menores UML 1. 2 UML aprobado por el OMG Curso de Ingeniería de Software, CINVESTAV-IPN 15
Participantes en UML 1. 0 § § § Rational Software § (Grady Booch, Jim Rumbaugh y Ivar Jacobson) § Digital Equipment Hewlett-Packard i-Logix (David Harel) IBM ICON Computing (Desmond D’Souza) § Intellicorp and James Martin & co. (James Odell) Pedro Mejia § § § § MCI Systemhouse Microsoft Objec. Time Oracle Corp. Platinium Technology Sterling Software Taskon Texas Instruments Unisys Curso de Ingeniería de Software, CINVESTAV-IPN 16
UML reune a enfoques OO Rumbaugh Booch Jacobson Odell Meyer Pre- and Post-conditions Shlaer-Mellor UML Object life cycles Harel State Charts Gamma et. al. Frameworks, patterns, notes Embly Singleton classes Wirfs-Brock Fusion Responsabilities Operation descriptions, message numbering Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 17
Factores importantes en UML § § § Definición del proceso de desarrollo usando UML no es una metodología o proceso. No cubre todas las necesidades de especificación de un proyecto software. Util en la definición de requerimientos, pero tambien en el diseño (y en las pruebas…). § Notacion estándar y soportada por herramientas CASE § Estándar del OMG § Gran cantidad de Libros y cursos. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 18
II Introducion a UML Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 19
Modelos y Diagramas § Un modelo captura una vista de un sistema del mundo real. Es una abstracción de dicho sistema, considerando un cierto propósito. Así, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propósito del modelo, y a un apropiado nivel de detalle. § Diagrama: una representación gráfica de una colección de elementos de modelado, a menudo dibujada como un grafo con vértices conectados por arcos OMG UML 1. 4 Specification Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 20
. . . Modelos y Diagramas § § § Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de interés El código fuente del sistema es el modelo más detallado del sistema (y además es ejecutable). Sin embargo, se requieren otros modelos. . . Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 21
Diagramas de UML Los diagramas expresan gráficamente partes de un mo Use Case Diagramas de Diagrams Use Case Diagramas de Casos de Uso Diagrams Secuencia Scenario Diagramas de Diagrams Colaboración Scenario Diagramas de Diagrams Estados Pedro Mejia State Diagramas de Diagrams Clases State Diagramas de Diagrams Componentes Modelos Diagramas de Actividad State Diagramas Diagrams de Diagrams Objetos Component Diagrams Diagramas Diagrams de Distribución Curso de Ingeniería de Software, CINVESTAV-IPN 22
Diagrama de Casos de Uso Es una técnica para capturar información sobre los servicios que un sistema proporciona a su entorno, desde el punto de vista del usuario. Es una técnica para captura y especificación de requisitos Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 23
Diagrama de Clases § El Diagrama de Clases es el diagrama principal para el análisis y diseño del sistema § Un diagrama de clases presenta las clases del sistema con sus relaciones estructurales y de herencia § La definición de clase incluye definiciones para atributos y operaciones § El modelo de casos de uso debería aportar información para establecer las clases, objetos, atributos y operaciones Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 24
Clases y Objetos §En UML, para distinguir una clase y una instancia de la clase (un objeto) se representa por un rectángulo con un nombre subrayado §Objeto = Identidad + Estado + Comportamiento §El estado está representado por los valores de los atributos los cuales tienen una visibilidad. §Un atributo toma un valor en un dominio concreto. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 25
Diagramas de Clases Un diagrama de clases describe los tipos de objetos en el sistema y los distintos tipos de relaciones estáticas que existen entre ellos. Existen cuatro relaciones: • Asociación • Generalización/especialización • Agregación/composición • Dependencia Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 26
Asociación • Permite asociar objetos. • La asociacion se representa mediante una línea que une las cajas de los dos objetos. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 27
Generalización Esta es una relación de tipo: es-un. Una generalización se representa como una flecha que une a las subclases (hijos) a la superclase (padre), con la flecha tocando la caja de la superclase. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 28
Relacion de Dependencia entre Clases Se usa para mostrar relaciones entre paquetes (grupos de clases) Proveedor Cliente Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 29
Agregacion de Objetos • En este modelo se muestra como las clases pueden estar compuestas por otras clases. • Existe la relacion de agregacion y la de composicion. • Son similares a los modelos de entidad-relacion. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 30
Diagrama de Secuencia Describe el comportamiento dinamico del los objetos en el sistema Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 31
Diagrama de Colaboración § Modela la interacción entre los objetos de un Caso de Uso § Los objetos están conectados por enlaces (links) en los cuales se representan los mensajes enviados acompañados de una flecha que indica su dirección § Ofrece una mejor visión del escenario cuando el analista está intentando comprender la participación de un objeto en el sistema Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 32
Diagrama de Estados Modela el comportamiento de una parte del sistema Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 33
Diagrama de Actividad Es un caso especial de un diagrama de state-chart en donde los estados son actividades (“funciones”). Es util para dibujar los flujos de trabajo (workflows) en un sistema Puede especificar: (1)El comportamiento de los objetos de una clase (2) La lógica de una operación (método) (3) Parte o toda la descripción de un Caso de uso (4) La descripción de un Flujo de Trabajo Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 34
Diagrama Componentes § Permite modelar la estructura del software y la dependencia entre componentes, en donde un componente es un grupo de clases que trabajan estrechamente. Los componentes pueden corresponder código fuente, binario o ejecutable. § Una relación de dependencia indica que un componente utiliza otro, por lo cual depende de él Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 35
Diagrama de Despliegue § Modela la distribución en tiempo de ejecución de los elementos de procesamiento y componentes de software, junto a los procesos y objetos asociados § Se modelan los nodos y la comunicación entre ellos § Cada nodo puede contiene instancias de componentes Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 36
Paquetes en UML § § Los paquetes ofrecen un mecanismo general para la organización de los modelos/subsistemas agrupando elementos de modelado Se representan gráficamente como: Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 37
… Paquetes en UML § § § Cada paquete corresponde a un submodelo (subsistema) del modelo (sistema) Un paquete puede contener otros paquetes, sin límite de anidamiento pero cada elemento pertenece a (está definido en) sólo un paquete Una clase de un paquete puede aparecer en otro paquete por la importación a través de una relación de dependencia entre paquetes Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 38
… Paquetes en UML § § Todos los elementos no son necesariamente visibles desde el exterior del paquete, es decir, un paquete encapsula a la vez que agrupa El operador “: : ” permite designar una clase definida en un contexto distinto del actual Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 39
. . . Paquetes en Rational Rose Customers Banking Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 40
Los modelos se usan para describir al sistema de software p p Modelo del sistema: Modelo de objetos + modelo funcional + modelo dinamico Modelo de objetos: Cual es la estructura del sistema? Cuales son los objetos y cual es su relacion? • p Modelo funcional: Cuales son las funciones del sistema? Como fluyen los datos en el sistema? • p Notacion UML: Diagramas de clases Notacion UML: Diagramas de casos de uso Modelo dinamico: Como reaccciona el sistema a eventos externos (e internos) y cual es el flujo de eventos? • Pedro Mejia Notacion UML: Diagramas de secuencia, state charts y de actividad. Curso de Ingeniería de Software, CINVESTAV-IPN 41
Modos de utilizacion de UML p Ingenieria hacia adelante(Forward Engineering) • p Ingenieria en reversa (Reverse Engineering) • • p Se crea un modelo a partir de algun codigo Proyectos de interfaces o re-ingenieria Ingenieria ciclica (Roundtrip Engineering) • • p Se comienza con un modelo antes de producir codigo Se mueve constantemente entre ingenieria hacia adelante y en reversa. Util en proyectos que utilizan el modelo de procesos evolutivo, o cuando los requerimientos cambian frecuentemente. Se asume que a partir de UML se puede producir codigo, pero en donde se ubica UML dentro del proceso de Diseño ? . 42 Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN
Proceso de Desarrollo Unificado basado en UML Propuesta de Rational Unified Process (RUP) M. de Casos de Uso del Negocio (Business Use-Case Model) § M. de Objetos del Negocio (Business Object Model) § M. de Casos de Uso (Use-Case Model) § M. de Análisis (Analysis Model) § M. de Diseño (Design Model) § M. de Despliegue (Deployment Model) § M. de Datos (Data Model) § M. de Implementación (Implementation Model) § M. de Pruebas (Test Model) § Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 43
Claves en el Desarrollo de Software Notación UML Herramientas p. e. Rational Rose Poseidon Pedro Mejia Proceso p. e. Rational Unified Process Métrica 3. 0 o XP Curso de Ingeniería de Software, CINVESTAV-IPN 44
Modelado de Software. § ¿Cuál es el propósito de nuestros modelos? § § § § “Documentar”. Comunicar ideas y estudiar alternativas Tomar decisiones de análisis/diseño que dirijan la implementación Generar parcial o totalmente una implementación a partir de los modelos Pragmatismo, los modelos deben ser útiles. Principio básico: “Sencillez y Elegancia” Gestión de modelos § § § Distintos nivel de abstracción, expresados en diferentes modelos Seguimiento de transformaciones durante el proceso (Traceability) Sincronización de modelos Dificultades para la introducción de notaciones y herramientas de modelado. La importancia del Proceso de Desarrollo Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 45
Resumen § UML define una notación que se expresa como diagramas sirven para representar modelos/subsistemas o partes de ellos § El modelo de proceso RUP utiliza UML para el modelado. Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 46
Bibliografía Partes de este Curso esta basado en el siguiente material: § Curso de Desarrollo de Software Orientado a Objetos usando UML, del Prof. Patricio Letelier Torres, del DSIC de la Universidad Politecnica de Valencia. § Transparencias del Libro: Object-Oriented Software Engineering: Using UML, Patterns, and Java, Bernd Bruegge & Allen H. Dutoit (3 rd. Edition). Prentice Hall, 2009. UML • www. omg. org/uml/ • Martin Fowler, autor de “UML Destilled” (“UML Gota a Gota”) http: //www. martinfowler. com/ Herramientas CASE • Rational Rose de IBM • Herramientas basadas en UML www. objectsbydesign. com/tools/umltools_by. Price. html Pedro Mejia Curso de Ingeniería de Software, CINVESTAV-IPN 47
- Slides: 47