Construcción de una casa para “fido”

Slides:



Advertisements
Presentaciones similares
UML.
Advertisements

U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
METODOLOGÍA ORIENTADA A OBJETOS CARACTERISTICAS DEL PROCESO
Lenguaje Unificado de Modelado
TECNICATURA UNIVERSITARIA EN INFORMATICA
Diagrama de Colaboración
TEMA 8: DIAGRAMAS EN UML.
Tomado de:
Ingeniería de Software
Técnicas de Modelamiento
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Fundamentos de Ingeniería de Software
Etapas y actividades en el desarrollo OO basado en UML
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Ingeniería del Software
DESCRIPCION DEL PROBLEMA
Análisis y Diseño O.O. Click to add notes Preguntas del diseño :
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
Diagramas de clases Modelan la vista estática del sistema
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Análisis y Diseño orientado a objetos con UML.
Profesor: Miguel Angel Vidal
Análisis y Diseño Orientado a Objetos utilizando UML
Modelado Arquitectónico
Análisis y Diseño Orientado a Objetos utilizando UML CAPITULO V DISEÑO DE SISTEMAS ORIENTADOS A OBJETOS.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
ING. PERCY OQUENDO CARREÑO PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE.
Ingeniería de Software
Viviana Poblete López Módulo: Modelo de Datos
Ingeniería de Software Orientado a Objetos
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Análisis y Diseño Orientado a Objetos utilizando UML
Tecnológico de Estudios Superiores Huixquilucan Fundamentos de Sistemas Ingeniería en Sistemas Computacionales Lic.: Lydia Villavicencio Gómez “Paradigmas.
Introducción al modelado Unificado
CASOS DE USO Ing. Sonia Godoy H..
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Capitulo III CASOS DE USO Los casos de uso son un fenómeno interesante, durante mucho tiempo, tanto en el desarrollo orientado a objeto como en el tradicional,
Ingeniería de software
UML Carlos Becerra C. ¿Qué es orientación a objetos? Conceptos de OO  Objetos, características de los objetos, clases e instancias,
UML Necesidad modelado Diagramas de clase Diagramas de secuencia
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
TEMA 9: DIAGRAMA DE CLASE EN UML
Diagramas de Interacción.
Programación Orientada a Objeto
Métrica v2.1 Técnicas: Modelado de datos (Parte 1)
ANÁLISIS Y DISEÑO DE SISTEMAS II
La Universidad de Guayaquil Carrera de Ingeniería en Sistemas.
Clasificación de Diagramas
Introducción a UML Departamento de Informática Universidad de Rancagua
Conceptos Fundamentales
Ingeniería de Requisitos
(Lenguaje Unificado de Modelado)
¿QUE ES EL DIAGRAMA DE ESTADO ?
Unified Modeling Language (Lenguaje de Modelamiento unificado)
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Diagrama de Clases.
Ingeniería de Software Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
MODELAMIENTO VISUAL Y UML
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
Fundamentos de Ingeniería de Software
DIAGRAMAS DE SECUENCIA. UML está compuesto por los siguientes diagramas:
Lenguaje Unificado de Modelado (UML) Julio … Casos de Uso  Ejemplo:
CURSO:PRACTICA INTEGRAL III ALUMNO: RARÁZ TINOCO, JORGE LUIS PROFESOR:DAVILA, JUAN CICLO:II CICLO.
Entregables del Proyecto
Estructura de Datos Departamento de Programación Universidad Metropolitana Contenido: UML. Envío de mensajes. Relaciones. Asociación. Agregación o composición.
Transcripción de la presentación:

Construcción de una casa para “fido” Puede hacerlo una sola persona Requiere: Modelado mínimo Proceso simple Herramientas simples Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).

Construcción de una casa Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software). Construida eficientemente y en un tiempo razonable por un equipo Requiere: Modelado Proceso bien definido Herramientas más sofisticadas

Construcción de un rascacielos Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).

Claves en Desarrollo de SI Notación Figura “Triangle for Success” adaptada desde “Visual Modeling with Rational Rose and UML” de Terry Quatrani Herramientas Proceso

