ejercicios de análisis - upv/ehuadimen.si.ehu.es/~rigau/teaching/ehu/iso/exercicis...1 ingeniería...

71
 1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero 2002) Caso de Uso Reasignar Citas (Junio 2002) Caso de Uso Trasladar Empleado (Febrero 2003) Caso de Uso Verificar Pedido (Junio 2003) Caso de Uso Modificar Reserva (Febrero 2004) Caso de Uso Anular Reserva Pista (Junio 2004) Caso de Uso Comprar Entradas Numeradas (Febrero 2005) Para todos ellos se pide: Diagrama de Secuencia del Sistema Contratos Modelo de Jacobson

Upload: others

Post on 31-Mar-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  1

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Cambiar Médico Cabecera (Enero 2002) Caso de Uso Reasignar Citas (Junio 2002) Caso de Uso Trasladar Empleado (Febrero 2003) Caso de Uso Verificar Pedido (Junio 2003) Caso de Uso Modificar Reserva (Febrero 2004) Caso de Uso Anular Reserva Pista (Junio 2004) Caso de Uso Comprar Entradas Numeradas (Febrero 2005)

Para todos ellos se pide:

Diagrama de Secuencia del Sistema Contratos

Modelo de Jacobson

Page 2: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  2

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Cambiar Médico Cabecera (Junio 2003)

Se pide:

Modelo de Jacobson

Page 3: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  3

Ingeniería del Software

Caso de uso: Cambiar Médico Cabecera

PACIENTE

Cambiar Médico Cabecera

Page 4: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  4

Ingeniería del Software

Modelo de Dominio

Paciente

dninss

nombrefechaAsigMed

Médico

numColegiadonombre

maxPacientes

asignado* 0..1

* *

AsignadoAntes

fechaIniciofechaFin

suPacienteActual suDoctorActual

suPacientePasado suDoctorPasado

Page 5: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  5

Ingeniería del Software

Caso de Uso Expandido: Cambiar Médico Cabecera

Caso de uso: Cambiar Médico CabeceraActores: PacienteDescripción: El paciente cambia de médico de cabecera Curso normal de los eventos

Page 6: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  6

Ingeniería del Software

Caso de Uso Expandido: Cambiar Médico Cabecera

Curso normal de los eventos

5. Paciente: Este caso de uso empieza cuando el paciente quiere cambiar de médico de cabecera. Se identifica dando su número de la Seguridad Social.

6. Sistema: Muestra los nombres de todos los médicos de cabecera a los que, en principio puede cambiar (los que no hayan llegado al máximo de pacientes asignados)

7. Paciente: Selecciona el médico que desea.8. Sistema: Se registra el nuevo médico y se quita el que tenía, añadiéndolo

como médico de cabecera asignado anteriormente.

Cursos alternativos

12. Si el paciente no tiene médico de cabecera asignado actualmente, no se le permite cambiar de médico

13. Si el paciente escoge como nuevo médico de cabecera uno que ya tenía, entonces no se le permite cambiar de médico

Page 7: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  7

Ingeniería del Software

Diagrama de Jacobson Cambiar Médico Cabecera (1)

:Paciente :IUCMC

:Médico Cabecera :Paciente

:AsignadoAntes

* *

:GestorMédicos :GestorPacientes

1, 11

2

37, 8, 10

4, 6, 9, 12, 14

* 0..1

5, 13, 15, 16

Page 8: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  8

Ingeniería del Software

Diagrama de Jacobson Cambiar Médico Cabecera (2)

1: Paciente proporciona NSS2: Obtener Paciente dado el NSS3: Obtener NSS4: Obtener médico de cabecera del Paciente5: Obtener médico de cabecera del Paciente6: Obtener médicos disponibles (no han llegado al máximo)7: Obtener máximo Pacientes8: Obtener sus Pacientes asignados9: Obtener nombre del médico10: Obtener nombre11: Paciente escoge nuevo médico de cabecera12: Obtener médicos anteriores del Paciente

Page 9: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  9

Ingeniería del Software

Diagrama de Jacobson Cambiar Médico Cabecera (3)

13: Obtener médicos anteriores14: Cambiar de médico al paciente (dando el anterior y el nuevo).

Modificar atributo fechaAsigMed15: Asignar nuevo médico de cabecera (se puede pedir al médico de

cabecera que asigne al paciente)16: Añadir médico anterior como asignado anteriormente (creará

objeto en AsignadoAntes)

