Ingeniería de Software 1

Slides:



Advertisements
Presentaciones similares
UML.
Advertisements

Ingeniería de Software
Técnicas de Modelamiento
Introducción a la Orientación a Objetos
Análisis y Diseño O.O. Click to add notes Preguntas del diseño :
Unified Modeling Language (Lenguaje de Modelamiento unificado)
ING. PERCY OQUENDO CARREÑO PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE.
Ingeniería de Software
Introducción al modelado Unificado
UML Carlos Becerra C. ¿Qué es orientación a objetos? Conceptos de OO  Objetos, características de los objetos, clases e instancias,
ANÁLISIS Y DISEÑO DE SISTEMAS II
Introducción a UML Departamento de Informática Universidad de Rancagua
Curso de UML JEML.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
MODELAMIENTO VISUAL Y UML
Unified Modeling Language (UML) Unified Modeling Language (UML) Lenguaje Unificado de Modelado ConceptosBásicos.
Diagrama de Clases SPI 2016.
Lcda. Ingrid Graü Diseño de Sistemas 1. Lcda. Ingrid Graü Diseño de Sistemas 2.
1 Diagramas de Interacción. 2 Interacción p La vista de interacción describe secuencias de intercambios de mensajes entre los roles que implementan el.
Diseño (Diagrama de Clases) Francisco Valdés Souto 2 al 6 de marzo 2009 © Avantare Consultores S. A. de C. V. – Derechos.
Ingeniería del Software Diseñó de Software Universidad de los Andes Demián Gutierrez Abril 2009.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Organizaciones involucradas: El centro de cálculo noruego. Crea lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en 1967.
Ingeniería de Software
Herencia Multiple en Java
Ingreso , proceso y salida de datos
Lenguaje Unificado de Modelado
El Lenguaje de Modelación Unificado
METODOLOGÍA DE SISTEMAS
DISEÑO DE SISTEMAS Diagrama de clases UNIDAD III:
Ingeniería de Software
SWEBOK.
Programación Orientada a Objetos
U.T. 11: Introducción A Las Bases De Datos
Fundamentos de la programación orientada a objetos
Diagramas de clases Modelan la vista estática del sistema
METODOLOGÍA DE SISTEMAS
Ingeniería de Sistemas Requerimientos
Ingeniería de Software Somerville
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Tema 3. Lenguaje unificado de modelado UML
(Unified Modeling Language)
Introducción al UML Domingo Hernández H.
Ingeniería de Software
DIAGRAMA DE CLASES.
Introducción al modelado
Programación Orientada a Objetos
Ingeniería del Software
CONCEPTOS PRELIMINARES (Cont)
Universidad Nacional de Colombia - Leguajes de Programación
Metodologías de Desarrollo de Software RUP – Proceso Racional Unificado Gilber BASILIO ROBLES I.E.S.T.P. “DANIEL ALCIDES CARRIÓN” Taller de Modelamiento.
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
Programación Orientada a Objetos. ¿Qué es un ordenador? “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de.
ANALISIS DE SISTEMAS ANALISIS ORIENTADO A OBJETOS.
ANÁLISIS Y DISEÑO DE SISTEMAS II
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
Diagramas de clases Modelan la vista estática del sistema
1 Taller de Proyecto Tema 1. Metodología de desarrollo de software Rational Unified Process –RUP [1,2] Prof. Nora La Serna © Prof. Nora La Serna.
INGENIERIA DE SOFTWARE
Diagramas de Interacción. Escuela de Ingeniería en Sistemas Computacionales Facultad de Ciencias Matemáticas y Físicas Universidad Estatal
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS. INTRODUCCION. ¿ Qué es UML ?. UML, por sus siglas en Ingles, Unified Modeling Languaje.(Lenguaje Unificado.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
INTRODUCCIÓN A UML.  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
PRUEBAS DE CAJA NEGRA. -Internationa Software Testing Qualification Board (ISTQB) Internationa Software Testing Qualification Board (ISTQB) Técnica de.
Estudio de Viabilidad del Sistema (EVS). Estudio de Viabilidad del Sistema Cuestiones ¿Qué es la viabilidad de un sistema? ¿Cuáles son los objetivos del.
Unida III: Análisis y Diseño de Sistemas Orientado a Objetos
ICI 502 Procesos de Software
Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Copyright 2019 Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Derechos reservados UML.
Transcripción de la presentación:

Ingeniería de Software 1 Unidad Nro. 5 AOO, PU y UML 1

Introducción Modelado de SW

Construcción de una Cucha Puede hacerlo una sola persona Requiere: Modelado mínimo Proceso simple Herramientas simples Los criterios de ingeniería también están condicionados al tamaño de la obra, dicho proceso requiere de: Personas Procedimientos Herramientas

Construcción de una casa I. Introducción: Modelado de SWI Construcción de una casa Construida eficientemente y en un tiempo razonable por un equipo Requiere: Modelado Proceso bien definido Herramientas más sofisticadas

Construcción de un rascacielos En este nivel no se admiten que sean construidos sin modelización para evaluar si se puede dar satisfacción a múltiples demandas, por ejemplo: el efecto del viento, la nieve, problemas sísmicos, etc. En este aspecto también pueden tener influencia factores externos como regulaciones en función de código de construcción, etc. Entonces ¿Para que modelizamos? Proveer una estructura para resolver problemas Experimentar con la exploracion de múltiple soluciones Elaborar abstracciones para administrar la complejidad Reducir el tiempo de entrega de la solución Reducir los costos de desarrollo Administrar el riesgo de errores

Claves en Desarrollo de SI Notación En resumen los factores que intervienen Herramientas: que permiten modelizar, documentar e integrar las acciones del equipo de trabajo; Proceso: que se cuenta con criterios y pautas constructivas que establezcan un criterio estandar para obtener el producto en tiempo y forma; Notación: que permita contar con “un lenguaje” standard de representación del producto y permitir una trazabilidad de un modelo a otro. Lo gráfico revela los datos . The Visual Display of Quantitative Information, 1983 Edward Tufte 1 bitmap = 1 megaword. . Anonymous visual modeler The UML is a graphical language for . specifying . visualizing . constructing . documenting the artifacts of software systems Added to the list of OMG adopted technologies in November 1997 as UML 1.1 Most recent revision is UML 2.0 2004 Herramientas Proceso

Abstracción - Modelado Visual (MV) “El modelado captura las partes esenciales del sistema” Proceso de Negocios Orden Item envío La posibilidad de modelizar permite que podamos “ver” las partes esenciales del sistema de acuerdo a la visión de quien tiene una necesidad particular. En una construcción la vista de la instalación eléctrica tiene un grupo específico como destinatario y refleja aquellos elementos que son pertinentes para su trabajo. Sistema Computacional

Notación (Visual) - Beneficios Manejar la complejidad Interface de Usuario (Visual Basic, Java, ..) Lógica del Negocio (C++, Java, ..) Servidor de BDs (C++ & SQL, ..) Múltiples Sistemas Componentes Reutilizados Beneficios de la notación visual: .Manejar la complejidad .Abstraerse de los lenguajes de implementación .Promover la reutilización “Modelar el sistema independientemente del lenguaje de implementación” Promover la Reutilización

Introducción: UML I. Introducción: Modelado de SW El lenguaje de modelado UML lo es en forma evolutiva, esto es no sólo para adaptarse sino también para desarrollarse a partir de la adaptación. Esta capacidad es significativa en un entorno en constante cambio y creciente complejidad.

¿Qué es UML? Modelado Orientado a Objetos Modelado de Datos 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) UML es un lenguaje que permite: visualizar, especificar, construir y documentar los artefactos de un sistema con uso intensivo de software. Conceptos Fundacionales Contar con un languaje = contar con sintaxis + semantica . sintaxis = reglas mediante las cuales los elementos del lenguaje (e.j., palabras) son agrupadas en expresiones (ej., Frases, clausulas) . semantica = reglas mediante las cuales expresiones sintacticas tienen asignadoa un significado. Sintáxis abstracta: conjunto de símbolos permitidos y reglas de operación entre ellos. Semántica semi-formal: implicada en el metamodelo de soporte. UML Notation Guide – defines UML’s graphic syntax UML Semantics – defines UML’s semantics

