• No se han encontrado resultados

Tema 4f: Proceso Unificado: Diseño

N/A
N/A
Protected

Academic year: 2021

Share "Tema 4f: Proceso Unificado: Diseño"

Copied!
48
0
0

Texto completo

(1)

Tema 4f:

Proceso Unificado: Diseño

Marcos López Sanz

(2)

Índice

Visión general

Artefactos

Modelo de diseño

Clases de diseño

Realización en diseño de los casos de uso

Subsistemas en diseño

Interfaz

Actividades

Diseño de los casos de uso

Diseño de las clases

(3)

Diseño

Visión general

Requisitos

Diseño

Implementación

Prueba

Análisis

Planificación

Anál. Riesgos

Preparación

Elaboración

Construcción

Verificación

Transición

Fases

Flujos de

trabajo

Iteración(es)

Inicial(es)

Iter.

#1

Iter.

#2

Iter.

#3

Iter.

#4

Iter.

#5

Iter.

#6

Iter.

#7

(Adaptado de Jacobson, 1999)

(4)

Modelo de

análisis

Modelo de

diseño

Modelo de

despliegue

Modelo de

implementación

Modelo de

pruebas

Modelo de

casos de uso

Diseño

Visión general

(5)

Requisitos

Pruebas

Implementación

Diseño

Análisis

Modelo de

Despliegue

Modelo de

Análisis

Modelo de

Diseño

Modelo de

Implementación

Modelo de

Pruebas

Modelo de

Casos de Uso

Dependencia de traza

Diseño

Visión general

(6)

Diseño

Diagramas UML

Modelo de

Diseño

Modelo de

Pruebas

Modelo de

Despliegue

Modelo de

Implementación

Diagramas de

Casos de Uso

Diagramas de

Clases

Diagramas de

Componentes

Diagramas de

Secuencia

Diagramas de

Colaboración

Diagramas de

Estados

Diagramas de

Actividad

Diagramas de

Objetos

Incluidos subsistemas

Modelo de

Casos de Uso

Diagramas de

Interacción

Modelo de

Análisis

Diagramas de

Despliegue

Incluidas clases activas

y componentes

(7)

Diseño

Visión general

Modelo de Análisis

Modelo de Diseño

Modelo conceptual

Modelo físico

Pueden obtenerse varios diseños

Específico a una implementación

Menos formal

Más formal

Menos caro de desarrollar

Más caro (5 veces más)

Puede eliminarse

Debe mantenerse durante todo el

(8)

Diseño

Visión general

Objetivos del diseño:

Acercar el modelo de análisis al modelo de implementación

 Los milagros más comunes de la ingeniería del software son las transiciones

desde el análisis hasta el diseño y desde el diseño al código. Richard Due

Identificar requisitos no funcionales y restricciones en relación a:

 Lenguajes de programación, reutilización de componentes, sistemas operativos,

tecnologías de distribución, concurrencia, bases de datos, interfaces de usuario,

gestión de transacciones, etc.

Descomponer el modelo de análisis en subsistemas que puedan

desarrollarse en paralelo

Definir la interfaz de cada subsistema

(9)

Diseño

Artefactos

Modelo de diseño

Casos de uso en el dominio de la solución

Cómo soportar requisitos funcionales/no funcionales y otras restricciones

en el entorno de implementación

Entrada fundamental para actividades de implementación

*

Subsistemas de diseño

Realización

en diseño

*

*

*

*

*

Clases de diseño

Interfaz

*

*

Modelo de diseño

(10)

Diseño

Artefactos

Clases de diseño

Una clase de diseño es una abstracción de una clase de implementación

Las operaciones, atributos, tipos, visibilidad (public, protected, private,

etc...), se pueden especifican con la sintaxis del lenguaje elegido

Las relaciones entre clases de diseño se traducen de manera directa al

lenguaje:

 Generalización  herencia

 Asociaciones, agregaciones  atributos

