Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del...

12
Tema 3 Tema 3: Diseño Diseño Tema 3 Tema 3: Diseño Diseño A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013

Transcript of Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del...

Page 1: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

Tema 3Tema 3:: DiseñoDiseñoTema 3Tema 3: : DiseñoDiseño

A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo

OCW 2013

Page 2: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

ÍndiceÍndice

11 IntroducciónIntroducción 1.1.-- IntroducciónIntroducción El rol del diseño en el CVEl rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseñoArtefactos a conseguir durante el flujo de trabajo del diseño Decisiones de diseño tomadas en nuestro caso de estudioDecisiones de diseño tomadas en nuestro caso de estudio

2 2 -- Diagramas de secuencia UMLDiagramas de secuencia UML33 R li ió d di d R li ió d di d ii 3.3.-- Realización de diagramas de Realización de diagramas de secuenciasecuencia 3.1.3.1.-- Capas lógicas en el software: presentación, Capas lógicas en el software: presentación, lógica del lógica del p g pp g p gg

negocio y acceso a negocio y acceso a datosdatos 3.2.3.2.-- Patrones de responsabilidad Patrones de responsabilidad GRASPGRASP 3.2.3.2. Patrones de responsabilidad Patrones de responsabilidad GRASPGRASP

4 4 -- Arquitecturas Software de varios nivelesArquitecturas Software de varios niveles

Page 3: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

1. 1. IntroducciónIntroducción Objetivo del diseñoObjetivo del diseño

Encontrar la forma (o solución) del sistema que cumpla con Encontrar la forma (o solución) del sistema que cumpla con t d l i it (f i l f i l )t d l i it (f i l f i l )todos los requisitos (funcionales y no funcionales)todos los requisitos (funcionales y no funcionales) REQUISITOS: REQUISITOS: Do the right things / Haz lo correctoDo the right things / Haz lo correcto DISEÑO: DISEÑO: Do the things right / Hazlo correctoDo the things right / Hazlo correcto DISEÑO: DISEÑO: Do the things right / Hazlo correctoDo the things right / Hazlo correcto

Durante el diseño se escogen las herramientas: LP, SO, SGBD, Durante el diseño se escogen las herramientas: LP, SO, SGBD, GUI, concurrencia, distribución, componentes,…GUI, concurrencia, distribución, componentes,…

Se divide el trabajo para que se pueda implementar en paralelo Se divide el trabajo para que se pueda implementar en paralelo por equipos distintospor equipos distintos

D fi i bi l i t f it l i i iD fi i bi l i t f it l i i i Definir bien las interfaces, que permita que los equipos se sincronicenDefinir bien las interfaces, que permita que los equipos se sincronicen Usar una notación comúnUsar una notación común

Durante el diseño debe crearse una abstracción de la Durante el diseño debe crearse una abstracción de la Durante el diseño debe crearse una abstracción de la Durante el diseño debe crearse una abstracción de la implementación del sistema:implementación del sistema: El diseño debe ser una buena entrada a la fase de implementación: El diseño debe ser una buena entrada a la fase de implementación: pp

que implementar sea directo a partir del diseño que implementar sea directo a partir del diseño

Page 4: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

CC1.1.1.1.--El rol del diseño en el CVEl rol del diseño en el CVTransiciónTransiciónDesarrolloDesarrollo ConstrucciónConstrucciónInicioInicioActividades

Captura Requisitos / Análisis

R & A R & A R & A R & A

Diseño

I l ió

D D D D

Implementación

Pruebas

I I I I

Pruebas

Despliegue

P

D

P

D

F

D

P

D

TiempoTiempoIteración 1 . . . .. . . .Iteración

2Iteración

3. . . .. . . . Iteración

nIteración

n+1

D D D D

Page 5: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

1.1.1.1.-- El rol del diseño en el CVEl rol del diseño en el CV DiseñoDiseño

Actividad principal en la fase de desarrollo, junto con el análisisActividad principal en la fase de desarrollo, junto con el análisis El diseño ayuda aEl diseño ayuda a::

Encontrar una arquitectura estable del sistemaEncontrar una arquitectura estable del sistema Crear un anteproyecto del modelo de implementaciónCrear un anteproyecto del modelo de implementación

El modelo del diseño obtenido se debe mantener a lo largo El modelo del diseño obtenido se debe mantener a lo largo de todo el proyectode todo el proyectode todo e p oyectode todo e p oyecto Esto es, seguramente cambiará algo durante la implementación, y Esto es, seguramente cambiará algo durante la implementación, y

hay que ocuparse en actualizarlohay que ocuparse en actualizarloy q py q p

Page 6: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

1.2.1.2.-- Artefactos a conseguir durante Artefactos a conseguir durante el flujo de trabajo del diseñoel flujo de trabajo del diseño

11 Realización/Diseño de los casos de Realización/Diseño de los casos de 1.1.-- Realización/Diseño de los casos de Realización/Diseño de los casos de uso uso –– Diagramas de secuenciaDiagramas de secuenciagg

2.2.-- Clases/Interfaces de diseñoClases/Interfaces de diseño3.3.-- Descripción de la arquitecturaDescripción de la arquitectura

Page 7: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

Realización/Diseño de los casos de uso Realización/Diseño de los casos de uso –– Diagramas de secuenciaDiagramas de secuencia