I. Introducción: UML Situación de Partida Diversos métodos y técnicas OO, con muchos aspectos en común pero utilizando distintas notaciones Inconvenientes para el aprendizaje, aplicación, construcción y uso de herramientas, etc. Pugna entre distintos enfoques (y correspondientes gurús) ’90 La torre de Babel Booch OMT OOSE/Objectory Fusion Coad/Yourdon Harel Escenarios del conflicto Notación Terminología Semántica

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

Historia de UML UML 2.0 2001-2003 UML 1.4 2000 1999 UML 1.3 1998 Revisiones menores 1998 UML 1.2 Nov ‘97 UML aprobado por el OMG

Participantes en UML 1.0 MCI Systemhouse Rational Software Microsoft ObjecTime Oracle Corp. Platinium Technology Sterling Software Taskon Texas Instruments Unisys 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) Estandard de OMG (Object Management Group) desde 1997 UML no es propietario Rational, DEC, HP, IBM, ICON, MCI, MS, Oracle, TI, Unisys, Intellicorp, I-Logix, etc. forman parte del consorcio. UML es abierto UML deriva del MOF www.omg.org A la fecha, existen más de 700 empresas de distintas partes del mundo participando.

UML “aglutina” enfoques OO Rumbaugh Booch Jacobson Odell Meyer Pre- and Post-conditions Shlaer-Mellor UML Object life cycles Harel Las principales partes constituyentes del UML son: . Elementos del modelo (classes, interfaces, components, use cases, etc.) . Relaciones (associations, generalization, dependencies, etc.) . Diagramas (class diagrams, use case diagrams, interaction diagrams, etc.) Simple building blocks are used to create large, complex structures . cf. elements, bonds and molecules in chemistry . cf. components, connectors and circuit boards in hardware Building Blocks State Charts Gamma et. al. Frameworks, patterns, notes Embly Wirfs-Brock Singleton classes Fusion Responsabilities Operation descriptions, message numbering

