Diseño de Software: PUDS y UML
Diseño de Software: PUDS y UML
1
Conceptos
2
Características de los métodos de
diseño
3
Principios del Diseño
Se debería poder seguir los pasos del
diseño hasta el modelado del análisis
No debe inventar nada que ya esté
inventado
Debería presentar uniformidad e integración
debería estructurase para admitir cambios
El diseño no es escribir código, y escribir
código no es diseñar
Se debería valorar la calidad en el proceso
4
Abstracción
5
Modularidad
6
Arquitectura del Software
7
Estructura de datos
8
Independencia funcional
9
Diseño - Actividades
Diseño de la
Arquitecto arquitectura
Diseñar un caso de
Ingeniero de uso
casos de uso
Diseño de la arquitectura
Subsistema
Modelo de Interfaz
Arquitecto
casos de uso
Clase de
diseño
Requisitos
adicionales Diseño de la
arquitectura
Modelo de
despliegue
Modelo de
análisis Descripción de la Descripción arquitectura
arquitectura (vista del (vista de modelo de
modelo de análisis) diseño y despliegue)
Diseño - Actividades
Realización caso
Modelo de de uso - diseño
casos de uso Ingeniero de
casos de uso
Requisitos
adicionales Clase de
diseño
Diseñar un caso de
uso
Modelo de
análisis Subsistema
Realización caso
de uso - diseño Ingeniero de
componentes
Clase de
diseño
Diseñar una clase Clase de diseño
(completa)
Interfaz
Diseño de un subsistema
Ingeniero de
Descripción arquitectura
componentes
(vista modelo de diseño)
Subsistema
(terminado)
Subsistema
(esbozado) Diseñar un
subsistema
Interfaz
Interfaz (terminada)
(esbozada)
Rol del Flujo de Trabajo de
diseño en el CV
Inicio Elaboración Construcción Transición
Requisitos
Análisis
Diseño
Implementación
Prueba
Arquitecto
Responsable de la integridad del modelo de diseño 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 métodos, atributos, relaciones
y requisitos de implementación de clases de diseño. Debe
mantener la integridad de los subsistemas controlando que se
realizan los interfaces.
16
Actividades en el FT de
diseño
1.- Diseño de la arquitectura
Identificar nodos y configuraciones de red
Identificar subsistemas y sus interfaces
Identificar clases de diseño arquitecturalmente significantes
Identificar mecanismo de diseño genéricos
2.- Diseñar caso de uso
Identificar clases de diseño participantes
Describir interacciones de objetos de diseño
Identificar los subsistemas participantes e interfaces
Describir interacciones entre subsistemas
Capturar requisitos de implementación
17
Actividades en el FT de
diseño
3.- Diseñar clase
Perfilar la clase de diseño
Identificar las operaciones
Identificar los atributos
Identificar asociaciones y agregaciones
Identificar generalizaciones
Describir los métodos
Describir los estados
Tratar los requisitos especiales
4.- Diseñar subsistema
Mantener dependencias entre subsistemas
Mantener los interfaces proporcionados por el subsistema
Mantener los contenidos del subsistema
18
Artefacto:
Modelo de despliegue
Es un modelo de objetos que describe la distribución física del
sistema en términos de cómo se distribuye la funcionalidad
entre los distintos nodos
Cada nodo representa un recurso computacional (procesador,
dispositivo hardware,…).
Las relaciones entre nodos representan formas de comunicación 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
19
Artefacto: descripción de la
arquitectura (despliegue)
Es una descripción que contiene la vista arquitectural
del modelo del despliegue
Todos los aspectos del modelo de despliegue deben
mostrarse en la vista de la arquitectura
20
… Diagrama de Despliegue
La vista de despliegue representa la
disposición de las instancias de componentes
de ejecución en instacias de nodos
conectados por enlaces de comunicación.
Un nodo es un recurso de ejecución tal como
Dispositivos
Procesadores
Memoria
21
Diagramas de despliegue
22
Diagrama de Despliegue
N o do
23
III. El Paradigma OO: Diagrama de Despliegue
… Diagrama de Despliegue
Ejemplo de conexión entre nodos:
<<Cliente>> <<Servidor>>
Terminal Punto <<TCP/IP>>
Base de
de Venta Datos
<<RDSI>>
<<RDSI>>
Podemos distinguir tipos Control
de nodos y connexiones
por estereotipado
24
a) Diseño de la Arquitectura
25
Identificación de nodos y
configuraciones de red
• configuraciones físicas de la red
Cliente del
comprador – gran influencia sobre la arquitectura del software
– las configuraciones habituales utilizan una
arquitectura en tres capas (por ejemplo, cliente /
Intranet servidor)
• capa de clientes (interacciones de usuarios)
Servidor del • capa de funcionalidad de la base de datos
comprador
• capa de lógica de negocio o aplicación
– aspectos importantes de las configuraciones de red
internet
• número de nodos necesarios y capacidad en
Servidor términos de potencia de proceso y tamaño de
internet
del vendedor memoria
• tipo de conexiones entre los nodos y protocolos de
int ernet
comunicaciones a utilizar
intranet
• características de las conexiones y protocolos en
Servidor del aspectos como ancho de banda, disponibilidad y
banco
calidad
Cliente del
vendedor
– las configuraciones de red se muestran en
diagramas de despliegue
27
Identificación de subsistemas de
la aplicación
• Subsistemas de la aplicación
– Identificación de los subsistemas de las capas específica y general de la
aplicación
– Si hubo descomposición adecuada en paquetes en el análisis, se pueden
utilizar para identificar subsistemas en el modelo de diseño
Capa intermedia
28
Diseño de la Interfaz
Entrada de datos
29
Introducción Diseño
Encontrar la forma (o solución) del sistema que
cumpla con todos los requisitos (+ no funcion.)
Modelo del análisis: comprensión de todos los requisitos.
1) Escoger herramientas (LP, SO, SGBD, GUI, concurrencia,
distribución, componentes,…)
2) Obtener buena entrada a la fase de implementación
Que implementar sea directo a partir del diseño
Subsistema de diseño
Clase de diseño
Realización de caso de uso -- Diseño diseño
Interfaz
Descripción de la arquitectura (vista del
diseño)
Modelo de despliegue
Desc. de la arquitectura despliegue (vista
del despliegue) (NO LO
31
TRATAREMOS)
JERARQUÍA DE SUBSISTEMAS
DE DISEÑO
MODELO DEL ANÁLISIS (MA) MODELO DEL DISEÑO (MDiseño)
PAQUETE DE SISTEMA DE
ANÁLISIS
DISEÑO
contiene
contiene
- Realizaciones de CU
- Realizaciones de CU
- Clases de diseño
- Clases de análisis
- Interfaces
- Otros paquetes de análisis
- Otros subsistemas de diseño
+ MODELO de DESPLIEGUE
32
Artefacto:
Clase de diseño
Una clase de diseño es una abstracción de una
clase (o constructor similar existente) en el LP
Operaciones, parámetros, atributos y tipos
Visibilidad de atributos y operaciones
Asociaciones y agregaciones (aunque luego se
implementen añadiendo atributos)
Generalizaciones (con la semántica del LP utilizado)
33
Artefacto:
Clase de diseño II
Los métodos se especifican en
lenguaje natural o en pseudocódigo
Pueden especificarse requisitos de
implementación de una clase
Pueden ponerse estereotipos
“class module”, “form”, “user control” en VB
“interface” en Java
34
Artefacto: Realización de
CU -- diseño
Es una colaboración que indica cómo se
realiza/ejecuta un CU, en términos de las
clases de diseño y sus objetos
Para cada CU habrá que añadir
El diagrama de secuencia
Flujo de eventos (en el diseño)
Requisitos de implementación
35
Diagrama de Secuencia en UML
OBJETOS
....
new
hazX()
hazY()
destroy
....
getNombre()
return nombre
getNombreYCategoría()
return nombre y categoría
....
2: busca(d)
3: getAtributoY()
2: busca(d)
i=1..* 3: getAtributoY()
4: añadir(i)
2: busca(d)
3: getAtributoY()
getHijos()
return h1, h2, … hN
getNombre()
getHijos()
:Persona
return vec
* getNext()
getNombre()
48
Acceso a los datos usando
un SGBD relacional
Preg1 = SELECT NOMBRE, EDAD
FROM PERSONA
WHERE EDAD>25
: GestorBD
execSQL(preg1)
new : ResultadoSQL
get(“EDAD”)
49
CU: Tomar en Préstamo Copia de Libro
1: Introducir
elSocio Signatura y numSocio()
Se repite hasta que se
2: Aceptar() encuentre un libro
con la signatura que
3: obtenerLibro(signaturaLibro:String)
estamos buscando
4: getSignatura()
elLibro()
laCopiaLibre()
9: getNumSocio()
10: haLLegadoLimite(elSocio:Socio)
11: isLímitePréstamo()
13: Aceptar()
9: añadirReserva(elSocio:Socio)
10: añadirReserva(elLibro:Libro)
Tomar en
1: Introducir Signatura y numSocio() C1:
Socio SELECT NumCopia
2: Aceptar()
FROM CopiaLibro as C
3: obtenerCopiaLibre(signatura:String)
Préstamo Copia
WHERE Estado="Disponible"
4: execSQL(c1:String) AND Signatura=%signatura
Libro (solución
5: new()
ResultadoSQL
8: next()
10: destroy()
usando sistema
11: isLímitePréstamo(numSocio:int)
C2:
SELECT MaxLibros
FROM SOCIO
SGBD)
WHERE NumSocio=%numSocio
12: execSQL(c2:String)
13: new()
ResultadoSQL
14: next()
22: aceptar()
23: destroy()
9b: new(signatura:String, numSocio:int)
IUReserva C6:
10b: reservar() INSERT INTO
11b: execSQL(C6:String)
RESERVA(Signatura, NumSocio) 51
VALUES (%signatura,%numSocio)
…UML
DIAGRAMA DE SECUENCIA
52
Diagrama de secuencia
53
Para que sirven?
54
Línea de vida
Representa un
participante individual y
usualmente tiene un
rectángulo que contiene el
nombre del objeto
Algunas veces tendrá una
línea de vida con un
símbolo del elemento actor
o clases del análisis, si es
contenido por un caso de
uso
55
Mensajes
Es el mecanismo de interacción
entre objetos
Se muestran como flechas
Los mensajes pueden ser
síncronos o asíncronos
En el ejemplo:
El primer mensaje es un mensaje
síncrono (denotado por una punta
de flecha oscura), completo con un
mensaje de retorno implícito
El segundo mensaje es asíncrono
(denotado por una punta de flecha
en línea)
El tercero es un mensaje de
retorno asíncrono (denotado por
una línea punteada)
56
Foco de control
Denota la
ocurrencia de
ejecución o
activación de un Mensaje Self :
foco de control • Llamada recursiva
de un objeto de una operación
Es representado • Un método llamando
a otro método
como un
perteneciente al
rectángulo fino a mismo objeto
lo largo de la
línea de vida
57
Inicio y final de línea de vida
58
Fragmentos combinados
59
Operador “Opt”
sd SintaxisOpt
a()
opt
[expresion1]
b()
c()
e()
[expresion2]
d()
60
Operador “loop”
s d e j e m I te r a c i o n
: u se rI n t e rf a c e : d a t a C o n t ro l : d a t a S o u rc e
so l i c i t a rV e c t o r()
n = o b t T a m V e c t o r()
lo o p
[i = 1 ..n ]
o b t E l e m e n t o (i )
e n t re g a V e c t o r()
61