Page 10: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  10

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Reasignar Citas (Junio 2002)

Se pide:

Modelo de Jacobson

Page 11: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  11

Ingeniería del Software

Caso de uso: Reasignar Citas

Médico

Reasignar Citas

Page 12: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  12

Ingeniería del Software

Modelo de Dominio

Paciente

dninss

nombreteléfono

Médico

numColegiadonombre

maxPacientes0..1

1

Cita

fechaYHora

suPaciente suMedico

* *

Page 13: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  13

Ingeniería del Software

Caso de Uso Expandido: Reasignar Citas

Caso de uso: Reasignar CitasActores: MédicoDescripción: El médico médico quiere reasignar a otro médico las

citas de un dia determinado Curso normal de los eventos

Page 14: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  14

Ingeniería del Software

Caso de Uso Expandido: Reasignar Citas

Curso normal de los eventos

5. Médico: Este caso de uso empieza cuando el médico quiere reasignar a otro médico las citas de un dia determinado. Se identifica dando su número de colegiado e indica el día que quiere cancelar sus citas.

6. Sistema: Reasigna las citas del médico a otro médico, siempre que tenga una cita no asignada a la misma hora. Genera un listado con todas las citas canceladas o reasignadas (nombre del paciente, teléfono, fecha y hora cita, y si se ha podido, el nombre del nuevo médico asignado)

Nota: Se supone que los objetos de la clase Cita ya estarán creados para todos los médicos de cabecera. Para cancelar una cita con un médico, y para que no se le reasigne más adelante otro paciente, simplemente borraremos el objeto cita.

Page 15: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  15

Ingeniería del Software

Diagrama de Jacobson Reasignar Citas (1)

:Médico :IURC

:Médico Cabecera :Paciente:Cita

:GestorCitas

1

2, 6, 9

8

*1 0..1*

3, 4

5, 7, 10, 11, 12, 13

Page 16: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  16

Ingeniería del Software

Diagrama de Jacobson Reasignar Citas (2)

1: Proporcionar número de colegiado y fecha de cancelación de citas2: Buscar citas del médico3: Obtener número de colegiado4: Obtener sus citas5: Obtener obtener fecha6: Obtener obtener datos (teléfono, nombre) del paciente de la cita7: Obtener paciente8: Obtener datos (teléfono, nombre) del paciente9: Reasignar cita a otro médico (devuelve el nuevo médico asignado,

si ha podido)10: Obtener fecha11: Obtener paciente (ver si cita está libre)12: Asignar paciente anterior13: Borrar cita

Page 17: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  17

Ingeniería del Software

Diagrama de Jacobson Cambiar Médico Cabecera (3)

13: Obtener médicos anteriores14: Cambiar de médico al paciente (dando el anterior y el nuevo)15: Asignar nuevo médico de cabecera (se puede pedir al médico de

cabecera que asigne al paciente)16: Añadir médico anterior como asignado anteriormente (creará

objeto en AsignadoAntes)

Page 18: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  18

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Trasladar Empleado (Febrero 2003)

Se pide:

Diagrama de Secuencia del Sistema Contratos

Modelo de Jacobson

Page 19: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  19

Ingeniería del Software

Ejercicio 1: Caso de uso: Traslado empleado

DIRECTORPERSONAL

Trasladar empleado

Page 20: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  20

Ingeniería del Software

Modelo de Dominio

Empleado

NombreApellido

Departamento

Nombre/Empleados

dirige1 1

* 1

Asignado

CargoFechaInicio

Salario

director

Page 21: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  21

Ingeniería del Software

Caso de Uso Expandido: Trasladar empleado

Caso de uso: Trasladar empleadoActores: Director PersonalDescripción: El director de personal traslada un empleado de un

departamento a otro. Curso normal de los eventos

Page 22: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  22

Ingeniería del Software

Caso de Uso Expandido: Trasladar empleado

Escenario Principal1. Director de Personal: Este caso de uso empieza cuando el director de

personal quiere trasladar a un empleado de un departamento a otro.2. Sistema: Muestra todos los departamentos existentes en la empresa.3. Director de Personal: Selecciona el departamento origen.4. Sistema: Muestra los datos de todos los empleados del departamento origen

menos los de su director.5. Director de Personal: Selecciona un empleado.6. Sistema: Muestra todos los departamentos existentes en la empresa menos