Aspectos Novedosos Stereotypes Constraints Tagged Values Definición semi-formal del Metamodelo de UML Mecanismos de Extensión en UML: Stereotypes Constraints Tagged Values Permiten adaptar los elementos de modelado, asignándoles una semántica particular Los mecanismos de extensión, son aquellos que permiten expandir y personalizar la notación: Estereotipos: Es el mecanismo para incorporar nuevos tipos de elementos de modelización. Restricciones: Son las condiciones semánticas que deben mantenerse como verdaderas para los elementos del modelo. Especifica una nueva semántica para un elemento del modelo. Puede ser especificada usando OCL (Object Constraints Languaje). Tag definition: Es una de las propiedades características de elementos del modelo. Es similar a meta atributos. Tag value: Especifica el valor real que adopta la propiedad para un elemento del modelo.

Inconvenientes en UML Definición del proceso de desarrollo usando UML. UML no es una metodología Falta integración con respecto de otras técnicas tales como patrones de diseño, interfaces de usuario, documentación, etc. Ejemplos aislados “Monopolio de conceptos, técnicas y métodos en torno a UML” UML no es un modelo de proceso de desarrollo de software. No define un ciclo de vida, ni objetivos, ni actividades. UML no es una metodología. No prescribe buenas prácticas, ni heurísticas, ni estrategias para alcanzar objetivos de trazabilidad, mantenibilidad o robustez. UML fue concebido para describir modelos de software. UML está fuertemente vinculado a la OO. El UML al no ser una metodología implica una forma de notación que no es una técnica constructiva. Clarificar los conceptos de Método: Metodología:

Perspectivas de UML UML será el lenguaje de modelado orientado a objetos estándar predominante los próximos años Razones: Participación de metodólogos influyentes Participación de importantes empresas Aceptación del OMG como notación estándar Evidencias: Herramientas que proveen la notación UML “Edición” de libros Congresos, cursos, etc. Proveer a los usuarios con un lenguaje visual expresivo para desarrollar e intercambiar modelos comprensibles. Incorporar mecanismos de extensión y especialización para extender los conceptos básicos del lenguaje. Ser independiente de cualquier lenguaje de programación o metodología de desarrollo. Proveer una base formal para entender el lenguaje de modelado. Favorecer el crecimiento del mercado de las herramientas de modelado. (integración vía XMI, XML Metadata Interchange) Soportar conceptos de mayor nivel conceptual, como componentes, colaboraciones, frameworks y patterns. Integrar las mejores prácticas de la industria de la Ingeniería de Software.

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 Paradigma : es sinónimo de enfoque. O sea que, podríamos tener un enfoque estructurado o un enfoque orientado a objetos. Notación: Es la sintaxis, o la forma en que se escribe. Proceso: conjunto de pasos a seguir para resolver un problema dado.   Un modelo es una descripción de un sistema en un contexto de un punto de vista específico y un nivel específico de abstracción. Un elemento del modelo es una abstracción constituyente del modelo Una meta modelo es el modelo de otro modelo

... 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

Diagramas de UML Diagrama de Casos de Uso Diagrama de Clases Diagrama de Objetos Diagramas de Comportamiento Diagrama de Estados Diagrama de Actividad Diagramas de Interacción Diagrama de Secuencia Diagrama de Colaboración Diagramas de implementación Diagrama de Componentes Diagrama de Despliegue Un modelo es una descripción completa de un sistema Los diagramas son vistas del modelo desde una perspectiva en particular

Diagramas de Casos de Uso Muestran lo que hace el sistema desde el punto de vista del usuario. Se utilizan para documentar las especificaciones funcionales de un sistema.

Diagramas de Clases Muestran la estructura interna de un sistema

Diagrama de Actividades Permiten mostrar el flujo de Actividades para un proceso determinado.

Diagramas de Secuencia Muestran la forma en que interactúan los objetos en el sistema. Ponen énfasis en el momento temporal de la interacciones.

Diagramas de Colaboración Muestran básicamente la misma información que los de secuencia, pero hacen énfasis en los objetos que intervienen, más que en el tiempo.

Diagramas de Transición de Estados Muestran los estados posibles de un objeto y las transiciones que pueden producirse entre esos estados. Esperando Nuevo Cliente Fin Sesion / [ Tarjeta Reclamada ] / Retener Tarjeta Expulsar Tarjeta Tarjeta Insertada [ Tarjeta Incomprensible ] Obteniendo InfoCliente / Expulsar Tarjeta [ InfoCliente Valida ] Sesion Eligiendo Cuenta Eligiendo Cuenta Cliente Cancela do: mostrar lista de cuentas do: mostrar lista de cuentas Cliente Cancela [ Operacion Exitosa ] / Cuenta Elegida Informar Resultado Eligiendo Operacion Eligiendo Operacion do: mostrar lista de operaciones do: mostrar lista de operaciones Operacion Elegida Cliente Cancela Realizando Operacion Realizando Operacion entry: Preguntar parametros entry: Preguntar parametros entry: Ejecutar Operacion entry: Ejecutar Operacion

