Está en la página 1de 40

1

Tema 4: Diseo
2
Contenidos
1.- Introduccin
2.- El rol del diseo dentro del CV
3.- Artefactos
4.- Dos posibles patrones de diseo para
acceder al nivel de datos (almacenamiento)
Usando un sistema OO
Usando un SGBD relacional
Anexos: modelo de despliegue, trabajadores y
flujo de actividades

3
1. Introduccin
Encontrar la forma (o solucin) del sistema que
cumpla con todos los requisitos (+ no funcion.)
Modelo del anlisis: comprensin de todos los requisitos.
1) Escoger herramientas (LP, SO, SGBD, GUI,
concurrencia, distribucin, componentes,)
2) Obtener buena entrada a la fase de implementacin
Que implementar sea directo a partir del diseo
3) Permitir implementacin por varios equipos
Capturar las interfaces
Usar una notacin comn
4
2. Rol del Flujo de Trabajo
de diseo en el CV







Requisitos
Diseo
Implementacin
Prueba
Anlisis
i t e r .
# 1
i t e r .
# 2
i t e r .
# n
i t e r .
# n + 1
i t e r .
# n + 2
i t e r .
# m
i t e r .
# m + 1
Inicio Elaboracin Construccin Transicin
Iteraciones:
Foco durante final de la
fase de elaboracin y
comienzo de construccin
- obtener arquitectura estable
- y anteproyecto de implementacin
El modelo de diseo
S se MANTIENE en
todo el proyecto
5
El CV del PUD de Rational separa
el diseo del despliegue
Diseo
Despliegue
6
3. Artefactos a obtener en
el FT de diseo
Modelo del diseo
Subsistema de diseo
Clase de diseo
Realizacin de caso de uso -- Diseo
Interfaz
Descripcin de la arquitectura
(vista del diseo)
Modelo de despliegue
Desc. de la arquitectura
(vista del despliegue)
diseo
despliegue
(NO LO
TRATAREMOS)
7
MODELO DEL ANLISIS (MA)
PAQUETE DE
ANLISIS
CLASES DE
ANLISIS
REALIZACIN-ANLISIS DE CU
contiene
- Realizaciones de CU
- Clases de anlisis
- Otros paquetes de anlisis
MODELO DEL DISEO (MDiseo)
SISTEMA DE
DISEO
CLASES
DE DISEO
REALIZACIN-DISEO DE CU
contiene
- Realizaciones de CU
- Clases de diseo
- Interfaces
- Otros subsistemas de diseo
: IU-1 : Gesto : Libo elLibro
1: ucir
2: Aceptar
3: obtenerLibro(signaturaLibro:String)
4: getSignatura()
encuentre
elLibro
5: getCopias()
6: isCoda()
NOMBRE DE L
atributo1,...
mtodo1 (m),
NOMBRE DE L
mtodo1 (parm),
mtodo2 (parm)
INTER-
FACES
+ MODELO de DESPLIEGUE
JERARQUA DE SUBSISTEMAS
DE DISEO
8
Artefacto:
Clase de diseo
Una clase de diseo es una abstraccin de una
clase (o constructor similar existente) en el LP
Operaciones, parmetros, atributos y tipos
Visibilidad de atributos y operaciones
Asociaciones y agregaciones (aunque luego se
implementen aadiendo atributos)
Generalizaciones (con la semntica del LP
utilizado)
9
Artefacto:
Clase de diseo II
Los mtodos se especifican en
lenguaje natural o en pseudocdigo
Pueden especificarse requisitos de
implementacin de una clase
Pueden ponerse estereotipos
class module, form, user control en VB
interface en Java
10
Artefacto: Realizacin
de CU -- diseo
Es una colaboracin que indica cmo se
realiza/ejecuta un CU, en trminos de las
clases de diseo y sus objetos
Para cada CU habr que aadir
El diagrama de secuencia
Flujo de eventos (en el diseo)
Requisitos de implementacin
11
Diagrama de Secuencia en UML
obj1: IU_CU_X
2: busca(d)
obj2: Gestor_X
3: getAtributoY()
obj3: Clase_X
return v
....
....
....
: ACTOR
1: escribe d
y solicita
OBJETOS
PASO DE MENSAJES / LLAMADAS A MTODOS
12
FOCO DE CONTROL:
perodo en el que el objeto
ejecuta algo
LNEA DE LA VIDA:
perodo en el que el objeto
existe
obj1: IU_CU_X
2: busca(d)
obj2: Gestor_X
3: getAtributoY()
obj3: Clase_X
return v
....
....
....
: ACTOR
1: escribe d
y solicita
Diagrama de Secuencia en UML
Nota: no seremos muy rigurosos sealando el foco de control
13
Los objetos se pueden crear con el mtodo NEW
(comienza su lnea de vida y foco de control mientras
ejecutan cosas) y se pueden destruir con el mtodo
DESTROY (se termina su lnea de vida)
new
hazX()
: C3
hazY()
destroy
: C2 : C1
Diagrama de Secuencia en UML
14
obj1: IU_CU_X
2: busca(d)
obj2: Gestor_X
3: getAtributoY()
obj3: Clase_X
return v
....
....
....
: ACTOR
1: escribe d
y solicita
Significa que la clase Gestor_X debe
proporcionar el mtodo busca. As se
DISEAN las clases, esto es, se
identifican sus MTODOS a partir de
las RESPONSABILIDADES definidas
durante el FT del anlisis
Gestor_X
busca(a:tipoD): tipoRes
Diagrama de Secuencia en UML
15
Una llamada a un mtodo puede devolver un valor
(mensaje return valor en lnea con puntos suspensivos).
Generalmente slo se pondr en el diagrama de secuencia
cuando proporcione informacin interesante
obj2: Gestor_X
getAtributoY()
obj3: Clase_X
return v
....
Diagrama de Secuencia en UML
16
En este caso NO ES NECESARIO. Es evidente que le
estamos preguntando al objeto pp por su nombre, y eso
ser lo que nos devolver. Nos ahorraremos una lnea en el
diagrama de secuencia y ser ms fcil de leer.
: Gestor_Personas
getNombre()
pp: Persona
return nombre
Diagrama de Secuencia en UML
17
En este caso S ES NECESARIO. As podemos
ver que ponemos como nombre del jefe de
departamento el nombre del objeto pp.
: Gestor_Personas
getNombre()
pp: Persona
return nombre
: Departamento
setNombreJefe(nombre)
Diagrama de Secuencia en UML
18
Una llamada a un mtodo NO puede
devolver MS de un valor. Eso no es
posible utilizando un lenguaje OO
: Gestor_Emps
getNombreYCategora()
emp: Empleado
return nombre y categora
....
Diagrama de Secuencia en UML
19
Los diagramas de secuencias muestran los envos de mensajes entre objetos
en orden secuencial (se aaden nmeros de secuencia 1: 2:, ). SE PUEDEN
AADIR CONDICIONES. Los nmeros de secuencia continan
independientemente en cada rama. NO HAY QUE ABUSAR DE LAS
CONDICIONES. Es mejor realizar distintos diagramas de secuencia.
obj1: IU_CU_X
2: busca(d)
obj2: Gestor_X
[est] 6: hazX()
obj3: Clase_X
....
....
....
: ACTOR
1: escribe d
y solicita
[no est] 6: hazY()
7: hazW()
....
5:
CONDICIN
Diagrama de Secuencia en UML
20
SE PUEDE AADIR REPETICIONES. De esta
manera se indica que a varios objetos de la clase
Clase_X se les pide ejecutar el mtodo getAtributoY()
2: busca(d)
obj2: Gestor_X
3: getAtributoY()
:Clase_X
Objetos mltiples de Clase_X
Diagrama de Secuencia en UML
21
2: busca(d)
obj2: Gestor_X
3: getAtributoY()
obj3: Clase_X
i=1..*
Esta es otra manera de especificar una repeticin:
usando un rectngulo en el que se encuadran todos
los pasos de mensajes que se van a repetir. Se puede
indicar la cardinalidad de cuntas veces se repite o
una condicin de hasta cundo se repite.
Se repite de 1 a n veces.
4: aadir(i)
Se puede usar el valor i.
Diagrama de Secuencia en UML
22
2: busca(d)
obj2: Gestor_X
3: getAtributoY()
obj3: Clase_X
Esta es otra manera de especificar una repeticin:
utilizando una nota UML
Repetimos hasta encontrar el
valor buscado
Diagrama de Secuencia en UML
23
Aunque hemos dicho que una llamada a
un mtodo NO PUEDE DEVOLVER
MS DE UN VALOR, permitiremos
esto como una notacin abreviada
: Gestor_Emps
getHijos()
emp: Empleado
return h1, h2, hN
hi :Persona
getNombre()
Diagrama de Secuencia en UML
24
notacin abreviada
de este diagrama de
secuencia
: Gestor_Emps
getHijos()
emp: Empleado
return vec
vec :Vector
getNext()
getNombre()
:Persona
*
Recorrer todos los
elementos del vector
Diagrama de Secuencia en UML
25
Artefacto: Interfaz
Las interfaces se usan para especificar
operaciones
Separan la especificacin de la funcionalidad de
su implementacin
Las interfaces definen cmo se interacta entre
los subsistemas.
Las interfaces son requisitos para los equipos de
desarrollo y sirven para que los distintos equipos
puedan trabajar concurrentemente.
26
Supongamos que hay dos equipos de trabajo
implicados en el SI de la biblioteca y que se
han dividido el trabajo
Uno se encarga de los subsistemas SOCIOS y
CATLOGO
Otro se encarga del subsistema PRSTAMOS
Es evidente que cada equipo puede necesitar
ciertos mtodos del otro.
Lo que tienen que hacer es definirlos
utilizando interfaces
clases con slo mtodos no implementados
Interfaz
27
Qu pueden necesitar del subsistema
SOCIOS?
Un mtodo que dado un nmero de socio
devuelva una referencia al objeto socio.
Un mtodo para aadir un nuevo socio al sistema.
Un mtodo para
buscaSocio(nmero)
: Gestor_Socios
Es una INTERFAZ que el
equipo de PRSTAMOS
puede utilizar. El equipo de
SOCIOS ya proporcionar
una implementacin
Interfaz
28
Artefacto: descripcin de
la arquitectura (diseo)
Es una descripcin que contiene la vista
arquitectural del modelo del diseo
Los siguientes artefactos son arquitecturalmente
significativos:
Descomposicin del modelo en subsistemas junto
con sus interfaces
Clases de diseo claves
Realizaciones de casos de uso con funcionalidad
crtica
29
4. Dos patrones de diseo
para acceder a los datos
1) Usando un lenguaje/sistema OO para
el almacenamiento de datos que permita
trabajar con objetos persistentes
Es posible si se utiliza un SGBD OO
O si se usa Java + mecanismos de
serializacin de Java
2) Usando un SGBD relacional para el
almacenamiento
Es posible si disponemos de un lenguaje
con un API que permita conectarse con un
SGBD, por ejemplo si se usa Java + JDBC
30
Acceso a los datos
usando un sistema OO
El diseo es prcticamente equivalente al
diagrama de colaboracin de anlisis
Usar nombres de mtodos y no responsabilidades
Varias clases de diseo que sean interfaces grficas
Detallar casos excepcionales
Las clases de diseo que corresponden a
las clases entidad pueden tener mtodos
31
Acceso a los datos usando
un SGBD relacional
El diseo cambia con respecto al diagrama de
colaboracin de anlisis
MODELO DEL DOMINIO / CLASES ENTIDAD (OO)
ESQUEMA LGICO DE UNA BD RELACIONAL
Se trata en la asignatura DBD. Supondremos que se sabe ya.
CLASE DISEO (GESTOR BD) permite ejecutar SQL
SQL se trata en FBD y DBD. Supondremos que se sabe ya.
Las CLASES ENTIDAD NO pueden tener MTODOS
32
Acceso a los datos usando
un SGBD relacional
GestorBD