el departamento origen.7. Director de Personal: Selecciona el departamento destino.8. Sistema: Pregunta por los datos de la nueva asignación departamental.9. Director de Personal: Introduce los datos de la nueva asignación

departamental.10. Sistema: Presenta un resumen de los datos de la operación y pide una

confirmación.11. Director de Personal: Confirma el traslado.12. Sistema: Actualiza los datos del empleado y de los departamentos

involucrados.

Page 23: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  23

Ingeniería del Software

Diagrama secuencia sistema: Trasladar empleado

:Director Personal :Sistema

ObtenerListaDep() : listaDep

SeleccionarDep(nombreDO) : listaDep

ObtenerListaEmp() : ListaEmp

SeleccionarDep(nombreDD) : listaDep

SeleccionarEmp(nombre, apellido)

PreguntarDatosAsig(Cargo, FechaInicio, Salario)

TrasladarEmp(ok)

Page 24: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  24

Ingeniería del Software

Contrato operación ObtenerListaDep

Name:ObtenerListaDep() : listaDep Responsabilities

Obtiene en ListaDep todos los Nombres de los departamentos existentes en la empresa.

PreconditionsLa empresa tiene departamentos

Postconditions Salida

listaDep = conjunto de los Nombres de todos los departamentos de la empresa

Page 25: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  25

Ingeniería del Software

Contrato operación SeleccionarDep

Name:SeleccionarDep(nombreD) : listaDep Responsabilities

Presenta todos los Nombres de listaDep y permite seleccionar a uno de ellos: nombreD. Luego, lo elimina de listaDep.

PreconditionsSe dispone de ListaDep

Postconditions Salida

ListaDep = ListaDep – {nombreD}

Page 26: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  26

Ingeniería del Software

Contrato operación ObtenerListaEmp

Name: ObtenerListaEmp() : listaEmp Responsabilities

Obtiene en ListaEmp todos los Nombres y Apellidos de los empleados

del departamento nombreDO, excepto a su director. Preconditions

Se dispone de nombreDO Postconditions Salida

listaTemp = Nombres y Apellidos de los empleados del departamento nombreDOdirector = Nombre y Apellidos del director del departamento nombreDOlistaEmp = listaTemp – {director}

Page 27: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  27

Ingeniería del Software

Contrato operación SeleccionarEmp

Name:SeleccionarEmp(nombre, apellido) Responsabilities

Presenta todos los Nombres y Apellidos de los Empleados de ListaEmp y permite seleccionar a uno de ellos por su nombre y apellido.

PreconditionsSe dispone de listaEmp

Postconditions Salida

Page 28: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  28

Ingeniería del Software

Contrato operación PreguntarDatosAsig

Name:PreguntarDatosAsig(cargo, FechaInicio, salario) Responsabilities

Pregunta y obtiene nuevo cargo y salario del empleado. Presenta un resumen de los datos del traslado: departamento

origen, destino, empleado, cargo y salario. Preconditions

cargo != director, Salario > 0Se dispone de nombreDO, nombreDD, nombreE, apellidoE

Postconditions Salida

Page 29: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  29

Ingeniería del Software

Contrato operación TrasladarEmp

Name: TrasladarEmp(ok) Responsabilities

Pide la confirmación del traslado y en caso afirmativo, actualiza los datos.

Preconditions Se dispone de: nombreDO, nombreDD, nombreE, apellidoE, cargo y

salario. Postconditions

Se da de baja asociación Asignado entre Empleado con nombre nombreE y apellido apellidoE, y Departamento nombreDO.

/Empleados = /Empleados – 1 en Departamento nombreDO Se da de alta asociación Asignado entre Empleado nombreE y

Departamento nombreDD con nuevos cargo, salario y fecha: Asignado.cargo = cargo; Asignado.salario = salario; Asignado.FechaInicio = FechaInicio

/Empleados = /Empleados + 1 en Departamento nombreDD Salida

Page 30: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  30

Ingeniería del Software

Diagrama de Jacobson Trasladar Empleado (1)

:DirectorPersonal

:IUTE

:Departamento :Empleado

:Asignado

1 *

:GestorDepartamentos

1, 4, 9, 10, 11, 12

1 1

2, 5, 13

83, 6, 7, 16, 17

14, 15

Page 31: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  31

Ingeniería del Software

Diagrama de Jacobson Trasladar Empleado (2)

