1
Ingeniería del Software
Ejercicio 2: P2P
Examen Febrero 2005 (1h ¼)
Diagrama de Casos de Uso y
Casos de uso expandido (2,5 puntos)
Modelo de Dominio (1 puntos)
2
Ingeniería del Software
Jerarquía de actores
PEER
CENTRAL
3
PLANIFICADOR
Obtener el tren más pesado
4
Ingeniería del Software
Actor CENTRAL
CENTRAL
Activar nodo CENTRAL
Desactivar nodo CENTRAL
5
Ingeniería del Software
Modelo de dominio
1 *Estación
códigociudadpermiteCambio?
Película
título...
Pase
fechahora/venta
* * Sala
códigoSalaaforo
6
Ingeniería del Software
Actor PEER (1)
PEER
Dar de alta nodo PEER
Modificar Recursos
<<uses>>
Dar de baja nodo PEER
7
Ingeniería del Software
Actor PEER (2)
PEER
Conectar
Desconectar
Consultar nodo CENTRALSolicitar recurso
Solicitar recurso
<<extends>>
8
Ingeniería del Software
Casos de uso de alto nivel (1)
Caso de uso: Activar nodo CENTRAL Actores: CENTRALTipo: SecundarioDescripción: El nodo CENTRAL se pone en marcha. Con
ello se inicializa la lista de resursos disponibles y el historial.
Caso de uso: Desactivar nodo CENTRAL Actores: CENTRALTipo: Secundario
Descripción: El nodo CENTRAL deja de estar activo.
9
Ingeniería del Software
Casos de uso de alto nivel (2)
Caso de uso: Dar de alta nodo PEER Actores: PEERTipo: SecundarioDescripción: El nodo PEER se registra en el sistema
proporcionando su dirección IP.
Caso de uso: Dar de baja nodo PEER Actores: PEERTipo: SecundarioDescripción: El nodo PEER se da de baja del sistema.
Se eliminan todos sus datos excepto del historial. Sus recursos dejan de estar disponibles.
10
Ingeniería del Software
Casos de uso de alto nivel (2)
Caso de uso: Conectar nodo CENTRAL Actores: PEERTipo: SecundarioDescripción: El nodo PEER se conecta al nodo CENTRAL.
El nodo PEER debe estar registrado. Sus recursos pasan a estar disponibles.
Caso de uso: Desconectar nodo CENTRAL Actores: PEERTipo: SecundarioDescripción: El nodo PEER se desconecta del nodo
CENTRAL. Sus recursos dejan de estar disponibles.
11
Ingeniería del Software
Casos de uso de alto nivel (3)
Caso de uso: Modificar recursos Actores: PEERTipo: SecundarioDescripción: Los usuarios registrados podrán cambiar el
conjunto de recursos a compartir, pero mientras estén registrados al menos deberán dejar algún recurso compartido. (a) Los nuevos recursos compartidos se almacenan en el historial.
12
Ingeniería del Software
Casos de uso de alto nivel (4)
Caso de uso: Consultar nodo CENTRAL Actores: PEERTipo: SecundarioDescripción: Cuando un usuario desea algún recurso,
realiza una consulta al nodo CENTRAL para que le indique qué nodos PEER lo facilitan. El nodo CENTRAL sólo proporcionará información de los nodos PEER conectados al sistema en ese momento. Al realizar una búsqueda de recursos, el usuario proporciona una o varias palabras clave. El nodo CENTRAL buscará en las descripciones textuales y nombres de los recursos. La información devuelta por el nodo CENTRAL será una lista de elementos de la forma: <IP, Nombre, Descripción>, donde IP es el número IP del nodo PEER que facilita el recurso, Nombre el nombre del recurso (fichero o directorio) que se desea compartir y Descripción la descripción textual del recurso.
13
Ingeniería del Software
Caso de uso de alto nivel (5)
Caso de uso: Solicitar recurso Actores: PEERTipo: Secundario
Descripción: Un usuario puede solicitar un recurso proporcionando: <IP, Nombre, Descripción>. Si el nodo PEER situado en dicha IP está conectado entonces le enviará el contenido del recurso con dicho Nombre y Descripción. (b) El sistema guardará un historial con la información de todos los recursos que en el pasado se han compartido.
14
Ingeniería del Software
Modelo de dominio (a)
1 *Central
IP/conectados/registrados...
PEER
IPconectado/recursos
1 * Recurso
nombrecontenido
Fichero
descripción
Directorio
1 *historial
15
Ingeniería del Software
Modelo de dominio (b)
1 *Central
IP/conectados/registrados...
PEER
IPconectado/recursos
1 * Recurso
nombrecontenido
Fichero
descripción
Directorio
*
*
Historial
nombreficherodescripción
16
Ingeniería del Software
Ejercicio 3: Comprar Entradas Numeradas
Examen Febrero 2005 (45 min)
Diagrama de Secuencia de Sistema
Contratos
17
Ingeniería del Software
Ejercicio 3: Comprar Entradas Numeradas
CLIENTE
Comprar entradas numeradas
TAQUILLERA
18
Ingeniería del Software
Modelo de dominio
1 *Multicine
dnitel...
1
*
Película
títulociclo.../venta
Pase
fecha/venta
Localidad
filaasientovendida
* * Sala
númeroaforo
19
Ingeniería del Software
Caso de uso: Comprar entradas numeradasActores: Cliente, TaquilleraDescripción: Un cliente llega a la taquilla del Multicine y pide las
entradas que desea comprar. La taquillera registra los la compra las entradas y recibe un pago en efectivo. Al terminar la operación, el Cliente se marcha con las entradas compradas
Curso normal de los eventos:1. Cliente: Este caso de uso comienza cuando el Cliente llega a
la taquilla del Multicine y solicita entradas para una película y un pase.
2. Taquillera: Consulta los pases de la película.3. Sistema: Presenta la información de los distintos pases
disponibles para ese día y las salas que proyectan la película solicitada y su grado de ocupación.
4. Taquillera: Selecciona uno de los pases. 5. Sistema: Presenta un plano de la sala con las localidades
libres y las ya vendidas. 6. Taquillera: Le informa de las distintas posibilidades y solicita
al Cliente sus preferencias....
20
Ingeniería del Software
...• Cliente: Informa a la taquillera de sus preferencias y escoge
alguna posibilidad.• Taquillera: Selecciona unas localidades que se ajustan a las
preferencias del Cliente.• Sistema: Calcula y presenta el importe total.• Taquillera: Indica el total al Cliente.• Cliente: Efectúa el pago en efectivo.• Taquillera: Introduce la cantidad abonada.• Sistema: Calcula la diferencia entre pago y el importe. Emite
las entradas compradas y registra la venta.• Taquillera: Entrega las entradas y el cambio si es que ha
pagado en efectivo.• Cliente: Se marcha con las entradas compradas.Cursos alternativos:Paso 4. No quedan localidades para el pase solicitado. Informar
de otros pases disponibles.Paso 7. El Cliente prefiere no comprar las entradas. Paso 11. El Cliente no dispone de suficiente dinero.
21
:Taquillera
ConsultarPases(título) : listaInfoPases
ConsultarEstadoLocalidades(titulo, sala, fecha) : listaInfoLocalidades
SeleccionarLocalidades(listaLocalidades) : importe
:Sistema
RegistrarVenta(listaLocalidades, importe, monto) : cambio
*
Diagrama de secuencia de sistema
22
Contrato operación ConsultarPases
Name:ConsultarPases(título) : listaInfoPases Responsabilities
Presenta la información de los distintos pases disponibles para ese día y las salas que proyectan la película solicitada y su grado de ocupación.
PreconditionsEl título de la película es válido
Postconditions Salida
listaInfoPases = lista de salas, fechas (horas) y grados de ocupación (sala.aforo – pase.venta) en las que se proyecta ese día la película solicitada
23
Contrato operación ConsultarEstadoLocalidades
Name:ConsultarEstadoLocalidades(título, sala, fecha) : listaInfoLocalidades
ResponsabilitiesSeleccionado un pase, obtener la información de las localidades libres y las ya vendidas
PreconditionsEl título, sala y fecha son válidos
Postconditions Salida
listaInfoLocalidades = lista de todas las localidades asignadas al pase incluyendo para cada una de ellas fila, columna y si està vendida
24
Contrato operación SeleccionarLocalidades
Name:Seleccionarlocalidades(listaLocalidades) : importe Responsabilities
Calcula y presenta el importe total de las localidades seleccionadas en listaLocalidades (lista de <titulo, sala, fecha, fila, columna>).
PreconditionslistaLocalidades es válido
Postconditions Salida
Importe = precio total de las localidades vendidas (cardinalidad de listaLocalidades * precioEntrada)
25
Contrato operación RegistrarVenta
Name:RegistrarVenta(listaLocalidades, importe, pago) : cambio
ResponsabilitiesCalcula la diferencia entre el pago y el importe. Emite las entradas compradas y registra la venta: asigna como vendidas todas las localidades de listaLocalidades (lista de <titulo, sala, fecha, fila, columna>).
PreconditionslistaLocalidades es válido, importe <= pago.
PostconditionsPara cada localidad l de listaLocalidades l.vendida = truePara el pase p (de la película, sala y fecha),
p.venta = p.venta + | listaLocalidades |Para la película p, p.venta = p.venta + | listaLocalidades |
Salidacambio = pago – importe (y emitir las localidades de listaLocalidades)
26
Ingeniería del Software
Ejercicio 4: Eliminar Pases
Examen Febrero 2005 (45 min)
Diagrama de Secuencia
27
:Administrador
ObtenerCiclos() : listaCiclos
ObtenerPelículas(nombre) : listaPelículasCompleta
EliminarPases(listaPelículas, fecha)
:Sistema
Diagrama de Secuencia de Sistema
Ingeniería del Software
28
Ingeniería del Software
Modelo de dominio
1 *Ciclo
nombre...
Película
título...
Pase
fechahora/venta
* * Sala
códigoSalaaforo
29
:Pase
Ingeniería del Software
ObtenerCiclos()
:GestorEliminarPases
ObtenerNombre()
:Ciclo
Lista(nombre)
nombre
*
30
Ingeniería del Software
Escogemos el patrón controlador para gestionar el evento externo ObtenerCiclos. Aunque otras opciones son posibles, a falta de más información al tratarse de modelar un caso de uso, seleccionamos un controlador de caso de uso: GestorEliminarPases. Además, esta clase artificial agrupa a todos los ciclos del festival. Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento.
Por el patrón experto, el método ObtenerNombre es el encargado de
buscar el nombre del ciclo.
31
:Pase
Ingeniería del Software
ObtenerPelículas(nombre)
:GestorEliminarPases
ObtenerTítulo()
:Película
Lista(título)
título
*
ObtenerTitulos(nombre)
:Ciclo
Lista(título)
32
Ingeniería del Software
Escogemos el patrón controlador para gestionar el evento externo ObtenerPelículas. Aunque otras opciones son posibles, a falta de más información al tratarse de modelar un caso de uso, seleccionamos el mismo controlador de caso de uso que para la operación anterior: GestorEliminarPases. Además, esta clase artificial agrupa a todos los ciclos del festival y los tiene accesibles para recorrido y de forma directa (hash). Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento.
Por el patrón experto, el método ObtenerTítulos es el encargado de
buscar las películas asociadas al ciclo nombre.
Por el patrón experto, el método ObtenerTítulo es el encargado de buscar el título de la película.
33
:Pase
Ingeniería del Software
Elim
inarP
ase
s(Li
staPelíc
ula
s, f
ech
a)
:GestorEliminarPases
EliminarPase(fecha)
:Pase
EliminarPases(titulo,fecha)
:Pase:Pelicula
ComprobarPase()
[ok] EliminarAsocSala()
ok
ok
[ok] EliminarAsocPase()
[ok]
*
*
34
Ingeniería del Software
Escogemos el patrón controlador para gestionar el evento externo EliminarPases. Aunque otras opciones son posibles, a falta de más información al tratarse de modelar un caso de uso, seleccionamos el mismo controlador de caso de uso que para la operación anterior: GestorEliminarPases. Además, esta clase artificial agrupa también todas las películas del festival. Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento.
Por el patrón experto, el método EliminarPases de Película es el
encargado de eliminar los pases de las películas cuyo título aparece en ListaPelículas y cumplan las condiciones impuestas. En el caso de cumplirlas, eliminaremos su asociación con el pase (realizado por EliminarAsocPase) y por último lo destruiremos.
Por el patrón experto, el método EliminarPase de Pase es el encargado de comprobar si Pa.venta=0 y Pa.fecha > fecha (realizado por ComprobarPase). En el caso de cumplirse la condición, eliminaremos su asociación con Sala (realizado por EliminarAsocSala).
Nota: podría ser que la Sala también tuviera una asociación con Pase. En ese caso, también deberíamos acceder a Sala para eliminarla.
Top Related