execSQL(actualiz: String): void
execSQL(pregunta: String): ResultadoSQL
ResultadoSQL

next(): boolean
get(nombreAtributo: String): String
Para INSERT/DELETE/UPDATE Para SELECT
Se posiciona en siguiente tupla
Devuelve false si no hay ms tuplas
Obtiene
valor del
atributo
33
Acceso a los datos usando
un SGBD relacional
execSQL(preg1)
: GestorBD
: ResultadoSQL
new
next()
[quedan tuplas] get(NOMBRE)
get(EDAD)
hasta que
no queden
tuplas
Preg1 = SELECT NOMBRE, EDAD
FROM PERSONA
WHERE EDAD>25
34
Realizacin diseo CU Tomar en Prstamo
Copia Libro (solucin usando sistema OO)
elSocio
IU-TPCL GestorLibro Libro elLibro:Libro :CopiaLibro GestorSocios Socio
1: Introducir Signatura y numSocio()
2: Aceptar()
3: obtenerLibro(signaturaLibro:String)
4: getSignatura()
Se repite hasta que se
encuentre un libro
con la signatura que
estamos buscando
elLibro()
6: getCopias()
7: getEstado()
Se repite hasta que se
encuentre una copia
no prestada o se acaben
las copias
8: [hay al menos una copia NO prestada]: obtenerSocio(numSocio:int)
9: getNumSocio()
elSocio:Socio
11: isLmitePrstamo()
IUError
12: [alcanzado el mximo de prstamos]: new()
13: Aceptar()
IUReserva
8: [Todas las copias prestadas]: new(elLibro:Libro, elSocio:Socio)
9: aadirReserva(elSocio:Socio)
10: aadirReserva(elLibro:Libro)
CU: Tomar en Prstamo Copia de Libro
GestorPrestamos
5: obtenerCopiaLibre(elLibro:Libro)
laCopiaLibre()
10: haLLegadoLimite(elSocio:Socio)
12: [no ha llegado al lmite]: registrarPrestamo(elSocio:Socio, laCopiaLibre:CopiaLibro, HOY:Date)
prestamo
13: new(elSocio:Socio, laCopiaLibre:CopiaLibro, HOY:Date)
35
Realizacin
diseo CU
Tomar en
Prstamo Copia
Libro (solucin
usando sistema
SGBD)
Se podra hacer
con una nica
pregunta SQL
GestorBD
Socio
IU-TPCL GestorLibro GestorSocios
1: Introducir Signatura y numSocio()
2: Aceptar()
3: obtenerCopiaLibre(signatura:String)
4: execSQL(c1:String)
8: next()
9 [Resultado no vaco]: get("NumCopia")
IUError
C1:
SELECT NumCopia
FROM CopiaLibro as C
WHERE Estado="Disponible"
AND Signatura=%signatura
ResultadoSQL
5: new()
10: destroy()
11: isLmitePrstamo(numSocio:int)
12: execSQL(c2:String)
ResultadoSQL
C2:
SELECT MaxLibros
FROM SOCIO
WHERE NumSocio=%numSocio
13: new()
14: next()
15: get( "MaxLibros")
16: destroy()
ResultadoSQL
17: execSQL(c3:String)
18: new()
C3:
SELECT *
FROM PRSTAMO
WHERE NumSocio=%numSocio
19: next()
Se repite tantas veces como
tuplas hay en el resultado
20: destroy()
22: execSQL(C4:String) C4:
UPDATE CopiaLibro
SET Estado="Prestada"
WHERE Signatura=%signatura
AND NumCopia=%numCopia
C5:
INSERT INTO
PRSTAMO(Signatura, NumCopia, NumSocio, Fecha)
VALUES (%signatura, %numCopia, %numSocio, HOY)
23: execSQL(C5:String)
21b: [Lmite alcanzado]: new()
22: aceptar()
23: destroy()
IUReserva
9b: new(signatura:String, numSocio:int)
10b: reservar()
11b: execSQL(C6:String)
C6:
INSERT INTO
RESERVA(Signatura, NumSocio)
VALUES (%signatura,%numSocio)
GestorPrest
21: [Lmite no alcanzado]: registrarPrestamo(socio:String, copia:String, fecha:Date)
CU: Tomar en Prstamo Copia de Libro
36
Anexo: Artefacto:
Modelo de despliegue
Es un modelo de objetos que describe la distribucin
fsica del sistema en trminos de cmo se distribuye la
funcionalidad entre los distintos nodos
Cada nodo representa un recurso computacional
(procesador, dispositivo hardware,).
Las relaciones entre nodos representan formas de
comunicacin entre ellos (internet, intranet, bus,).
La funcionalidad de un nodo se define por los componentes
desplegados en l.
El modelo de despliegue es la correspondencia entre la
arquitectura del software y la arquitectura del sistema
37
Artefacto: descripcin de la
arquitectura (despliegue)
Es una descripcin que contiene la vista
arquitectural del modelo del despliegue
Todos los aspectos del modelo de despliegue
deben mostrarse en la vista de la arquitectura
38
Anexo: Trabajadores
Arquitecto
Responsable de la integridad del modelo de diseo y de
despliegue
Ingeniero de casos de uso
Responsable de la integridad de los casos de uso
Ingeniero de componentes
Define y mantiene las operaciones mtodos, atributos,
relaciones y requisitos de implementacin de clases de
diseo. Debe mantener la integridad de los subsistemas
controlando que se realizan los interfaces.
39
Anexo: Actividades en el
FT de diseo
1.- Diseo de la arquitectura
Identificar nodos y configuraciones de red
Identificar subsistemas y sus interfaces
Identificar clases de diseo arquitecturalmente significantes
Identificar mecanismo de diseo genricos
2.- Disear caso de uso
Identificar clases de diseo participantes
Describir interacciones de objetos de diseo
Identificar los subsistemas participantes e interfaces
Describir interacciones entre subsistemas
Capturar requisitos de implementacin
40
3.- Disear clase
Perfilar la clase de diseo
Identificar las operaciones
Identificar los atributos
Identificar asociaciones y agregaciones
Identificar generalizaciones
Describir los mtodos
Describir los estados
Tratar los requisitos especiales
4.- Disear subsistema
Mantener dependencias entre subsistemas
Mantener los interfaces proporcionados por el subsistema
Mantener los contenidos del subsistema
Actividades en el FT de
diseo

También podría gustarte