1: Iniciar traslado2: Obtener lista departamentos3: Obtener nombre departamento4: Seleccionar departamento5: Obtener lista empleados menos director6: Obtener empleados del departamento7: Obtener director del departamento 8: Obtener nombre y apellidos de los empleados9: Elegir empleado10: Seleccionar departamento nuevo11: Dar cargo y fecha12: Confirmar datos

Page 32: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  32

Ingeniería del Software

Diagrama de Jacobson Trasladar Empleado (3)

13: Trasladar el empleado14: Borrar la vieja asignación15: Crear la nueva asignación empleado, con cargo y sueldo16: Decrementa número de empleados del departamento viejo17: Incrementa número de empleados del departamento nuevo.

Page 33: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  33

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Verificar Pedido (Junio 2003)

Se pide:

Diagrama de Secuencia del Sistema Contratos

Modelo de Jacobson

Page 34: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  34

Ingeniería del Software

Ejercicio 2: Caso de uso: Verificar Pedido

TRABAJADOR

Verificar Pedido

Page 35: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  35

Ingeniería del Software

Modelo de Dominio

Producto

Código: stringNombre: stringCantidad: int

Pedido

fechaYHora: datecódigo: intestado: string

*

LineaPedido

cantidad: int

*

Page 36: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  36

Ingeniería del Software

Caso de Uso Expandido: Verificar Pedido

Caso de uso: Verificar PedidoActores: TrabajadorDescripción: Comprueba la cantidad en stock de los

productos de un pedido Curso normal de los eventos 1. Trabajador: Este caso de uso empieza cuando el trabajador quiere

servir un determinado pedido proporcionando su código.2. Sistema: Comprueba que haya suficiente cantidad de cada producto del

pedido. En caso afirmativo, se actualiza el stock de cada producto, se actualiza el estado del pedido a “ servido” y se informa al trabajador que el pedido se puede servir correctamente. En caso negativo, ni el stock ni el pedido se modifican y se informa al trabajador de los productos cuya falta de stock impide servir el pedido.

Page 37: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  37

Ingeniería del Software

Diagrama secuencia sistema: Verificar Pedido

:Trabajador

ObtenerPedido(código) : pedido

ComprobarCantidades(pedido) : HayDeTodo

[HayDeTodo] ActualizarStock(pedido)

[no HayDeTodo] InformarCarencias(pedido): ListaPCC

:Sistema

Page 38: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  38

Ingeniería del Software

Contrato operación ObtenerPedido

Name: ObtenerPedido(código) : pedido Responsabilities:

Localizar Pedido.código = código Preconditions:

Existe un pedido p de Pedido.código = código Postconditions: Salida: p

Page 39: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  39

Ingeniería del Software

Contrato operación ComprobarCantidades

Name: ComprobarCantidades(pedido) : booleano Responsabilities:

Verificar que hay suficiente stock para formalizar el pedido Preconditions:

Postconditions: Salida:

HayDeTodo = cierto si para cada producto prod asociado a la línea de pedido lp asociada a pedido, lp.cantidad < prod.cantidad

Page 40: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  40

Ingeniería del Software

Contrato operación ActualizarStock

Name: ActualizarStock(pedido) Responsabilities:

Actualizar la cantidad de cada producto según el pedido Preconditions:

Postconditions: Para cada producto prod asociado a la línea de pedido lp y al

pedido, prod.cantidad = prod.cantidad – lp.cantidad pedido.estado = “ servido”

Salida:

Page 41: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  41

Ingeniería del Software

Contrato operación ActualizarStock

Name: InformarCarencias(pedido) Responsabilities:

Mostrar los productos de los cuales no hay stock suficiente Preconditions:

Postconditions: Salida:

ListaProductosConCarencia = Todos los productos prod asociados a la línea de pedido lp y al pedido donde lp.cantidad < prod.cantidad

Page 42: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  42

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Modificar Reserva (Febrero 2004)

Se pide:

Diagrama de Secuencia del Sistema Contratos

Modelo de Jacobson

Page 43: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  43

Ingeniería del Software

Ejercicio 2: Caso de uso: Modificar Reserva

SOCIO

Modificar Reserva

ENCARGADO

Page 44: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  44

Ingeniería del Software

Caso de uso: Modificar ReservaActores: Socio, EncargadoDescripción: Un socio del club de tenis solicita el cambio de una