Diagramas de Paquetes Muestran la estructura interna del sistema en términos de paquetes (medio para agrupar elementos lógicamente relacionados).

Diagramas de Componentes Muestran la distribución física de los elementos que componen la estructura interna del sistema.

Diagramas de Despliegue Muestran la distribución física del software y del hardware del sistema.

Organización de Modelos 4+1 vistas de Kruchten (1995) Vista Lógica Vista de Realización Vista de los Casos de Uso Vistas: las vistas muestran diferentes aspectos del sistema, no son elementos gráficos o diagramas sino una abstracción consistente en un número de diagramas. La vista de los casos de uso muestran la funcionalidad del sistema como es percibida por los actores externos. La vista lógica muestra como la funcionalidad es diseñada en el interior del sistema en términos de su estructura estática y su comportamiento dinámico. Diagrama de Clases Diagrama de Objetos La vista de implementación muestra la organización del código y el ejecutable. La vista de proceso / Dinámica muestra los elementos significativos del sistema, vinculados al desempeño del mismo. Esta vista incluye el crecimiento, capacidad de respuesta, y los tiempos básicos de desempeño. Puede comprender algoritmos complejos para sistemas de avanzada. Muestra el comportamiento del sistema y la forma que se enfocan los problemas de coordinación y sincronización Diagramas de Actividad Diagrama de Estados Diagrama de Colaboración Diagrama de Secuencia La vista de distribución/despliegue muestra cómo el sistema se instala en una arquitectura física en computadoras y dispositivos denominados NODOS. Vista de Procesos Vista de Distribución

... Diagramas de UML Modelos State Diagrams Diagramas de Clases Use Case Diagrams Diagramas de Casos de Uso State Diagrams Diagramas de Paquetes Use Case Diagrams Diagramas de Actividad Scenario Diagrams Diagramas de Secuencia State Diagrams Diagramas de Estados Modelos Un modelo es una descripción completa de un sistema diagrama es una vista del modelo desde una perspectiva en particular. UML ofrece una poderosa notación para visualizar los modelos. Se consideran los siguientes diagramas y cada uno de estos diagramas tiene un propósito de comunicación, enfatizando algunos aspectos: Casos de Uso para ilustrar la interacción con el sistema enfatiza el alcance y los requerimientos para los actores. Diagramas de Clases para mostrar la estructura lógica general Diagrama de objetos para ilustrar la estructura específica o instantánea de objetos y relaciones Diagramas de estado para ilustrar comportamiento enfatizan el ciclo de vida Diagramas de componentes para ilustrar la estructura física del software enfatizan la implementación Diagramas de implantación para mostrar la distribución del software dentro de la configuración de Hardware Diagramas de interacción para ilustrar el comportamiento (Los diagramas de secuencia enfatizan las interacciones a lo largo del tiempo (flujos) como los diagramas de colaboración enfatizan las interacciones basadas en el tiempo en un espacio de colaboración) Diagramas de actividad para ilustrar el flujo de eventos en un caso de uso enfatizan la responsabilidad . Diagrama de despliegue enfatiza el entorno . Scenario Diagrams Diagramas de Colaboración Component Diagrams Diagramas de Componentes Diagramas de Despliegue Comportamiento dinámico Clasificación Estructura Organización del modelo

El Paradigma Orientado a Objeto usando UML

¿Por qué la Orientación a Objetos? Proximidad de los conceptos de modelado respecto de las entidades del mundo real Mejora captura y validación de requisitos Acerca el “espacio del problema” y el “espacio de la solución” Modelado integrado de propiedades estáticas y dinámicas del ámbito del problema Facilita construcción, mantenimiento y reutilización

¿Por qué la Orientación a Objetos? Conceptos comunes de modelado durante el análisis, diseño e implementación Facilita la transición entre distintas fases Favorece el desarrollo iterativo del sistema Disipa la barrera entre el “qué” y el “cómo” Sin embargo, existen problemas ...

III. El Paradigma Orientado a Objeto Problemas en OO “...Los conceptos básicos de la OO se conocen desde hace dos décadas, pero su aceptación todavía no está tan extendida como los beneficios que esta tecnología puede sugerir” “...La mayoría de los usuarios de la OO no utilizan los conceptos de la OO de forma purista, como inicialmente se pretendía. Esta práctica ha sido promovida por muchas herramientas y lenguajes que intentan utilizar los conceptos en diversos grados” --Wolfgang Strigel

III. El Paradigma Orientado a Objeto … Problemas en OO Un objeto contiene datos y operaciones que operan sobre los datos, pero ... Podemos distinguir dos tipos de objetos degenerados: Un objeto sin datos (que sería lo mismo que una biblioteca de funciones) Un objeto sin “operaciones”, con sólo operaciones del tipo crear, recuperar, actualizar y borrar (que se correspondería con las estructuras de datos tradicionales) Un sistema construido con objetos degenerados no es un sistema verdaderamente orientado a objetos “Las aplicaciones de gestión están constituidas mayoritariamente por objetos degenerados”

Fundamentos de Modelado OO