Se pueden postergar algunos requisitos a implementación (manera de

nombrar los atributos, operaciones, etc...)

(11)

Diseño

Artefactos

Clases de diseño: Ejemplo

Transacción

cuenta : Cuenta

cantidad: Dinero

………

Cuenta

reintegro(cantidad : Dinero) : Boolean

ingreso(cantidad : Dinero) : Boolean

1..2

1..2

(12)

Diseño

Artefactos

Realización de los casos de uso en diseño:

Es una colaboración que describe cómo se realiza en diseño un caso de

uso en términos de clases de diseño y sus interacciones

Modelo de análisis

Modelo de diseño

Realización en análisis

Realización en diseño

<<trace>>

(13)

Realización de los casos de uso en diseño:

Diseño

Artefactos

Transacción

Cuenta

Interfaz

del cajero

Dispositivo

de visualización

Teclado

Lector de

Tarjetas

Expendedor

Dinero

Recogedor

Dinero

Gestor

de Cliente

Cuenta

Gestor

de Cuentas

Gestor

de Transacciones

MODELO DE ANÁLISIS

MODELO DE DISEÑO

…..

(14)

Diseño

Artefactos

La realización en diseño de un caso de uso incluye:

Diagramas de clases: clases participantes

Diagramas de interacción: escenarios del caso de uso

Descripción textual del flujo de eventos

Requisitos de implementación

Opcionalmente: subsistemas e interfaces

14

Subsistema de

diseño

Clase de

diseño

Realización en diseño

(from Use Case View)

participante

participante

(15)

Diseño

Artefactos

Diagramas de clase

Una clase de diseño puede participar en varios casos de uso

Algunas responsabilidades, atributos y asociaciones suelen ser específicos

de un sólo caso de uso.

Dispositivo

de visualización

Teclado

Lector de

Tarjetas

Expendedor

Dinero

Gestor

de Cliente

Cuenta

Gestor

de Cuentas

Gestor

de Transacciones

Reintegro

Cliente

(16)

Diseño

Artefactos

Diagramas de interacción

La secuencia de acciones en un caso de uso comienza cuando un actor

envía un mensaje a un objeto de diseño

Utilizar mejor diagramas de secuencia que de colaboración: interesa la

secuencia cronológica de las interacciones

(17)

Diseño

Artefactos

Diagramas de interacción  diagramas de secuencia

:Dispositivo

de visualización

:Teclado

:Lector de

Tarjetas

:Expendedor

Dinero

:Gestor

de Cliente

:Gestor

de Transacciones

:Cliente

del Banco

1: Introducir

tarjeta

2: Tarjeta introducida (ID)

3: Solicitar PIN

4: Mostrar petición

5: Especificar código PIN

6: Código PIN (PIN)

(18)

Diseño

Artefactos

Flujo de eventos

Para clarificar los diagramas de secuencia: descripción textual

Una descripción no tiene que ser local a un diagrama. Puede englobar a

varios e indicar cómo se relacionan.

Requisitos de implementación

Requisitos a gestionar en implementación

Quizás durante esta fase de diseño se obtengan algunos nuevos

Representarlos con restricciones {...} asignadas a las clases de diseño,

(19)

Diseño

Artefactos

Subsistemas de diseño

Para organizar los artefactos de diseño: clases de diseño, realización de

casos de uso, interfaces y otros subsistemas

Fuertemente cohesionados y débilmente acoplados

*

Subsistemas de diseño

Realización

en diseño

*

*

Clases de diseño

Interfaz

*

Proporciona

1

(20)

Diseño

Artefactos

Interfaces

Los interfaces se utilizan para especificar las operaciones de las clases y los

subsistemas de diseño

Las clases de diseño soportan las operaciones de su interfaz mediante métodos.

Los subsistemas de diseño soportan las operaciones de su interfaz mediante las

clases de diseño (o subsistemas) que contiene.

Subsistemas de diseño

*

Clases de diseño

