clase 7: arquitectura: del anÁlisis al diseÑo diagramas de...

39
CLASE 7: ARQUITECTURA: DEL ANÁLISIS AL DISEÑO DIAGRAMAS DE SECUENCIA Y CONTRATOS Universidad Simón Bolívar. Ing. de Software. Prof. Ivette Carolina Martínez

Upload: hoangkhanh

Post on 19-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

CLASE 7:

ARQUITECTURA: DEL ANÁLISIS AL DISEÑO

DIAGRAMAS DE SECUENCIA Y CONTRATOS

Universidad Simón Bolívar. Ing. de Software. Prof. Ivette Carolina Martínez

Arquitectura: Del Análisis al Diseño

OBJETIVOS:   Identificar las diferencias básicas entre Análisis y

Diseño.  Definir la arquitectura de un sistema.   Identificar las vistas de la arquitectura de un

sistema.  Aprender la elaboración del modelo conceptual de

un sistema (listo?)

Análisis vs. Diseño

Análisis

  Se enfoca en comprender el problema.

  Diseño idealizado.

  Comportamiento.

  Estructura del Sistema.

  Requerimientos Funcionales.

  Un pequeño modelo.

Diseño   Se enfoca en comprender

la solución.   Operaciones y atributos   Rendimiento.   Cercano al código real.   Ciclos de vida de los

objetos.   Requerimientos no

funcionales.   Un modelo grande.

Bottom Up ó Top Down

Qué es Arquitectura?

  Arquitectura de software se refiere al conjunto de decisiones significativas respecto a la organización de un sistema de software.  Selección de Elementos Estructurales y sus interfaces.  Especificación del Comportamiento, logrado como

colaboración entre estos elementos.   Composición de estos elementos estructurales y de

comportamiento en Subsistemas más grandes.  Estilo Arquitectónico que guía esta organización.

La arquitectura restrige el diseño y la implementación

  La Arquitectura se refiere a un conjunto de decisiones estratégicas, reglas o patrones que restringen el diseño y la construcción.

Diseño Implementación

Código

Arquitectura

El Modelo de “4+1 Vistas”

Diagramas de Secuencia

OBJETIVO:

Ser capaz de describir el comportamiento de un sistema, subsistema u operación particular mediante un Diagrama de Secuencia utilizando para ello el concepto y representación de interacción, objeto, mensaje, activación.

Modelos y Diagramas

 Diagramas de Casos de Uso

 Diagramas de Clases

 Diagramas de Objetos

 Diagramas de Secuencia Diagramas de interacción

Un Diagrama de Secuencia describe la interación

entre los objetos ordenada en el tiempo

Objetivos: Diagramas de Secuencia

Ser capaz de representar:  Objetos, diferentes tipos de interacciones y

mensajes con el objeto de describir el comportamiento de un sistema, subsistema, operación.

Escenario Principal de Éxito (pago en efectivo solamente):

1.  El Cliente llega a la caja con los artículos y servicios a pagar 2.  El Cajero inicia una nueva venta 3.  El Cajero introduce el código del producto 4.  El sistema registra el producto y presenta la descripción del producto, precio y subtotal El cajero repite los pasos 3-4 hasta procesar todos los artículos y servicios 5.  El Sistema muestra el total con el impuesto calculado 6.  El Cajero indica al Cliente el total y pregunta la forma de pago 7.  El Cliente paga y el Sistema maneja el pago 8.  El sistema registra la venta 9.  El Sistema emite la factura 10.  El Cliente se marcha con lo adquirido y la factura

:Cajero :Sistema iniciarVenta()

introducirProducto(cod,cantidad)

descripción, subtotal

*[otros productos]

total con impuestos

terminarVenta()

pagar(monto)

vuelto y factura

Ejemplo de Diagrama de Secuencia

iniciarVenta()

introducirProducto(cod,cantidad)

descripción, subtotal

:Cajero Actor externo al sistema

:Sistema

Sistema como “caja negra”

pagar(monto)

vuelto y factura

*[otros productos]

Caja que puede encerrar un área de iteración

*[...] es un marcador de iteración

total con impuestos

terminarVenta()

Valor (es) retornado (s) asociado(s) con el mensaje previo

Ejemplo de Diagramas de Secuencia

Límite del Sistema

Mensajes

Diagrama de Secuencia

Muestra:   los objetos que participan en una interacción   el intercambio de mensajes entre los objetos   el ordenamiento en el tiempo de los

mensajes

 Captura el comportamiento dinámico

Notación Básica: objetos, mensajes y valores retornados

: C1 : C2

mensaje 1 ()

mensaje 2 (p1,p2) Mensajes

retorno Valor (es) retornado (s) asociado(s) con el mensaje previo

: C1 : C2

mensaje 1 ()

mensaje 2 (p1,p2)

retorno

mensaje 0 ()

Notación Básica: objetos, mensajes y valores retornados

: C1 : C2

mensaje 1 ()

mensaje 2 (p1,p2)

retorno

mensaje 0 ()

Caja de activación

Notación Básica: Cajas de Activación

: C1 : C2

mensaje 1 ()

retorno

mensaje 0 ()

mensaje 3 (p1,p2)

mensaje 2 ()

Notación Básica: Cajas de Activación

: C1 : C2

mensaje 1 ()