reserva para una nueva fecha y hora determinadas. El encargado verifica la disponibilidad de pistas para esa nueva fecha y hora, y hace efectivo el cambio.

Escenario Principal:1. Socio: Este caso de uso comienza cuando un socio solicita al

encargado que quiere modificar una reserva del club de tenis. El Socio se identifica, proporciona la fecha y hora de la reserva actual y facilita la fecha y horas de la nueva reserva.

2. Encargado: Identifica al socio.3. Sistema: Presenta la información del socio y sus reservas. 4. Encargado: Verifica la reserva a anular y la selecciona. 5. Sistema: Comprueba la fecha de la reserva a cancelar con la fecha

actual. 6. Encargado: Introduce la fecha de la nueva reserva.11. Sistema: Para esa fecha, presenta los horarios de las pistas no

reservadas (libres).12. ...

Page 45: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  45

Ingeniería del Software

...8. Encargado: Verifica la hora que quiere reservar el socio, asigna alguna de

las pistas al socio para el horario solicitado y confirma la nueva reserva. 9. Sistema: Registra la cancelación de la reserva antigua y le asigna tarifa T4

(cancelación). Registra la nueva reserva sin asignarle tarifa.

Cursos alternativos:Paso 3. No se trata de un Socio. Sugerir hacerse socio.Paso 4. El socio no tenia reserva para esa fecha y horario.Paso 5. El socio quiere cancelar una reserva para el mismo día.Paso 7. La nueva fecha es superior a un mes a la fecha actual. Paso 8. No hay pistas libres para la nueva fecha y horarios solicitados.

Page 46: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  46

Ingeniería del Software

Modelo de dominio

* *

*

1

Socio

dnitel...

Pista

Número pista

Reserva

numfechaHora/importe

Tarifa

tipoprecio

Page 47: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  47

Ingeniería del Software

Diagrama secuencia sistema: Modificar Reserva

:Encargado

IdentificarSocio(dni) : socio

Reservas(dni) : ListaReservas

ComprobarFechaV(fechaV) : fVOk

[fVOk and fNOk] Registrar(socio,fechaV,fechaN,hora,pistaV, pistaN)

[fVOk and fNOk] PistasLibres(fechaN) : ListaPistas

:Sistema

ComprobarFechaN(fechaN) : fNOk

Page 48: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  48

Ingeniería del Software

Contrato operación IdentificarSocio

Name: IdentificarSocio(dni) : socio Responsabilities

Obtener la información del socio. Preconditions

Dni es un código válido Postconditions Salida

La información disponible sobre el socio con dni

Page 49: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  49

Ingeniería del Software

Contrato operación Reservas

Name: Reservas(dni) : ListaReservas Responsabilities

Obtener las reservas de un socio. Preconditions

Dni es un código válido. Postconditions Salida

ListaReservas = todas las reservas pendientes que el socio ha realizado. Para cada una se obtiene también el número de pista reservada

Page 50: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  50

Ingeniería del Software

Contrato operación ComprobarFechaV

Name: ComprobarFechaV(fechaV) : fVOk Responsabilities

Identificar y verificar la reserva que se quiere anular. Preconditions

fechaV es una fecha válida Postconditions Salida

fVOk es cierto si fechaV no es la fecha actual

Page 51: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  51

Ingeniería del Software

Contrato operación ComprobarFechaN

Name: ComprobarFechaN(fechaN) : fNOk Responsabilities

Comprobar que la fecha de la nueva reserva es anterior a un mes a la fecha actual

PreconditionsfechaN es una fecha válida

Postconditions Salida

fNOk es cierto si fechaN es menor a la fecha actual más un mes

Page 52: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  52

Ingeniería del Software

Contrato operación PistasLibres

Name: PistasLibres(fechaN) : ListaPistas Responsabilities

Obtener las pistas no reservadas para una fecha concreta Preconditions

fechaN es una fecha válida Postconditions Salida

ListaPistas = Listado de pistas y horas no reservadas para la fechaN

Page 53: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  53

Ingeniería del Software

Contrato operación Registrar

Name: Registrar(socio,fechaV,fechaN,hora,pistaV,pistaN) Responsabilities

Registrar la modificación de la reserva Preconditions

fechaV y fechaN son fechas válidas Postconditions

Se asigna a la reserva R con R.fecha = fechaV asociada al socio y pistaV la tarifa T con T.tarifa=T4Se crea una nueva instancia reserva NR con NR.fecha=fechaN y NR.hora=horaSe asocia NR al socio y a la pistaN