Interfaz

*

realiza

(21)

Diseño

Ejemplo

Para ilustrar las actividades, utilizaremos el ejemplo del cajero automático

Sacar dinero

Ingresar dinero

Transferencia

Cliente

del banco

Validar usuario

<<include>>

<<include>>

<<include>>

(22)

Diseño

Actividades

Actividades de diseño

Diseño de los casos de uso

Diseño de las clases

(23)

Diseño

Actividades

Diseño de los casos de uso

Identificar las clases de diseño y/o subsistemas necesarios

para la realización del caso de uso

Distribuir el comportamiento del caso de uso entre las clases

y/o subsistemas de diseño

(24)

Diseño

Actividades

Diseño de los casos de uso

Identificar las clases de diseño

 Derivar las clases de diseño de las correspondientes clases de

análisis que participan en el caso de uso

 Estudiar los requisitos especiales del caso de uso: realizarlos con los

mecanismos genéricos de diseño o con clases de diseño

 Asignar responsabilidades a las clases identificadas

 Realizar un diagrama de clases que muestre las clases de diseño que

intervienen en la realización del caso de uso y las relaciones entre

ellas

(25)

Diseño

Actividades

Diseño de los casos de uso

Identificar las clases de diseño

Validar usuario

Realización en diseño

LectorDeTarjetas

Pantalla

Teclado

GestorDeCliente

UsuariosDelBanco

(26)

Diseño

Actividades

Diseño de los casos de uso

Describir interacciones entre objetos de diseño

 Utilizar diagramas de secuencia

• objetos, instancias de actores, enlaces

 Comenzar estudiando la realización en análisis del caso de uso

 Sobre los diagramas de secuencia:

• el caso de uso comienza cuando una instancia de un actor envía un mensaje a un

objeto interfaz

• cada clase de diseño identificada debería tener al menos un objeto participando

en el diagrama de secuencia

 En esta fase gestionar excepciones y errores (entradas incorrectas,

situaciones anormales, etc.)

(27)

Diseño

Actividades

Diseño del c.u. “Validar usuario”: secuencia correcta

: Cliente del banco :LectorDeTarjetas : Pantalla : Teclado

1: introducirTarjeta

2: datosTarjeta (datos)

3: visualizar (Introducir PIN) 4: OK

5: introducirPIN (PIN)

6: datosPIN (PIN)

7: autentica (datos, PIN)

8: valida (datos, PIN) 9: OK 11: presenta (opciones) 10: almacenaDatos (datos) 12: visualizar (opciones) : Transacción : GestorDeCliente : UsuariosDelBanco 13: visualizar (opciones)

(28)

Diseño

Actividades

Diseño del c.u. “Validar usuario”: código incorrecto

: Cliente del banco :LectorDeTarjetas : Pantalla : Teclado

1: introducirTarjeta

2: datosTarjeta (datos)

3: visualizar (Introducir PIN) 4: OK

5: introducirPIN (PIN)

6: datosPIN (PIN)

7: autentica (datos, PIN)

8: valida (datos, PIN) 9: error

11: presenta (error PIN) 12: visualizar (error PIN)

: Transacción

: GestorDeCliente : UsuariosDelBanco

(29)

Diseño

Actividades

Diseño del caso de uso “Sacar dinero”

Suponemos que el usuario ya ha sido identificado (se ha ejecutado el

caso de uso anterior)

Ahora selecciona la opción “sacar dinero”

Sacar dinero

Realización en diseño

Pantalla

Teclado

Expendedor

Dinero

GestorDeCliente

Transacción

Cuentas

Cuenta

(30)

Diseño

Actividades

Diseño del c.u. “Sacar dinero”

Añadimos la clase Cuentas que asocia número de cuenta con una

instancia de la clase Cuenta.

La clase Transacción ya no actuará directamente sobre Cuenta.

: Transacción

: Cuentas

1: ingreso (numeroDeCuenta, importe)