Objetos Objeto = unidad atómica que encapsula estado y comportamiento La encapsulación en un objeto permite una alta cohesión y un bajo acoplamiento Un objeto puede caracterizar una entidad física (coche) o abstracta (ecuación matemática)

… Objetos El Modelado de Objetos permite representar el ciclo de vida de los objetos a través de sus interacciones En UML, un objeto se representa por un rectángulo con un nombre subrayado

Identidad Oid (Object Identifier) Cada objeto posee un oid. El oid establece la identidad del objeto y tiene las siguientes características: Constituye un identificador único y global para cada objeto dentro del sistema Es determinado en el momento de la creación del objeto Es independiente de la localización física del objeto, es decir, provee completa independencia de localización

… Identidad Es independiente de las propiedades del objeto, lo cual implica independencia de valor y de estructura No cambia durante toda la vida del objeto. Además, un oid no se reutiliza aunque el objeto deje de existir No se tiene ningún control sobre los oids y su manipulación resulta transparente Sin embargo, es preciso contar con algún medio para hacer referencia a un objeto utilizando referencias del dominio (valores de atributos)

Estado El estado evoluciona con el tiempo Algunos atributos pueden ser constantes El comportamiento agrupa las competencias de un objeto y describe las acciones y reacciones de ese objeto Las operaciones de un objeto son consecuencia de un estímulo externo representado como mensaje enviado desde otro objeto

Comunicación Un sistema informático puede verse como un conjunto de objetos autónomos y concurrentes que trabajan de manera coordinada en la consecución de un fin específico El comportamiento global se basa pues en la comunicación entre los objetos que la componen

….Comunicación Activos - Pasivos Cliente – Servidores, Agentes Categorías de objetos: Activos - Pasivos Cliente – Servidores, Agentes Objeto Activo: posee un hilo de ejecución (thread) propio y puede iniciar una actividad Objeto Pasivo: no puede iniciar una actividad pero puede enviar estímulos una vez que se le solicita un servicio Cliente es el objeto que solicita un servicio. Servidor es el objeto que provee el servicio solicitado

… Comunicación Los agentes reúnen las características de clientes y servidores Son la base del mecanismo de delegación Introducen indirección: un cliente puede comunicarse con un servidor que no conoce directamente

… Comunicación Ejemplo con objeto agente:

El Concepto de Mensaje La unidad de comunicación entre objetos se llama mensaje El mensaje es el soporte de una comunicación que vincula dinámicamente los objetos que fueron separados previamente en el proceso de descomposición Adquiere toda su fuerza cuando se asocia al polimorfismo y al enlace dinámico

… El Concepto de Mensaje

Comportamiento Ejemplo de interacción:

… Comportamiento Los mensajes navegan por los enlaces, a priori en ambas direcciones Estado y comportamiento están relacionados Ejemplo: no es posible aterrizar un avión si no está volando. Está volando como consecuencia de haber despegado del suelo

Persistencia La persistencia de los objetos designa la capacidad de un objeto trascender en el espacio/tiempo Podremos después reconstruirlo, es decir, cogerlo de memoria secundaria para utilizarlo en la ejecución (materialización del objeto) Los lenguajes OO no proponen soporte adecuado para la persistencia, la cual debería ser transparente, un objeto existe desde su creación hasta que se destruya

Mensaje y Estímulo Llamada a procedimiento o flujo de control anidado Un estímulo causará la invocación de una operación, la creación o destrucción de un objeto o la aparición de una señal Un mensaje es la especificación de un estímulo Tipos de flujo de control: Llamada a procedimiento o flujo de control anidado Flujo de control plano Retorno de una llamada a procedimiento Otras variaciones Esperado (balking) Cronometrado (time-out)

II. Breve Tour por UML 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: El marco conceptual para la modelización está construido por una arquitectura de cuatro niveles de meta modelos o niveles de abstracción. El UML es definido en forma circular o recursiva como un metamodelo donde un subconjunto del lenguaje es usado para definir el lenguaje en sí mismo. Cada modelo define un lenguaje para especificar modelos más específicos. Cada modelo es una instancia de modelos más generales.

II. Breve Tour por UML … 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

II. Breve Tour por UML … Paquetes en UML Todas las clases 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

Diagrama de Clases

Conceptos básicos Objeto Un objeto representa una cosa del mundo real o un concepto que puede ser definido y sobre el cual pueden aplicarse acciones. 2 principios: Abstracción Encapsulamiento. Un objeto tiene: estado, comportamiento e identidad. Estado: dado por los valores de sus propiedades que cambian dinámicamente. Comportamiento: como un objeto actúa o reacciona, en términos de sus cambios de estado y comunicación con otros. Identidad: permite distinguir un objeto de otro.

Conceptos básicos Externa: Interface Clase Una clase es la abstracción de un conjunto de objetos que comparten una estructura y comportamiento común. Clase es distinta de Objeto (instancia de clase). La clase es responsable de establecer los contratos con sus clientes y esto constituye el comportamiento de los objetos. La clase define vistas: Externa: Interface Interna: Implementación, esconde los detalles de su estructura y comportamiento.