Salida

Page 54: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  54

Ingeniería del Software

Ejercicio de Análisis

Caso de Uso Anular Reservas Pista (Junio 2004)

Se pide:

Diagrama de secuencia del sistema contratos

Page 55: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  55

Ingeniería del Software

Caso de uso: Anular Reservas Pista

Anular Reservas Pista

ENCARGADO

Page 56: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  56

Ingeniería del Software

Modelo de dominio (1)

* *

*

1

Socio

dnitele-mail

Pista

Número pista

Reserva

numfechahora/importe

Tarifa

tipoprecio

Page 57: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  57

Ingeniería del Software

Diagrama secuencia sistema: Anular Reservas Pista

:Encargado :Sistema

ConsultarReservas(fecha,pista) : reservas

ConfirmarAnulación() : anular

[anular] Reasignar(fecha,pista) : reasignadas

[anular] Anular(fecha,pista) : anuladas

Page 58: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  58

Ingeniería del Software

operación ConsultarReservas

Name:ConsultarReservas(fecha,pista) : reservas Responsabilities

Obtener las reservas no canceladas (que no tengan la tarifa T4) para esa fecha de la pista

PreconditionsArgumentos no nulos y válidos (la fecha no es la actual ni la

superior a un mes a la fecha actual) Postconditions Salida

Reservas = Todas las reservas para la fecha y pista determinada

Page 59: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  59

Ingeniería del Software

operación ConfirmarAnulación

Name:ConfirmarAnulación() : anular Responsabilities

Consultar la Confirmación de la anulación Preconditions Postconditions Salida

anular = cierto si confirma la anulación

Page 60: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  60

Ingeniería del Software

operación Reasignar

Name:Reasignar(fecha,pista) : reasignadas Responsabilities

Buscar para la misma hora una pista libre np para toda reserva r de esa fecha.

Preconditionsargumentos no nulos y válidos

Postconditions Eliminar la reserva r Crear una nueva reserva nr para la misma fecha y hora

para la pista np Asociar la reserva nr al socio s y la pista np

Salidareasignadas = lista de e-mail, fecha, hora, pista y np

Page 61: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  61

Ingeniería del Software

operación Anular

Name:Anular(fecha,pista) : anuladas Responsabilities

Eliminar toda reserva r de esa fecha que para su misma hora no hay una pista libre.

Preconditionsargumentos no nulos y válidos

Postconditions Eliminar la reserva r

Salidaanuladas = lista de e-mail, fecha, hora, pista

Page 62: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  62

Ingeniería del Software

Ejercicio de Análisis

Caso de Uso Comprar Entradas Numeradas (Febrero 2005)

Se pide:

Diagrama de secuencia del sistema contratos

Page 63: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  63

Ingeniería del Software

Ejercicio 3: Comprar Entradas Numeradas

CLIENTE

Comprar entradas numeradas

TAQUILLERA

Page 64: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  64

Ingeniería del Software

Modelo de dominio

1 *

1

*

Multicine

dnitel...

Película

títulometraje/venta

Pase

fecha/venta

Localidad

filaasientovendida

* * Sala

númeroaforo

Page 65: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  65

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:6. 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. 7. Taquillera: Consulta los pases de la película.8. 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.

9. Taquillera: Selecciona uno de los pases. 10. Sistema: Presenta un plano de la sala con las localidades libres y las

ya vendidas. 11. Taquillera: Le informa de las distintas posibilidades y solicita al

Cliente sus preferencias....

Page 66: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  66

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.

Page 67: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  67

:Taquillera

ConsultarPases(título) : listaInfoPases

ConsultarEstadoLocalidades(titulo, sala, fecha) : listaInfoLocalidades

SeleccionarLocalidades(listaLocalidades) : importe

:Sistema

RegistrarVenta(listaLocalidades, importe, monto) : cambio

*

Diagrama de secuencia de sistema

Page 68: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  68

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

Page 69: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  69

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

Page 70: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  70

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)

Page 71: Ejercicios de Análisis - UPV/EHUadimen.si.ehu.es/~rigau/teaching/EHU/ISO/Exercicis...1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero

  71

Contrato operación RegistrarVenta

Name:RegistrarVenta(listaLocalidades, importe, pago) : cambio Responsabilities

Calcula 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)