: Cuenta

2: ingreso (importe)

Vista parcial del diagrama

(modelo de análisis)

(31)

Diseño

Actividades

Refinando el caso de uso “Sacar dinero”

Cliente del banco

Interfaz de cajero

UsuariosDelBanco

Transacción

1

autentica

Cuentas

1..n

1..n

1..n

1..n

posee

1..2

opera

1..2

1

(32)

Diseño

Actividades

Refinando el c. u. “Sacar dinero”: secuencia correcta

: Cliente del banco : Teclado : Pantalla : ExpDinero : Impresora : GestorDeCliente : Transacción : Cuentas : Cuenta

1: opcion (sacar dinero)

2: sacarDinero

3: visualizar (Teclee importe)

4: IntroducirImporte

5: importe

6: retirarDinero (importe)

7: reintegro (cuenta, importe)

8: reintegro (importe) 9: OK

10: OK 11: OK

12: visualizar (Retire su tarjeta) 14: expulsa (importe)

15: visualizar (Retire su dinero) 13: visualizar (Retire su tarjeta)

(33)

Diseño

Actividades

Refinando el c. u. “Sacar dinero”: no hay fondos

Falta:

- se ha superado el límite diario

: Cliente del banco : Teclado : Pantalla : Impresora

1: opcion (sacar dinero)

4: IntroducirImporte

2: sacarDinero

3: visualizar (Teclee importe)

5: importe

6: retirarDinero (importe)

7: reintegro (cuenta, importe)

8: reintegro (importe) 9: no hay saldo 10: no hay saldo

11: no hay saldo

: GestorDeCliente : Transacción : Cuentas : Cuenta

12: visualizar (No hay saldo)

14: visualizar (Retire su dinero) 13: visualizar

(No dispone de saldo suficiente)

15: visualizar (Retire su dinero)

(34)

Diseño

Actividades

Modelo de clases de diseño

Impresora

LectorDeTarjetas

Pantalla

Teclado Cliente del banco

GestorDeCliente Cuenta UsuariosDelBanco Transacción Cuentas Recogedor Dinero ExpDinero

(35)

Diseño

Actividades

Diseño de las clases

Identificar las responsabilidades de las clases de diseño (papeles en los

casos de uso)

Identificar:

 operaciones

 atributos

 relaciones en las que participa

 estados (diagramas de estados)

 métodos que soportan sus operaciones

 requisitos nuevos…

(36)

Diseño

Actividades

Diseño de las clases:

Identificar operaciones

 En el lenguaje de implementación

 Mirar responsabilidades que tiene en los casos de uso

Identificar atributos

 Describirlos en el lenguaje de programación

 Considerar los atributos de las clases de análisis de las que se derivan

Identificar asociaciones y agregaciones

 Las interacciones en los diagramas de secuencia precisan de asociaciones entre las

clases que interactúan

 Minimizar el número de relaciones entre clases (disminuir el acoplamiento)

 Refinar multiplicidad, papeles, etc.

 Refinar la navegabilidad (dirección) de las asociaciones en base a los diagramas de

secuencia

(37)

Diseño

Actividades

Diseño de las clases:

Describir métodos

 Algoritmos para implementar alguna operación (lenguaje natural)

 Esqueletos de métodos generado por la herramienta

 En general, esto se suele hacer en implementación

Describir estados

 Algunos objetos reaccionan en función de su estado actual

 Utilizar diagramas de transición de estados

(38)

Diseño

Actividades

Modelo de clases de diseño:

RecogedorDinero

crearCajon() : CajonDinero

abrirCajon()

cerrarCajon()

contarCantidad() : Dinero

LectorDeTarjetas

crearLector() : LectorDeTarjetas

leerTarjeta() : datosTarjeta

Pantalla

visualizar(mensaje : String)

crearPantalla() : Pantalla

Teclado

crearTeclado() : Teclado

leerPIN() : unPIN

leerOpcion() : unaOpcion