Diagramas de Clases Describen la visión estática de un sistema en términos de clases y sus relaciones ¿Qué modela un Diagrama de Clases? Describe los tipos de objetos en el sistema y las diferentes relaciones estáticas que existen entre ellos Muestra los atributos y operaciones de una clase y las restricciones que se aplican a la forma en que los objetos pueden ser relacionados (OCL)

Diagrama de Clases El Diagrama de Clases es el diagrama principal para el análisis y diseño 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 aporta información para establecer las clases, objetos, atributos y operaciones Describen la visión estática de un sistema en términos de clases y sus relaciones Qué modela un Diagrama de Clases? Describe los tipos de objetos en el sistema y las diferentes relaciones estáticas que existen entre ellos Muestra los atributos y operaciones de una clase y las restricciones que se aplican a la forma en que los objetos pueden ser relacionados (OCL) Clases Describen las propiedades (atributos) y el comportamiento (responsabilidades/operaciones/métodos) de un tipo de objeto. Las clases nos permiten clasificar los objetos que observamos en el mundo real. Relaciones Asociación Agregación Composición Generalización Dependencia Refinamiento

Clases La clase define el ámbito de definición de un conjunto de objetos Cada objeto pertenece a una clase Los objetos se crean por instanciación de las clases

Clases Describen las propiedades (atributos) y el comportamiento (responsabilidades/operaciones/métodos) de un tipo de objeto. Las clases nos permiten clasificar los objetos que observamos en el mundo real.

Clase Identifica a la clase univocamente en todo el modelo Nombre Identifica a la clase univocamente en todo el modelo Esencial: sustantivo asociado al dominio Diseño/Implementación: prefijos/sufijos Estereotipo Atributos Responsabilidades/Operaciones/Métodos Descripción