Abstracción - Modelado Visual (MV) “El modelado captura las partes esenciales del sistema” Proceso de Negocios Orden Item envío Sistema Computacional

MV para manejar la complejidad “... Hay dos formas de construir software: una es hacerlo tan simple que obviamente no existan deficiencias, otra es hacerlo tan complejo que no existan deficiencias obvias” C:A.R. Hoare, Turing Award Lecture 1980.

MV para definir la Arquitectura del Software Interfaz de Usuario (Visual Basic, Java, ..) Lógica del Negocio (C++, Java, ..) Una lectura interesante: Extreme Programming in the Quick-change Era 'Beware of the religion of the code-generating modeling tool.‘ by Alexandra Weber Morales About 30 years ago, Barry Boehm theorized that the cost of software change increased exponentially over time; that is, if an error caught in requirements gathering cost $1, an error caught during deployment would cost $1000. "What if," said Robert Martin, a former preacher who now uses his persuasive speaking skills to promote Smalltalk guru Kent Beck's Extreme Programming (XP) methodology, "you took a moment to suspend disbelief and considered that--due to today's technology--the cost of change is essentially flat. When costs don't change over time, up-front speculative work is a liability. Ambiguity and volatility are reasons to delay." In such a world, Martin told a packed room at the UML World conference in New York city on June 14, developers need a process that exploits a flat change/cost curve?and XP is that process. The five-year-old methodology values communication (but not on paper), simplicity, feedback and courage. It's designed for small to medium-sized teams of no more than 12 people who work in a common area, integrate and test their code constantly, pair program on single computers and use whiteboards hung on the periphery to hash out designs. Source code is the preferred archival medium, and cards containing "user stories"(requirements written by customers) and tasks are the "high-density storage mechanism," according to Martin, who runs a training firm called Object Mentor out of Green Oaks, IL. "Where does modeling fit in?“ asked an audience member, reminding Martin that his talk, at this point nearly over, had promised to describe the interaction between the UML and XP. "Paper and pencil or whiteboards are the best CASE tools I know of. In Kent's case, he uses CRC cards, not the UML," said Martin. "But whether it's Booch notation or UML, you do the highest-level map you can, but you don't do all your design up front. Remember, in XP it's not an archival resource, it's a communication device. The only archive I want is the code and a few poignant, incisive documents explaining why I made certain decisions." Does this mean that ever more sophisticated modeling tools have no place in XP? Not exactly, said Martin. "If a code-generating tool works for you, use it. After all, that's what a compiler does. But beware of the religion of modeling tools that spit out executable prototypes. Sometimes getting the code from the tool is more time-consuming than writing it yourself." Servidor de BDs (C++ & SQL, ..) “Modelar el sistema independientemente del lenguaje de implementación”

MV promueve la reutilización Múltiples Sistemas Componentes Reutilizados

¿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) Documento “OMG Unified Language Specification”, (versión 1.3, 808 páginas, 8 de Julio de 1999 y versión 1.4, 582 páginas, 1 de Noviembre de 2000) Resumen Semántica (185 páginas) Guía de Notación (173 páginas) Profiles Estándares Definición de Interfaz CORBAfacility Especificación DTD de XMI Especificación del Object Constraint Language Elementos Estándar de UML Glosario de Modelado del OMG 9

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) => Necesidad de una notación estándar

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 2002? 2000 UML 1.4 1999 UML 1.3 1998 UML 1.2 Revisiones menores 1998 UML 1.2 Nov ‘97 UML aprobado por el OMG

Participantes en UML 1.0 MCI Systemhouse Microsoft ObjecTime 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) MCI Systemhouse Microsoft ObjecTime Oracle Corp. Platinium Technology Sterling Software Taskon Texas Instruments Unisys

UML “aglutina” 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 Wirfs-Brock Singleton classes Fusion Responsabilities Operation descriptions, message numbering

Métodos Formales en Modelado Tipos de enfoques: no-formales, semi-formales y formales Las principales mejoras al utilizar métodos formales son: Mayor rigor en la especificación Mejores condiciones para realizar la verificación y validación en forma más exhaustiva Mejores condiciones para automatización de procesos para la generación automática de prototipos y/o código final

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 entorno a UML”

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, “camisetas”, etc.