Es una colaboración que indica cómo se Es una colaboración que indica cómo se qqrealiza/ejecuta un CU, en términos de las clases de realiza/ejecuta un CU, en términos de las clases de diseño y sus objetosdiseño y sus objetosdiseño y sus objetosdiseño y sus objetos

Para cada CU habrá que añadirPara cada CU habrá que añadir El diagrama de secuenciaEl diagrama de secuencia Flujo de eventos (en el diseño) Flujo de eventos (en el diseño) j ( )j ( ) Requisitos de implementaciónRequisitos de implementación

Page 8: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

Diagrama de Secuencia en UMLDiagrama de Secuencia en UMLgg

obj1: IU_CU_X obj2: Gestor_X obj3: Clase_X

2: busca(d)

: ACTOR

1: escribe d y solicita 2: busca(d) 3: getAtributoY()

return v....

y solicita

........

Page 9: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

Clases / Interfaces de diseñoClases / Interfaces de diseñoClases / Interfaces de diseñoClases / Interfaces de diseño

Una clase de diseño es una abstracción de una Una clase de diseño es una abstracción de una clase (o constructor similar existente) en el LPclase (o constructor similar existente) en el LP

Operaciones parámetros atributos y tiposOperaciones parámetros atributos y tiposOperaciones, parámetros, atributos y tiposOperaciones, parámetros, atributos y tipos Visibilidad de atributos y operacionesVisibilidad de atributos y operacionesy py p Asociaciones y agregaciones (aunque luego se Asociaciones y agregaciones (aunque luego se

implementen añadiendo atributos) implementen añadiendo atributos) implementen añadiendo atributos) implementen añadiendo atributos) Generalizaciones (con la semántica del LP Generalizaciones (con la semántica del LP

utilizado)utilizado)

Page 10: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

Clases / Interfaces de diseñoClases / Interfaces de diseño

Los métodos se especifican en Los métodos se especifican en Los métodos se especifican en Los métodos se especifican en lenguaje natural o en pseudocódigolenguaje natural o en pseudocódigog j p gg j p gPueden especificarse requisitos de Pueden especificarse requisitos de

i l t ió d l i l t ió d l implementación de una clase implementación de una clase Pueden ponerse estereotiposPueden ponerse estereotiposPueden ponerse estereotiposPueden ponerse estereotipos “class module”, “form”, “user control” en VB“class module”, “form”, “user control” en VB, ,, , “interface” en Java“interface” en Java

Page 11: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

Descripción de la arquitecturaDescripción de la arquitectura• Separación del sistema en N niveles/capas• Definición de las relaciones entre niveles cliente Definición de las relaciones entre niveles cliente,

servidor y de datosNivel Servidor Nivel de DatosNivel Cliente

Presentación Lógica del Negocio

Contenedor Web Bases de DatosContenedor EJBCliente Web

S SAplicaciones

Legadas

Enterprise JavaBeans

Cliente AppletJava RMI objects

Presentación

S i i API

Servlets, JSP Legadaso Pre-Existentes

S i i API

Aplicación stand-alone

Servicios, APIs, JNDI, RMI-IIOP…

Servicios, APIs, JNDI, RMI-IIOP…

Servicios, APIs, JNDI, RMI-IIOP…

Page 12: Tema 3 Diseño › pluginfile.php › 5194 › mod... · Índice 1..--Introducción El rol del diseño en el CV Artefactos a conseguir durante el flujo de trabajo del diseño Decisiones

1.3.1.3.-- Decisiones de diseño tomadas Decisiones de diseño tomadas en nuestro caso de estudioen nuestro caso de estudioen nuestro caso de estudioen nuestro caso de estudio

El lenguaje de programación a usar es OO (Java)El lenguaje de programación a usar es OO (Java) El lenguaje de programación a usar es OO (Java)El lenguaje de programación a usar es OO (Java) Las clases del modelo del dominio serán clases OO en el diagrama de Las clases del modelo del dominio serán clases OO en el diagrama de

clases del sistema (con sus atributos)clases del sistema (con sus atributos) Las asociaciones, generalizaciones, etc. las mantendremos en el diagramaLas asociaciones, generalizaciones, etc. las mantendremos en el diagrama

de clases, siendo conscientes de que en la implementación se de clases, siendo conscientes de que en la implementación se transformarán en atributos de clases, o en nuevas clases.transformarán en atributos de clases, o en nuevas clases.,,

Al ir construyendo los diagramas de secuencia, SE IRÁN AÑADIENDO Al ir construyendo los diagramas de secuencia, SE IRÁN AÑADIENDO nuevos métodos a las clases del diseño.nuevos métodos a las clases del diseño.

U i t d tió d b d d t OO U i t d tió d b d d t OO Usaremos un sistema de gestión de bases de datos OO Usaremos un sistema de gestión de bases de datos OO (DB4o)(DB4o)

Las clases/asociaciones/generalizaciones del modelo del dominio se Las clases/asociaciones/generalizaciones del modelo del dominio se Las clases/asociaciones/generalizaciones del modelo del dominio se Las clases/asociaciones/generalizaciones del modelo del dominio se transformarán directamente en clases con persistencia.transformarán directamente en clases con persistencia. Será necesario controlar la persistencia de cada uno de los objetos, Será necesario controlar la persistencia de cada uno de los objetos, p jp j

tanto al consultar/recuperar como al insertar, modificar o borrar tanto al consultar/recuperar como al insertar, modificar o borrar objetos.objetos.