Clases: Notación Gráfica Cada clase se representa en un rectángulo con tres compartimientos: nombre de la clase atributos de la clase operaciones de la clase Un atributo tiene: Nombre Tipo Tipos Primitivos: dependientes del lenguaje Clases definidas en el modelo Alcance de Clase - Estático de Instancia – Dinámico Visibilidad Public (+) Private (-) Protected (#) Descripción Las Operaciones describen su comportamiento, es decir los servicios que ofrece y su interface. Las operaciones tienen: Lista de argumentos (opcional) que contiene: Identificador Valor por defecto (opcional) Tipo (opcional) Las operaciones se identifican por la “firma” (signature) relativa a la clase. Un método es la implementación de una operación. Ej: public Fecha getLastUpdated()

Clases: Notación Gráfica Otros ejemplos:

Tipos de Clases <<interface>> <<abstract>> Una Interface es una clase abstracta sin ninguna operación definida ni atributos Puede ser asociada a componentes o paquetes Equivalentes a interfaces Java u OLE/COM (C#) <<abstract>> Una clase abstracta define una Interface mínima No está completamente definida. Al menos una operación no tiene un método definido. No pueden existir instancias de esta clase.

Atributos de una Clase Un atributo describe una característica de los objetos de la clase. Los atributos de clase correctos identifican y describen una instancia específica de una clase. Solo los atributos relevantes deben ser modelados antes de la implementación, por lo que el propósito del sistema influye en cuáles atributos deben usarse name size attributes lastupdated permissions

Atributos de una Clase Tipos Primitivos: dependientes del lenguaje Un atributo tiene: Nombre Tipo Tipos Primitivos: dependientes del lenguaje Clases definidas en el modelo Alcance de Clase - Estático de Instancia – Dinámico Visibilidad Public (+) Private (-) Protected (#) Descripción

Clasificación Clasificación / Instanciación El mundo real puede ser visto desde abstracciones diferentes (subjetividad) Mecanismos de abstracción: Clasificación / Instanciación Composición / Descomposición Agrupación / Individualización Especialización / Generalización La clasificación es uno de los mecanismos de abstracción más utilizados

Elementos de un Diagrama de Clases Relaciones Asociación Agregación Composición Generalización Dependencia Clases Describen las propiedades (atributos) y el comportamiento (responsabilidades/operaciones/métodos) de un tipo de objeto. Las clases nos permiten clasificar los objetos que observamos en el mundo real. Refinamiento

Relaciones entre Clases Tipos de Relación Asociación Agregación Composición Generalización Dependencia Trazabilidad Atributos de una relación Nombre Estereotipo Descripción Otros atributos de acuerdo al tipo de relación

Relaciones entre Clases Generalización Agregación Asociación 0..* 1

Operaciones de una Clase Describen su comportamiento, es decir los servicios que ofrece y su interface. Las operaciones tienen: Nombre Lista de argumentos (opcional) que contiene: Identificador Tipo Valor por defecto (opcional) Descripción Tipo (opcional) Alcance Visibilidad Las operaciones se identifican por la “firma” (signature) relativa a la clase. Un método es la implementación de una operación. Ej: public Fecha getLastUpdated()

Relaciones entre Clases Los enlaces entre de objetos pueden representarse entre las respectivas clases Formas de relación entre clases: Asociación y Agregación (vista como un caso particular de asociación) Generalización/Especialización Las relaciones de Agregación y Generalización forman jerarquías de clases Tipos Asociación Agregación Composición Generalización Dependencia Trazabilidad Atributos de una relación Nombre Estereotipo Descripción Otros atributos de acuerdo al tipo de relación Herencia Es una relación taxonómica entre una clase general (superclase) y otra más específica (subclase) La Interface de la subclase es totalmente consistente con la de la superclase. Los atributos, operaciones y todas las asociaciones de la superclase son heredadas por la subclase. Herencia Múltiple Una subclase puede heredar los atributos y el comportamiento de más de una superclase. La interface de la subclase es la composición de las interfaces heredadas. La resolución de conflictos entre los elementos heredados depende del lenguaje. Dependencia: Es una relación semántica entre un elemento independiente y otro dependiente. Un cambio en el elemento independiente afecta al otro. Ejemplos una clase usa otra clase (atributos u operaciones) una clase tiene conocimiento interno de la implementación (friend) de otra clase La trazabilidad es una relación de construcción que relaciona dos descripciones de una misma cosa, pero con diferentes niveles de refinamiento. <<realize>> Una interface y una clase que la implementa.

Asociación Nombre Cardinalidad Navegable Rol Una asociación representa una relación semántica entre clases independientes Normalmente es bidireccional Una Asociación asigna a cada clase un Rol Rol Nombre Cardinalidad Navegable

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

… Ejemplos (Asociación)

… Ejemplos (Clase Asociación)

… Asociación Ejemplo:

… Asociación 1 Uno y sólo uno 0..1 Cero o uno Especificación de multiplicidad (mínima...máxima) 1 Uno y sólo uno 0..1 Cero o uno M..N Desde M hasta N (enteros naturales) * Cero o muchos 0..* Cero o muchos 1..* Uno o muchos (al menos uno) La multiplicidad mínima >= 1 establece una restricción de existencia

Asociación Cualificada Reduce la multiplicidad del rol opuesto al considerar el valor del cualificador

Agregación Es una asociación es-parte-de / contiene-a Tiene los mismos atributos que una asociación Es una asociación “por referencia”

Agregación La agregación representa una relación parte_de entre objetos En UML se proporciona una escasa caracterización de la agregación Puede ser caracterizada con precisión determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes

Agregación La agregación representa una relación parte_de entre objetos En UML se proporciona una escasa caracterización de la agregación Puede ser caracterizada con precisión determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes

... Agregación: Caracterización En UML sólo se distingue entre agregación y composición (aggregate composition), siendo esta última disjunta y estricta Además se una agregación se podría caracterizar según: ¿Puede el objeto parte comunicarse directamente con objetos externos al objeto agregado? No => inclusiva Si => no inclusiva ¿Puede cambiar La composición del objeto agregado? Si => dinámica No => estática

Ejemplos

... Ejemplos

… Ejemplos Agregación Asociación excluyente Clase de asociación

Composición Es una agregación más fuerte, donde los elementos contenidos “viven” dentro del contenedor Al morir el contenedor, mueren los objetos contenidos. Implementado en el destructor Es una asociación “por valor”

Generalización Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases Se obtiene usando los mecanismos de abstracción de Generalización y/o Especialización La Generalización consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general

... Generalización Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre están disponibles en sus clases hijas

... Generalización La Generalización y Especialización son equivalentes en cuanto al resultado: la jerarquía y herencia establecidas Generalización y Especialización no son operaciones reflexivas ni simétricas pero sí transitivas Un atributo describe una característica de los objetos de la clase. Los atributos de clase correctos identifican y describen una instancia específica de una clase. Solo los atributos relevantes deben ser modelados antes de la implementación, por lo que el propósito del sistema influye en cuáles atributos deben usarse Un atributo tiene: Nombre Tipo Tipos Primitivos: dependientes del lenguaje Clases definidas en el modelo Alcance de Clase - Estático de Instancia – Dinámico Visibilidad Public (+) Private (-) Protected (#) Descripción Describen su comportamiento, es decir los servicios que ofrece y su interface. Las operaciones tienen: Lista de argumentos (opcional) que contiene: Identificador Valor por defecto (opcional) Tipo (opcional) Las operaciones se identifican por la “firma” (signature) relativa a la clase. Un método es la implementación de una operación. Ej: public Fecha getLastUpdated()

… Ejemplos (Generalización)

... Generalización

... Generalización disjunta - no disjunta La especialización es una técnica muy eficaz para la extensión y reutilización Restricciones predefinidas en UML: disjunta - no disjunta total (completa) - parcial (incompleta)

... Generalización La noción de clase está próxima a la de conjunto Dada una clase, podemos ver el conjunto relativo a las instancias que posee o bien relativo a las propiedades de la clase Generalización y especialización expresan relaciones de inclusión entre conjuntos

... Generalización Particionamiento del espacio de objetos => Clasificación Estática Particionamiento del espacio de estados de los objetos => Clasificación Dinámica En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas

... Generalización Un ejemplo de Clasificación Estática: { estática }

... Generalización Un ejemplo de Clasificación Dinámica: { dinámica }

... Generalización Ejemplo: varias especializaciones a partir de la misma clase padre, usando discriminadores: Comercial Militar uso Vehículo Aéreo estructura Avión Helicóptero

Generalización (Herencia) Es una relación taxonómica entre una clase general (superclase) y otra más específica (subclase) La Interface de la subclase es totalmente consistente con la de la superclase. Los atributos, operaciones y todas las asociaciones de la superclase son heredadas por la subclase.

....Generalización (Herencia) Herencia Múltiple Una subclase puede heredar los atributos y el comportamiento de más de una superclase. La interface de la subclase es la composición de las interfaces heredadas. La resolución de conflictos entre los elementos heredados depende del lenguaje.

Clasificación Múltiple (herencia múltiple) Se presenta cuando una subclase tiene más de una superclase La herencia múltiple debe manejarse con precaución. Algunos problemas son el conflicto de nombre y el conflicto de precedencia Se recomienda un uso restringido y disciplinado de la herencia. Java y Ada 95 simplemente no ofrecen herencia múltiple

… Herencia Múltiple Uso disciplinado de la herencia múltiple: clasificaciones disjuntas con clases padre en hojas de jerarquías alternativas Bípedo Cuadrúpedo nro patas nro patas Herbívoro Con Pelos cubertura comida Animal Con Plumas cobertura comida cobertura Carnívoro Con Escamas Conejo

Dependencia una clase usa otra clase (atributos u operaciones) Es una relación semántica entre un elemento independiente y otro dependiente. Un cambio en el elemento independiente afecta al otro. Ejemplos una clase usa otra clase (atributos u operaciones) una clase tiene conocimiento interno de la implementación (friend) de otra clase

Trazabilidad (Traceability) La trazabilidad es una relación de construcción que relaciona dos descripciones de una misma cosa, pero con diferentes niveles de refinamiento. <<realize>> Una interface y una clase que la implementa.

Diagramas de Clases Modelos preliminares

Diagramas de Clases

Clases: Encapsulación La encapsulación presenta dos ventajas básicas: Se protegen los datos de accesos indebidos El acoplamiento entre las clases se disminuye Favorece la modularidad y el mantenimiento Los atributos de una clase no deberían ser manipulables directamente por el resto de objetos

… Clases: Encapsulación Los niveles de encapsulación están heredados de los niveles de C++: (-) Privado : es el más fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminología C++) (#) Los atributos/operaciones protegidos están visibles para las clases friends y para las clases derivadas de la original (+) Los atributos/operaciones públicos son visibles a otras clases (cuando se trata de atributos se está transgrediendo el principio de encapsulación)

… Clases: Encapsulación Ejemplo:

Ejemplos (Clase y Visibilidad) Nombre Identifica a la clase univocamente en todo el modelo Esencial: sustantivo asociado al dominio Diseño/Implementación: prefijos/sufijos Estereotipo Atributos Responsabilidades/Operaciones/Métodos Descripción <<abstract>> Una clase abstracta define una Interface mínima No está completamente definida. Al menos una operación no tiene un método definido. No pueden existir instancias de esta clase. <<interface>> Una Interface es una clase abstracta sin ninguna operación definida ni atributos Puede ser asociada a componentes o paquetes Equivalentes a interfaces Java u OLE/COM (C#)

Principio de Sustitución El Principio de Sustitución de Liskow (1987) afirma que: “Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semántica del programa escrito en los términos de la superclase se vea afectado.”

… Principio de Sustitución Dado que los programadores pueden introducir código en las subclases redefiniendo las operaciones, es posible introducir involuntaria-mente incoherencias que violen el principio de sustitución El polimorfismo que veremos a continuación no debería implementarse sin este principio

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

… Polimorfismo Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta ? dormir ?

… Polimorfismo Animal dormir() León Oso Tigre dormir() dormir() { dormir() } León Oso Tigre dormir() dormir() dormir() Dormir() Dormir() Dormir() { { { sobre el vientre sobrela espalda en un árbol } } }

… Polimorfismo La búsqueda automática del código que en cada momento se va a ejecutar es fruto del enlace dinámico El cumplimiento del Principio de Sustitución permite obtener un comportamiento y diseño coherente

Clases y Objetos Diagrama de Clases y Diagramas de Objetos pertenecen a dos vistas complementarias del modelo Un Diagrama de Clases muestra la abstracción de una parte del dominio Un Diagrama de Objetos representa una situación concreta del dominio Las clases abstractas no son instanciadas

Clases y Objetos Clase Una clase es la abstracción de un conjunto de objetos que comparten una estructura y comportamiento común. Clase ¹ Objeto (instancia de clase) La clase es responsable de establecer los contratos con sus clientes y esto constituye el comportamiento de los objetos. La clase define vistas: Externa: Interface Interna: Implementación, esconde los detalles de su estructura y comportamiento.

… Objetos Objeto = Identidad + Estado + Comportamiento El estado está representado por los valores de los atributos Un atributo toma un valor en un dominio concreto

… Objetos Ejemplo de varios objetos relacionados:

… Ejemplos