Diagramas de UML Use Case Diagrams Diagramas de Casos de Uso Scenario Colaboración State Componentes Component Distribución Objetos Estados Secuencia Clases Actividad Modelo “Un modelo es una descripción completa de un sistema desde una perspectiva concreta”

Paquetes en UML Los paquetes ofrecen un mecanismo general para la organización de los modelos agrupando elementos de modelado Se representan gráficamente como:

… Paquetes en UML Cada paquete corresponde a un subconjunto del modelo y contiene, según el modelo, clases, objetos, relaciones, componentes y diagramas asociados Un paquete puede contener otros paquetes, sin límite de anidamiento pero cada elemento pertenece a (está definido en) sólo un paquete

… Paquetes en UML 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 Todas las clases no son necesariamente visibles desde el exterior del paquete, es decir, un paquete encapsula a la vez que agrupa

El Paradigma Orientado a Objetos

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

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

Objetos Objeto = unidad atómica que integra 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 concepto (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 Otro Objeto Un Objeto más Sintaxis para denominar objetos: : C una instancia anónima de la clase C / R una instancia anónima desempeñando el rol R / R : C una instancia anónima de la clase C desempeñando el rol R O / R una instancia llamada O desempeñando el rol R O : C una instancia llamada O de la clase C O / R : C una instancia llamada O, de la clase C y desempeñando el rol R O una instancia llamada O

… Objetos Ejemplo de varios objetos relacionados:

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

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

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 Un objeto persistente conserva su estado en un sistema de almacenamiento permanente (usualmente memoria secundaria) 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, pues ésta debería ser transparente, un objeto existe desde su creación hasta que se destruya

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 Categorías de objetos: Activos – Pasivos Clientes – Servidores 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

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. Una operación es la especificación y la implementación de una función efectuada por un objeto.

El Concepto de Operación Las operaciones menipulan los atributos del objeto. Pueden tener parámetros de entrada y/o salida. Un mensaje de un objeto a otro involucra la ejecución de una operación.

El Concepto de Operación El nombre del mensaje es el de la operación. Los parámetros del mensaje son los parámetros de la operación.

Casos de Uso

Casos de Uso Los Casos de Uso (Ivar Jacobson) describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el p.d.v. del usuario Permiten definir los límites del sistema y las relaciones entre el sistema y el entorno Los Casos de Uso son descripciones de la funcionalidad del sistema independientes de la implementación Comparación con respecto a los Diagramas de Flujo de Datos del Enfoque Estructurado Algunas similitudes y diferencias entre DFDs y D. de Casos de Uso: Un caso de uso es una función (servicio o transacción) atómica ofrecida por el sistema al entorno (actores), mientras que un proceso de un DFD puede ser detallado en un DFD hijo. Así, el concepto de “explosión de proceso” sólo se aplica a los DFDs. Aunque en cierta forma con relaciones de inclusión entre casos de uso (que se explican más adelante) puede mostrarse la factorización de un caso de uso esto no llega a ser equivalente a explosión de proceso. Aunque un caso de uso y un proceso modelan una pieza de funcionalidad del sistema su especificación es diferente. En un caso de uso interesa expresar la funcionalidad mediante la interacción (enlaces de comunicación) actor(es) – sistema. En un proceso la funcionalidad se expresa mediante la transformación que se hace de los flujos de entrada para producir flujos de salida. Un caso de uso en general no modela un particionamiento (o detalle) funcional interno del sistema pues se concibe desde la perspectiva de los actores, es decir una visión externa del sistema. La excepción a lo anterior podría producirse al factorizar funcionalmente un caso de uso para establecer una relación de inclusión (que se explica más adelante). Un DFD, según sea el nivel de detalle, puede mostrar descomposición funcional interna del sistema. La diferencia entre Captura de Requisitos y Análisis radica esencialmente en el grado de detalle que se obtiene respecto del particionamiento del problema (funcional y de datos). La Captura de Requisitos ofrece un particionamiento en el contexto del usuario y adecuado para su comprensión. El Análisis provee un particionamiento que pueda ser utilizado como entrada para el Diseño del Sistema. Así, se puede afirmar que los D. de Casos de Uso son una herramienta exclusivamente de Captura de Requisitos mientras que los DFD podrían utilizarse en ambas actividades. En captura de requisitos para un DFD una entidad externa equivale a un actor, un almacén único y global evita entrar en análisis de datos y los procesos establecidos sólo hasta el nivel de transacciones se corresponden casos de uso. Las relaciones de extensión y de generalización entre casos de uso no tienen correspondencias en los DFDs. ...

… Casos de Uso Los Casos de Uso particionan el conjunto de necesidades atendiendo a la categoría de usuarios que participan en el mismo Están basado en el lenguaje natural, es decir, es accesible por los usuarios

Ejemplo de Casos de Uso Caso de Uso: Comprar productos Actores: Cliente, Cajero Tipo: Primario Descripción: Un cliente llega a la caja registradora con los artículos que comprará. El cajero registra los artículos y cobra el importe. Al terminar la operación el cliente se marcha con los productos.

… Casos de Uso Ejemplo:

… Casos de Uso Actores: Principales: personas que usan el sistema Secundarios: personas que mantienen o administran el sistema Material externo: dispositivos materiales imprescindibles que forman parte del ámbito de la aplicación y deben ser utilizados Otros sistemas: sistemas con los que el sistema interactúa La misma persona física puede interpretar varios papeles como actores distintos El nombre del actor describe el papel desempeñado

… Casos de Uso Los Casos de Uso se determinan observando y precisando, actor por actor, las secuencias de interacción, los escenarios, desde el punto de vista del usuario Un escenario es una instancia de un caso de uso Los casos de uso intervienen durante todo el ciclo de vida. El proceso de desarrollo estará dirigido por los casos de uso Una característica resaltada respecto de un proceso de desarrollo de software asociado a UML es su naturaleza “use case driven”, es decir, el proceso es dirigido por los casos de uso. Éstos permiten que en punto determinado del desarrollo se validen y verifiquen el correspondiente modelo respecto del modelo de casos de uso. En sí la especificaciones de casos de uso (con los respectivos diagramas de interacción) constituyen una especificación de casos de prueba para el sistema.

Casos de Uso: Relaciones UML define cuatro tipos de relación en los Diagramas de Casos de Uso: Comunicación: Actor Caso de Uso

… Casos de Uso: Relaciones Inclusión : una instancia del Caso de Uso origen incluye también el comportamiento descrito por el Caso de Uso destino En UML se estereotipa como <<include>> <<include>> Caso de uso destino Para la explicación de las relaciones entre casos de uso se han identificado como “caso de uso origen” y “caso de uso destino” sólo para indicar el sentido del símbolo (flecha de generalización). Caso de uso origen

… Casos de Uso: Relaciones Extensión : el Caso de Uso origen extiende el comportamiento del Caso de Uso destino <<extend>> Caso de uso destino Las relaciones <<include>> y <<extend>> corresponden ambas a factorizaciones del comportamiento de un caso de uso, es decir, el caso de uso incluido y el caso de uso que extiende representan un fragmento de interacción de otro caso de uso. Sin embargo, la intensión es diferente; la relación <<include>> pretende evitar duplicación de interacciones en distintos casos de uso, la relación <<extends>> pretende describir una variación del comportamiento normal de un caso de uso, sobre todo cuando dicha variación pudiera complicar la legibilidad del caso de uso. Caso de uso origen

… Casos de Uso: Relaciones Herencia : el Caso de Uso origen hereda la especificación del Caso de Uso destino y posiblemente la modifica y/o amplía Caso de uso destino En el documento UML 1.3 no se proporcionan reglas específicas respecto de las modificaciones y ampliaciones posibles en el caso de uso hijo. Lo intuitivo es pensar que un caso de uso obtenido por especialización tiene en principio los mismos pasos de interacción que el caso de uso padre pero que puede insertar nuevos y/o reescribir los pasos heredados. Caso de uso origen

… Casos de Uso: Relaciones Ejemplo: <<extend>> Transferencia por Internet <<include>> Transferencia ¿Podría en este ejemplo haberse modelado el caso de uso “Transferencia por Internet” con una relación de generalización hacia el caso de uso “Transferencia”?. Si la idea de extensión (vista como especialización) forma parte esencial del concepto de generalización/especialización, ¿para qué tener dos tipos de relaciones? ... estos son algunos de lo muchos aspectos de UML que están en discusión.

Casos de Uso: Construcción Un caso de uso debe ser simple, inteligible, claro y conciso Generalmente hay pocos actores asociados a cada Caso de Uso Preguntas clave: ¿cuáles son las tareas del actor? ¿qué información crea, guarda, modifica, destruye o lee el actor? ¿debe el actor notificar al sistema los cambios externos? ¿debe el sistema informar al actor de los cambios internos?

… Casos de Uso: Construcción La descripción del Caso de Uso comprende: el inicio: cuándo y qué actor lo produce? el fin: cuándo se produce y qué valor devuelve? la interacción actor-caso de uso: qué mensajes intercambian ambos? objetivo del caso de uso: ¿qué lleva a cabo o intenta? cronología y origen de las interacciones repeticiones de comportamiento: ¿qué operaciones son iteradas? situaciones opcionales: ¿qué ejecuciones alternativas se presentan en el caso de uso?

Esta es una posible plantilla para utilizar al especificar un caso de uso (obtenida desde http://www.lsi.us.es/~amador/publicaciones/lsi-2000-10.pdf.zip)

Modelado de Interacciones

Interacción Los objetos interactúan para realizar colectivamente los servicios ofrecidos por las aplicaciones. Los diagramas de interacción muestran cómo se comunican los objetos en una interacción Existen dos tipos de diagramas de interacción: los Diagramas de Colaboración y los Diagramas de Secuencia.

Diagramas de interacción Los Diagramas de Secuencia son más adecuados están para observar la perspectiva cronológica de las interacciones Los Diagramas de Colaboración ofrecen una mejor visión espacial mostrando los enlaces de comunicación entre objetos Normalmente el D. de Colaboración se obtiene a partir del correspondiente D. de Secuencia

Diagramas de Secuencia Muestra la secuencia de mensajes entre objetos durante un escenario concreto. Cada objeto viene dado por una barra vertical. El tiempo transcurre de arriba abajo. Cuando existe demora entre el envío y la atención se puede indicar usando una línea oblicua.

… Diagramas de Secuencia Un ejemplo:

… Diagramas de Secuencia Ejemplo Las bandas rectangulares representan los periodos de actividad de los objetos En Rational Rose 98 el foco de control (el rectánculo que muestra el periodo de actividad de los objetos) no puede especificarse. En Rational Rose 2000 es posible manipularlo.

… Estructuras de control Podemos representar iteraciones en el envío de mensajes, p.e., mientras se cumpla una condición:

… Estructuras de control La iteración puede expresarse también como parte del mensaje:

… Estructuras de control Las bifurcaciones condicionales pueden representarse de esta forma:

Diagramas de Colaboración Son útiles en la fase exploratoria para identificar objetos La distribución de los objetos en el diagrama permite observar adecuadamente la interacción de un objeto con respecto de los demás La estructura estática viene dada por los enlaces; la dinámica por el envío de mensajes por los enlaces

Mensajes Un mensaje desencadena una acción en el objeto destinatario Un mensaje se envía si han sido enviados los mensajes de una lista (sincronización): A.1, B.3 / 1:Mensaje B A

… Mensajes Un mensaje se envía iterada y secuencialmente a un conjunto de instancias: 1 *[i:=1..n] : Mensaje B A

… Mensajes Un mensaje se envía iterada y concurrentemente a un conjunto de instancias: 1 *| | [i:=1..n] : Mensaje B A

… Mensajes Un mensaje se envía de manera condicionada: B A [x>y] 1: Mensaje B A

1: distancia:= mover(x,y) … Mensajes Un mensaje que devuelve un resultado: 1: distancia:= mover(x,y) B A

… Mensajes Los argumentos de un mensaje pueden ser valores obtenidos como consecuencia de las llamadas anteriores Los argumentos pueden ser también expresiones de navegación construidas a partir del objeto cliente Los argumentos pueden omitirse en el diagrama

Modelado Conceptual

Clases Modelado Conceptual: Organización del conocimiento del dominio del problema en un conjunto de abstracciones ordenadas de forma que se obtiene un conocimiento más profundo del problema

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: 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 es semánticamente equivalente a una composición (composite aggreation). La sintaxis por defecto para los atributos es: visibilidad nombre [multiplicidad] : tipo = valor-inicial {propiedades} - tipo es una especificación dependiente del lenguaje de implementación - Para indicar que un atributo es constante se puede poner la propiedad frozen - Ejemplos usando multiplicidad: colores [3]: Color puntos [2..*]: Punto nombre [0..1]: String - Un atributo de clase (del ámbito de clase y no de objeto) se indica subrayándolo

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

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

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

… Asociación Ejemplo: * Persona Compañía nombre s. s. dirección marido trabaja-para nombre s. s. dirección jefe Administra empleado * emplea-a 0.. 1 marido casado-con mujer

… Asociación 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 * 0..1 Aerolínea nro_billete Viajero Tablero Ajedrez 1 1 Cuadro columna fila Reduce la multiplicidad del rol opuesto al considerar el valor del cualificador

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

Ejemplos

… Ejemplos Agregación Asociación excluyente Clase de asociación contiene Agregación 1 3.. * Polígono Punto {ordenado} * * Persona Asociación excluyente Cuenta or * Empresa 1 * está-autorizado-en * Usuario Estación Autorización Clase de asociación prioridad privilegios camb_privil

Jerarquías de Generalización/Especialización Permiten gestionar la complejidad mediante un ordenamiento taxonómico 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

... Jerarquías de Generalización/Especialización Nombres usados: clase padre - clase hija, superclase - subclase, clase base - clase derivada Las subclases heredan características de sus superclases, es decir, atributos y operaciones (y asociaciones) de la superclase están disponibles en sus subclases

... Jerarquías de Generalización/Especialización

... Jerarquías de Generalización/Especialización La especialización es una técnica muy eficaz para la extensión y reutilización Caracterización de la generalización en UML: disjunta - no disjunta total (completa) - parcial (incompleta)

... Jerarquías de Generalización/Especialización Un ejemplo combinado:

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

Polimorfismo El término polimorfismo se refiere a que una característica de una clase puede tomar varias formas El polimorfismo representa 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 Zoo Animal Dormir() 1 { * } León Oso Tigre 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

Diagramas de Estados

Diagramas de Estados Los Diagramas de Estados representan autómatas de estados finitos, desde el p.d.v. de los estados y las transiciones Son útiles sólo para los objetos con un comportamiento significativo El resto de objetos se puede considerar que tienen un único estado El formalismo utilizado proviene de los Statecharts (Harel)

… Diagramas de Estados Cada objeto está en un estado en cierto instante El estado está caracterizado parcialmente por los valores de los atributos del objeto El estado en el que se encuentra un objeto determina su comportamiento Cada objeto sigue el comportamiento descrito en el D. de Estados asociado a su clase Los D. De Estados y escenarios son complementarios

… Diagramas de Estados Los D. de Estados son autómatas jerárquicos que permiten expresar concurrencia, sincronización y jerarquías de objetos Los Diagramas de Estados son grafos dirigidos Los D. De Estados de UML son deterministas Los estados inicial y final están diferenciados del resto La transición entre estados es instantánea y se debe a la ocurrencia de un evento

… Diagramas de Estados Ejemplo de un Diagrama de Estados para la clase persona:

… Diagramas de Estados Las guardas permiten condicionar la transición:

Acciones Podemos especificar la ejecución de una acción como consecuencia de la transición: Dicha acción también se considera instantánea

… Acciones Podemos especificar el envío de un evento a otro objeto como consecuencia de la transición: a Evento( arg1, arg2 )[ condición ] / ^otro_objeto.evento(arg2) b

… Acciones Se puede especificar el hacer una acción como consecuencia de entrar, salir o estar en un estado:

.. Acciones Se puede especificar el hacer una acción cuando ocurre en dicho estado un evento que no conlleva salir del estado:

Actividades Las actividades son similares a las acciones pero tienen duración y se ejecutan dentro de un estado del objeto Las actividades pueden interrumpirse en todo momento, cuando se desencadena la operación de salida del estado

… Actividades Cuando una actividad finaliza se produce una transición automática de salida del estado a do: actividad b [ not condición ] [ condición ]

Generalización de Estados Podemos reducir la complejidad de estos diagramas usando la generalización de estados Distinguimos así entre superestado y subestados Un estado puede contener varios subestados disjuntos Los subestados heredan las variables de estado y las transiciones externas

Generalización de Estados Ejemplo:

Generalización de Estados Quedaría como:

… Generalización de Estados Es preferible tener estados iniciales de entrada a un nivel de manera que desde los niveles superiores no se sepa a qué subestado se entra:

… Generalización de Estados La agregación de estados es la composición de un estado a partir de varios estados independientes La composición es concurrente por lo que el objeto estará en alguno de los estados de cada uno de los subestados concurrentes

… Generalización de Estados Ejemplo:

Destrucción del Objeto La destrucción de un objeto es efectiva cuando el flujo de control del autómata alcanza un estado final no anidado La llegada a un estado final anidado implica la “subida” al superestado asociado, no el fin del objeto

… Destrucción de Objeto Ejemplo:

Transiciones temporizadas Las esperas son actividades que tienen asociada cierta duración La actividad de espera se interrumpe cuando el evento esperado tiene lugar Este evento desencadena una transición que permite salir del estado que alberga la actividad de espera. El flujo de control se transmite entonces a otro estado

… Transiciones temporizadas Ejemplo: a esperar dinero entry: Mostrar mensaje do: Esperar 30 segundos exit: cerrar ranura b anular transacción / Abrir ranura Depósito efectuado Si en 30 segundos no se introduce el dinero se termina la actividad pasando a anular la transacción. En cualquier caso se cierra la ranura.

… Transiciones temporizadas Ejemplo v.2: a esperar dinero entry: Mostrar mensaje exit: cerrar ranura b anular transacción / Abrir ranura Depósito efectuado Temporizador (30 segundos)

Modelado de Componentes

Diagrama de Componentes Los diagramas de componentes describen los elementos físicos del sistema y sus relaciones Muestran las opciones de realización incluyendo código fuente, binario y ejecutable

...Diagramas de Componentes Los componentes representan todos los tipos de elementos software que entran en la fabricación de aplicaciones informáticas. Pueden ser simples archivos, paquetes de Ada, bibliotecas cargadas dinámicamente, etc. Cada clase del modelo lógico se realiza en dos componentes: la especificación y el cuerpo

… Diagramas de Componentes La representación gráfica es la siguiente: Especificación Cuerpo Genérico Package Package Generic specification body package

Dependencias entre Componentes Las relaciones de dependencia se utilizan en los diagramas de componentes para indicar que un componente utiliza los servicios ofrecidos por otro componente

Subsistemas Los distintos componentes pueden agruparse en paquetes según un criterio lógico y con vistas a simplificar la implementación Son paquetes estereotipados en <<subsistemas>>

Modelado de Distribución

Diagramas de Distribución Los Diagramas de Distribución muestran la disposición física de los distintos nodos que componen un sistema y el reparto de los componentes sobre dichos nodos

… Diagramas de Distribución Los estereotipos permiten precisar la naturaleza del equipo: Dispositivos Procesadores Memoria Los nodos se interconectan mediante soportes bidireccionales (en principio) que pueden a su vez estereotiparse

… Diagramas de Distribución Ejemplo de conexión entre nodos: En Rational Rose podemos distinguir entre el dispositivo por estereotipado y el dispositivo con su propio símbolo