leerCantidad() : Dinero

leerNumCuenta() : unIDCuenta

ExpendedorDinero

crear() : ExpendedorDinero

expulsar(importe : Dinero)

GestorDeCliente

crear() : GestorDeCliente

iniciarSesion()

Impresora

crearImpresora() : Impresora

imprimir(mensaje : String)

(39)

Diseño

Actividades

Modelo de clases de diseño:

GestorDeCliente miTransaccion : Transacción crear() : GestorDeCliente iniciarSesion() visualizar(resultados : String) Transacción miCliente : GestorDeCliente datosTarjeta : DatosTarjeta numIntentosFallidos : 1..3 = 0 cuentas : Cuentas usuarios : UsuariosDelBanco almacenarDatos(datos : DatosTarjeta) validar(importe : Dinero, cantidad : Dinero)

autenticar(datos : DatosTarjeta, PIN : UnPIN) : Boolean retirarDinero(importe : Dinero) : Boolean

ingresarDinero(importe : Dinero) : Boolean

trasnsferencia(cuentaOrigen : Cuenta, cuentaDestino : Cuenta, importe : Dinero) : Boolean

UsuariosDelBanco usuarios : Dictionary

validar(datos : DatosTarjeta, PIN : UnPIN) : Boolean Cuentas

cuentas : Dictionary

reintegro(cuenta : Cuenta, importe : Dinero) : Boolean ingreso(cuenta : Cuenta, importe : Dinero) : Boolean

Cuenta datos : DatosCuenta limiteDiario : Dinero = 300

reintegro(importe : Dinero) : Boolean ingreso(importe : Dinero) : Boolean

(40)

Diseño

Actividades

Diseño de una clase:

La única clase que tiene un comportamiento parecido a una máquina de

estados es GestorDeCliente

Realizar el diagrama de transición de estados del sistema Cajero

(41)

Diseño

Actividades

Diseño de una clase:

Esperando tarjeta Leyendo tarjeta tarjeta introducida Esperando PIN Validando PIN PIN introducido( PIN )

Recogiendo tarjeta Esperando opción [ incorrecto ] [ > 3 intentos ] [ correcto ] Ingresando ingreso( importe ) Reintegrando reintegro (importe ) Transferencia transferencia( cuenta, importe )

Expulsando dinero

[ OK ]

dinero retirado [ Not OK ]

(42)

Diseño

Actividades

Diseño de los subsistemas:

Intentar que los subsistemas de diseño estén débilmente acoplados

Intentar que las clases dentro de los subsistemas tengan una alta

cohesión

Describir las dependencias entre los subsistemas

Determinar qué clases de unos subsistemas interactúan con qué otras

clases de otros subsistemas

Asegurarse que el subsistema soporta sus interfaces

Objetivos:

 Subsistemas independientes

 Garantizar corrección de interfaces

(43)

Diseño

Ejemplo

Refinando el c. u. “Ingresar dinero”:

Ingresar dinero Realización en diseño

Pantalla Teclado RecogedorDinero GestorDeCliente Transacción Cuentas Cuenta

(44)

Diseño

Ejemplo

Refinando el c. u. “Ingresar dinero”: secuencia correcta

: Cliente del banco

: Teclado : Pantalla : Recogedor Dinero 1: opcion (ingresar dinero)

4: IntroducirImporte

2: ingresarDinero

3: visualizar (Teclee importe)

5: importe

17: visualizar (Dinero ingresado) 19: visualizar (Retire su tarjeta)

11: ingresarDinero (importe)

12: ingreso (cuenta, importe)

13: ingreso (importe) 14: OK 15: OK

16: OK 6: visualizar (introducir dinero)

7: abrirCajon 8: IntroduceDinero

9: ContarDinero (cantidad)

10: validar (importe, cantidad)

: GestorDeCliente : Transacción : Cuentas : Cuenta

18: visualizar (Dinero ingresado) 20: visualizar (Retire su tarjeta)