retorno

mensaje 0 ()

mensaje 3 (p1,p2)

mensaje 2 ()

Notación Básica: Cajas de Activación

mensaje 1()

Recursión

Mensaje a si mismo (“self” , “this”)

: C1

mensaje 0 ()

Caja de activación

mensaje 1()

Notación Básica: Recursión

:Calculadora

factorial (n)

factorial (n-1)

Notación Básica: Recursión

Ejemplo:

: C1

Mensaje 0 ()

crear()

Creación de objetos

:C2

mensaje 1()

Notación Básica creación de objetos

: Venta

agregarProducto (cod,cant)

crear()

Notación Básica creación de objetos

modificar (cod,cant)

Ejemplo:

:Línea de Producto

: C1

Mensaje 0 ( )

crear() :C2

destruir

Destrucción del objeto

Notación Básica destrucción de objetos

: C1 : C2

mensaje 0 ()

Mensaje condicional

[condición] mensaje 1 ()

Notación Básica: Mensajes Condicionales

: Ciudadano : Calculador

declaraciónImpuesto () [sueldo>Límite] impuesto (sueldo)

Notación Básica: Mensajes Condicionales

Ejemplo:

: C1 : C2

mensaje 0 () [condición 1] mensaje 1 ()

Notación Básica: Mensajes Condicionales Excluyentes

: C3

[condición 2] mensaje 2 ()

Mensajes condicionales

mútuamente excluyentes

: Taller

repararCarro ()

Notación Básica: Mensajes Condicionales Excluyentes

Ejemplo: : Especialista en

Sistemas de Dirección

: Especialista en Sistemas de

Inyección

[fallaDirección] reparar()

[fallaInyección] reparar()

: C1 : C2

mensaje 0 ()

Iteración de un mensaje

[i:=1..N]: vi:=mensaje ()

Notación Básica: Iteración de un mensaje

: Simulador :Random

simular() [i:=1..N]: numi:=proximo()

Notación Básica: Iteración de un mensaje

Ejemplo:

: C2 : C1

mensaje 0 ()

mensaje 1 ()

Notación Básica: Iteración de varios mensajes

: C3

mensaje 2 () Caja que puede encerrar un área de iteración

*[...] es un marcador de iteración

*[...]

FDS

: Random :Simulador

simular()

horas:=próximoEntero()

Notación Básica: Iteración de varios mensajes

: Programador

trabajar (horas)

FDS

Ejemplo:

*[i:=1..N] comer ()

Resumen: Diagramas de Secuencia

 Un Diagrama de Secuencia describe comportamiento de sistemas, subsistemas y operaciones, representando los objetos que intervienen, así como los mensajes que intercambian, ordenados en el tiempo a través de la línea de vida de cada uno de los objetos y sus cajas de activación

Contratos

 Documentos que indican como cambia el estado de un sistema cuando se efectúa una de sus operaciones.

 Se redactan contratos para cada operación del sistema con el fin de describir su comportamiento

Contratos

 Estilo declarativo (Generalmente)  Describen lo que sucederá y no como se

conseguirá  Elementos fundamentales: Precondiciones

y postcondiciones

Contratos: Formato

  Nombre:   Referencias

cruzadas:   Precondiciones:

 A validar:  Supuestas:

  Postcondiciones:

Nombre de la operación y parámetros. Casos de uso, funciones del sistema,…

Suposiciones antes de la ejecución. Que deben ser verificadas Que no se validarán Efecto de la operación sobre el estado

del sistema

Contratos: Ejemplo

 Nombre:

 Referencias cruzadas:

 Precondiciones:

  Supuestas:

 Postcondiciones:

Introducir producto(cup:entero, cantidad:entero) Casos de uso:comprar productos

Se supone que el sistema conoce el CUP

Si fue una nueva venta:

Fue creada una Venta (instancia)

Fue creada una asociación entre la instancia de venta y el TDPV (asociación)

Fue creada una instancia de VentasLíneaDeProducto

Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y Venta

Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y EspecificaciónProducto, basado en la correspondencia del CUP

Contratos: Ejemplo

 Nombre:

 Referencias cruzadas:

 Precondiciones:

  Supuestas:

 Postcondiciones:

Introducir producto(cup:entero, cantidad:entero) Casos de uso:comprar productos

Se supone que el sistema conoce el CUP

Si fue una nueva venta:

Fue creada una Venta (instancia)

Fue creada una asociación entre la instancia de venta y el TDPV (asociación)

Fue creada una instancia de VentasLíneaDeProducto

Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y Venta

Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y EspecificaciónProducto, basado en la correspondencia del CUP

Contratos: Postcondiciones

  Son declaraciones sobre el estado del sistema una vez concluida la operación

  Ventaja: permiten describir los efectos de una operación (cambios necesarios para el funcionamiento del sistema).

  Deben ser expresados en pasado.   ¿Qué expresar?

 Creación y eliminación de instancias  Modificación de atributos  Formación y cancelación de asociaciones

Contratos: Recomendaciones

1.  Identificar las operaciones del sistema a partir de los Diagramas de Secuencia

2.  Crear un Contrato para toda operación compleja, sutil en sus resultados o que no queda completamente clara en los casos de uso.

3.  Para crear las Postcondiciones, usar las categorías y describirlas en pasado.