1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero...

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

Transcript of 1 Ingeniería del Software Ejercicios de Análisis Caso de Uso Cambiar Médico Cabecera (Enero...

Page 1: 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.

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: 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.

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: 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.

3

Ingeniería del Software

Caso de uso: Cambiar Médico Cabecera

PACIENTE

Cambiar Médico Cabecera

Page 4: 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.

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: 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.

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: 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.

6

Ingeniería del Software

Caso de Uso Expandido: Cambiar Médico Cabecera

Curso normal de los eventos

1. 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.

2. 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)

3. Paciente: Selecciona el médico que desea.4. 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

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

2. 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: 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.

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: 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.

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: 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.

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: 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.

10

Ingeniería del Software

Ejercicios de Análisis

Caso de Uso Reasignar Citas (Junio 2002)

Se pide:

Modelo de Jacobson

Page 11: 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.

11

Ingeniería del Software

Caso de uso: Reasignar Citas

Médico

Reasignar Citas

Page 12: 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.

12

Ingeniería del Software

Modelo de Dominio

Paciente

dninss

nombreteléfono

Médico

numColegiadonombre

maxPacientes0..1

1

Cita

fechaYHora

suPaciente suMedico

* *

Page 13: 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.

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: 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.

14

Ingeniería del Software

Caso de Uso Expandido: Reasignar Citas

Curso normal de los eventos

1. 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.

2. 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: 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.

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: 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.

16

Ingeniería del Software

Diagrama de Jacobson Reasignar Citas (2)

1: Proporcionar número de colegiado y fecha de cancelación de citas

2: 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: 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.

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: 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.

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: 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.

19

Ingeniería del Software

Ejercicio 1: Caso de uso: Traslado empleado

DIRECTORPERSONAL

Trasladar empleado

Page 20: 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.

20

Ingeniería del Software

Modelo de Dominio

Empleado

NombreApellido

Departamento

Nombre/Empleados

dirige1 1

* 1

Asignado

CargoFechaInicio

Salario

director

Page 21: 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.

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: 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.

22

Ingeniería del Software

Caso de Uso Expandido: Trasladar empleado

Curso normal de los eventos

1. 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: 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.

23

Ingeniería del Software

Diagrama secuencia sistema: Trasladar empleado

:Director Personal :Sistema

ObtenerListaDep() : listaDep

SeleccionarDep(nombreDO) : listaDep

ObtenerListaEmp(nombreDO) : ListaEmp

SeleccionarDep(nombreDD) : listaDep

SeleccionarEmp(nombre, apellido) : info

PreguntarDatosAsig(Cargo, FechaInicio, Salario) : info

TrasladarEmp(ok)

Page 24: 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.

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: 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.

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: 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.

26

Ingeniería del Software

Contrato operación ObtenerListaEmp

Name: ObtenerListaEmp(nombreDO) : 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: 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.

27

Ingeniería del Software

Contrato operación SeleccionarEmp

Name:SeleccionarEmp(nombre, apellido) : Info 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

Info = nombreDO, nombre, apellido, cargo, FechaInicio, salario

Page 28: 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.

28

Ingeniería del Software

Contrato operación PreguntarDatosAsig

Name:PreguntarDatosAsig(cargo, FechaInicio, salario) : info

ResponsabilitiesPregunta 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 > 0

Se dispone de nombreDO, nombreDD, nombreE, apellidoE Postconditions Salida

info = nombreDO, nombreDD, nombreE, apellidoE, cargo, FechaInicio, salario

Page 29: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

34

Ingeniería del Software

Ejercicio 2: Caso de uso: Verificar Pedido

TRABAJADOR

Verificar Pedido

Page 35: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

43

Ingeniería del Software

Ejercicio 2: Caso de uso: Modificar Reserva

SOCIO

Modificar Reserva

ENCARGADO

Page 44: 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.

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.

Curso normal de los eventos: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.1. Sistema: Para esa fecha, presenta los horarios de las pistas

no reservadas (libres).2. ...

Page 45: 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.

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: 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.

46

Ingeniería del Software

Modelo de dominio

* *

*

1

Socio

dnitel...

Pista

Número pista

Reserva

numfechaHora/importe

Tarifa

tipoprecio

Page 47: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

53

Ingeniería del Software

Contrato operación Registrar

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

ResponsabilitiesRegistrar la modificación de la reserva

PreconditionsfechaV y fechaN son fechas válidas

PostconditionsSe 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: 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.

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: 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.

55

Ingeniería del Software

Caso de uso: Anular Reservas Pista

Anular Reservas Pista

ENCARGADO

Page 56: 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.

56

Ingeniería del Software

Modelo de dominio (1)

* *

*

1

Socio

dnitele-mail

Pista

Número pista

Reserva

numfechahora/importe

Tarifa

tipoprecio

Page 57: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

63

Ingeniería del Software

Ejercicio 3: Comprar Entradas Numeradas

CLIENTE

Comprar entradas numeradas

TAQUILLERA

Page 64: 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.

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: 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.

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: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....

Page 66: 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.

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: 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.

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: 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.

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: 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.

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: 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.

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: 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.

71

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)