(45)

Diseño

Ejemplo

Refinando el c. u. “Ingresar dinero”: cantidad incorrecta

: Cliente del banco : Teclado : Pantalla

1: opcion (ingresar dinero)

4: IntroducirImporte

2: ingresarDinero

3: visualizar (Teclee importe)

5: importe

11: visualizar (Cantidad errónea)

17: visualizar (Retire su tarjeta) 6: visualizar (introducir dinero)

10: validar (importe, cantidad) 7: abrirCajon

8: recogerDinero

9: dinero (cantidad)

12: visualizar (Retire su dinero)

13: abrirCajon 14: dineroRecogido 15: recogido 16: cerrarCajon :GestorDeCliente : Recogedor Dinero

(46)

Diseño

Ejemplo

Refinando el c. u. “Transferencia”:

Cuenta

Transferencia

Realización en diseño,

transferencia

Teclado

Pantalla

GestorDeCliente

Transacción

Cuentas

(47)

Diseño

Ejemplo

Refinando el c. u. “Transferencia”: secuencia correcta

: Cliente del banco : Teclado : Pantalla : GestorDeCliente : Transacción : Cuentas : Cuenta

1: opcion (transferencia)

4: IntroducirImporte

2: transferencia

3: visualizar (Teclee importe)

5: importe

19: visualizar (Transferencia realizada)

20: visualizar (Retire su tarjeta) 6: visualizar (Teclee cuenta destino)

9: transferencia (cuentaOrigen, cuentaDestino,importe)

10: reintegro (cuentaOrigen, importe)

11: reintegro (importe) 12: OK 13: OK 18: OK 7: cuentaDestino (cuenta) 8: cuentaDestino (cuenta)

14: ingreso (cuentaDestino, importe)

15: ingreso (importe) 16: OK

(48)

Diseño

Ejemplo

Refinando el c. u. “Transferencia”: no hay fondos

: Pantalla : Cliente del banco

1: opcion (transferencia)

4: IntroducirImporte

7: cuentaDestino (cuenta)

2: transferencia

3: visualizar (Teclee importe)

5: importe

15: visualizar (No hay fondos)

16: visualizar (Retire su tarjeta) 6: visualizar (Teclee cuenta destino)

8: cuentaDestino (cuenta)

9: transferencia (cuentaOrigen, cuentaDestino,importe)

14: no hay fondos

10: reintegro (cuentaOrigen, importe)

13: no hay saldo

11: reintegro (importe)

12: no hay saldo : Teclado : GestorDeCliente : Transacción : Cuentas : Cuenta

Referencias

Documento similar

En este ensayo de 24 semanas, las exacerbaciones del asma (definidas por el aumento temporal de la dosis administrada de corticosteroide oral durante un mínimo de 3 días) se

En un estudio clínico en niños y adolescentes de 10-24 años de edad con diabetes mellitus tipo 2, 39 pacientes fueron aleatorizados a dapagliflozina 10 mg y 33 a placebo,

• Descripción de los riesgos importantes de enfermedad pulmonar intersticial/neumonitis asociados al uso de trastuzumab deruxtecán. • Descripción de los principales signos

• For patients with severe asthma and who are on oral corticosteroids or for patients with severe asthma and co-morbid moderate-to-severe atopic dermatitis or adults with

Administration of darolutamide (600 mg twice daily for 5 days) prior to co-administration of a single dose of rosuvastatin (5 mg) together with food resulted in approximately

A treatment effect in favour of luspatercept over placebo was observed in most subgroups analysed using transfusion independence ≥12 weeks (during week 1 to week 24),

Capítulo 3: Análisis y Diseño del Sistema: incluye todos los diagramas necesarios para la realización de los casos de uso, en este se describe a profundidad la construcción de

En el proceso de desarrollo de los componentes del Sistema de Información para la Salud, se realiza el diseño de interfaz y sus funcionalidades asociadas en la