Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El objetivo del proyecto es desarrollar el modelado de un software de administración de ventas para Festivales
Musicales, a partir de una descripción del negocio. Sólo se muestran algunas vistas de los procesos de requerimientos,
análisis y diseño del software, que se consideran prioritarias para destacar ciertos aspectos del producto.
1- Establezca los requerimientos del proyecto: Requerimientos funcionales, reglas de negocio y requerimientos
no funcionales.
2- Construya Vista esencial de casos de uso, el listado de casos de uso del producto. Especifique los casos de uso
“Registrar venta de Entradas”, “Generar diagramación” y “Registrar Festival”. Construya los prototipos del
primer caso de uso.
3- Construya el modelo de dominio utilizando un diagrama de clases, especificando clases con sus atributos,
métodos y relaciones con su multiplicidad y navegabilidad.
4- Construya las realizaciones de análisis para los casos de uso “Registrar venta de Entradas”, “Generar
diagramación” y “Registrar Festival” utilizando diagramas de comunicación y de secuencia para la parte
dinámica, para los escenarios de curso normal y la vista de estructura con diagrama de clases.
5- Construya la máquina de estado para la clase “ButacaParaDiaFestival”
6- Identificar los requerimientos no funcionales y especificar la información solicitada, en función de la siguiente
tabla:
Requerimientos No Funcionales
Nº Nombre Descripción Categoría Subcategoría Significativo para Prioridad Explicación
la Arquitectura
7- Identificar patrones arquitectónicos relevantes y construir una representación gráfica de los mismos.
8- Describir las vistas arquitectónicas del proyecto: vista de la funcionalidad, de diseño y de despliegue.
9- Construir el diagrama de despliegue correspondiente.
10- Realizar la vista de la estructura y la vista de la dinámica de los patrones de diseño que usted crea aplicables
para resolver las siguientes problemáticas:
a. Resolver la forma de asegurar que exista una única cola de impresión por centro de venta, para enviar
las impresiones de las entradas vendidas.
b. Proponer una forma de resolver el comportamiento de la butaca, en función de su disponibilidad para
ser vendida en una noche de festival en particular, teniendo en cuenta que la butaca puede estar
vendida, habilitada para la venta, bloqueada momentáneamente para ser vendida, etc.
Resuelva la dinámica para el bloqueo de una butaca al momento de registrar una venta de entrada.
11- Realice el Mapeo de estructuras de clases a bases de datos relacionales y construya el diagrama de Entidad
Relación.
12- Construir los artefactos de prueba para el caso de uso nro. 1 Registrar venta de Entrada: grafo de caminos,
caminos posibles y 1 caso de prueba.
Anualmente la Dirección de Cultura de la Municipalidad de una localidad de la provincia, organiza uno o más festivales
de folklore. Por lo general los festivales tienen una duración de cinco noches, aunque esto puede variar de año en año.
En cada una de las noches actúan distintos grupos folklóricos con reconocimiento regional, provincial y nacional. Cada
festival se prepara con mucha anticipación y se realiza la diagramación para determinar qué grupos actúan en cada
noche y el orden en el que los mismos realizarán sus presentaciones, teniendo en cuenta que los horarios de
presentación de los grupos no pueden superponerse y que no pueden quedar espacios sin ninguna presentación entre
medio de dos grupos. Considerar que no puede incluirse la participación de un grupo más de una vez para un mismo
festival, en una misma noche.
En cada noche se define la hora de inicio de la misma, pero no se determina la hora de fin, ya que esta puede variar
según si las presentaciones se extienden más de lo previsto.
Los Festivales se realiza en un único Predio, que está dividido en sectores (A, B, C, etc.), que se identifican con colores
diferentes, y cada sector se compone de filas (1, 2, 3, etc.), cada fila, a su vez, está conformada por butacas, las cuales
están numeradas.
La venta de entradas se realiza en cinco centros de venta (Predio donde se realizará el festival, tres centros comerciales
de la ciudad capital y un centro comercial de la localidad donde se realiza el festival), cada uno de estos puede poseer
hasta 3 puntos de venta para el expendio de las entradas que se encuentran en funcionamiento simultáneamente. No
se debe permitir que se venda una misma entrada (una misma butaca de un festival en una misma fecha) en dos puntos
de venta diferentes. Todas las entradas de un centro de venta se envían a imprimir en una misma impresora fiscal.
Existen distintos tipos de entradas para el público (mayores, menores, jubilados, etc.). El precio de las entradas
depende del tipo de entrada y del sector donde se encuentre la butaca, además puede variar de una noche a otra,
dependiendo de los grupos musicales que actúan. Por ejemplo, una entrada para mayores en el sector A, que está
cerca del escenario, será más costosa que una para mayores en el sector E que está más alejado del mismo y a su vez
puede variar de noche en noche el precio de la entrada en la misma ubicación. Las butacas se venden para una noche
en particular así es que una misma butaca puede estar disponible, por ejemplo, para la noche 1 y 3, y ocupada para la
noche 2, 4 y 5.
También se habilita la venta anticipada de las entradas a un precio menor, un porcentaje de descuento que la Dirección
de Cultura determina, al igual que la fecha de vencimiento de ese beneficio, por ejemplo, venta anticipada con un
descuento del 10 % hasta un mes antes del día del festival para el que se sea comprar la entrada. La forma de venta
de entradas es únicamente de contado en efectivo. Si un cliente solicita la anulación de la entrada sólo se le reintegra
el 50% del monto abonado. Esto se puede hacer hasta 10 días antes del inicio del espectáculo (día del festival), para el
que se compró la entrada.
La entrada tiene un código de barras para evitar falsificaciones. Además, hay que tener en cuenta que la misma entrada
cumple la función de factura, por lo que debe tener los datos requeridos por la ley de facturación, y debe asegurarse
de que el número de factura sea único.
La Dirección de Cultura de la Municipalidad ha solicitado a su Área de Sistemas el desarrollo de un sistema de
información que le ayude con la administración de los festivales que organiza, la diagramación de la programación y
la venta de entradas y brinde información que ayude a la organización de próximos festivales. La Dirección de Cultura
de la Municipalidad tiene licencias para realizar la aplicación con una base de datos Oracle.
Debido a que en las horas pico se suele generar cola en los puntos de venta, es necesario que el sistema genere una
entrada en no más de 6 segundos.
Objetivo:
Dar soporte a la diagramación de festivales, a la venta y cobro de entradas para los mismos, brindando información
vinculada a la gestión.
No contempla:
Control de entradas al ingreso de cada noche del festival.
Contratación y Pago a artistas y/o proveedores.
Reglas de Negocio
Reglas de Negocio
Estados de la Debe poder determinarse la situación de una butaca para cada noche del festival,
5
Butaca distinguiendo si la misma está vendida o disponible.
Se debe determinar el orden en que se presentarán los grupos musicales en cada noche,
teniendo en cuenta que no se pueden superponer los horarios de las presentaciones y que
no pueden quedar espacios sin presentación entre dos grupos. Un grupo musical no puede
6 Diagramación
presentarse más de una vez en la misma noche del festival.
Para cada noche además se debe definir la hora de inicio pero no se define una hora de fin
de la noche.
Puede haber más de un festival vigente y habilitado para la venta de entradas al mismo
7 Festival Vigente
tiempo
Predio para el
8 Cada festival se realizará en un único predio.
festival
La estructura del predio donde se realiza el festival puede tener una configuración de filas
Estructura del y butacas variable, que se debe poder modificar para cada festival. Una vez que el festival
9
predio está programado y se inicia la venta de entradas, la estructura del predio no se puede
modificar para ese festival.
8- Registrar
1- Registrar Venta Ubicaciones del
De Entradas Predio
EncargadoDeVenta ResponsableDeInfraestructura
2- Registrar «extend»
Grupo Musical
3- Generar
Diagramación
4- Generar Reporte De
Venta De Entradas
ResponsableDeFestival
5- Registrar
Festival
6- Generar Estadísitica de
Asistencia por Día de
Festival
7- Registrar
9- Habilitar Butacas Precios de
para Festival Entradas
36 Eliminar Usuario
37 Iniciar Sesión
38 Cerrar Sesión
39 Cambiar palabra clave
40 Registrar permisos para usuario
41 Modificar permisos para usuario
42 Registrar Grupo de Usuario
43 Eliminar Grupo de Usuario
44 Registrar Habilitación de venta
45 Consultar Grupo de Usuario
46 Modificar Grupo de Usuario
47 Validar Fin de Día de Festival
48 Validar Fin de Período de Anulación de Venta
49 Registrar Punto de Venta
50 Registrar Centro de Venta
51 Consultar Centro de Venta
52 Modificar Centro de Venta
53 Eliminar Centro de Venta
Paquete: no aplica
Nombre del Use Case: Registrar Venta de Entradas ID: 01
Prioridad: Alta Media Baja
Categoría: Esencial Soporte Significativo para la Arquitectura: N/E
Complejidad: Simple Mediano Complejo Muy Complejo Extremadamente Complejo
Precondiciones: no aplica
8. SI: bloquea temporalmente cada una de las butacas 8.A. SI: No pudo bloquear las butacas
indicadas para el festival y fecha seleccionados. seleccionadas, informa la situación y permite
(Ver RNF 6 Manejo de concurrencia) seleccionar otra ubicación.
9. SI: valida que la fecha actual sea mayor a la fecha de 9.A. SI: valida que la fecha actual sea menor o igual
vencimiento de venta anticipada. (Ver RN 3 Venta a la fecha de vencimiento de venta anticipada.
Anticipada) 9.A.1. SI: calcula el descuento correspondiente.
(Ver RN 3 Venta Anticipada)
10. SI: calcula y visualiza el subtotal por tipo de entrada y el
importe total de la venta.
11. SI: solicita confirmación para generar cada una de las
entradas.
(VER RN 4 Precio de Entrada)
12. EV: confirma la generación. 12.A.RF: no confirma la generación.
12.A.1. SI: libera el bloqueo de las butacas
seleccionadas y cancela el Caso de Uso.
(Ver RNF 6 Manejo de concurrencia)
13. SI: genera e imprime cada una de las entradas con la 13.A.SI: no pudo imprimir la/s entrada/S
siguiente información: 13.A.1 SI: informa la situación y solicita se
nº entrada, verifique el problema.
fecha y hora de venta, 13.A.2. EV: pudo resolver el problema.
tipo de entrada, 13.A.2.A EV: NO pudo resolver el problema.
precio, 13.A.2.A.1 SI: libera el bloqueo de las
sector, butacas seleccionadas y cancela el caso de
fila, uso
Nº butaca, (Ver RNF 6 Manejo de concurrencia)
fecha del Evento y 13.A.3. SI: imprime las entradas.
n° de punto de venta.
Centro de venta
(RNF 2: Código de Barras, RNF 3: Ley de Facturación y
RNF5 Generación de Entradas)
14. SI: actualiza la disponibilidad de cada una de las butacas
a VENDIDA.
(VER RN 5: Estados de la butaca y RNF 6 Manejo de
concurrencia )
15. Fin del Caso de Uso.
Observaciones:
1. RF puede cancelar la operación en cualquier momento seleccionado la opción correspondiente.
Complejidad: Simple (1) Mediano (3) Complejo (5) Muy Complejo (8) Extremadamente Complejo (13)
Precondiciones: no aplica
Flujo Básico (Curso Normal)
1. EV: seleccionar opción Registrar Venta de Entradas
2. SI: mostrar festivales vigentes
3. EV: seleccionar festival.
4. SI: mostrar fechas del festival seleccionado.
5. EV: seleccionar una fecha.
6. SI: para cada fecha seleccionada, buscar sectores con ubicaciones disponibles y mostrarlos.
7. EV: seleccionar las ubicaciones deseadas, indicar tipo de entrada para cada una.
8. SI: bloquear temporalmente cada una de las butacas indicadas.
9. SI: validar si aplica venta anticipada.
10. SI: calcular y visualizar subtotal por tipo de entrada y el importe total de la venta.
11. SI: solicitar confirmación para generar cada una de las entradas.
12. EV: confirmar la generación.
13. SI: generar e imprimir cada una de las entradas con la siguiente información:
nº entrada, fecha de venta, tipo de entrada, precio, sector, fila, nº butaca, fecha del Evento, punto de venta y
centro de venta
14. SI: actualizar la disponibilidad de cada una de las butacas a VENDIDA.
Flujos Alternativos
A1. No hay festivales vigentes
A2. No hay butacas disponibles para las fechas del festival ingresadas
A3. No hay butacas disponibles en los sectores elegidos.
A4. No se confirma la generación de las entradas.
Observaciones:
1. RF puede cancelar la operación en cualquier momento seleccionado la opción correspondiente.
Paquete: no aplica
Nombre del Use Case: Generar Diagramación ID: 3
Prioridad: Alta Media Baja
Categoría: Esencial Soporte Significativo para la Arquitectura: E/F
Complejidad: Simple Mediano Complejo Muy Complejo Extremadamente Complejo
2. SI: muestra los festivales que no tienen diagramación y 2.A. No hay festivales sin diagramar
solicita seleccionar uno 2.A.1. Se cancela el caso de uso
Complejidad: Simple (1) Mediano (3) Complejo (5) Muy Complejo (8) Extremadamente Complejo (13)
Precondiciones: no aplica
Flujo Básico (Curso Normal)
1. RF: selecciona opción Generar Diagramación
2. SI: muestra los festivales que no tienen diagramación y solicita seleccionar uno
3. RF: selecciona el festival al que le desea generar la diagramación
4. SI: muestra las fechas de realización del mismo y solicita seleccionar un día para diagramar
5. RF: Para cada día que desee diagramar, lo selecciona
6. SI: muestra la fecha, el día, la hora de inicio de la programación de esa noche del festival. Solicita seleccionar
los grupos de artistas que participarán.
7. RF: Selecciona los grupos que participarán
8. SI: Para cada grupo que participará, solicita ingresar el número de orden de actuación, duración del
espectáculo y hora de inicio estimada
9. RF: Ingresa los datos solicitados
10. SI: solicita confirmar la diagramación e informa si la diagramación está completa o incompleta
11. RF: Confirma el registro de la diagramación como completa
12. SI: verifica que se cumplan todas las restricciones planteadas para la diagramación y se cumplen.
13. SI: registra la diagramación como completa
Flujos Alternativos
A1. NO hay festivales sin diagramación
A2. Crear grupo musical que se desea incluir, llamando al CU Registrar grupa musical
A3. Guardar diagramación incompleta
A4. Hay superposición de grupos en la diagramación
A5. No se confirma registración de diagramación
Observaciones:
1. RF puede cancelar la operación en cualquier momento seleccionado la opción correspondiente
Paquete: no aplica
Nombre del Use Case: Registrar Festival ID: 05
Prioridad: Alta Media Baja
Categoría: Esencial Soporte Significativo para la Arquitectura: N/E
Complejidad: Simple Mediano Complejo Muy Complejo Extremadamente Complejo
Precondiciones: no aplica
Post- Condiciones Éxito:Festival registrado.
Fracaso 1: El RF no confirma la registración del festival.
Fracaso 2: El RF decide cancelar la ejecución del caso de uso.
Curso Normal Alternativas
1. RF: selecciona opción Registrar Festival
2. SI: solicita se ingresen los siguientes datos para el
festival: año de edición, fecha de inicio, nombre
3. RF: ingresa los datos
4. SI: valida que no haya registrado en el sistema un 4.A. SI: valida que no haya registrado en el sistema
festival con el mismo nombre y fecha de inicio, para el un festival con el mismo nombre y fecha de inicio,
año de edición ingresado y no hay. para el año de edición ingresado y hay un festival
registrado.
4.A.1: SI: informa la situación y permite reingresar
los datos.
5. SI: solicita se ingresen los demás datos para el festival:
descuento por venta anticipada y porcentaje de
devolución por anulación
6. RF: ingresa los datos
7. SI: para cada día que integrará el festival se solicita se
ingrese: fecha, hora de presentación, fecha límite para
anulación de entrada y fecha de vencimiento de venta
anticipada
8. RF: ingresa los datos requeridos
9. SI: valida que no haya superposición de fechas para los 9.A. SI: valida que no haya superposición de fechas
días del festival ingresados y no hay. para los días del festival ingresados y hay.
Precondiciones: no aplica
Flujo Existe festival registrado con los mismos datos.
1. RF: selecciona opción Registrar Festival
2. SI: solicita se ingresen los siguientes datos para el festival: año de edición, fecha de inicio, nombre
3. RF: ingresa los datos
4. SI: valida que no haya registrado en el sistema un festival con el mismo nombre y fecha de inicio, para el año
de edición ingresado y encuentra un festival registrado con esos datos de identificación
5. SI: informa que existe un festival registrado con esos datos. Se cancela el caso de uso
Flujos Alternativos
A1. Flujo básico – Registración de un festival con sus días de festival
A2. Existe superposición de fecha de días de festival.
A3. NO se confirma registración del festival.
Observaciones:
1. RF puede cancelar la operación en cualquier momento seleccionado la opción correspondiente.
Modelo de Dominio
sd 1.RegistrarVentaDeEntrades-CN
78: finCU()
72: actualizarDisponibilidadDeButacaPorVenta()
70: imprimirEntrada() 6: *mostrarDatos()
65: buscarPuntoVentaYCentroVta()
5: *estaVigente()
63: calcularNroEntrada()
62: crearEntrada()
56: calcularMontoTotal() :Festival
51: calcularSubtotal()
48: obtenerFechaYHoraActual()
47: verificarVentaAnticipada()
74: venderButacas()
41: bloquearButaca()
60: tomarConfirmacionVenta() 32: buscarTiposDeEntrada() 52: obtenerPrecioEntradaParaDiaSectorYTipoDeEntrada()
61: tomarConfirmacionVenta()
49: validarFechaParaVtaAnticipada()
39: tomarSeleccionButacasYTipoDeEntrada() 40: tomarSeleccionDeButacaYTipoEntrada() 17: buscarSectoresDisponibles()
43: bloquearButacaParaDias()
15: tomarSeleccionFecha() 16: tomarFecha() 10: buscarFechasFestival()
2: habilitarVentana() 33: buscarTiposDeEntradaParaDias() 12: buscarFechas()
4: buscarFestivalesVigentes()
8: tomarSeleccionFestival() 9: tomarFestival() 18: buscarSectoresDisponiblesParaDias()
1: opcionVtaEntradas() 3: venderEntrada() 11: mostrarDiasFestival()
: 7: mostrarFestivalesVigentes()
EncargadoDeVenta : 14: mostrarFechas() : elegido :Festival
PantRegVentaEntradas 37: mostrarSectoresDisponibles() GestorRegVentaEntradas 64: *getNumero() 13: *getFecha()
38: pedirSeleccionButacasYTipoEntrada()
57: mostrarCantidadPorTipoDeEntradaYSubtotal() 19: *getSectoresDisponibles()
34: *getTiposDeEntrada()
58: mostrarMontoTotal() :Entrada
59: solicitarConfirmacion() 44: *bloquearButaca()
50: *verificarVtoFechaAnticipada()
69: *new() 53: *obtenerPrecioParaSectorYTipoDeEntrada()
67: getNombreCentroVenta()
75: *venderButacas()
66: getNumero()
71: *imprimir()
:Entrada
42: *esBloqueada() :ImpresorEntrada 55: *getMonto() 20: buscarButacasDisponibles()
54: *esSectorYTipo() 23: buscarDatosUbicacionButaca()
:PuntoVenta 73: *esVendida()
35: *getTipoEntrada()
68: getNombre()
36: getNombre()
:PrecioEntrada :DiaFestival
:Estado
21: *estaDisponible()
:CentroDeVenta :TipoEntrada
24: *getUbicacionCompleta()
46: setEstado()
77: setEstado()
22: esDisponible()
:Estado :
DisponibilidadButaca
Vista dinámica con Diagrama de Secuencia para el escenario del curso normal del Caso de uso 1
Registrar Venta de Entrada
sd 1.RegistrarVentaDeEntradas-CN
:
EncargadoDeVenta : : :Festival elegido : :Entrada : : :Estado :Butaca :Fila :Sector : : :Estado : : :
PantRegVentaEntradas GestorRegVentaEntradas Festival DiaFestival DisponibilidadButaca PrecioEntrada TipoEntrada PuntoVenta CentroDeVenta ImpresorEntrada
opcionVtaEntradas()
habilitarVentana()
venderEntrada()
buscarFestivalesVigentes()
*estaVigente()
*mostrarDatos()
mostrarFestivalesVigentes()
tomarSeleccionFestival()
tomarFestival()
buscarFechasFestival()
mostrarDiasFestival()
buscarFechas()
*getFecha()
mostrarFechas()
tomarSeleccionFecha()
tomarFecha()
buscarSectoresDisponibles()
buscarSectoresDisponiblesParaDias()
mostrarSectoresDisponibles()
buscarButacasDisponibles()
*estaDisponible()
esDisponible()
buscarDatosUbicacionButaca()
getColor()
buscarTiposDeEntrada()
buscarTiposDeEntradaParaDias()
getTiposDeEntrada()
*getTipoEntrada()
getNombre()
verificarVentaAnticipada()
obtenerFechaYHoraActual()
validarFechaParaVtaAnticipada()
verificarVtoFechaAnticipada()
mostrarSectoresDisponibles()
pedirSeleccionButacasYTipoEntrada()
tomarSeleccionButacasYTipoDeEntrada()
tomarSeleccionDeButacaYTipoEntrada()
bloquearButaca()
*esBloqueada()
bloquearButacaParaDias(DisponibilidadButaca[])
bloquearButaca(DisponibilidadButaca[])
*bloquear()
setEstado()
calcularSubtotal()
obtenerPrecioEntradaParaDiaSectorYTipoDeEntrada()
obtenerPrecioParaSectorYTipoDeEntrada()
getMonto()
calcularMontoTotal()
mostrarCantidadPorTipoDeEntradaYSubtotal()
mostrarMontoTotal()
solicitarConfirmacion()
tomarConfirmacionVenta()
tomarConfirmacionVenta()
crearEntrada()
calcularNroEntrada()
*getNumero()
buscarPuntoVentaYCentroVta()
getNumero()
getNombreCentroVenta()
getNombre()
«constructor»
*new()
:Entrada
imprimirEntrada()
*imprimir(String)
actualizarDisponibilidadDeButacaPorVenta()
*esVendida()
venderButacas()
finCU()
Vista de estructura de clases de análisis para la realización del caso de uso Registrar Venta de
Entrada
Vista dinámica con Diagrama de Secuencia del escenario del curso normal Caso de uso 3 Generar
Diagramación
Vista de estructura de clases de Análisis para la realización del caso de uso Generación de
Programación
«boundary» «control»
PantallaDiagramacion «entity»
GestorDiagramacion
Festival
comboFestival diagCompleta
comboGrupoMusical añoEdicion
duracion
grillaDiaFestival descuentoVentaAnticipada
horaInicio
lblDiasFestival diaFestival :DiaFestival
nroOrden
lblDuracion fechaInicio
lblFestival buscarArtistas() nombre
lblGrupoMusical buscarDatosDiaFestival() porcentajeDevolucionPorAnulacion
lblHoraInicio buscarDiasFestival() vigente
lblNroActuacion buscarFestivalSinDiagramar()
crearDiagramacion() actualizarEstadoButaca()
txtDuracion bloquearButacaParaDiaFestival()
txtHoraInicio finDeCasoUso()
buscarDatosDiaFestival()
txtNroActuacion nuevaDiagramacion()
buscarDias()
obtenerExportacionImp()
habilitarVentana() tomarConfirmacion() buscarFechas()
mostarDatosDiaFestival() tomarConfirmacionExportacion() buscarSectoresDisponibles()
opcionGenerarDiagramacion() contarAsistenciaPorDia()
tomarDatosActuación()
solicitarConfirmacion() contarAsistenciaTotal()
tomarDiaFestival()
solicitarDatosActuacion() crearDiaFestival()
tomarFestival()
solicitarSeleccionDiaFestival() crearDiagramacionParaDia()
tomarGrupo()
solicitarSeleccionFestival() tomarTipoExportacionSeleccionada() cuantosDiasDura()
solicitarSeleccionGrupoMusical() verificarRestricciones() estaVigente()
tomarConfirmacion() existeFestival()
tomarDiaFestival() getDiaFestival()
tomarDuracion() getFechaFinFestival()
tomarFestival() getPrecioEntrada()
tomarGrupoMusical() getTipoDeEntrada()
tomarHoraInicio() mostrarDatos()
tomarOrdenActuacion() mostrarDiasFestival()
new()
obtenerFechaVencimientoParaDia()
obtenerPrecioEntradaParaDiaSectorYTipoDeEntrada()
tieneDiagramacion()
validarFechaParaVtaAnticipada()
«entity»
Actuación «entity»
DiaFestival
duracionActuacion
grupoMusical :GrupoMusical completa
horaInicio diagramacion :Actuación
numeroOrden disponibilidadButaca :DisponibilidadButaca
fecha
getGrupoMusical() 0..*
new() fechaLimiteAnulacionEntrada
fechaVtoVtaAnticipada
horaPresentacion 1..*
precioEntrada :PrecioEntrada
1 actualizarEstadoButaca()
«entity» bloquearButaca()
GrupoMusical buscarButacasDisponibles()
cantIntegrantes buscarFilaYSectorDeButaca()
descripcion buscarSectores()
nombre calcularCantPublicoPorTipoEntrada()
calcularPorcentajeAsistencia()
getNombre() contarCantGrupoMusical()
contarCantidadPublico()
crearDiagramacion()
estaDiagramado()
getDatos()
getDiagramacion()
getFecha()
getFechaVencimientolAnticipada()
getPrecio()
getSectoresDisponibles()
getTiposDeEntrada()
new()
obtenerPrecioParaSectorYTipoDeEntrada()
verificarVtoFechaAnticipada()
Vista dinámica con Diagrama de Comunicación para el escenario del curso normal del Caso de uso
5 Registrar Festival
Vista dinámica con diagrama de Secuencia para el escenario del curso normal del Caso de uso 5
Registrar Festival
Vista dinámica con diagrama de Secuencia (con fragmentos sin asteriscos) para el escenario del
curso normal del Caso de uso 5 Registrar Festival
Vista dinámica con diagrama de Secuencia para el escenario del Caso de uso 5 Registrar Festival-
Existe Festival registrado con los datos identificatorios ingresados
Descripción del dominio del problema definiendo el SI y los casos de uso esenciales
Objetivo:
Gestionar el cobro anticipado del estacionamiento de vehículos (abonos) en la playa de
estacionamiento, así como también el ingreso y egreso de vehículos con o sin abono.
Alcances:
Administración de Propietarios.
Administración de Vehículos.
Gestión de cobro anticipado de estacionamientos (abonos).
Gestión de Ingreso/Egreso de Vehículos a la playa.
Administración de Portones de Ingreso a la Playa.
Administración de Tarifas de Estacionamiento por Tipo de Vehículo.
Administración de Usuarios y Permisos.
conocerAbono() fecha
conocerSaldoDisponible() 0..*hora
conocerVehiculo() montoCobrado
cuantosIngresosPeriodo() abono nroComprobante
getApellido() saldoActual
getDni() calcularSaldoActual()
getNombre() conocerIngreso()
obtenerVehiculosPropietario() usuario
setApellido()
ingreso 0..* 1
setDni()
setNombre() Ingreso Usuario
vehiculo codigoBarra apellido 1..*
1..*
fechaEgreso nombre permiso Permiso
Vehiculo fechaIngreso usuario nombreUsuario descripción
horaEgreso password nombre
dominio vehiculo 1
horaIngreso
conocerModelo() conocerPermisos()
0..1 monto
nroTicket
observacion
conocerPorton() tarifa
Tarifa
modelo 1 conocerTarifa()
conocerUsuario() 1 cantidadIngresosSinSaldo
Modelo esDeAbono
conocerVehiculo()
nombre determinarNroIngreso() fecha
montoIngreso
modelo 1..*
conocerTipoVehiculo()
portón 1
1..*
Portón tarifa
Marca descripción
nombre nombre TipoVehículo
conocerModelo() descricpión
tipoVehiculo
nombre
Referencias de colores:
Clases rosas: SOPORTE
Clases amarillas: TRANSACCIONES
Clase celeste: DEFINICIÓN DE NEGOCIO
Clases verdes: COSAS Y ROLES
El objetivo del proyecto es desarrollar el modelado de un software de administración de campos, a partir de una
descripción del dominio. Sólo se muestran algunas vistas de los procesos de requerimientos, análisis y diseño del
software, que se consideran prioritarias para destacar ciertos aspectos del producto que se construirá.
Requerimientos No Funcionales
Nº Nombre Descripción Categoría Subcategoría Significativo para la Prioridad Explicación
Arquitectura
7- Identificar al menos 2 patrones arquitectónicos relevantes y construir una representación gráfica de los
mismos.
8- Construir las siguientes vistas arquitectónicas, definiendo para cada vista el punto de vista asociado:
Vista Arquitectónica de la funcionalidad.
Vista Arquitectónica de Diseño: Componentes e Interfaces
Vista Arquitectónica del Despliegue: Nodos y subsistemas principales
9- Realice la vista de la estructura (diagrama de clases de diseño) y la vista dinámica (diagrama de secuencia) de
los dos patrones que resuelvan las siguientes consideraciones. Incluir el pseudo-código o una explicación
textual que muestre la forma de ejecución del patrón:
a) Resuelva me diante l a aplicación del pat rón de dis eñ o adecuado las sigui entes
func ionalidades:
- Búsqueda de los campos que están habilitados
- Búsqueda de los lotes pertenecientes al campo seleccionado que tengan proyectos de cultivo
vigente
- Búsqueda de Proyectos de Cultivos Vigentes de cada Lote del Campo seleccionado
b) Resolver utilizan do el patr ón de diseño más conveniente l a siguie nte pro blem ática:
El reporte de proyectos podrá obtenerse en pantalla, archivo o impreso. Resuelva la forma de creación
del reporte teniendo en cuenta esta restricción, considerando la generación del encabezado, grilla de
proyectos (detalle) y pie de página del reporte.
NOTA: Modelar la dinámica sólo para la generación del reporte en forma impresa.
c) Resolver me diante la apli cac ión de u n patr ón de diseño, l a f orma de asegur ar que
exista una únic a c ola de impr esión en la Administrac ión C entr al de Agro S.R.L para
evitar pr obl emas al imprimir los reportes de c ultivo.
10- Diseñe las interfaces asociadas a los casos de uso descriptos a trazo fino.
11- Construir el Modelo de Datos relacional a partir del mapeo de las clases persistentes del modelo de clases,
utilizando como herramienta el DER (Diagrama de Entidad Relación).
12- Dado el requerimiento de cambio que se describe a continuación, realizar un análisis del impacto de cambio
en los modelos y luego
a. Modificar el modelo de dominio para incluir los cambios requeridos.
b. Identificar los casos de uso que se agregar y/o modifican como consecuencia del cambio solicitado
El cliente ha solicitado que el sistema:
administre las restricciones de siembra relacionadas con los cultivos y la cantidad y frecuencia
de veces que un cultivo puede sembrarse en un mismo lote.
informe de estas restricciones al momento de crear un proyecto de cultivo.
genere un reporte de proyectos de cultivo que no cumplen con las restricciones de cultivo para
un período de tiempo.
Agro SRL es una empresa que tiene varios campos ubicados en la zona de la provincia de Córdoba. La Administración
central de la empresa está localizada en uno de esos campos, donde deberá instalarse el servidor del sistema, y los
demás campos funcionarán como estaciones de trabajo remotas. Para establecer la comunicación entre el servidor y
las estaciones de trabajo de deberá realizar una red privada virtual (VPN). Se requiere para los puestos de trabajo en
los campos que cuenten únicamente con una conexión de internet y que la aplicación, desarrollada con tecnología
Web, pueda operar bajo cualquiera de los siguientes navegadores: Internet Explorer 11, Mozilla Firefox 51.0.1 y Google
Chrome v56.0 (y versiones superiores).
Cada uno de los campos de la empresa está compuesto por lotes que se identifican con un número de lote y cuya
superficie se expresa en hectáreas (has.). Cada lote tiene asignado un Tipo de Suelo. Los Tipos de Suelo se identifican
con números (desde el 1 al 5) y están definidos a nivel nacional (de acuerdo a los porcentajes de minerales, existencias
de lagunas, etc.). De acuerdo al tipo de suelo varían los cultivos que se pueden aplicar (Ej.: Suelo Tipo 1 apto para Soja,
Maní, Girasol). Cuando se decide sembrar un cultivo en un lote (comienza un nuevo proyecto de cultivo para ese lote)
deben realizarse una serie de laboreos en éste, antes y después de efectuar la siembra hasta el momento de la cosecha.
Tanto los laboreos como los momentos de laboreo y el orden en el que los momentos de laboreo se realizan, dependen
del cultivo (Ej.: para Soja los laboreos son Arar, Rastrillar, Sembrar, Escardillar, Cosechar). La división del campo en
lotes puede modificarse, es decir subdividir en más lotes un campo o unir lotes en uno sólo, esto último siempre que
tengan el mismo tipo de suelo.
Una de las necesidades que plantea la empresa respecto del software que se debe construir es que debe permitir
visualizar para cada cultivo cuales son los laboreos ideales que deben llevarse a cabo y el momento en que deben
realizarse. Para los cultivos que necesitan fumigaciones el sistema debe sugerir para cada posible plaga (langosta,
hongo) el agroquímico y la dosis a aplicar por hectárea.
Otro de los requerimientos planteados apunta a que se pueda saber para cada lote cuáles fueron los proyectos de
cultivo efectuados y los laboreos efectuados en cada uno.
Cuando se inicia un proyecto de cultivo en un lote se realizan una serie de laboreos (arar, rastrillar, rolar, fumigar,
dependiendo del cultivo), en ese momento el proyecto está en preparación. Luego se realiza la siembra del cultivo. Si
por alguna razón el cultivo no nace, puede sembrarse nuevamente o bien abandonarse (cancelarse) el proyecto de
cultivo. Luego de que el cultivo ha nacido, también deben efectuarse una serie de laboreos (fumigar, escardillar, etc.),
se dice que el proyecto está en la etapa de laboreo post siembra. Cuando el cultivo está maduro, se realiza la cosecha
del mismo con lo cual finaliza el proyecto. En cualquier momento, por alguna situación anormal (incendio, inundación,
piedra, sequía) el cultivo puede llegar a dañarse al punto de tener que cancelar el proyecto de cultivo.
Para todos los reportes e informes estadísticos que emitirá el sistema, se requiere que sean visualizados tanto en
formato de grilla como en formato gráfico, y que puedan ser exportarlos a Excel y PDF.
El sistema deberá contemplar que cada usuario acceda mediante una clave, la misma deberá contener como mínimo
6 caracteres alfanuméricos y deberá estar encriptada.
A los usuarios se les asignarán perfiles que determinarán a qué funcionalidades tendrá acceso y esto debe verificarse
en el momento del logueo.
Se deberá desarrollar un Módulo Mobile que permita enviar información de los proyectos de cultivos a dispositivos
móviles (tablets y teléfonos inteligentes) y también mediante los mismos actualizar el estado de las labores realizadas.
El Módulo Mobile deberá comunicarse con el Servidor Web de las Administración Central mediante el protocolo de
comunicación HTTP, como si fuera un sitio WEB. Además, el sistema deberá procesar diferentes tipos de datos de
rendimiento registrados con los Controles y Monitores del mercado actual (AGCO (Fieldstar), John Deere (Greenstar),
etc.) para producir informes de gestión y generar mapas de rendimiento. Para ello, deberá importar datos en distintos
tipos de formatos provenientes de los Monitores (dispositivos que se conectan a las cosechadoras), los cuales registran
entre otras cosas la humedad del suelo, el rendimiento, cantidad de combustible, etc.
Agro SRL ha requerido que la base de datos de la aplicación sea desarrollada en Oracle 12c debido a que cuentan con
licencias de ese motor de base de datos.
Glosario
Término Definición
Tipo de Laboreo Define cada uno de los trabajos que deben realizarse para poder obtener la cosecha
de un cultivo durante la vigencia de un proyecto de cultivo iniciado en un lote. Los
tipos de laboreos dependen del cultivo.
Momento de Laboreo Instante de tiempo en el que se recomienda realizar un tipo de laboreo. Los tipos de
laboreo pueden variar de momento y orden, de acuerdo al cultivo.
(Ej.: para Trigo escardillar a 1 mes de sembrado)
Proyecto de Cultivo Conjunto de actividades coordinadas y organizadas con fechas de inicio y fin
definidas cuyo propósito es la obtención de la cosecha de un determinado cultivo en
un lote determinado.
No contempla
Gestión de compras de semillas y agroquímicos
Reglas de Negocio
Reglas de Negocio
Tratamiento de Una plaga se puede combatir con varios tratamientos. Cada tratamiento implica una dosis
1
Plagas específica de un agroquímico.
Cultivos para Tipos Los cultivos que pueden sembrarse en cada lote dependen del tipo de suelo que este
2
de Suelo tenga.
Tanto los laboreos como los momentos de laboreo y el orden en el que los momentos de
Laboreos para laboreo se realizan, dependen del cultivo (Ej.: para Soja los laboreos son Arar, Rastrillar,
3
Cultivo Sembrar, Escardillar, Cosechar).
Estados del Un proyecto de cultivo puede estar en un único estado en un momento determinado y sus
4
Proyecto cambios de estado dependen de los laboreos que se realizan en el lote.
Proyectos de
5 Un proyecto de cultivo está asociado a un único lote.
Cultivo
Reglas de Negocio
Un campo está compuesto por uno o más lotes. Los lotes pueden cambiar su configuración
Relación
6 uniéndose unos con otros o dividiéndose. Se debe controlar que la superficie del campo
Campo/Lote
sea la correcta al momento de la creación y/o modificación de los lotes que lo componen.
Lotes y tipos de
7 Un lote tiene un único tipo de suelo.
suelo
uc CU Esenciales
67. Registrar
Proyecto de
12 Registrar 24. Registrar Cultivo
Campo Cultivo Este caso de
uso podría no
estar en la
vista esencial
16. Registrar
Tipo de Suelo 72. Importar
Archivo de
Monitor
1 Registrar
Laboreos en Administrador
un Lote 42. Registrar 36. Asignar
Plaga De Campos Laboreos para
Cultivo
2. Generar
74. Generar Reporte de
Encargado De 46. Registrar Reporte de Proyectos de
Laboreos Agroquímico Laboreos en Cultivo
Proyectos
Administrador De Campos
37.Consultar Asignación de
Laboreos para Cultiv o
Administrador De Campos
Administrador
26. Eliminar Cultiv o De Campos
18. Consultar
Tipo de Suelo
52. Consultar
45. Eliminar Tratamiento para
Plaga Plaga
50. Registrar
Tratatamiento
47.Modificar 48.Consultar
Agroquímico 49. Eliminar para Plaga
Agroquímico Agroquímico
3. Modificar
67. Registrar 69. Consultar 22.Eliminar Laboreos en
Proyecto de Proyecto de Estado Lotes
Cultivo Cultivo
1 Registrar
Laboreos en un
Lote
20. Registrar
68. Modificar Estado
Proyecto de
Cultivo Administrador Encargado De 5.Cancelar
De Campos Laboreos Laboreos en
21. Modificar Lotes
Estado
4. Consultar
Laboreos en
71. Cancelar Lotes
Proyecto de
Cultivo 23.
Consultar
72. Importar Estado
Archivo de
Monitor
Generación de Reportes
uc Reportes
73. Generar
Estadística de
62. Generar
Rendimiento de
61. Generar Reporte Histórico de
Lotes
de Tratamientos para Proyectos de Cultivo
Plagas por Campo/Lote
74. Generar
Administrador Reporte de
De Campos Laboreos en
Proyectos
2. Generar
Reporte de
Proyectos de
Cultivo
uc Administracion Usuarios
65. Eliminar
Rol 8. Cerrar
9. Modificar Sesión
Usuario
63. Registrar
Rol
Administrador
de Sistema 70. Cambiar
Usuario Password
56. Eliminar 10. Eliminar
Permiso Usuario
57. Consultar
Permiso
6. Registrar 64. Modificar
Usuario Rol
Administración de Campos
15 Eliminar
Campo
Administrador
De Campos
14 Consultar
13 Modificar Campo
Campo
12 Registrar
Campo
Paquete: N/A
Nombre del Caso de uso: Registrar Laboreos en Lotes Nro. de Orden: 1
Observaciones:
1. El actor puede cancelar el caso de uso en cualquier momento eligiendo la opción para tal fin.
2. Valida fecha de inicio menor que la fecha de fin y que no sean mayores a la fecha del día.
Nombre del Caso de Uso: Generar Reporte de Proyectos de Cultivo Nro. De Orden: 2
Paquete: n/a
Nombre del Caso de Uso: Generar Reporte de Proyectos de Cultivo Nro. De Orden: 2
Paquete: n/a
Nombre del Caso de uso: Registrar Campo Nro. de Orden: 12
Observaciones:
1. El AC puede cancelar la operación en cualquier momento.
2. La superficie está en hectáreas, no se aceptan nulos.
3. Se debe ingresar al menos un lote.
Solución Propuesta
Modelo de Dominio:
Diagrama de Secuencia: Registrar Laboreo s en Lotes: Escenario del Curso Normal o Fluj o
Básico
sd 01 Registrar Laboreos en un Lote Curso Normal
:Encargado De
Laboreos : : :Campo seleccionado: :Lote : vigente: :Laboreo :Estado :Cultivo :Laboreo : : : :Empleado
opcionRegLaboreoLote() PantAdmLaboreos GestorLaboreos Campo ProyectoDeCultivo ProyectoDeCultivo OrdenDeLaboreo TipoLaboreo MomentoLaboreo
habilitarVentana()
nuevoLaboreo()
buscarCampos()
*estaHabilitado()
*getNombre()
pedirSeleccionCampo()
tomarSeleccionCampo()
tomarSeleccionCampo()
buscarLotes()
buscarLotesProyCultivo()
*estaVigente()
esFinal()
getNumero()
mostrarFechaInicioProyVigente()
getFechaInicio()
mostrarLotesConProyectoCultivo()
tomarSeleccionLotes()
tomarSeleccionLotes()
buscarInfoProyectoVigente()
buscarLaboreosRealizados()
buscarLaboreosRealizados() *buscarLaboreosRealizados()
buscarLaboreosRealizados()
*mostrarLaboreo()
mostrarLaboreoParaCultivo()
mostrarTipoLaboreo()
mostrarLaboreosRealizados()
buscarTiposLaboreosParaCultivo()
buscarTipoLaboreosParaCultivo()
*buscarLaboreosParaCultivo()
buscarLaboreosPosibles()
buscarTiposLaboreo() *mostrarLaboreoParaCultivo()
mostrarMomentoLaboreo()
mostrarTipoLaboreo()
mostrarLaboreosPosibles()
pedirSeleccionLaboreo()
tomarSeleccLaboreo()
tomarSeleccLaboreo()
pedirDuracionLaboreo()
tomarFechaHoraInicio()
tomarFechaHoraFin()
validarFechas()
tomarDuracionLaboreo()
buscarEmpleados() *getEmpleado()
getApellido()
pedirSeleccEmpleado() getNombre()
tomarSeleccionEmpleado()
tomarEmpleado()
pedirConfirmacionRegistracion()
tomarConfirmacion()
tomarConfirmacion()
crearLaboreos()
crearLaboreosParaProyecto()
crearLaboreos()
crearLaboreos()
*new()
:Laboreo
validarTipoLaboreo()
tomarSelecciónFinalizar()
tomarOpciónFinalizar()
finCU()
51: imprimirReporte()
:Cultivo
32: tomarSelecciónOpciónConfirmación()
34: buscarProyectos()
50: tomarFormaDeVisualización() 52: imprimir()
28: tomarIngresoFechaFin() 19: buscarTiposDeSuelo()
33: confirmar() 16: buscarCultivos() :
27: tomarIngresoFechaInicio() 10: buscarLotesDeCampo() ImpresorReporteProyectos
30: tomarFechas()
24: tomarSelecciónTiposDeSuelo() 4: buscarCampos()
29: validarFechas() 25: tomarTiposDeSuelo()
22: tomarSelecciónCultivos() 2: habilitarVentana() 23: tomarCultivos()
26: solicitarPeríodo()
48: solicitarFormaDeVisualización() 11: *buscarLotes()
31: solicitarConfirmaciónDeFiltros()
6: *getNombre()
5: *estaHabilitado() 42: *getDatosProyecto()
Curs o Normal o Flujo Básico
39: *buscarProyectosDeCultivo()
36: *getTipoDeSuelo()
12: *getNumero() 37: getNombre()
:Campo :Lote :TipoSuelo
41: *esDeCultivo()
44: *getCultivo()
43: *getFechasProyecto()
46: *getEstado() 40: *esDePeríodo()
47: getNombre()
:Cultivo 45: getNombre() :
ProyectoDeCultivo :Estado
Universidad Tecnológica Nacional – Facultades Regionales Córdoba y Villa María
Cátedra de Diseño de Sistemas de Información
PantAdmCampo
GestorCampo
- comboTiposSuelo: int
- grillaLote: int - nombreCampo: int
- lblNombreCampo: int - numeroLote: int
- lblNroLote: int - supCampo: int
- lblSuperficieCampo: int - supLotes: int
- lblSuperficieLote: int - tiposSuelo: int
- txtNombreCampo: int - tipoSueloElegido: int
- txtNroLote: int + buscarTiposSuelo()
- txtSupCampo: int + crearCampo()
- txtTipoSuelo: int + finCU()
+ confirmarFinLotes() + finIngresoLotes()
+ habilitarVentana() + nuevoCampo()
+ mostrarLotesIngresados() + tomarConfCreacion()
+ opcionRegCampo() + tomarNombreCampo()
+ pedirConfirmacCreacion() + tomarNroLote()
+ pedirDatosLote() + tomarSuperficieCampo()
+ pedirNombreCampo() + tomarSupLote()
+ pedirSelecTipoSuelo() + tomarTipoSueloElegido()
+ pedirSuperficieCampo() + validarConsistenciaSuperficies()
+ pedirSupLote() + validarDatosMinCampo()
+ tomarConfCreacion() + validarDatosMinLote()
+ tomarConfirmacFinIngresoLotes() + validarNombreCampo()
+ tomarNombreCampo() + validarNroLote()
+ tomarNroLote()
+ tomarSelecTipoSuelo()
+ tomarSuperficieCampo()
+ tomarSupLote()
+ visualizarTiposSuelo()
Campo
Lote - habilitado
- numero - lote: Lote
- nombre
- tamañoHas
TipoSuelo - tipoSuelo: TipoSuelo + buscarLotes()
+ buscarLaboreosRealizados() + buscarLotesProyCultivo()
- descripcion + buscarProyectosDeCultivo()
- nombre + buscarProyectosDeCultivo()
+ buscarTipoDeSueloDeLote()
- numero 1 + conocerProyectoDeCultivo()
1..* + calcularTotalHas()
+ conocerTipoSuelo()
+ getNombre() + conocerLote()
+ crearLaboreos()
+ crearLaboreosParaProyecto()
+ getDatosProyecto()
+ getNumero() + crearLote()
+ estaHabilitado()
+ getTipoDeSuelo()
+ existeNombre()
+ mostrarCultivo()
+ getNombre()
+ new()
+ mostrarCultivo()
+ tieneProyectoCultivoVigente()
+ new()
Diagrama de Comunicación del Flujo básico del caso de uso 12. Registrar Campo
: 4: pedirNombreCampo() :
PantAdmCampo GestorCampo :Campo
: 9: pedirSuperficieCampo()
Administrador 14: pedirDatosLote()
De Campos 18: pedirSupLote() 13: *getNombre()
21: visualizarTiposSuelo()
22: pedirSelecTipoSuelo() :TipoSuelo
25: mostrarLotesIngresados()
26: confirmarFinLotes() 36: new()
30: pedirConfirmacCreacion()
38: *new()
37: crearLote()
:Campo :Lote
75 Cancelar
Proyecto de
Cultivo /abortar() 1 Registrar Laboreos en Lotes [y se requiere sembrar =
75 Cancelar Proyecto de NO]
Cultivo /abortar() /laborearLuegoDeSiembra()
Cosechado
2. Modelo de Análisis:
a. Realización de Análisis de los Casos de Uso, aplicando patrones GRASP
b. Máquina de Estados.
3. Modelo Arquitectónico
a. Especificación de RNF
b. Identificación y aplicación de Patrones Arquitectónicos Significativos.
c. Realización de vistas arquitectónicas.
4. Modelo de Diseño:
a. Realizaciones de Casos de Uso de Diseño, parte estructural con diagrama de clases y parte
dinámica con diagrama de secuencia, aplicando los patrones de diseño más convenientes.
i. Realizar el rediseño necesario para modelar una solución que resuelva de forma
flexible el cálculo de la tasa de reclamos a los pedidos realizados por los clientes de
acuerdo con el método seleccionado por el actor.
ii. Resolver el proceso de creación de los reportes de tasa de reclamo en sus
diferentes formas de visualización (Por Pantalla, PDF, Excel).
iii. Resolver de forma eficiente la obtención del número secuencial que corresponde
asignar al Pedido al momento de su creación.
iv. Resolver de forma flexible la búsqueda de pedidos que correspondan a los filtros
seleccionados por el usuario para la generación del reporte de tasa de reclamo.
v. Resolver de forma flexible la búsqueda de combos de productos, productos y sus
variantes para mostrar durante la creación de pedidos.
b. Mapeo de clases a BDR.
c. Diseño de Interfaces.
Sobre los prácticos que la cátedra utilizará se evaluarán los siguientes aspectos, vinculados al cumplimiento
de los resultados de aprendizaje:
1. Trabajo acorde a las consignas presentadas
2. Que resuelva correctamente el problema que el proyecto presenta y cumpla los objetivos definidos
para éste
3. Validar la consistencia de cada uno de los modelos que se van desarrollando.
4. Respetar los aspectos formales de la presentación del práctico.
5. Cumplir con la fecha de entrega acordada
6. Integración del grupo en la realización del trabajo
Glosario
Glosario
Tecnología que utiliza un conjunto de protocolos y estándares que sirven para
Web Service
intercambiar datos entre aplicaciones.
Protocolo estándar que define cómo dos objetos en diferentes procesos pueden
SOAP
comunicarse por medio de intercambio de datos XML.
La Administración de Federal de Ingresos Públicos (AFIP) define distintos tipos de
Impuesto al Valor Agregado (IVA). Todos los productos tienen un tipo de IVA que
puede ser:
IVA General del 27,5%
Tipo de IVA
IVA General del 21%
IVA Reducido del 10%
IVA Superreducido del 4%
Actividad exenta del 0%
La base imponible es el monto sobre el cual se calculan los impuestos. Este monto no
contempla ningún tipo de impuesto. Es equivalente al costo de fabricar o comprar un
Base Imponible producto al proveedor más el margen de ganancia.
Si se vende un producto al público a $121 con un IVA General del 21% entonces la
base imponible es de $100.
El C.A.E. (Código de Autorización Electrónico) es un número que otorga la AFIP al
autorizar la emisión de un comprobante por web service, aplicativo RECE o por el
CAE
servicio por clave fiscal "Comprobantes en línea" ("facturas electrónicas"). Sin CAE, la
factura no tiene validez fiscal.
AFIP Administración Federal de Ingresos Públicos
Rodrigo es el dueño del Crustáceo Cascarudo, un local de comida rápida al paso que vende comida
como hamburguesas o paninis a personas que pasan por su local, en un área muy transitada de la ciudad. El
Crustáceo Cascarudo se encuentra cerca de una zona de muchas oficinas, así que Rodrigo hizo un contrato
con las empresas que trabajan cerca para proveer el almuerzo a sus empleados.
Rodrigo vende en su local distintos tipos de sándwiches, hamburguesas y panchos, así como
también papas fritas o ensaladas. Cada uno de estos productos tiene un nombre especial, un precio y un
conjunto de ingredientes para su preparación. Además de esto, la mayoría de los productos tienen
variantes, esto quiere decir que para un determinado ingrediente puede haber más de una opción (como el
tipo de pan o el tipo de carne). La variante elegida para un ingrediente en un producto no altera su precio,
es necesario identificar cual es el ingrediente con variantes para un producto y poder enumerar todas las
variantes para ese ingrediente, algunos productos tienen ingredientes por defecto en las variantes. Un
ejemplo es la hamburguesa Cangreburger, que cuesta $1200 y se prepara con lechuga, tomate, pepinillos,
queso, mayonesa, kétchup, el ingrediente secreto y además tiene variantes en el tipo de pan (que puede
ser brioche, pan mollete o pan cristal kornisptiz) y el medallón (que puede ser de carne de vaca, cerdo,
pollo o pescado). En la cangreburger los ingredientes por defecto son el pan brioche y el medallón de carne
de vaca en caso de que el cliente no especifique la variante. No todas las variantes son mutuamente
excluyentes, puede ocurrir que para unas papas la variante sea el aderezo y se desee elegir mayonesa y
kétchup. Algunas variantes pueden hacer referencia a ingredientes Premium o ingredientes que
normalmente no son parte del producto, pero se pueden agregar. Estas variantes tienen un costo extra al
agregarlas independientemente del ingrediente elegido. Por ejemplo, agregar guacamole o mostaza de
Dijon a una cangreburger.
Los clientes del Crustáceo Cascarudo pueden comprar los productos de manera individual o en
combos. Rodrigo arma estos combos con sus productos más vendidos y sus combinaciones de productos
más pedidas. Los combos son armados al principio del mes y se pega el listado con imágenes
representativas en la puerta del negocio. Los combos generalmente llevan algún tipo de sándwich, un
acompañamiento y una bebida. Para cada sándwich y acompañamiento se puede pedir cualquiera de las
variantes del producto individual; para la bebida se ofrecen 3 variantes: Coca-Cola, Coca-Cola light y agua.
Cada combo tiene un precio particular y un nombre por el cual se lo puede identificar. Un ejemplo es el
Combo Crustáceo que cuesta $1600 e incluye una Cangreburger, unas Papas Marinas y una gaseosa a
elección.
Rodrigo atiende el mostrador tomando los pedidos de las personas que pasan por el frente de su
local. Desea poder registrar el pedido en un producto de software, incluyendo todas las variantes que el
cliente pida. Rodrigo debería poder agregar alguna observación en el pedido para registrar si el cliente no
desea alguno de los ingredientes.
Un cliente podría pedir un Combo Crustáceo donde la Cangreburger tenga pan brioche, un
medallón de pollo, Mostaza de Dijon (Ingrediente Premium no incluido en el combo) y sin pepinillos. Las
Papas Marinas del combo con Kétchup y la gaseosa una Coca-Cola Light. Además del Combo Crustáceo el
cliente puede pedir un Perro Marino (un tipo de pancho) con el ingrediente Premium Salsa Picante
Calamardo y como acompañamiento los Trocitos de Coral sin salsa tártara. Rodrigo tendría que poder
registrar los 3 ítems (El combo, el Perro Marino y los Trocitos de Coral) registrando los ingredientes extra de
cada uno y el precio de cada uno.
Según una regulación de AFIP es obligatorio aceptar tarjetas de débito como medio de cobro en
cualquier local comercial, razón por la cual Rodrigo ha decido utilizar la pasarela de pagos Mercado Pago. Si
el cliente quiere pagar con tarjetas de débito o crédito, Rodrigo les pide que escaneen con la aplicación de
Mercado Pago el código QR del local. Cuando los clientes hacen esto aparece en sus celulares el logo del
Crustáceo Cascarudo, el nombre del local y el monto a pagar. Los clientes eligen dentro de la aplicación de
Mercado Pago la tarjeta con la que desean pagar y confirman el pago. A Rodrigo le llega la confirmación de
Mercado Pago indicando que el proceso se completó de manera exitosa. Los clientes pagan su pedido una
vez que reciben su pedido.
En cuanto a los clientes empresariales, en cada empresa habrá un responsable de ingresar y/o
modificar los pedidos para toda la semana, los lunes; es por esto por lo que se acordó la necesidad de un
producto de software web.
El responsable de pedidos de cada empresa registrará los pedidos con todos los detalles y
requerimientos especiales y el día de entrega de cada pedido; que estarán disponibles para que Rodrigo
consulte. Se genera un pedido para cada día de la semana.
Rodrigo tiene un acuerdo con sus clientes empresariales en donde los pedidos pueden ser editados
hasta un día antes de su fecha de entrega o hasta que se facture el pedido; ya que cada responsable de
pedidos de cada empresa puede elegir el momento en el que se facture un pedido (opciones: al crear el
pedido o en cualquier momento posterior, hasta el día de entrega del pedido). Si el responsable de pedidos
de la empresa no lo factura hasta la fecha de entrega ese pedido se factura automáticamente. Por
ejemplo, un cliente empresarial puede pedir 5 combos Cangreburger para el lunes, 5 combos Cangreburger
para el martes y 4 combos Cangreburger para el miércoles, y puede editar el pedido del miércoles
agregando o quitando combos Cangreburger hasta el martes a las 23:59 horas.
Los clientes empresariales pagan todos los pedidos a fin de mes mediante una transferencia
bancaria, al recibir la notificación del banco de que ingresó una transferencia a la cuenta, el sistema con
esos datos actualizará los pagos de los pedidos del mes.
Todos los pedidos realizados en mostrador y los pedidos empresariales para ese día deberían
mostrarse en una Tablet con sistema operativo iOS que Rodrigo compró para la cocina. Es importante saber
si un pedido es al paso o empresarial para que el cocinero pueda saber la hora de entrega de cada uno. Al
mostrar el pedido en la Tablet se debería mostrar las especificidades del pedido junto con cualquier
observación que pueda tener. A medida que el cocinero, Bob, comienza la preparación de los pedidos, lo
indicará en el producto en su dispositivo mobile. Cuando Bob termina de preparar un pedido actualiza la
situación del producto en su dispositivo mobile, del mismo modo que cuando inició la preparación. Su
asistente, Patricia, los envuelve para llevar y los lleva al mostrador. Los pedidos al paso son entregados en
el momento y se los marca de esa manera, mientras que los pedidos empresariales son guardados en un
lugar aparte.
A las 12:30 el cadete sale con todos los pedidos empresariales y Rodrigo indica para cada empresa
que sus pedidos ya se enviaron. Cuando el cadete entrega el pedido debería poder informarlo, utilizando
una aplicación en su teléfono celular. También se debe dar soporte desde el producto la posibilidad de que
un cliente empresarial que tenga una queja o un problema con un pedido pueda registrarlo, y hacer
seguimiento de la evolución de su reclamo. La gestión del reclamo es independiente del pedido y no afecta
su evolución.
Según la nueva regulación de AFIP todas las facturas que hace el Crustáceo Cascarudo deben estar
homologadas en el sistema de AFIP. Para esto AFIP provee un web service de tipo SOAP al cual se debe
enviar la información de la fecha y la hora, tipo de factura, cliente, monto total de la factura, los ítems
vendidos y el detalle del monto de cada ítem vendido. AFIP procesa cada factura y devuelve un numero de
CAE identificador de cada factura.
Dado que Crustáceo Cascarudo está registrado ante la AFIP como responsable inscripto, puede
emitir facturas de tipo A y/o B. Las facturas de tipo A sólo pueden hacerse cuando el cliente está registrado
en el sistema y su condición tributaria es Responsable Inscripto. Las Factura B se hacen a clientes
registrados con condición tributaria de Monotributista o a consumidores finales no registrados en el
sistema.
Para los clientes cuya condición es “consumidor final” en el apartado de cliente se debe enviar
“CONSUMIDOR FINAL” a AFIP sin informar el CUIT. Mientras que si se hace una factura a un monotributista
o responsable inscripto debe enviarse el nombre o razón social y su CUIT.
Es necesario cumplir con las regulaciones de facturación que dicta AFIP. En el caso de las facturas
de tipo A, el IVA debe ser discriminado. Es decir que cada ítem de la factura debe mostrase en la impresión
sin el IVA. Y al pie de la factura debe mostrarse, en el orden indicado, la base imponible totalizada, el
monto a cobrar por cada tipo de IVA y el monto total de la factura. Por otro lado, para las facturas de tipo B
no es necesario discriminar el IVA. Esto quiere decir que los ítems deben mostrarse con precio después de
impuestos y al pie de la factura debe mostrarse el monto totalizado de la factura. Cuando se envía la
información a AFIP para homologar la factura se debe enviar respetando el formato por tipo de factura.
Solución Propuesta
Definición del Producto de Software:
No contempla:
Gestion de empleados
Reglas de negocio
Nombre de la RN Descripción de la RN
Cambios a pedidos Los pedidos empresariales pueden cambiarse hasta un día antes de su fecha de entrega. El
empresariales día que deben ser entregados no pueden ser editados.
Facturación AFIP Tipos de facturas que la empresa genera son: Tipo A: para clientes responsables inscriptos;
Tipo B para monotributistas.
Reclamos Únicamente para clientes empresariales, se debe crear un reclamo por pedido.
La gestión de reclamos es independiente de la gestión del pedido.
Tipos de Clientes Clientes Empresariales y Clientes al paso.
Cumplimentación Los pedidos se preparan completos, todos los detalles de pedido juntos, no se hacen
de pedidos entregas parciales.
Relación Pedido Un pedido debe facturarse todo junto, no hay facturaciones parciales. No deben facturarse
Factura múltiples pedidos juntos.
Facturación de Todos los pedidos deben ser facturados antes de comenzar su preparación, sin
pedidos excepciones.
Los pedidos por mostrador son facturados por el cajero una vez que se registró en el
sistema y el cliente decide que no cambiará su orden.
Los pedidos empresariales pueden ser facturados en cualquier momento desde su creación
por el encargado de pedidos. Si el encargado no lo hiciera de forma manual, el día de la
entrega el software lo debe facturar de forma automática.
Nombre de la RN Descripción de la RN
Preparación del En la cocina deben informar cuando el pedido está en preparación y cuando está listo para
pedido ser entregado al cliente al paso o al cadete para su distribución.
El cadete debe informar los pedidos que están en reparto y los que ya entregó al cliente
empresarial.
Cancelación de un Un pedido puede cancelarse antes de que empiece su preparación, si ya estuviera
pedido facturado, la cancelación del pedido implica además la anulación de la factura asociada.
Entrega a domicilio La entrega a domicilio de productos sólo aplica a pedidos de clientes empresariales.
El cadete debe informar a los clientes empresariales cuando su pedido va en camino y debe
informar al Crustáceo Cascarudo cuando ya ha sido entregado.
Cobros a Clientes Los clientes empresariales pagan con transferencia bancaria a fin de mes y los clientes al
paso pagan con Mercado Pago luego que se les ha entregado el pedido. Todos los pedidos
pagados deben marcarse como tales.
21. Gestión de Consultar pedidos de la Consultar uno o más pedidos realizados para un Encargado de
pedidos semana periodo determinado pedidos del Cliente
22. Gestión de Cancelar pedido Registrar la cancelación de un pedido Creador de Pedido
pedidos (Abstracto)
23. Gestión de Consultar pedido Consultar uno a más pedidos según criterios Encargado de
pedidos predefinidos. Pedidos
24. Gestión de Iniciar preparación de Registrar que se inicia la preparación de un Responsable de
pedidos Pedido pedido con todos los detalles de pedido que Cocina
contiene.
25. Gestión de Finalizar Pedido Actualizar el estado del pedido informando que Responsable de
pedidos está preparado Cocina
26. Gestión de Registrar entrega de pedido Registrar la entrega de un pedido a un cliente, Liberador de
pedidos actualizando el estado del pedido. Pedido (Abstracto)
27. Gestión de Generar hoja diaria de visita Generar hoja de visita diaria ordenada según Encargado de
pedidos para cadete dirección de los Clientes empresariales para Pedidos
optimizar la distribución de los pedidos.
28. Gestión de Iniciar reparto de pedidos Registrar el inicio del reparto de pedidos, Cadete
pedidos actualizando el estado de los pedidos y
Notificando por WhatsApp a los encargados de
pedidos de clientes cuyos pedidos estén
incluidos en la entrega para alertarlos de que
recibirán su pedido en las próximas horas.
29. Gestión de Consultar ruta Consultar en la hoja diaria de visitas la ruta para Cadete
pedidos la entrega de los pedidos a los clientes
empresariales
30. Gestión de Generar factura para Generar la factura para un pedido realizado por Encargado de
facturación y pedidos semanales un cliente empresarial, eligiendo el pedido que pedidos del Cliente
cobros desea facturar. AFIP (Secundario)
31. Gestión de Validar facturación de Validar si existen pedidos empresariales con Tiempo
facturación y pedido empresarial entrega el día de la fecha que no han sido
cobros facturados
32. Gestión de Generar factura automática Generar factura para pedidos de clientes AFIP (Secundario)
facturación y empresariales pendientes de facturación cuya
cobros fecha de entrega es la fecha del día.
33. Gestión de Generar factura Generar factura para pedidos de clientes al paso. Cajero
facturación y AFIP (Secundario)
cobros
34. Gestión de Procesar pago con Procesar los pagos, que los clientes Banco
facturación y transferencia bancaria empresariales realizan por transferencias
cobros bancarias cuando el banco envía la información.
35. Gestión de Registrar pago con Mercado Registrar el pago de un pedido que se efectivizó Creador de Pedido
facturación y Pago con la plataforma de mercado de pagos (Abstracto)
cobros Mercado Pago
(Secundario)
36. Gestión de Registrar tipo de reclamo Registrar los datos de los tipos de reclamos, Responsable de
Reclamos indicando si es un tipo de reclamo crítico o no lo Clientes
es.
37. Gestión de Consultar tipo de reclamo Consultar los datos de un tipo de reclamo Responsable de
Reclamos Clientes
38. Gestión de Modificar tipo de reclamo Modificar los datos permitidos de un tipo de Responsable de
Reclamos reclamo Clientes
39. Gestión de Eliminar tipo de reclamo Dar de baja un tipo de reclamo. Responsable de
Reclamos Clientes
40. Gestión de Registrar un reclamo Registrar un reclamo por un pedido indicando los Encargado de
Reclamos detalles del reclamo, la fecha y asociando el tipo pedidos del Cliente
de reclamo.
41. Gestión de Consultar reclamos propios Consultar la situación de uno o más reclamos Encargado de
Reclamos realizados, en función de criterios determinados. pedidos del Cliente
42. Gestión de Consultar reclamos Consultar la situación de uno o más reclamos Responsable de
Reclamos realizados, en función de criterios determinados. Clientes
Listado de Actores
Nombre del Actor Descripción Categoría Tipo
Cadete Empleado de la empresa responsable de llevar el pedido Persona Concreto
al cliente y notificar al misma de la entrega del pedido.
Encargado de pedidos Encargado de diagramar las hojas de ruta de los cadetes y Persona Concreto
de registrar los pagos de los pedidos de clientes
empresariales.
Encargado de pedidos Responsable de realizar los pedidos semanales del cliente Persona Concreto
del cliente y de registrar reclamos en caso de que los pedidos no
sean cumplidos de forma satisfactoria.
Responsable de carta Responsable de registrar, modificar y dar de baja los Persona Concreto
productos y los combos que ofrece el crustáceo
cascarudo.
Responsable de clientes Responsable de registrar y dar de baja a los clientes Persona Concreto
corporativos que deseen hacer pedidos al crustáceo
cascarudo. Responsable de ver los reclamos de los
clientes.
Responsable de cocina Responsable de preparar los pedidos y actualizar su Persona Concreto
estado de preparación en el software.
Responsable de reportes Responsable de la generación de los reportes necesarios Persona Concreto
para las decisiones empresariales.
Cajero Responsable de registrar los pedidos por mostrador y Persona Concreto
cobrarlos.
Consideración: Este caso de uso se planteó en estos términos a los fines de ser utilizado para una instancia
de evaluación. La forma óptima de modelarlo sería con una llamada a otro caso de uso que resuelva la
facturación.
Observaciones 1: Para generar una factura con el web service de AFIP es necesario enviar el monto total de la
factura, los detalles a facturar con su monto, el tipo de factura a generar y el CUIT del cliente. La autorización de la
AFIP está formada por el número de CAE y el número de factura.
Observaciones:
Observación 1: Un periodo será correcto si la fecha hasta es mayor a la fecha desde, ambas con formato de fecha
válidas.
Observación 3: El reporte puede imprimirse por pantalla, exportarse a PDF o exportarse a Excel.
Modelo de Dominio
Modelado de Análisis para la realización del Caso de Uso 1. Registrar pedidos para la semana
Vista estática
Modelado de Vista dinámica utilizando diagrama de secuencia – Escenario con registro de varios pedidos
y facturación en el momento
Modelado de Análisis para la realización del Caso de Uso 2. Generar reporte de tasa de reclamo
Vista estática
Modelado de Vista dinámica utilizando diagrama de secuencia – Escenario que usa la “Tasa de reclamos
críticos” y forma de visualización en pantalla
El Proyecto Práctico de Aplicación, tiene el propósito de reflejar cada una de las actividades de modelado requeridas
para el desarrollo y construcción de un producto de software en función del proceso, las técnicas y las herramientas
que se enseñan en la Materia Diseño de Sistemas. Este PPA representa una simplificación de un caso real, en el cual
los estudiantes podrán desarrollar las habilidades para aplicar los conocimientos adquiridos.
realizadas, señalando también si es una suplencia con o sin descuento de sueldo para el empleado
suplido. El cajero podrá consultar sus propias suplencias.
Glosario:
Sistema de nombres de dominio (DNS, por sus siglas en inglés, Domain Name System) es un sistema de
nomenclatura jerárquico para dispositivos conectados a redes como Internet. Este sistema asocia
direcciones ip con nombres de dominios. Su función más importante es "traducir" estos nombres con el
propósito de poder localizar y direccionar distintos equipos en Internet, para el caso particular mencionado
en este enunciado.
Web service (servicio web): es una tecnología que utiliza un conjunto de protocolos y estándares que sirven
para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes
de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para
intercambiar datos en redes de computadoras como Internet.
ATC: Administradora de Tarjeta de Crédito.
HTTPS: Hypertext Transfer Protocol Secure (en español: Protocolo seguro de transferencia de hipertexto),
más conocido por sus siglas HTTPS, es un protocolo de aplicación basado en el protocolo HTTP, destinado
a la transferencia segura de datos de Hipertexto, es decir, es la versión segura de HTTP.
Las tarifas tienen un período de vigencia definido por la tarifa base, y es el mismo para todas las categorías.
Para promover la utilización del servicio de registro automático de pasadas se ha dispuesto un sistema de
promociones en función de la cantidad de pasadas en un período de cobro mensual:
• Hasta 9 pasadas se realiza un 10% de descuento por pasada
• Desde la pasada 10 a la 20 se realiza un 20% de descuento por pasada (a partir de la pasada 10)
• Desde las 21 pasadas, se realiza un 30% de descuento por pasada (a partir de la pasada 21)
Toda la gestión de casillas, categorías, rutas, tarifas y descuentos debe ser web, con excepción del componente de
las PCs asociadas a cada casilla de peaje, como se explicó anteriormente. Para ello se debe publicar vía DNS la
aplicación, para que tenga salida a Internet, es decir, salida fuera del dominio de la empresa de peaje. Para asegurar
la confidencialidad de la información se trabaja con el protocolo https, que encripta los paquetes que viajan desde
cada casilla de peaje hacia un servidor central de bases de datos. La empresa cuenta con servidores centralizados
para todas las casillas de peaje de todas las rutas. Se compró una base de datos Oracle 12c. También se cuenta con
un servidor de aplicaciones y un servidor web. Debido a que la empresa de peaje no deja de trabajar en ningún
momento, todos los servidores deben ser redundantes (es decir, cada servidor está duplicado), para asegurar el
funcionamiento de la aplicación 24 hs. y en horas y fechas pico. Para las fechas pico debe poder soportar la pasada
de vehículos en simultáneo por las 10 casillas de cada una de las rutas donde se encuentra un peaje de la empresa
(son 9 rutas en total). Además, debe trabajar eficientemente con este tráfico considerando que en un minuto
pueden pasar hasta 10 vehículos. Se considera que el sistema es eficiente si procesa una pasada en hasta 4 segundos.
El servicio de registro automático de pasadas funciona de la siguiente manera: Cada cierto período de tiempo se
generan las obleas y se les asigna un número único. Cuando una persona solicita el servicio, se lo registra como
cliente, se registra el vehículo y se asocia al vehículo una cuenta. También se vincula a la cuenta una de las obleas
disponibles, es decir que no ha sido asignada. El cliente debe presentar una tarjeta de crédito, que debe ser la misma
para todas las cuentas que posea, a la que se le debitará mensualmente el costo de todas las pasadas realizadas con
un vehículo vinculado a una cuenta, en un período, en función de lo explicado anteriormente. El cliente puede
solicitar un cambio de tarjeta de crédito asociada a todas las cuentas que tiene, cuando así lo requiera, por ejemplo,
por extravío, robo o vencimiento de la misma. Una vez que se le asignó una cuenta y oblea al cliente, se pega dicha
oblea en el parabrisas de su vehículo.
Debido que a veces la validación de datos de la tarjeta de crédito del cliente se demora, puede ocurrir que se le cree
la cuenta y luego sea dada de baja, porque exista algún inconveniente con su tarjeta de crédito. Si el cliente tuviera
más de una cuenta, todas las cuentas son dadas de baja.
El cliente puede perder la oblea del peaje, en tal caso puede solicitar una nueva y asociarla a la misma cuenta,
inhabilitándose la oblea previamente otorgada.
Una vez que la cuenta está en uso se comienzan a contabilizar los viajes para registrar el descuento correspondiente.
El sistema deberá tener actualizada la situación respecto a cuántas pasadas lleva el vehículo. Cuando el vehículo
pasa por la casilla de peaje, el dispositivo electrónico inalámbrico instalado del lado del conductor, muestra en su
visor el monto a debitar, asociando un color en función del descuento aplicable a cada vehículo en particular, según
el siguiente criterio:
Si el monto a debitar es por menos de 10 pasadas el visor muestra la información en rojo.
Si el monto a debitar es por 10 a 20 pasadas el visor muestra la información en azul.
Si el monto a debitar es por más de 20 pasadas el visor muestra la información en verde.
Cuando llega el cierre del período de liquidación, se reinicia la situación de la cuenta para comenzar a contar
nuevamente la cantidad de pasadas y determinar así el estado de la cuenta asociado al descuento que corresponde
aplicar.
Luego del cierre del período, se debe informar a las diferentes administradoras de tarjeta de crédito (ATC), utilizando
una comunicación vía archivo ftp, cuál es el monto por cobrar con débito automático a cada cliente. Para esto se
generará un proceso de ejecución automática que asocie las pasadas de los clientes al período a liquidar, y las
resetee, realizando el cálculo de deuda de los clientes por tarjeta de crédito y generando los archivos
correspondientes. Está previsto que este proceso no demore más de 5 horas procesando un promedio de 20 pasadas
por cliente, con una gestión de 3000 clientes promedio por cada una de las rutas en donde se cuenta con casillas de
peaje. Este procesamiento debe aprovechar la existencia de los dos servidores de aplicaciones para distribuir la
carga.
Periódicamente cada tarjeta de crédito debe enviar el conjunto de cobros por débito automático, formando un lote
de cobros a informar mediante un web service. La administradora de una tarjeta de crédito siempre enviará el lote
de cobros correspondientes al período del mes anterior al actual (período vigente). En el momento en que una
administradora de tarjeta de crédito envía el lote de cobros, un web service del sistema de peaje obtendrá la
información y se validará que el monto de cada cobro coincida con el monto adeudado, registrándose el cobro
correspondiente. Si faltara algún cobro de un cliente, la cuenta se considera no cobrada, por lo que el servicio queda
suspendido para ese cliente hasta que regularice la situación, indicando el motivo por el que la cuenta pasa a estar
no cobrada (débito no ingresado, cliente no identificado, u otro motivo).
Ejemplo de un cliente con una de sus cuentas no cobradas:
vehículo y ruta, el monto abonado (sin descuento) y el empleado que realizó el cobro. No se registran los datos del
cliente ni del vehículo.
Existen casillas especiales donde se debe abonar el monto exacto. Esto implica que no se le entregará vuelto al
automovilista, en pos de agilizar el movimiento de vehículos.
Para establecer cuál es el empleado de peaje que recibe un pago, existen definidos turnos de atención. Cuando un
empleado comienza su turno de trabajo se deberá loguear en la aplicación, para ser identificado en cada cobro que
realice. El sistema contará con un módulo de gestión de usuarios y perfiles para toda la aplicación.
Para que los usuarios de peaje puedan consultar las tarifas y descuentos, se publicará una página web con toda esta
información.
Se han solicitado un ranking de clientes con mayor cantidad de pasadas, y un reporte que detalle la situación de
cada cuenta.
Solución Propuesta
Propósito del Sistema:
Objetivo: gestionar pasadas de usuarios de un peaje y el cobro correspondiente según la definición de tarifas y las
formas de pago vigentes, generando información resultante de la gestión.
No Contempla:
Gestión de pagos a empleados
Gestión de reparación de rutas realizadas por la empresa de peaje
Reglas de Negocios
Nro. Nombre Descripción
1) Oblea con cobro por Para que un cliente puede utilizar el servicio de oblea, debe tenerla pegada en
débito automático el parabrisas del vehículo. Esta oblea debe estar asociada a la cuenta de un
cliente, dueño del vehículo. De esta forma el sistema comenzará a contarle
cada pasada a ser cobrada con tarjeta de crédito, únicamente mediante el
servicio de débito automático.
2) Cuentas de clientes Un cliente puede contar con varios vehículos, pero cada uno de ellos será
asociado a una cuenta diferente.
3) Tarifas de peaje El cobro de cada pasada está definido en base a una tarifa básica, y según cómo
está categorizado el vehículo a pasar y la ruta por la que pasa.
4) Sistema de Sistema de promociones en función de la cantidad de pasadas en un período
promociones de cobro mensual:
• Hasta 9 pasadas se realiza un 10% de descuento por pasada
• Desde la pasada 10 a la 20 se realiza un 20% de descuento por pasada (a partir
de la pasada 10)
• Desde las 21 pasadas, se realiza un 30% de descuento por pasada (a partir de
la pasada 21)
5) Tarjeta de crédito del El cliente debe presentar una tarjeta de crédito, que debe ser la misma para
cliente todas las cuentas que posea. En esta tarjeta de crédito se le debitará
mensualmente el costo de todas las pasadas realizadas con un vehículo
vinculado a una cuenta, en un período.
6) Cambio de tarjeta de El cliente puede solicitar un cambio de tarjeta de crédito asociada a todas las
crédito cuentas que tiene, cuando así lo requiera, por ejemplo, por extravío, robo o
vencimiento de esta.
7) Baja de cuenta del Debido que a veces la validación de datos de la tarjeta de crédito del cliente se
cliente por demora, puede ocurrir que se le cree la cuenta y luego sea dada de baja, porque
inconveniente con exista algún inconveniente con su tarjeta de crédito. Si existiera más de una
tarjeta de crédito cuenta, todas las cuentas son dadas de baja.
ResponsableDeLiquidaciones Cajero
ATC
68 Registrar cobro en
12 Registrar precios por efectivo
categoría
57 Generar reporte de
estado de cuentas 49 Registrar categoría 4 Registrar cobros por
débito automático
Nombre del Caso de uso: Registrar cobros por débito automático Nro. de Orden: 4
Prioridad: Alta Media Baja
Complejidad: Simple Mediano Complejo Muy Complejo Extremadamente Complejo
Actor Principal: Administradora de Tarjeta de Crédito (ATC) Actor Secundario: No Aplica.
Tipo de Caso de uso: Concreto Abstracto
Objetivo: Registrar los cobros vinculados a clientes que realizaron al menos una pasada por el peaje en el período, y
que tienen una determinada marca de tarjeta de crédito.
Flujo que describe procesamiento de lote con cuentas no cobradas
1. ATC: Comienza cuando envía el lote de cobros de un período.
2. Sistema: Busca el período a liquidar (ver Observación 3), verifica que el archivo de lote de cobros enviado por la
ATC corresponde al período, y determina cuál es la marca de tarjeta de crédito para la que debe procesar los
cobros.
3. Sistema: Busca las cuentas de los clientes que tengan asignada la marca tarjeta de crédito de la ATC.
4. Sistema: Para cada cliente que tenga una tarjeta de crédito de la marca de la ATC, valida que la tarjeta de crédito
esté habilitada, y todas las cuentas tienen tarjeta de crédito habilitada.
5. Sistema: Para cada cuenta identificada, busca las pasadas pendientes de cobro para el periodo y valida si el monto
del lote de cobros coincide con la suma de todas las pasadas pendiente de cobro de cada cuenta. Identifica que
para al menos una cuenta el monto de las pasadas es mayor al informado en el lote de cobros, por lo que:
se registra la cuenta como no cobrada con el motivo débito no ingresado.
se registra la fecha actual como fecha en la que cada cuenta identificada deja de estar en uso por pasar
a estar no cobrada.
6. Sistema: Registra el cobro de cada cuenta, la fecha de pago, y vincula el cobro con todas las pasadas incluidas,
registrando estas pasadas como pagadas (únicamente las efectivamente pagadas).
7. Sistema: Informa a la ATC la finalización exitosa del procesamiento del lote de cobros. Fin del CU.
Alternativas
A1. Se detecta que se han enviado cobros asociados a tarjeta de crédito no habilitadas, por lo que informa esta
situación a la ATC y cancela el procesamiento de todo el lote de cobros.
A2. La suma de las pasadas pendientes es igual al monto informando en el lote.
A3. La suma de las pasadas pendientes es menor al monto informando en el lote.
A4. El proceso se corta, por lo que se anulan todas las transacciones de pago realizadas hasta el momento para ese
lote de cobros y se informa a la ATC que el procesamiento no fue exitoso.
Observaciones
Observaciones
1. Si no hay cuentas de clientes asociadas a la marca de tarjeta de crédito, la marca de tarjeta de crédito no envía
ningún lote de cobros, por lo que el caso de uso no se ejecuta para esa marca de tarjeta de crédito.
2. Si el proceso se corta por algún inconveniente se anulan todas las transacciones de pago para iniciar
nuevamente el proceso completo y se informa al servicio de débito automático que el procesamiento no fue
exitoso.
3. El período a liquidar es el período del mes anterior al mes en curso.
Nombre del Caso de uso: Consultar tarifas por categoría y ruta Nro. de Orden: 15
Prioridad: Alta Media Baja
Complejidad: Simple Mediano Complejo Muy Complejo Extremadamente Complejo
Actor Principal: Cliente Actor Secundario: No Aplica.
Tipo de Caso de uso: Concreto Abstracto
Objetivo: Visualizar las tarifas correspondientes a cada categoría y ruta.
Flujo básico
1. Cliente: Comienza cuando selecciona la opción Consultar tarifas.
2. Sistema: Busca las tarifas vigentes para todas las categorías y rutas, y las muestra, incluyendo una imagen
representativa de cada categoría, resaltando aquellas tarifas de la categoría base.
3. Sistema: Informa el período de vigencia de las tarifas informadas, en función de la categoría base (Ver
Observación 1).
4. Sistema: Permite consultar tarifas de períodos anteriores, mostrando los últimos 5 períodos.
5. Cliente: No desea modificar los períodos anteriores que desea consultar. Fin del caso de uso
Alternativas
A1. No existen tarifas vigentes para el período actual.
A2. El Cliente desea visualizar tarifas de períodos anteriores.
A3. No es posible visualizar alguna imagen asociada a una categoría.
A4. El Cliente desea modificar el período de vigencia.
A5. El Cliente cancela la operación.
Observaciones
Observaciones
1. Existe una categoría marcada como categoría base para cada ruta (categoría sobre la que se definen el resto
de las tarifas). Todas las categorías base tienen el mismo periodo de vigencia.
2. El Cliente puede cancelar la operación en cualquier momento.
Modelo de Dominio
Vista Dinámica del Caso de Uso 15 Consultar tarifas por categoría y ruta
Realización de CU de Análisis - Vista de Estructura del Caso de Uso 4 Registrar cobros por
débito automático
5: *esPeríodoVigente()
: nuevoPago:
MarcaTarjetaCrédito Cobro
37: finCU() :
31: crearCobros() PasadaPeaje
Para validar la MarcaTarjetaCrédito se 23: buscarMotivo()
21: buscarEstadoNoCobrado() 18: *estáPendienteDeCobro()
puede hacer por el valor del puntero, 20: marcarCuentasComoNoCobrada() 19: *getImportePasada() :
como en esta solución, o por el nombre, 16: validarCobros()
12: validarHabilitaciónDeTC() 34: *actualizarComoCobrada() HistorialEstadoCuenta
llegando al objeto MarcaTarjetaCrédito
8: buscarCuentasDeTC()
desde la TarjetaCrédito del cliente 6: validarMarca()
4: validarPeriodo() 25: marcarNoCobrado() 27: *esEstadoActual()
3: obtenerFechaActual() 13: *esTCHabilitada()
32: *crearCobro()
2: nuevoLoteCobrosDA() 17: *sumarCobrosPendientes()
1: nuevoLoteCobrosDA() 26: buscarEstadoActual()
9: *esCuentaDeTC() 29: crearHistorial()
36: loteCobrosProcesadoExitosamente()
35: informarProcesamientoExitosoLoteCobros()
:ATC :InterfazDA :Cuenta 28: setFechaFinEstado()
:GestorDA
7: *esMarcaDeTC() 10: tieneEstaTC()
14: esTCHabilitada() último:
HistorialEstadoCuenta
24: *esMotivoDébitoNoIngresado()
5: *esPeríodoVigente()
:
33: new() 30: new()
MarcaTarjetaCrédito 22: *esNoCobrada()
:Cliente
11: *esMarcaTC()
: 15: *esTCHabilitada() nuevoHistorial:
:Motivo nuevoCobro:
PeríodoLiquidación
Cobro
:Estado HistorialEstadoCuenta
:
TarjetaCrédito
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 1
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Índice
Objetivos Generales ............................................................................................................................................................... 4
Consignas ................................................................................................................................................................................ 4
Caso de Estudio N°1: Video Club ............................................................................................................................................ 5
Caso de Estudio N°2: Secretaría de Turismo de la Nación .................................................................................................... 6
Caso de Estudio N°3: Editorial ................................................................................................................................................ 7
Caso de Estudio N° 4: Torneo de Municipalidad ................................................................................................................... 9
Caso de Estudio N° 5: Control de Acceso a Country ............................................................................................................ 10
Soluciones Propuestas: ......................................................................................................................................................... 11
Solución propuesta: Video Club ........................................................................................................................................... 12
Definición del Sistema....................................................................................................................................................... 12
Diagrama de CU- Vista esencial ........................................................................................................................................ 13
Descripción de Casos de Uso (trazo fino, medio y grueso) ............................................................................................ 14
Construcción de prototipos de interfaz de usuario ....................................................................................................... 20
Diagrama de clases............................................................................................................................................................ 21
Patrones Coad ...................................................................................................................................................................22
Solución Propuesta: Secretaría de turismo ........................................................................................................................ 23
Definición del Sistema...................................................................................................................................................... 23
Diagrama de Casos de Uso esenciales ............................................................................................................................ 24
Descripción de Casos de Uso (trazo fino, medio y grueso) ........................................................................................... 25
Construcción de prototipo de interfaz de usuario ......................................................................................................... 29
Diagrama de Clases .......................................................................................................................................................... 30
Patrones Coad ................................................................................................................................................................... 31
Solución Propuesta: Editorial .............................................................................................................................................. 32
Definición del Sistema...................................................................................................................................................... 32
Diagrama de Casos de Uso esenciales ............................................................................................................................ 33
Descripción de Casos de Uso (trazo fino, medio y grueso) ........................................................................................... 34
Construcción de un prototipo de interfaz de usuario .................................................................................................... 38
6. Diagrama de clases ...................................................................................................................................................... 39
Patrones Coad .................................................................................................................................................................. 39
Solución Propuesta: Torneo de Municipalidad ................................................................................................................... 40
Definición del Sistema...................................................................................................................................................... 40
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 2
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 3
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Objetivos Generales
Los ejercicios incluidos en la presente guía tienen por propósito:
→ Definir los sistemas de información que se van a construir en términos de sus requerimientos funcionales.
→ Facilitar a los alumnos la práctica sobre modelado de la estructura de sistemas de información, construyendo
un Modelo de Dominio, utilizando como herramienta el diagrama de clases.
→ Aplicar patrones en el modelado de objetos del dominio.
→ Identificar y modelar la esencia funcional de los sistemas de información de manera consistente con el
modelado de casos de uso.
→ Utilizar prototipos como herramienta de validación de los requerimientos.
Consignas
En cada uno de los casos de estudio que se plantean el alumno deberá:
1. Analizar la situación planteada y definir el sistema de información asociado en términos de objetivos, alcances
y reglas de negocio más relevantes.
2. Construir el Diagrama de Casos de Uso, vista esencial.
3. Describir un caso de uso a trazo fino, uno a trazo medio y uno a trazo grueso.
4. Construir prototipos de interfaz de usuario.
5. Construir el modelo de dominio, utilizando un diagrama de clases; identificando atributos, responsabilidades
y relaciones, indicando navegabilidad y multiplicidad.
6. Especificar los patrones Coad, utilizados para construir los modelos de dominio.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 4
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Las películas pueden pagarse al momento de alquilarlas o al devolverlas, y dicho pago puede ser de contado o
de lo contrario, con abono (para los socios que lo posean). Se le entrega un ticket al socio en el momento del pago. En
el caso del abono, el socio se lleva el ticket en el momento de la compra de la chequera con los abonos, entregando
un abono por cada película que retira.
Es política del video que las personas deban registrarse como socios antes de alquilar la primera película.
Solamente se les requiere la presentación de una constancia de domicilio y una copia del documento de identidad.
Cuando se alquilan las películas, las mismas son registradas determinándose: fecha de alquiler, fecha en la que
las mismas deben estar devueltas. Los socios que tengan en su poder películas cuya fecha de devolución esté vencida
se encuentran inhabilitados para retirar nuevas, hasta tanto cumplimente la devolución de la película.
En el momento en que el Socio devuelve la película se controla si el alquiler ya está pagado, de lo contrario se
le cobra y se registra la devolución. En caso de demora en la devolución se le debe cobrar el recargo correspondiente.
Las películas están categorizadas de acuerdo a si son estrenos, clásicos, etc.; y su categoría determina el precio
del alquiler, la cantidad de días del préstamo y el precio de recargo por devolución fuera de término.
Las películas se clasifican por género. Los datos que se necesitan de las películas son: nombre, protagonista/s,
director, categoría, ubicación (lo cual permite localizarlas en las estanterías).
Pueden existir varios ejemplares por película, que se compran al mismo momento o no, es decir, si una película
es muy demandada puede que se pide una compra adicional posteriormente. El responsable del Video es el encargado
de realizar la administración periódica de las películas, que consiste entre otras cosas, en dar de baja películas rotas o
en mal estado y en re-categorizar las películas que dejan de ser estrenos.
El responsable del Video ha solicitado se diseñe el proceso de negocio que permita la reserva de películas por
parte de los socios (por teléfono o personalmente), contemplando como servicio adicional la entrega de películas a
domicilio. Para concretar la reserva se requiere fecha de la reserva, la película y el socio que realiza la reserva.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 5
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Ubicación (provincia, localidad, kilómetros de distancia desde el lugar seleccionado hasta capital de la
provincia)
Tipos de alojamiento disponibles (hoteles, hospedajes, cabañas, moteles, etc.) y comodidades ofrecidas por
cada uno de los alojamientos en función del tipo, régimen alimentario (si es pensión completa, media pensión,
desayuno, todo incluido, etc.), tipos de habitaciones (doble, triple, etc.)
Lugares de interés que se pueden visitar con sus características y precios asociados.
Los precios pueden tener variaciones en función de la temporada.
Excursiones: si el Lugar Turístico tiene programadas excursiones, informar duración de las mismas, lugares que
se visitan durante la excursión, precios, desde dónde se la puede tomar.
Sitios para comer con sus características, precios demostrativos, tipo de comida y ubicación.
Precios de cada lugar en las distintas temporadas (alta y baja) y estaciones del año en que se recomienda más
visitarla, por ejemplo: VALLE DE LA LUNA, visitarlo en otoño o invierno.
Medios de Transporte que pueden utilizarse para llegar a cada lugar turístico y precios asociados.
Estadísticas de lugares más visitados en cada localidad, lugar de origen de los turistas y excursiones más
demandadas. Para obtener esta información cada municipio debe comunicar a la Secretaría de Turismo al
finalizar cada temporada la información de los lugares turísticos más visitados y de las excursiones más
demandadas de cada lugar turístico. Respecto de los visitantes se requiere si son argentinos discriminar por
localidad, provincia y país; si son extranjeros discriminar sólo por país.
Además, se debe permitir a las personas interesadas realizar reservas, tanto vía Web como en las oficinas de
información turística, de hospedajes en cualquier tipo de alojamiento ubicadas en cualquier lugar turístico de los que
están registrados en el sistema. Las reservas deben ser confirmadas por cada lugar de alojamiento para hacerse
efectivas, y los turistas las podrán cancelar hasta tanto no hayan sido confirmadas.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 6
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
1. Personas (autores) que se presentan a publicar un libro por primera vez: Se anuncian en la recepción y es la
recepcionista la que le asigna un editor en función de la disponibilidad del momento. El editor recibe al autor
y en función del tema de que se trata dará una aceptación preliminar, puesto que puede ocurrir el libro no se
encuentre dentro del ámbito de incumbencia de la Editorial.
2. Autores que ya han publicado anteriormente en la editorial: en este caso la recepcionista lo deriva
directamente con el editor asignado anteriormente. Salvo excepciones como que el editor ya no trabaje más
en la empresa o no esté disponible. Si esto ocurre, la recepcionista le asigna al autor otro editor.
En ambos casos, si el editor recibe el libro informa la fecha en la cual dará una respuesta, en caso contrario, le
devuelve el libro y el autor se retira. El editor que se queda con el libro lo lee y realiza una evaluación (positiva o
negativa) que se comunica al autor.
Si la evaluación es positiva lo cita para comenzar los trámites de contratación y el arreglo económico, que puede
ser por un porcentaje en función de las ventas o un monto fijo “tipo sueldo”. En el contrato también figura si el libro
es una novela y existe la posibilidad de continuidad en la historia (tal es el caso de las sagas como “Harry Potter”).
Cada autor tiene un contrato para cada libro, ese contrato tiene un tipo de liquidación asociada que puede ser
sueldo o comisión. Para los sueldos el contrato contiene el monto y para las comisiones el porcentaje. Las comisiones
dependen de las ventas informadas para el período a liquidar.
Si el libro decide publicarse, se asigna un revisor y un encargado de diseño gráfico. Finalizadas ambas actividades
el libro se envía a imprenta. La Editorial trabaja con varias imprentas y es el editor el encargado de la selección y luego
envío del original del libro, indicando la cantidad de copias y las características de impresión deseables. Una vez que la
imprenta finalizó el trabajo, le envía a la Editorial los libros que están listos para ser comercializados.
En forma paralela a las actividades de revisión del libro, el editor debe encargarse de registrar la propiedad
intelectual para proteger los derechos de autor y, una vez concluido este trámite el número de registro se incluye en
el material a enviar a imprenta.
La editorial realiza un seguimiento de libros que recibe y debe mantener un historial de su evolución. Además de
los estados descriptos con anterioridad vale remarcar que en los casos en que la evaluación del editor no es
satisfactoria se devuelve el libro en forma definitiva. Como resultado del proceso de revisión el libro puede estar en
condiciones y se lo envía a imprenta o necesita correcciones, para lo cual se envía el ejemplar al autor. El autor corrige
el libro que debe ser revisado nuevamente, con lo cual vuelve a estar pendiente de revisión. Al recibir las copias del
libro de la imprenta, el libro queda listo para distribución y así finaliza su ciclo de seguimiento.
Mensualmente, el Responsable de Liquidaciones debe liquidar las comisiones o sueldos de los autores según
corresponda. Las comisiones se calculan en función de las ventas de libros, informadas por las librerías. Si existen
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 7
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
adelantos se descuentan de las liquidaciones conforme se haya pactado en el momento del otorgamiento de los
mismos.
Dado que el proceso de liquidación es complicado, primero se obtiene una pre-liquidación de control con un listado
que permite realizar correcciones, de ser necesario, y luego se obtiene la liquidación definitiva que imprime cada uno
de los comprobantes de pago para los autores. Se genera un comprobante por cada tipo de liquidación, es decir si un
autor tiene más de un libro con la editorial se liquidan por un lado todos los que cobra por sueldo y por otro todos los
que cobra por comisiones. En ambos casos, cada comprobante describe lo que se está liquidando y los conceptos de
descuentos, si correspondieran. Para cada comprobante se imprime un cheque diferente. Esto último se puede hacer
en el mismo momento de la impresión de los comprobantes o en otro momento posterior.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 8
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Trimestralmente, se organizan torneos que abarcan diferentes disciplinas (carreras, salto en largo, jabalina,
etc.), en los que pueden participar competidores de diferente sexo y categoría (clasificación de acuerdo a la edad).
Estos torneos se organizan solamente para alumnos de las escuelas de la zona. Y los competidores necesariamente
tienen que pertenecer a una escuela, que es quien debe presentar las inscripciones.
Las escuelas que desean participar deben inscribir a sus alumnos en la Secretaría de Deportes ó a través de la
página WEB de la Municipalidad.
La Municipalidad genera inscripciones independientes para cada participante en cada una de las disciplinas que
desea competir, y el procedimiento para aceptarlas es el siguiente: en el momento que se recibe la inscripción,
personal de la Municipalidad debe validarla con la demás documentación de los participantes para corroborar que los
datos sean correctos, en especial la categoría en la que se inscribió, si esta evaluación es aprobada, la inscripción queda
pre-aprobada, desde ese momento tienen plazo hasta cinco horas antes del inicio de la competencia, para realizar el
examen médico reglamentario. Recién después de superadas ambas instancias el participante está en condiciones de
competir. La falta de cualquiera de las instancias anteriores invalida la inscripción para la competencia.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 9
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
En esta ocasión, su objetivo es el desarrollo de un sistema de información que satisfaga una necesidad esencial
de las empresas administradoras de countries: “el control de accesos”.
Dentro del country se encuentran lotes de cierta superficie que pueden tener propiedades edificadas, obras
en construcción o estar vacíos.
En la entrada del country se encuentra un guardia que será el encargado de registrar los accesos al country de
las diferentes personas: propietarios, familiares de los propietarios, obreros y visitantes.
En el caso de los propietarios y sus familiares, ellos poseen una tarjeta de acceso que les permite el ingreso.
Para los visitantes el guardia debe llamar por teléfono al propietario del lote donde debe entrar el visitante para que
el propietario autorice el ingreso del visitante. En este caso se deberá registrar los datos del visitante (nombre, apellido
y dni) y la fecha y hora de la autorización.
En el caso de los obreros su ingreso se controla teniendo en cuenta su período de trabajo: días de trabajo,
horario de ingreso supuesto, horario de salida supuesto, fecha de inicio y de fin de la obra donde trabajará.
Aclaraciones:
En cualquiera de los accesos al country, no se debe permitir que una persona pueda ingresar dos veces sin
haberse registrado la salida, y viceversa.
Los obreros no pueden ingresar al country en días y horarios que no hayan sido autorizados previamente por
los propietarios.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 10
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Soluciones Propuestas:
Las soluciones se presentan a nivel de Modelo de Requerimientos, con Diagrama de Casos de Uso (únicamente
para los casos de uso esenciales), descripción de algunos casos de uso como ejemplo, los prototipos de interfaces y
los diagramas de clases. Para el caso de los diagramas de clase se modela a nivel de Clases de Dominio, es decir la
primera versión de modelo que se realiza durante el workflow de requerimientos y que luego es refinada con el resto
de las clases, métodos y atributos que se incorporan durante los workflows de análisis y diseño.
Se presentan dos formas alternativas de modelar los Diagramas de Clases, cada una expresa una forma
diferente que se puede utilizar para representar los atributos que referencian objetos de otras clases:
1. Se muestran las relaciones entre clases como atributos de referencia, asignando como tipo la clase que están
relacionando.
2. Se muestran las relaciones entre clases directamente asignándolas como “rol” en la relación correspondiente.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 11
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Administrar información de películas y sus ejemplares para alquiler; el cobro por el alquiler de películas ya sea de
contado o con abonos. Brindar información resultante de la gestión.
Reglas de Negocio:
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 12
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Re gistrar
Socio
Re gistrar
Re se rv a
Emple ado de
Re gistrar
Vide o
Alquile r
Consultar
Pe lículas
Re gistrar «extend»
De v olución
«extend»
Re gistrar
Re gistrar Cobro
Ve nta de «extend»
Abono
Consultor de
Pe lículas
Ge ne rar re porte
de pe lículas más
alquiladas
Re gistrar Re gistrar
Re cate gorización Pe lícula
de Pe lícula
Re gistrar Tipo
de Abono
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 13
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 14
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 15
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 16
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
16. EV: no desea registrar el cobro del alquiler. 16.A. EV: desea registrar el cobro del alquiler.
16.A.1. Sistema: llama al caso de uso Registrar Cobro de
Alquiler; y éste se ejecuta con éxito.
16.A.1.A. El caso de uso no se ejecuta con éxito.
16.A.1.A.1. Sistema: muestra un mensaje informando la
situación y pregunta si desea continuar con el registro del
alquiler.
16.A.1.A.2. EV: desea continuar con el registro del alquiler.
16.A.1.A.2.A. EV: decide no continuar con el registro del
alquiler.
16.A.1.A.2.A.1. Se cancela el caso de uso.
17. Sistema: genera y muestra el número de alquiler
el alquiler, registra la película especificando: número,
socio, fecha de alquiler, fecha de devolución prevista,
monto del alquiler y estado del cobro y cada uno de
los ejemplares de película alquilado. Actualiza el
estado de cada ejemplar a “Alquilado”.
Fin del caso de uso.
Observaciones:
1. El actor puede cancelar la ejecución del caso de uso en cualquier momento.
2. El socio para alquilar películas no puede tener alquileres vencidos pendientes de devolución.
3. En este caso de uso se muestran sólo las reservas para mostrador. No las de entrega a domicilio.
Asociaciones de Extensión: Registrar Cobro
Asociaciones de Inclusión: no aplica
Use Case donde se incluye: no aplica
Use Case al que extiende: no aplica
Use Case de Generalización: no aplica
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 17
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 18
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 19
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 20
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Diagrama de clases
class Domain Model
Abon o
empleadoVendio fecha
fechaVto
1 numero TipoAbon o
Cobro tipoAbono
precio descricpion
Emple ado fechaCobro
conocerDetalleDeAbono() nombre
Cargo horaCobro 1
apellido empleadoCobro conocerEmpleadoVendio() precio
descripcion dni nroTicket detalleCobro conocerTipoAbono() conocerDetalleTipoA()
nombre cargo domicilio calcularTotal() estaCompleto()
fechaNac 1 0..1
getDescripcion() conocerDetalleCobro() estaVencido()
1 nombre
getNombre() imprimirTicket() abono
1 password 1 1..*
setDescripcion() empleado detalleAbono
setNombre() conocerCargo() empleadoAlquilo 0..*
De talle De Cobro detalleTipoAbono
validarPassword()
1
1..*
Alqu ile r cantidad
precio
empleadoReservo fechaAlquiler alquiler De talle TipoAbon o
HojaRe corrido fechaDevPrevista calcularTotalLinea()
0..1 conocerAbono() cantidad
fecha fechaDevReal 1..*
numero precio conocerAlquiler() conocerCategoria()
0..1 recargo
conocerDetalleHR() De talle De Abon o categoria
conocerRepartidor() Re se rva calcularMonto() alquiler
calcularRecargo() abono estado
domicilioEntrega 0..*
conocerEjemplar() conocerCategoria()
estado 0..* estaDevuelto() Socio
detalleHR reserva fechaPedido
estaDevueltoEjemplar() dni categoria
1..* fechaReserva
domicilio
conocerAlquiler() estado
De talle HojaRe corrido conocerPelicula()
1 fechaAsociacion
entregado fechaBaja
fechaNacimiento
conocerReserva() reserva
numero
Ele n co
pelicula abonosVigentes()
nombre 1..* conocerAbono()
personaje conocerAlquiler()
rol elenco
conocerRol() conocerReserva()
esPersonaje() cuantasReservasPeriodo()
Rol cuantosAlquileresPeriodo()
descripcion 1..* 1 imprimirCarnet()
ejemplar
nombe quePeliculasAlquilo()
Pe licu la reservasNoConfirmadas()
calificacion duracion 1
ejemplar
Calificacion nombre
1 tituloOriginal Eje mplar Estan te
descripcion 0..* Estan te ria
nombre conocerCalificacion() estado estante estante
genero capacidad 1 1
Ge n e ro conocerCategoria() fechaAlta capacidad
lugaresDisponibles
conocerEjemplar() fechaBaja 1 numero 1..* numero
descripcion 1 Cate goria
nombre conocerElenco() detCapacidadDisponible()
conocerEstante() hayLugaresDisponibles() descripcion
conocerPaisOrigen() hayLugaresDisponibles()
hayEjemplaresDisponibles() diasPrestamo
PaisDe O rige n nombre
mostrarUbicacionEjemplares()
nombre paisDeOrigen precio
recargo
getNombre() 1 categoria 1
setNombre()
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 21
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Patrones Coad
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 22
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Administrar información sobre lugares turísticos y sus excursiones, alojamientos y lugares de interés, gestionando
reservas de alojamiento. Emitir informes y estadísticas relacionadas a turistas y lugares de interés turístico.
Requerimientos Funcionales
Reglas de Negocio:
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 23
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Consultar
Excursión Consultar Lugar
Consultar Medio
de Transporte de Interés
«extend»
Usuario
Registrar Lugar
Turista Turístico
Generar Informe de
excursiones más
requeridas Encargado
Secretaría Turismo
Operador de Generar comparativo
Reserva de turistas entre
Cancelar
Reserva de lugares turisticos
Alojamiento
Registrar
Restaurante Registrar Generar estadísitcas de
Reserva de turistas que visitan cada
Generar comparativo de
Alojamiento lugar turistico
turistas por año en lugares
turísiticos
Registrar
Excursión
Responsable Registrar Medio de
Atención al Turista Transporte
Administrador del
Sistema
Registrar
Lugares de
Interes
Registrar
Alojamiento Registrar
Empresa de
Transporte
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 24
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 25
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 26
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 27
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
20. Sistema: calcula y muestra la fecha de retiro y el costo total del alojamiento.
21. Sistema: solicita confirmar la reserva.
22. OR: confirma la reserva.
23. Sistema: verifica que los datos mínimos requeridos han sido ingresados: lugar turístico, alojamiento,
régimen alimentario, fecha de reserva, cantidad de días y al menos una habitación; y es así.
24. Sistema registra la reserva al turista en estado “A Confirmar”, informa que la reserva se registró con éxito
y muestra el número de la misma.
Fin del caso de uso.
Alternativas
A1: OR no confirma la habitación
A2: OR desea quitar una habitación reservada
A3: OR no confirma la reserva
A4: Falta ingresar datos requeridos
A5: La reserva no se registró éxito
Observaciones: El actor podrá cancelar la ejecución del caso de uso en cualquier momento.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 28
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 29
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Diagrama de Clases
class Domain M ode l
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 30
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Patrones Coad
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 31
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Administrar la publicación de obras de diferentes géneros y gestionar el vínculo contractual con los actores, incluyendo
los pagos correspondientes, brindando información resultante de la gestión.
Requerimientos Funcionales
Administración de autores
Administración de editores
Administración de los trámites de contratación
Gestión de la información sobre imprentas
Registración y seguimiento del estado y evolución de los libros
Gestión de la liquidación de sueldos
Gestión de la liquidación de comisiones
Generación de informes de:
o Diez autores más populares
o Libros aceptados vs rechazados
o Libros más vendidos y libros menos vendidos
Reglas de Negocio:
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 32
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Imprimir
Registrar listado de Generar
autor control «extend» preliquidaciones
Recepcionista Responsable de
Registrar Liquidación
Registrar
contrato libro
Asignar Editor Liquidar
comisiones
Asignar
Asignar encargado de
diseño Liquidar
Revisor sueldos
gráfico
Registrar
resultado de
revisión
Revisor Editor Registrar
resultado de
evaluación
Registrar ingreso
de ejemplares
desde la imprenta
Asignar
imprenta
Generar
Reporte de
Autores más
populares
Supervisor de
Editores
Generar
Reporte de
Libros más
vendidos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 33
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 34
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 35
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 36
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 37
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 38
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
6. Diagrama de clases
class Modelo de dominio
1
Empleado Contrato 1
Los métodos de TipoLiquidacion
apellido 1 fechaCreacion tipoLiquidacion
seteo y el Rol
dni editor fechaVencimiento descripcion
constructor, descripcion fechaBaja montoSueldo nombre
1 rol Libreria
especificados en la nombre nombre porcentajeComision mostrarNombre()
clase Genero, son ImpresiónLibro cuit
estáActivo() buscarConceptoDto()
nombre 1
aplicables a todas cantCopias calcularMontoALiquidar()
las clases característicasImpresión impresión calcularMontoDtoPeriodo() conocerSucursal()
fechaEnvío 0..1 cuantosLibrosVendio()
imprenta fechaFinalización
conocerDescuento()
Imprenta conocerEditor() obtenerSucursales()
conocerImprenta()
domicilio conocerImprenta()
1 libroRelacionado
nombre 0..* 0..* conocerTipoLiquidacion() sucursal
estaVigente()
Genero
Libro contrato mostrarMontoSueldo() 1..*
descripcion añoPublicacion mostrarTipoLiquidacion()
nombre Sucursal
1 esTomoUnico descuento
genero
getDescripcion() nombre domicilio
getNombre() nombreOriginal 1 numeroSucursal
new() conocerVenta()
historial conocerContrato() venta
setDescripcion() Venta
conocerEstado() cuantosLibrosVendio()
setNombe() conocerGenero() cantidadLibrosVendidos 0..*
conocerImprenta() fechaFin
responsableEstado 1..* conocerLibroRelacionado() fechaInicio Concepto
obtenerContratoVigente() monto
HistoriaEstadoLibro obtenerHistorialEstados() descripcion
conocerContrato() nombre
descripcion obtenerTipoLiqDelContrato() 0..* 0..*
fechaFin 1..* 1 venta
1
fechaInicio Descuento
ConceptoLiquidado
conocerEmpleado() fechaOtorgamiento concepto
conocerEstado() liquidado descuento monto tipoLiquidacion
monto calcularMontoConcepto()
0..*
conocerConceptoDescuento() conocerConcepto()
Liquidacion
estaLiquidado() conocerDescuento()
conocerVenta() esPreLiquidación
estado conceptoDescuento 1 fechaCreacion
mesAñoLiquidado
ConceptoDescuento nroCheque
detalleLiquidacion nroLiquidacion
1 descripcion DetalleLiquidacion
nombre calcularMontoLiquidacion()
orden
Estado conocerAutor()
calcularMontoDetalleLiq() conocerDetalleLiquidacion()
descripcion libro
concerConceptoLiquidado() 1..* conocerTipoLiquidacion()
nombre
conocerLibro() crearDetalleLiquidacion()
crearConceptoLiquidado() new()
new()
autor
libro
Autor 1
domicilio
mail
nombre
telefono
buscarConceptosDto()
buscarContratosVigentes()
buscarMontoALiquidar()
buscarTipoLiquidacion()
calcularMontoALiquidarPorContrato()
conocerLibro()
cuantosLibrosPorEstado()
cuantosLibrosPublicados()
ingresosObtenidosPorLibro()
mostrarNombre()
Patrones Coad
Patrones Utilizados Clases
#12 Asociación – Otra Asociación Liquidación - TipoLiquidacion
#3 Participante – Transacción Contrato – Editor
Liquidacion - Autor
#6 Transacción – Detalle de Transacción Liquidacion - DetalleLiquidacion
#9 Ítem -Detalle de Transacción DetalleLiquidacion – Libro
#14 Contenedor – Contenido Librería - Sucursal
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 39
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Gestionar la información sobre los torneos de atletismo organizados por la secretaría de deportes de la Municipalidad
de Villa María, administrando la información sobre las diferentes disciplinas, los competidores y las categorías.
Resolviendo, además, el procedimiento de inscripción de los alumnos a los diferentes torneos.
Reglas de Negocio:
Nro. Nombre Descripción
1. Organización de torneos Los torneos se organizan por disciplinas (carreras, salto en largo, jabalina,
etc.), en los que pueden participar competidores de diferente sexo y
categoría (clasificados de acuerdo a la edad)
2. Participantes de torneos Los torneos se organizan solamente para alumnos de las escuelas de la
zona.
3. Pertinencia de los competidores Los competidores necesariamente tienen que pertenecer a una escuela,
que es quien debe presentar las inscripciones.
4. Inscripción de participantes Las escuelas que desean participar, deben inscribir a sus alumnos.
5. Creación de inscripciones Se generan inscripciones independientes para cada participante en cada
una de las disciplinas que desea competir,
6. Estados de la inscripción Se evalúa si los datos de la inscripción son correctos, si esta evaluación es
aprobada, la inscripción queda pre-aprobada, desde ese momento tienen
plazo hasta cinco horas antes del inicio de la competencia, para realizar el
examen médico reglamentario, recién después de superadas ambas
instancias el participante está en condiciones de competir.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 40
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Registrar
Registrar Competencia
Categoría
Generar Informe de
inscriptos que
compitieron
Evaluador de
Inscripciones
Registrar Registrar
Registrar Sede
Disicplina Administrador de Evaluación de
Torneo inscripción
Registrar Registrar
Resultado de resultado de
competencia examen médico
Registrar
inscripción de Responsable de
Aspirantes Competencia
Generar Listado de
Responsable de mejores
Inscripciones competidores
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 41
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 42
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 43
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 44
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Observaciones: En cualquier momento el actor puede cancelar el caso de uso seleccionando la opción definida para
tal fin.
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 45
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 46
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Diagrama de clases
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 47
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Patrones Coad
Patrones Utilizados Clases
#12 Asociación – Otra Asociación Inscripcion-EstadoInscripcion
Competencia-Disciplina
Competencia-Categoria
# 3 Participante – Transacción Competidor-Inscripcion
# 4 Lugar-Transacción Sede- Competencia
#6 Transacción – Detalle de Transacción Torneo-Competencia
#16 Grupo-Miembro Escuela-Competidor
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 48
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Gestionar la información de los lotes, propiedades y obras de un country. Además, administrar el proceso de ingreso
y egreso de personas (propietarios, familia de los propietarios, obreros, visitantes) del country, gestionando las
tarjetas de acceso.
Requerimientos funcionales
OBSERVACIÓN: Cuando se menciona a la “familia” del propietario se hace referencia a aquellas personas que viven
con él.
Reglas de Negocio:
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 49
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Ge ne rar
Re gistrar Tarje ta de «extend»
Autorización Acce so Ge ne rar
para Ingre so de Re gistrar Informe de
Pe rsona Familiar Ingre sos por
Ge ne rar Re porte de Horarios
Obre ros y sus
asignacione s a Obras
Ge ne rar Ge ne rar Informe de
Re porte de Visitas a
Re gistrar Propie dade s Propie dade s e n un
Re gistrar
Obra
Obre ro Pe ríodo
Re gistrar Fin
de Obra
Encargado de
Obras
Re gistrar
Turno de
Trabajo de
Obre ro
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 50
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 51
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 52
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 53
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Diagrama de clases
class Modelo de dominio
Lote
TarjetaDeAcceso
Métodos de seteo y Familiar
numero
estaHabilitada
constructor se apellido superficie
fechaOtorgamiento
especifican en dni ubicacion
fechaVencimiento
nombre
todas las clases numero conocerObra()
como están en la conocerAcceso() tarjeta conocerPropiedad()
1 deshabilitar()
clase Familiar conocerParentesco() 1..* cuantasObras()
estaHabilitada()
conocerTarjeta() cuantasPropiedades()
habilitar()
getApellido() tieneObra()
getDni() 1 tienePropiedad()
getNombre()
tarjeta 0..*
new() familiar
setAcceso() 0..*
lote
propiedad
parentesco setApellido() Propietario
0..*
setDni() obra
Paretesco 1 apellido
setNombre() Propiedad
descricpion dni Obra
setParentesco()
nombre caracteristicas
nombre setTarjetaAcceso() fechaFinReal
superficieEdificada
aQuienAutorizo() fechaInicio
acceso cantidadLotes() conocerAutorizacion() fechaPrevistaFin
cantidadPropiedades() tieneAccesos()
calcularDuracionEstimada()
conocerAcceso() tieneAutorizaciones()
conocerAutorizacion()
acceso conocerAutorizacion() propiedad
finalizarObra()
conocerFamiliar()
tieneAccesos()
conocerLote() autorizacion
tieneAutorizaciones()
conocerTarjetaAcceso() 0..*
autorizacion 1
cuantasAutorizaciones()
tieneObras() Autorizacion
0..*
0..*
estado
Visitante
fecha visitante
hora apellido obra
0..* 0..* 1 dni
acceso autorizarIngreso()
Acceso nombre
conocerAcceso()
fechaIngreso conocerVisitante()
fechaSalida
horaIngreso 0..*
horaSalida Obrero
0..*
conocerTurnoTrabajo() apellido PeriodoTrabajo
cuantoTiempoEstuvo() dni
periodosDeTrabajo
diasDeTrabajo
obtenerGuardiaQueTrabajo() acceso nombre fechaFin
calcularTiempoTrabajadoObra() 0..* fechaInicio
turnoTrabajo
conocerAcceso() horaEntrada
conocerPeriodoTrabajo() horaSalida
estaTrabajando() calcularDuracionTurno()
conocerObra()
1
estaVigente()
TurnoDeTrabajo Guardia
fechaFin apellido
fechaInicio guardia dni
horaFin domicilio
1
horaInicio fechaBaja
conocerGuardia() fechaIngreso
legajo
nombre
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 54
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Patrones Coad
Patrones Utilizados Clases
# 3 Participante – Transacción Guardia – Acceso
Obrero – Acceso
Propietario – Acceso
Familiar - Acceso
Propietario – Autorización
Guardia – Autorización
Visitante – Autorización
#7 Transacción- Transacción Subsiguiente Acceso - Autorización
# 4 Lugar – Transacción Propiedad – Autorización
Obra – Autorización
# 14 Contenedor – Contenido Lote – Propiedad
Lote – Obra
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 55
Universidad Tecnológica Nacional- Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Guía de Ejercicios Prácticos: Modelado de Requerimientos
Historial de Cambios
2023 - Guia de Ejercicios para Mod Requerimientos CS.docx, Versión 2.4 Página 56
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 1 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Los buses pasan cada 20 o 30 minutos, dependiendo el recorrido. El servicio trabaja con el formato Hop On/Hop Off.
La empresa ha requerido un sistema web y mobile para que le permita gestionar los viajes de los buses a través de los
distintos recorridos y la venta de tickets a los pasajeros.
Recorridos
La página web mostrará los recorridos con la siguiente información y en el siguiente formato
Cada recorrido posee una duración aproximada en la que el bus realiza el circuito completo. Las paradas del recorrido
respetan el orden establecido y pueden ser compartidas entre distintos recorridos, en distinto orden.
La hora de inicio define la hora de salida del primer bus de la primera parada del recorrido, mientras que la hora de
finalización establece el horario de llegada aproximado del último bus a la última parada del recorrido.
Al seleccionar una parada de un recorrido, la página web presentará información general, una foto representativa y los
atractivos cercanos que el turista podrá visitar.
Los atractivos cercanos buscan que el turista posea información de sitios que puede visitar luego de una caminata corta
desde la parada en cuestión. Al seleccionar algún atractivo, se mostrará su nombre y calificación (en estrellas). Distintas
paradas pueden contar con los mismos atractivos cercanos.
Buses
La empresa cuenta con una flota de buses que realizan los recorridos. Los buses se registrarán en el sistema
para poder asociarlos los viajes que realizan.
Los buses estarán equipados con dos dispositivos móviles, que serán utilizados por el guía y el chofer. Estos dispositivos
contarán con un módulo del sistema instalado y con conectividad 4G/LTE, lo cual permitirá brindar distinta información
en tiempo real. La aplicación será compatible con sistemas Android 5.5 o superior.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 2 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Viajes
Un viaje es la ejecución de un recorrido por un bus, conducido por un chofer y acompañado por un guía, en una fecha
determinada. Semanalmente el Encargado de Operaciones de la empresa define el bus, el chofer y guía, y el horario de
inicio programado para cada viaje.
Son los choferes quienes indicarán -a través de una aplicación móvil instalada en uno de los dispositivos existentes en el
bus- el inicio y el fin de cada viaje. El inicio del viaje se produce cuando el bus se encuentra en la primera parada del
recorrido, el fin del viaje resulta cuando el bus arriba a la última parada.
Diariamente el Gerente de Operaciones genera un reporte sobre los viajes que incluye la duración en minutos, la
demora de inicio del viaje respecto a la hora programada, y el promedio diario de ambos valores.
Tickets
Los tickets se podrán adquirir:
1. En las boleterías existentes en distintos puntos de la ciudad. El vendedor utilizará el sitio web, y la venta podrá
realizarse en efectivo o con alguna de las tarjetas de débito o crédito aceptadas (Visa, American Express o
Mastercard). Para las operatorias de débito o crédito, la autorización se obtendrá utilizando el servicio provisto por
una terminal POSNet, la cual trabajará con tecnología web.
2. A través de la página web. En este caso, sólo se acepta pago con tarjeta de crédito. Para soportar esta operatoria
el sistema deberá conectarse con el WebService de BTPagos.
Una vez registrado el pago, cualquiera sea la forma, se generan los tickets, en papel para el caso de boletería o digitales
para venta web. En cualquier caso, se envía un email al cliente con los tickets generados. Cada ticket contará con un
número único y un código QR, que será requerido al subir al bus.
Los precios vigentes para cada tipo de ticket se presentan en la siguiente tabla
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 3 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Por otra parte, al descender del bus los pasajeros deberán repetir la operatoria de escanear su ticket, actualizando de
esta manera la información de la ocupación del bus.
Seguimiento online
El sitio web contará con una página para visualizar la localización de los buses en los distintos recorridos y el nivel de
ocupación de estos. Para ello el dispositivo móvil asignado al chofer contará con GPS integrado, lo que permitirá enviar
información en tiempo real, que será reflejada en la página utilizando el web service de Google Maps. Este mapa
mostrará los recorridos con su color; la ocupación de los buses se visualiza al seleccionar un bus en particular.
Administración
El sistema contará con un módulo de administración, que permitirá contar con información unificada referida
a los recorridos y paradas, viajes, ocupación de los buses y ventas de tickets. Este mismo módulo permitirá la
gestión de los recorridos, buses y personal, los tipos y precios de tickets.
Gestión de usuarios
El módulo de gestión de usuarios permitirá asignar un usuario y contraseña a los distintos interesados. Se
deberá, además, gestionar permisos en función del rol del usuario.
Estadísticas e informes
El módulo de estadísticas e informes proveerá información acerca de los viajes realizados, ocupación de los buses,
ventas realizadas por diferentes medios y formas de cobro, entre otros.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 4 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 5 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 6 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Requerimientos No Funcionales
En el siguiente cuadro se presentan los requerimientos no funcionales del dominio.
SPA: Significativo para la arquitectura
Característica
N° Nombre Descripción SPA Justificación
ISO 25000
El sistema debe
Desarrollar un componente que
comunicarse con el Web
Comunicación consuma el Web Service publicado por
5 Service de BTPagos para la Compatibilidad SI
con BTPagos BTPagos, para la obtención de la
gestión de los cobros a
información del cobro de los tickets.
través de la página web.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 7 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Característica
N° Nombre Descripción SPA Justificación
ISO 25000
El dispositivo móvil
asignado al chofer contará Debe desarrollarse una interface que
con GPS integrado, lo que resuelva la comunicación con el por el
Dispositivo
permitirá enviar dispositivo localizador, interprete las
9 localizador en Compatibilidad SI
información en tiempo real coordenadas y sea responsable del
buses
sobre la ubicación del bus, procesamiento de la información
para realizar el seguimiento enviada.
geo-satelital de éstos.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 8 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Con el fin de simplificar el dominio planteado, asumimos que en una ubicación geográfica particular (local comercial,
gimnasio, farmacia, etc.) solo puede haber un único punto de emisión. Se necesita conocer la dirección, razón social, nombre,
teléfono de la persona de contacto y rubro asociado al lugar en donde se encuentra instalado el punto de emisión.
La empresa necesita un software construido con tecnología web que permita la gestión de la programación y reproducción
de las publicidades en los diferentes puntos de emisión y la gestión del cobro del servicio de publicación.
Para la implementación de este software la empresa posee un sólo equipo (hardware) que será utilizado como servidor, con
Ubuntu Linux Server 12.04 LTS open source.
Los puntos de emisión deben tener un nombre, una descripción y un precio por segundo de publicidad. Los clientes que
deseen publicar en los puntos de emisión de la empresa deben contratar un servicio de publicación, donde se acuerda la
cantidad de veces que será reproducida una publicidad durante un periodo definido de tiempo, para un punto de emisión
determinado. El servicio contratado puede ser de tipo periódico o por única vez. Si el cliente acepta el precio del servicio, el
administrador le asignará un usuario con el cual operar el sistema. Entre otras cosas el cliente como usuario, podrá subir
sus publicidades. Las publicidades deben tener nombre, descripción, código autogenerado que la identifique, duración y la
fecha de creación. Los formatos de publicidad permitidos son .flv (Flash Video), .AVI o .MPG.
El administrador es el responsable de crear las tandas publicitarias, para lo cual agrupará las publicidades cargadas por los
clientes según algún criterio (rubro, público dirigido, marca; y teniendo en cuenta el punto de emisión donde se reproducirá).
En cada tanda publicitaria se debe indicar el orden de reproducción para cada publicidad. De esta manera las publicidades
serán reproducidas secuencialmente según el orden indicado en la tanda publicitaria.
Una vez creadas las tandas publicitarias, el administrador periódicamente se encargará de generar las programaciones de
las tandas publicitarias para cada punto de emisión. En cada programación indica la fecha Inicio, fecha de fin, el conjunto de
tandas publicitarias, el orden en que éstas se reproducirán, un nombre descriptivo de la programación y una fecha de
creación. Cabe aclarar que las diferentes programaciones de un punto de emisión no pueden superponerse, es decir un
punto de emisión en un momento de tiempo sólo tiene una programación vigente. Aun así, es posible generar varias
programaciones para un mismo punto de emisión respetando esta restricción.
Cada punto de emisión debe tener instalado un módulo que resuelva la forma de comunicarse con la aplicación central para
descargar actualizaciones de las programaciones y otro módulo que se encargue de reproducirlas en la secuencia indicada
por la programación asignada al punto de emisión. La conexión a internet que utilice el punto de emisión debe ser banda
ancha de al menos 3Mbps.
Una vez instalado el punto de emisión en el local donde se ubicará, se le da de alta en el sistema como habilitado para poder
asignarle programaciones. A partir de esto, si el punto de emisión posee internet deberá conectarse al servidor y descargar
las programaciones que debe emitir. Si por algún motivo no posee conexión a internet, deberá verificar el estado de esta
cada 5 minutos. Una vez completa la descarga, el punto de emisión comenzará a reproducir secuencialmente las
publicidades.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 9 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Cada hora, al mismo tiempo que en pantalla del punto de emisión se reproducen las publicidades, el software del dispositivo
debe sincronizarse con el servidor central para descargar actualizaciones en el caso de que existan. El momento de
sincronización puede durar varios minutos. También puede ocurrir que, al intentar la sincronización, el punto de emisión no
pueda conectarse al servidor por problemas en la conexión, en este caso mientras continúa reproduciendo la programación
actual, verificará cada 5 minutos el estado de la conexión para poder iniciar la sincronización.
Puede suceder que el punto de emisión sea apagado cuando termine el día o cuando el dueño del local lo decida. Cuando
se encienda, deberá reproducir la última programación que tenía descargada. Es posible deshabilitar un punto de emisión
durante un período de tiempo, por ejemplo, si está roto o si el local donde se ubica el punto de emisión entra en periodo
vacacional. Mientras el punto de emisión se encuentre deshabilitado no se le podrá asignar programaciones. Una vez que se
lo habilite, deberá conectarse para descargar la nueva programación, siempre y cuando el administrador le haya asignado
una programación. Existen casos en los cuales se le debe dar la baja al punto de emisión y dejarlo en desuso, esto ocurre
cuando el local donde está ubicado se cierra, decide quitar el punto de emisión, o no se rompe el dispositivo y no se puede
reparar.
Para que un cliente se asegure que sus publicidades se reproduzcan en los puntos de emisión es necesario generar un reporte
que contenga la hora de inicio de reproducción, el nombre de la publicidad y el id del punto de emisión que la reprodujo,
para esto, cada punto de emisión debe enviar al servidor una notificación al reproducir una publicidad. El servidor recibirá
todas las notificaciones de cada punto de emisión y las ordenará según el orden de llegada y el punto de emisión. El formato
del reporte tiene que ser Excel (xls o xlsx) o pdf.
El sistema además debe gestionar los pagos de los clientes, que pueden ser abonados en efectivo o a través de los medios
de pago permitidos por Cuenta Digital. Si el pago es en efectivo, el área de administración se encarga de generar el
comprobante de pago y registrar el cobro. En los demás casos se utiliza el web service de CuentaDigital. Cuenta Digital es un
sitio web que permite tercerizar las operaciones de cobro de servicios y productos ofreciendo múltiples medios de pagos a
los clientes, automatizando el proceso de cobro. Para utilizar este servicio, es necesario contar con una interfaz que se pueda
comunicar con el web service de cuenta digital, con el fin de permitir la generación de cupones de pago con un código de
barras para utilizar en cualquiera de los medios permitidos por CuentaDigital y actualizar el estado de los pagos una vez que
se registre el mismo en Cuenta Digital.
El administrador del sistema debe poder consultar en cada momento si un servicio contratado está pendiente de pago, si ya
se efectuó el pago o si se encuentra vencido. Además de poder visualizar los comprobantes de pago de los servicios
contratados para cada cliente.
El cliente tiene acceso a su estado de cuenta al igual que la administración. Cada vez que se consulte el estado de cuenta
para un determinado período el sistema mostrará un listado con todos los cupones de pago por cliente. Cuando un cupón
de pago se encuentra vencido se debe visualizar en color rojo para denotar el incumplimiento, si se efectuó el pago debe
figurar en color verde, y si aún no ha vencido en color negro.
Al ser un sistema web es necesario administrar los usuarios junto a sus permisos y mantener el control de la sesión, con un
time-out de 10 minutos. El protocolo de transmisión de información a utilizar para la plataforma web será HTTP, y HTTPS
según corresponda (en función de la sensibilidad de la información).
Para evitar costos de licenciamiento el cliente solicita que los lenguajes utilizados para el desarrollo del software sean Open
Source, y la base de datos que se utilizará para la persistencia debe ser My SQL Community Server 5.5.24, además debe ser
compatible con Explorer 7, Mozilla y Chrome 18.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 10 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Glosario
Término Significado
Punto de Monitor o pantalla LCD conectada a la red que puede reproducir videos e imágenes en un formato
Emisión especificado; con una ubicación geográfica conocida.
Publicidad Un archivo digital multimedia (video o imagen animada), susceptible de ser publicado en un punto de
emisión, que integra una tanda publicitaria.
Tanda Agrupación arbitraria de publicidades ordenadas que pueden asignarse a una o varias programaciones.
Publicitaria
Web service Servicio web: es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para
intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de
programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para
intercambiar datos en redes de ordenadores como Internet
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 11 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Alcances
El sistema comprenderá el desarrollo de las siguientes áreas de funcionalidad:
❖ Administrar Clientes
❖ Administrar Usuarios y Permisos
❖ Administrar Puntos de Emisión
❖ Gestionar Programación por Punto de Emisión
❖ Gestionar Contenidos Multimedia
❖ Gestionar Pagos de los clientes
❖ Gestionar cuentas corrientes de los clientes
❖ Generar reportes relacionados con publicidades emitidas en los puntos de emisión
❖ Generar reportes del estado actual de los puntos de emisión
No contempla
❖ Gestión de la contratación de ubicaciones en Puntos de Emisión.
Reglas de negocio
Reglas de Negocio
En una ubicación geográfica particular (local comercial, gimnasio, farmacia, etc.) sólo
1 Puntos de emisión únicos
puede haber un único punto de emisión.
3 Tipos de servicio El servicio contratado puede ser de tipo periódico o por única vez.
4 Programación vigente Un punto de emisión en un momento de tiempo sólo tiene una programación vigente.
Las formas de pago pueden ser en efectivo o a través de los medios de pago
6 Formas de pago
permitidos por Cuenta Digital.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 12 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Listado de CU
Nº CU Nombre del Caso de Uso Objetivo
Registrar Baja de punto de Dar de baja un punto emisión que no tenga asignada una programación.
4
emisión.
10 Registrar Tanda Publicitaria. Registrar los datos de una tanda publicitaria y sus publicidades asociadas.
Anular Programación de Tandas Anular una programación cuando no se encuentre asignada a un punto
17
Publicitarias. de emisión.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 13 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Generar Orden de Pago en Generar un ticket de pago para cobrarse en efectivo en la administración.
25
Efectivo.
Generar Orden de Pago en Generar un ticket de pago para ser cobrado por cualquiera de los medios
26
CuentaDigital. permitidos por cuenta digital.
Registrar el cobro de una Orden de Pago por un cliente por medio del
27 Registrar Cobro.
pago directo en la empresa.
Actualizar Asignación de Permisos Registrar la actualización de los permisos asignados a cada usuario
39
a Usuario.
Notificar Reproducción de Enviar al servidor principal una notificación al comenzar a reproducir una
40
publicidad. publicidad en un punto de emisión.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 14 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Generar Reporte de Estado de Generar un reporte que indique el estado actual de diferentes puntos de
44
Punto de Emisión. emisión.
Generar Reporte de Estado de Generar un listado de los pagos y su estado para un cliente determinado
45
cuenta de un cliente. en un periodo específico de tiempo.
Generar Reporte de Generar un listado de las notificaciones de reproducción hechas por los
46 Reproducción de publicidades en puntos de emisión para las publicidades de un determinado cliente.
punto de emisión.
Listar las publicidades cargadas Generar un listado de todas las publicidades con sus datos que han sido
47
por un cliente. cargadas en el sistema por un cliente en particular.
50 Eliminar Cliente Eliminar los datos de un cliente que no tenga servicios vigentes.
Procesar Cobros efectuados a Registrar la información de los cobros que se realizaron a través de
51
través de cuenta digital. cuenta digital.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 15 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Una empresa dedicada al desarrollo de software quiere construir un producto destinado a Municipios y Empresas de
Servicios Públicos que les permita recibir información organizada y en tiempo real de eventos reportados por sus clientes
(reclamos, trámites, quejas, denuncias y/o consultas, comunicaciones), gestionarlos y comunicar su resolución. De cara al
cliente brinda la posibilidad de generar eventos a todas las entidades adheridas y conocer en línea el estado de los mismos,
a través de una única aplicación, disponible en dispositivos móviles y a través de su versión web. A partir de la carga del
evento la organización a la que va dirigido lo gestiona y, una vez resuelto, el aplicativo comunica la solución y finalización al
cliente, quien también puede monitorear desde la aplicación el estado de sus eventos cargados.
La aplicación permitirá al cliente interactuar con las organizaciones adheridas enviando avisos de una manera muy simple:
Una vez descargada la aplicación, frente a un evento, el cliente podrá tomar una fotografía con su celular, geo-referenciar
1
el mismo, seleccionar el tipo de evento y describir el motivo de su reporte. Para aquellos que no posean un Smartphone, se
puede ingresar desde la PC a la versión web.
La solución se ofrecerá como servicio “Saas” (Software as a Service) y Tecnología Cloud (la nube). La empresa u organismo
público que contrata el producto recibirá información organizada y en tiempo real de los eventos que desea gestionar,
pudiendo configurar cuáles son los tipos de eventos que gestiona y que datos solicitarle al cliente para cada uno de ellos. A
su vez el sistema le permite configurar de manera simple y rápida el proceso interno de resolución por cada tipo de evento
y una vez resuelto, la aplicación se encargará de informar la resolución al cliente.
Cualquier organización pública o privada podrá acceder ya que no requiere inversión previa. Gracias a la tecnología Cloud (la
nube) tampoco demanda equipos especiales para su funcionamiento.
El aplicativo se integrará con redes sociales y contará con un módulo de notificaciones push a través del cual es posible enviar
mensajes masivos a la comunidad de usuarios o delimitados por zona según el objetivo de la comunicación, informando la
resolución de eventos o cualquier otro mensaje que se considere relevante para el público seleccionado.
El sistema deberá ser compatible con plataforma web HTML 5 y sistemas IOS (versión 8 o superior), Android (versión 6 o
superior), Windows Phone (versión 10). En la nube, la empresa que desarrolla el software utilizará servidores distintos para
la BD, la capa de Aplicaciones y la capa Web.
Luego de que uno de los socios de la consultora (que es quién tiene la idea de negocio) bajó estos lineamientos, al equipo
de trabajo le surgieron las siguientes preguntas:
¿Cómo carga un evento un cliente o usuario? Para comenzar a utilizarlo sólo es necesario descargar la aplicación y registrarse
como usuario, con una dirección de e-mail y una contraseña de al menos 6 caracteres. Para aquellos usuarios que no posean
Smartphone, existe la posibilidad de poder registrar los eventos ingresando al sitio web de la aplicación mediante una PC,
también a través de un usuario registrado. Si el cliente ya se registró como usuario y olvidó su contraseña, el sistema debe
permitirle recuperarla.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 16 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Al instalar la aplicación, el usuario debe aceptar el acuerdo de usuario que define las condiciones del servicio y política de
privacidad, permitiendo al sistema acceder a su ubicación por medio del GPS, conocer su IP, gestionar el uso de WIFI e
intercambio de archivos (recibir y enviar datos). Un usuario puede darse de baja en cualquier momento que lo desee.
Frente a un evento, puede tomar una fotografía con su celular (opcional y no mayor a 3 Gb), georreferenciarla, seleccionar
un tipo de evento y describir el motivo del reporte, como se muestra a continuación:
Al momento de la carga de datos, el sistema solicitará ingresar primero la organización o entidad a la que se le desea enviar
el evento y a partir de allí se mostrará la pantalla de carga, en donde el Tipo de Evento será definido por cada organización,
pudiendo agregarse nuevos Tipos de eventos una vez que el aplicativo ya se encuentra en uso.
¿Cómo se entera la organización a la que va destinado el evento? Las organizaciones adheridas a esta comunidad accederán
a la aplicación en la nube, a través de un portal web que deberá funcionar en los navegadores web Internet Explorer Versión
11.0 y Google Chrome 52.
Los colaboradores del área de Atención de Incidencias de la organización a la que está destinado el evento recibirán una
notificación (por mail y un alerta visual y sonoro si están logueados en la aplicación) indicando que se ha generado un nuevo
evento. Desde el área de Atención de incidencias se revisa el evento, determina si corresponde una acción y si este es el caso
se asigna a un Resolutor; caso contrario se desestima indicando el motivo.
el evento, el sistema enviará automáticamente un e-mail informando la resolución al cliente que generó el evento y enviará
una notificación a su Smartphone.
Los colaboradores del Área de Atención de Incidencias podrán visualizar los eventos a través del mapa de reclamos. Allí
podrán visualizarse todos los eventos georreferenciados, los cuales pueden filtrarse por diferentes criterios como: fecha,
estado, tipo de evento, área geográfica específica. La ubicación del evento se visualizará a través de Google Maps, tal como
se muestra a continuación:
¿La organización puede emitir notificaciones acerca de un evento de manera “proactiva”? El aplicativo permitirá comunicar
a grupos de clientes sobre el estado o resolución de un evento generado desde la organización, como se muestra a
continuación:
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 18 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
El sistema permitirá dibujar zonas dentro del mapa, agrupando reclamos a partir de una lógica determinada y enviar
notificaciones push a los dispositivos móviles de los clientes. También existirá la posibilidad de publicar información sobre
los eventos gestionados en las redes sociales (Facebook y Twitter).
Otra de las alternativas es que el mismo cliente realice el seguimiento de los eventos reportados, pudiendo realizar filtros
por organización a la que van dirigidos, por número de evento o por estado.
Glosario:
Saas (Software como un Servicio): es un modelo de distribución de software donde el soporte lógico y los datos que maneja
se alojan en servidores de una compañía de tecnologías de información y comunicación (TIC), a los que se accede
vía Internet desde un cliente. La empresa proveedora TIC se ocupa del servicio de mantenimiento, de la operación diaria y
del soporte del software usado por el cliente. Regularmente el software puede ser consultado en cualquier computador, se
encuentre presente en la empresa o no. Se deduce que la información, el procesamiento, los insumos, y los resultados de
la lógica de negocio del software, están hospedados en la compañía de TIC.
Tecnología Cloud: es tipo de implementación donde se ofrece servicio de procesamiento y almacenamiento, en servidores
alojados en forma remota, a los que se accede través de una red, que usualmente es Internet.
Notificaciones push: La tecnología Push es una forma de comunicación en la que una aplicación servidora envía un mensaje
a un cliente-consumidor. Es decir, es un mensaje que un servidor envía a una persona alertándolo de que tiene una
información nueva. Lo que caracteriza esta tecnología es que es siempre el servidor el que inicia esta comunicación, aunque
el cliente no tenga interés en saber si hay algo nuevo. Lo comunica siempre.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 19 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Lo que más destaca de las notificaciones push es su inmediatez, ya que no hace falta estar ejecutando la aplicación para que
nos llegue. Aunque la tengamos apagada o en segundo plano, cada vez que el servidor reciba una información nueva nos
avisará de su existencia, es decir, las notificaciones push despiertan al móvil esté o no ejecutando la aplicación.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 20 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 21 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Nota: El listado de casos de uso no es exhaustivo, se incluye a los fines de una mejor comprensión de la funcionalidad del
producto.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 22 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
A continuación, se describen en términos generales las responsabilidades de los roles de usuario que se vincularán con el
software:
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 23 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Un importante club desea contar con una plataforma de comunicación que le permita aumentar el número de socios y
acercar sus socios/hinchas a la institución.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 24 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Responsable de Socios
Administrador de Redes Sociales
Rol de Usuario responsable de la Administrador del Club (Community Manager)
evaluación de las Solicitudes de Rol de usuario responsable de Rol de usuario responsable de
Adhesión de los Hinchas que desean administrar los campeonatos en los administrar los beneficios que el club
convertirse en socios. También de la que el Club va a participar, como así ofrece a través de la aplicación y de
administración de los socios. también de los clubes con los que administrar los comercios adheridos en
jugará. los que obtienen beneficios dichos
Debe enviar las notificaciones con los usuarios y la administración de los
resultados de las evaluaciones y el sorteos.
comprobante de cobro para que el También será responsable de la
hincha pueda completar su trámite de publicación de las noticias del club y de
asociación al club. los eventos del minuto a minuto de los
partidos que esté jugando el club.
La intención es que el usuario de la aplicación Fanáticos del Fútbol (APP FF) pueda acceder a todas las noticias del club por
esa aplicación antes que por otros medios, seguir en vivo los eventos de los partidos y disfrutar de cientos de beneficios
exclusivos, como accesos a entrenamientos, sorteos de entradas preferenciales a partidos, fotos con el plantel, camisetas
firmadas por los ídolos, descuentos especiales en comercios adheridos, entre otros beneficios exclusivos, sólo disponibles
para quienes integren la comunidad virtual del club.
Los usuarios de la APP FF podrán visualizar un catálogo de beneficios de descuentos que el club ofrece. Estos beneficios
pueden ser 2x1 o un porcentaje de descuento en algún comercio con el cual el club tenga convenio. Por ejemplo: 20% o 30%
de descuento en indumentaria deportiva, o bien, 2x1 en entradas para un recital que se realiza en la cancha del club. Cabe
destacar que algunos beneficios son accesibles para todos los usuarios de la APP FF y otros únicamente para aquellos que
son socios del club, por consiguiente, es necesario que se indique en cada beneficio para quienes está dirigido, es decir si es
para cualquier usuario de la APP FF o sólo para los usuarios de la APP FF que además son socios.
Con esta herramienta de comunicación el usuario de la APP FF podrá seguir a su club desde su Smartphone en cualquier
lugar del mundo en el que se esté y vivir desde adentro toda la pasión por su Club y por el fútbol. También, podrá en la
misma aplicación, asociarse al club.
El hincha podrá asociarse al club completando un formulario de solicitud de adhesión al club, con una serie de datos y
adjuntando una foto carnet 4x4 y una fotocopia de su documento de identidad. El Responsable de Socios revisará los datos
proporcionados y las imágenes adjuntas. Si detecta alguna anomalía, rechazará la solicitud o la devolverá al usuario para
solicitarle que adjunte alguna información o corrija algún dato. El Responsable de Socios ha manifestado su necesidad de
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 25 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
mantener información de cada cambio de estado realizado a la solicitud, y de notificarlo a los involucrados, que según sea
el caso serán el hincha y/o el Responsable de Socios.
Si todos los datos de la Solicitud son correctos, se generará un comprobante con el costo de asociación que el hincha, futuro
socio deberá pagar, para poder completar su trámite de asociación. El hincha tendrá 72hs para abonar el comprobante de
inscripción generado, por cualquiera de los medios habilitados.
Las modalidades de pago disponibles para los hinchas serán dos: una en línea (on line) (significa que puede pagar desde su
dispositivo) y la otra fuera de línea (off line) (significa que el pago se hace en una entidad que luego deriva la información
por algún medio al Club). Para el caso de cobro fuera de línea, diariamente las entidades que trabajan con esa modalidad
envían la información de los cobros realizados. Una vez transcurrido ese tiempo, si no se informó el cobro, el comprobante
de pago y la solicitud para asociarse quedan anuladas.
El responsable de la gestión de las noticias, los beneficios y los sorteos, es el Administrador de Redes Sociales (Community
Manager). También será responsable de la publicación de los eventos de cada partido (inicio/fin de primer/segundo tiempo,
goles, tarjetas amarillas/rojas, cambios, etc.) en tiempo real.
La administración de los campeonatos y clubes contra los que jugará el club, los diferentes partidos, será realizada por el
Administrador del Club.
El club ha informado que cuenta con un servidor que podrá utilizarse en forma dedicada para la base de datos y otro donde
se instalarán la capa de aplicación y la capa web.
Este listado si bien no está completo, describe parte de la funcionalidad que será suficiente para comprender el alcance de
la aplicación.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 26 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
7. Consultar noticias Consultar los detalles de una noticia publicada. Usuario APP FF
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 27 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Diagramar fixture de Registrar cada uno de los partidos en los que el club jugará Administrador del
20. campeonato en un campeonato ya registrado en el sistema. Club
Registrar inscripción a Registrar la inscripción de un usuario de APP FF para que Usuario APP FF
25. sorteo pueda participar de un sorteo vigente.
Visualizar información de Visualizar los eventos importados relacionados a un partido Usuario APP FF
28. sucesos de un partido en el que el club está jugando en ese momento.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 28 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Registrar Comercio Registrar los datos de un comercio adherido que estará Administrador de
34. Adherido vinculado con algún beneficio que ofrecerá la APP FF. Redes Sociales
Consultar Comercio Consultar los datos de uno o más comercios adheridos en Administrador de
36. Adherido función de criterios predeterminados. Redes Sociales
Consultar Socio Consultar los datos de uno o más socios en función de Responsable de
44. criterios predeterminados. Socios
Enviar notificaciones a Generar e enviar notificaciones sobre las noticias del club,
usuarios de la APP FF sorteos, beneficios y también sobre los eventos minuto a
45. Tiempo
minuto de los partidos que juega el club a los usuarios de la
APPFF.
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 29 de 30
Universidad Tecnológica Nacional- FRC /FRVM
Cátedra de Diseño de Sistemas de Información
Tabla de Contenidos
Contenido
Guía de Ejercicios Prácticos Complementarios sobre Diseño de Arquitectura de Software __________________ 1
Consignas de Trabajo para los EPC: ___________________________________________________________ 1
Dominio: Bus turístico _____________________________________________________________________ 2
Caso de Estudio: Publicidad Multipunto ________________________________________________________ 9
Caso de Estudio: App Mobile para Reclamos ___________________________________________________ 16
Caso de Estudio: App Fanáticos de Fútbol (APP FF) ______________________________________________ 24
2023 DSI Guía de EPC sobre Diseño de Arquitectura de Software.docx – Versión 1.2
Página 30 de 30
Universidad Tecnológica Nacional - Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
Autores: J. Meles – C. Massano – L. Covaro - G. Boiero- E. Jeinson- F Bene
Complejo de Cines:
Un complejo de cines que está integrado por varios cines ubicados principalmente en los centros comerciales
de la ciudad, cada cine cuenta con una cantidad de salas, que son las que exhiben las distintas funciones
cinematográficas. La programación de las salas se renueva en forma semanal, existiendo la posibilidad de
que algunas salas queden sin uso. Cabe mencionar que no todas las salas tienen la misma capacidad
(cantidad de butacas).
La programación es la que determina que películas van a proyectarse y los horarios para cada función de
cada sala, para todos los cines. Esta programación se realiza en forma centralizada, desde la administración
del Complejo, tomándose como base la información de las películas próximas a estrenar, que envía el INCAA
(Instituto Nacional de Cines y Artes Audiovisuales). La programación implica el diseño de las funciones y sus
horarios en forma anticipada, debiendo el responsable de la misma, habilitar cada función en el momento
que desee permitir la reserva y/o venta de entradas para la misma.
Cada cine del complejo cuenta con una cartelera electrónica que proyecta las funciones vigentes
mostrando: película, calificación, horario, estado de la función en cada momento. Esta cartelera la actualiza
el sistema conforme el paso del tiempo y la venta de las entradas.
El complejo vende entradas en mostrador para las funciones que están exhibiéndose en ese momento o para
funciones posteriores.
La entrada que se le entrega al cliente representa el comprobante de venta, debiendo contener como datos:
nro. de venta, fecha de venta, número de función, sala en la que se proyecta la película, el nombre de la
película, fecha y hora de la función, el precio y el tipo de entrada (si es mayor, menor, jubilado). Es importante
destacar que la entrada es válida únicamente para la fecha, hora y función indicadas en la misma, si bien no
es frecuente se pueden atender devoluciones de entradas vendidas.
Los tipos de entradas y los días y horarios de proyección son los que determinan el precio de la entrada. Las
funciones admiten ciertos tipos de entradas y otros no, dependiendo de factores como: horarios, calificación
de las películas, etc. Por ejemplo: si una película está calificada como para mayores de 16 años, para esa
función no se pueden vender entradas de TIPO = MENOR.
Cada función tiene asociado un tipo de función, que determina si la función es un pre-estreno, uno estreno,
una función normal.
Además la dirección del complejo suele implementar promociones para publicitarse, las mismas son variables
en el tiempo, ejemplo de algunas promociones: Dos entradas al precio de una, entradas a un precio más
económico, entradas gratis a cambio de cupones, que pueden aplicarse a una película en particular o a uno
o más tipos de función. En cualquier caso las promociones no son acumulables (no aplica más de una a la
vez).
La dirección del Complejo ha decidido incorporar nuevos servicios que beneficien a sus clientes, siendo estos
los que se mencionan a continuación y para los que se deberán diseñar los procesos de negocio
correspondientes.
Reserva de entradas telefónicamente y a través de la Red Internet, las cuales solo pueden retirarse por medio
de máquinas expendedoras. Cabe aclarar que el servicio de información y reserva telefónico está
centralizado en la Administración del Complejo. Al momento de crearse la reserva se calcula la vigencia de
la siguiente forma: dos horas antes de la hora de la función de la primera función reservada, es decir que si
hay reservas para funciones de diferentes días, se toma como referencia la fecha de la función más cercana.
Consulta de películas vía Web.
1 1..*
«entity» «entity»
Funcion funcion Cine
diaSemana 0..* direccion
duracion fechaInauguracion
fechaHabilitacion nombre
0..*
horaInicio buscarDisponibilidadSalasParaPeriodo()
numero «entity»
buscarPreciosEntrada()
Programacion
programacion
calcularDisponibilidad() mostrarCine()
capacidadSala() estado obtenerInfoHorariosFuncion()
controlarHoraFuncion() funcion fechaFinProgramacion
estaEnLaFuncion() fechaInicioProgramacion 1
estasIniciada() fechaProgramacion cine
1..*
hayLugar() horaProgramacion
permiteVenta() estáCompleta()
estaEnPeriodoVigencia()
1 funcion 1 estaIniciadaFuncion()
estaVigente()
«Pre-condition» mostrarProgramacion() «entity»
{validar que cada
objeto precio que «entity» Promocion
está asociado a un Recurso cantEntradasInvolucradas
objeto función no
repita la sesion apellido descripcion
1
combinación de dni fechaFin
TipoEntrada / «entity» domicilio fechaInicio
TipoFunción, es Sesion montoFijo
decir no debe legajo
nombre nombre
haber más de un fechaFin
precio para el sesion palabraClave pelicula
fechaInicio
mismo Tipo de 0..* permisos porcentajeDto
Entrada y Tipo de
horaFin
tipoFuncion
Función} horaInicio conocerPermisos()
1 conocerPelicula()
conocerCine() conocerSesion()
getNombre() conocerTipoFuncion()
1 mostrarCine()
estaVigente()
anuló mostrarRecursoActivo()
obtenerRecursoSesion() promocion existeNombre()
existeParaPelicula()
1 0..1
existeParaTipoFuncion()
1 1
«entity» creó
Entrada
precio
fechaFuncion
fechaVenta 1..*
0..*
horaFuncion «entity» tipoFuncion 0..*
horaVenta Precio
precio precio 0..*
pelicula 1 horarioFunción
fechaFin tipoFuncion «entity»
precioCobrado
sala fechaInicio TipoFuncion «entity»
1
monto anuló HorarioFuncion
ticketNro creó descripcion
estaAnulada() estaVigente() nombre diaDeSemana
tenesEstosTipos() «entity»
duracionIntervaloFunc
canceló Reserva
duracionPublicidad
fechaCancelacion esTrasnoche
fechaReserva horaPrimeraFuncion
tipoEntrada fechaVigencia horaUltimaFuncion
1 horaReserva
mostrarHorarioFuncion()
horaVigencia
«entity» numero
cupon 0..1 TipoEntrada numeroDni
descripcion tipoDocumento
«entity» nombre determinarVigencia()
Cupon vigente estaVencida()
cantCuotas estaVigente()
1
codigoAutorizacion tipoEntrada existeReserva() estado
fechaGeneracion mostarFuncion()
mostrarDatos() estado
monto «entity» «entity»
numero DetalleReserva Estado
cantidad 1..* 1 1
detalleReserva ambito
fechaCancelacion descripcion
marcaTarjeta horaCancelacion
1 nombre
estaVigente() esAmbitoDetalleReserva()
«entity» mostrarDatos() esAmbitoReserva()
MarcaTarjeta mostrarFuncion()
domicilio tenesEstaFuncion()
medioAutorizacion estado 1 1 1
1
nombre
telefono estado estado
estado
En una localidad del interior de la provincia de Córdoba funciona desde hace más de 25 años un importante
semanario llamado “Tribuna”. Dicho semanario sale a la calle los días sábados, cubriendo las noticias y sucesos
de la localidad y región. A continuación se describirá la gestión de clasificados. La recepción de clasificados
puede ser vía telefónica, personalmente en las distintas receptorías de la localidad y región o, solamente para
algunas empresas que hace bastante tiempo publicitan en el semanario, se hacen recepciones vía e-mail.
Los avisos que se publican en la sección “Clasificados”, están a su vez diferenciados en distintas categorías y
a su vez cada categoría puede o no tener sub categorías. Por ejemplo, la categoría “Profesionales” se
subdivide en Oncología, Abogacía, Odontología, etc.la de “empleos y ocupaciones” en pedidos y ofrecidos,
pero la categoría de “Servicios” no tiene ninguna sub categoría. El orden de las categorías en la edición
impresa tienen un orden establecido, pero, eventualmente éste orden puede alterarse. El aviso puede ser de
texto plano o puede tener alguna imagen (en ese caso, el cliente debe enviar el diseño del aviso) y, por
política del Semanario, no en todas las categorías y sub categorías se puede publicar cualquier tipo, por
ejemplo en la categoría. El precio del aviso varía según el tamaño, el tipo, el formato y la cantidad de sábados
que aparecerá publicado, y esto está previamente definido. Los formatos están predefinidos, tienen un
nombre distintivo y definen qué fuente tendrá el aviso y el tamaño, cuál será el espaciado (anterior, posterior,
interlineado), cantidad de palabras en mayúscula, y otros efectos como cursiva, negrita y subrayado.
Receptoria
nombre
numero
ubicacion
receptoria 1
Estado
descripcion
nombre Aviso
esVencido() estado diseño
estado
1 fechaDePrimerSabado
fechaDeRecepcion
fechaDeVencimiento
DiseñoAdjunto
precio
descripcion diseñoAdjunto receptoria
nombre texto
0..1
urlArchivo buscarFormato()
PrecioAviso
calcularPrecio()
conocerDiseñoAdjunto() cantColumnas
conocerEstado() cantLineas
precioAviso
conocerPrecioAviso() categoria
conocerPromocion() fechaVigenciaDesde
conocerReceptoria() 1 formato
estaVencido() monto
getParametroOrdenamiento() subCategoria
aviso
getTexto() tipoAviso
aviso
verificarTipoAviso() buscarFormato()
verificarVencimiento() conocerCategoria()
Categoria
0..* 0..* conocerFormato()
aviso conocerSubcategoria()
componentes categoria
conocerTipoAviso()
descripcion subcategoria
esTipoDeAvisoDiseño()
nombre
numOrden 0..1
Subcategoria 0..1
subcategoria aviso
tipoAviso descripcion
ubicacion nombre
agregar(IComponenteAviso) tipoAdmisible
buscarAvisos() ubicacion
buscarDatosAvisos() agregar(IComponenteAviso)
subcategoria
buscarFormartoAvisos() buscarAvisos()
buscarSubcategorias() buscarDatosAvisos()
conocerAviso() 0..* buscarFormartoAvisos()
conocerSubcategoria() conocerAviso()
conocerTipoAviso() conocerTipoAviso()
eliminar(IComponenteAviso) eliminar(IComponenteAviso)
getNombre() getNumero() Espaciado
getNumeroOrden() getNumeroOrden()
listarSubcategoria() espaciadoAnterior
mostrarSubcategoria() espaciadoPosterior
obtenerHijo() obtenerHijo()
ordenarAvisos() interlineado
ordenarAvisos()
tieneSubcategoria() verificarTipoAviso() mostrarEspaciado()
verificarTipoAviso() verificarVencimiento()
verificarVencimiento()
formato 1
espaciado
tipoAviso 1..* 1
Fuente
TipoAviso Formato
tipoAviso descripcion
descripcion cantPalabrasMayuscula nombre
nombre efecto mostrarFuente()
1..* fuente
espaciado
esDiseño() tipoAviso Efecto fuente 1
1 nombre
descripcion efecto
tamañoFuente
nombre 0..*
buscarEspaciados()
buscarFuente()
conocerEfecto()
conocerEspaciado()
conocerFuente()
mostrarFormato()
Estación de Servicios
Una Estación de Servicio de una conocida marca, ubicada en el centro de la ciudad, se dedica a la venta
de combustibles (gasoil, nafta común, nafta súper y nafta ultra) y lubricantes. Los clientes que llegan a la
estación de servicio con la intención de cargar combustible deben esperar a que un encargado de playa lo
atienda, solicitarle el combustible deseado y aguardar a que se realice el expendio en uno de los cinco
surtidores disponibles. Una vez realizado el expendio de combustible, el cliente se dirige a la caja, en donde
el cajero se informa de las ventas realizadas en la playa (los expendios que se realizan se van agregando a
una lista de pendientes para cobrar) y le cobra al cliente en función del surtidor en el que éste le informe que
se realizó el expendio. Otros servicios que brinda la Estación de Servicio a sus Clientes son las distintas formas
de lavado de vehículos y el cambio de aceite y filtros. Para la realización de los servicios se aceptan reservas
previas.
Los tipos de lavado que se ofrecen son: lavado de carrocería, lavado de motor y lavado de interiores. Cuando
un cliente desea realizar a su vehículo algún tipo de lavado (puede ser uno o varios), debe dirigirse al sector
“Lavadero”, donde el encargado de lavados le recibe el auto y le informa a que hora puede venir a retirarlo.
Cada cinco lavados de motor o carrocería indistintamente, se regala al cliente un cambio de aceite. El
cambio de aceite de los vehículos se realiza en el sector correspondiente; el cliente debe dirigirse allí para
dejar su vehículo. El pago de todos los servicios anteriormente mencionados puede realizarse con efectivo,
ticket de combustible, tarjeta de crédito o tarjeta de débito. La Caja está centralizada para todos los servicios,
existiendo un único puesto de cobro. Con respecto a la venta de combustibles, cuando es en efectivo, puede
darse la situación que el encargado de playa sea quien cobra y al final del día le rinda al cajero. En caso de
pagarse en Caja, la emisión del ticket debe tomar un tiempo máximo de 5 segundos.
Semanalmente, se reabastece de combustible a la Estación de Servicio por medio de camiones que los
proveen. Cada vez que sucede esto se deben deshabilitar todos los surtidores para realizar la carga en el
tanque subterráneo correspondiente. Cada tanque corresponde a un único combustible y abastece a cada
uno de los expendedores de los diferentes surtidores de la playa. Cuando el tanque contiene una cantidad
de combustible tal que no puede seguir expendiéndose combustible, es necesario deshabilitar todos los
expendedores asociados a ese tanque. El tanque tiene que tener una cantidad mínima de litros que al menos
logre cubrir la carga completa de un vehículo grande por surtidor, considerando que todos los surtidores están
expendiendo combustible en el mismo momento. Cada surtidor tiene cuatro expendedores de combustibles
distintos, es importante aclarar que no se puede realizar expendios simultáneos en un mismo surtidor, pero los
cinco surtidores pueden realizar expendios en un mismo momento. En el visor que contiene el surtidor, se
informa el precio del combustible que se está vendiendo, la cantidad de litros y el precio total de la venta.
Todas las instalaciones deben cumplir con las normativas ambientales y legales establecidas por los
organismos de control locales. Se ha solicitado que las pantallas se visualicen en tonos azules coincidentes
con los colores del logo de la marca de la estación de servicio, además se debe incluir el logo de la marca
en las pantallas.
La cadena de estaciones de servicios ha adquirido los productos de Oracle para gestionar las bases de datos,
por lo que se ha solicitado utilizar estos productos para definir las bases de datos de la estación de servicios.
Cabe aclarar que el sistema a desarrollar es para una estación de servicios en particular y no se requiere
establecer conexiones mediante el sistema con otras estaciones de servicio de la misma cadena.
FormaPago Cliente
Cupón
nombre Cobro nombre
MarcaTarjeta númeroT arjeta
descripción fecha DNI
1 1 fechaVencimiento
formaPago : FormaPago nombre teléfono
marcaTarjeta : MarcaT arjeta
mostrarDatos() habilitada 1 reservas : Reserva
cupón : Cupón cliente : Cliente
númeroT icket 0..1
detalle : DetalleCobro actualizarVigenciaPrestacionPorVehiculo()
conocerMarcaTarjeta()
Cargo conocerHistorialUsosServicios()
cajero : Recurso
nombre conocerReservas()
descripción Modelo Vehículo conocerReservasVigentes()
conocerCupón()
nombre año 0..* contarPrestacionesVigentesParaPromoción()
conocerFormaPago()
1 conocerRecurso() descripción patente contarPrestacionesVigentesPorVehiculo()
1 tipoVehículo : T ipoVehículo
mostrarDetalle() marca : Marca
modelo : Modelo
conocerMarca() combustible : Combustible
Recurso 1 Marca prestaciones : PrestaciónServicio
1 0..*
nombre nombre T ipoVehículo
domicilio descripción conocerCombustible() nombre Reserva
DNI 1 conocerModelo() descripción fechaAlta
legajo conocerPrestacionPorServicio()
fechaReserva
teléfono PrestaciónServicio conocerT ipoVehículo()
horaReserva
cargo : Cargo fecha servicio : Servicio
1..* 1 0..*
hora estado : Estado
conocerCargo() servicio : Servicio usoServicio : PrestaciónServicio
0..*
...
vigenteParaPromoción
1 recurso : Recurso conocerEstado()
kilometraje conocerServicio()
0..1
estado : Estado conocerUsoServicio()
vehículo
Servicio
1 1
conocerEstado() nombre Relación con
conocerRecurso() descripción Promoción Combustible: Precio
conocerServicio() precioActual : Precio por Litro
nombre
1..* servicioT ienePromoción() promociones : Promoción Relación con servicio:
0..* fechaAlta
0..1 insumosNecesarios : Insumo fechaInicioVigencia precio único
DetalleCobro fechaFinVigencia
consumo : Consumo calcularPrecio() descripción
insumo : InsumoVendido conocerPrecioActual() cantidadPuntos
PrestaciónServicio : PrestaciónServicio conocerPromocionesVigentes() servicioPromocionado : Servicio
importe existenPromociones()
Precio
conocerConsumo()
precio
conocerPrestaciónServicio()
fecha
calcularImporte()
conocerInsumo() 1 tipoVehículo : T ipoVehículo
0..*
new() Insumo 1
Estado 1 conocerT ipoVehículo()
nombre Ámbito
nombre
descripción 1..* nombre 1
descripción 1
precio descripción
mutuamente ámbito : Ámbito
excluyentes 1
mostrarDatos() 1 getNombre() HistorialPrecio
1
1 fechaAlta
motivo
0..1
T anque precio : Precio
InsumoVendido
1 capacidad
cantidad litrosActuales crearPrecio()
estado : Estado 1
estado : Estado 0..*
insumo : Insumo combustible : Combustible
número
estáPendienteCobro() cantidadLitrosMínima
... 1
0..1
Combustible
Consumo actualizarLitrosActuales()
nombre
fechaInicio conocerCombustible()
octanaje
horaInicio conocerEstado()
0..1 precioActual : Precio
fechaFin
Surtidor historialPrecio : HistorialPrecio
horaFin
número 1
litrosConsumidos Expendedor
fechaAlta conocerHistorialPrecios()
combustible : Combustible número
ubicación conocerPrecio()
estado : Estado fechaAlta
recurso : Recurso estado : Estado Recarga
posiciónEnSurtidor
expendedores : Expendedor estado : Estado fecha
conocerCombustible() fechaBaja consumos : Consumo litrosRecargados
0..* tanque : T anque
conocerEstado() tanque : T anque 1
conocerRecurso() conocerEstado()
estaPendienteCobro() conocerExpendedores() conocerCombustible() conocerCombustible()
mostrarTotalDeConsumo() descontarLitrosDescargados() conocerConsumos() conocerT anque()
conocerEstado()
conocerT anque()
0..*
9. Resolver el comportamiento que debería asumir el expendedor en función de las actividades que
puede realizar en distintos momentos.
10. Se pretende optimizar la utilización de la memoria, por lo que se requiere resolver el problema de no
crear instancias innecesarias de los estados, si ya existe en memoria una instancia del mismo estado.
11. Resolver como se realizará el cálculo de los importes parciales en el momento de registrar el cobro,
considerando que los cobros parciales se calculan al registrarse el cobro de los consumos pendientes
de cobro, las prestaciones de servicio y los insumos comprados por un cliente. Mostrar la dinámica del
cálculo de un cobro parcial de una prestación de servicio.
12. Considerar para el momento de la obtención de reportes de consumo de combustible, la manera de
obtener los consumos que es necesario incluir en el reporte.
13. Solucionar el problema de cómo deshabilitar a los expendedores abastecidos por un tanque cuando
el mismo no tiene la cantidad de combustible suficiente para abastecerlos.
Tours
Una agencia de turismo se dedica a armar tours por Europa donde el traslado durante el tour y los hoteles en
cada ciudad visitada. Además se incluyen algunas excursiones para cada ciudad incluida en un tour. La
agencia tiene definidos tours de una duración fija, a partir de los cuales se organizan viajes con diferentes
fechas de salida.
Un tour tiene previamente definidos un conjunto de hoteles que se pueden ocupar en cada ciudad. En el
momento de definir un viaje se decide cuál de los hoteles disponibles será ocupado y en qué habitación se
ubicará a cada pasajero. Para esto se tiene en cuenta si los pasajeros vienen en grupos de amigos y/o
familiares, y qué capacidad de habitación solicitaron.
Para realizar un viaje se arman grupos de pasajeros a los cuales se les asigna un colectivo y un chofer. En el
momento en que se diagrama un viaje de un tour se debe asignar un guía que acompañe a los pasajeros en
cada ciudad a visitar. La diagramación de un viaje incluye además la asignación de guías locales.
class ModeloDeAnálisis
«entity» «entity»
Pasaj ero HabitaciónContratada
«entity»
Grupo - dni - cantidadCamasDosPlazas
- domicilio - cantidadCamasUnaPlaza
- asignado pasajeros habitación
- nombre - capacidad
- fechaCreación 1..* - teléfono 1..*
+ esDeFechaDeTour()
+ getDatosGrupo() + getCapacidad()
+ contarHabitaciones()
+ ocuparHabitaciones() + ocupar()
+ getDatosPasajero()
+ ocuparHabitaciones()
0..*
ciudadDeHabitación
habitaciónAsignada
ocupaciónDeHabitaciones
«entity» 1 0..1
Tour
«entity» «entity»
- fechaRegreso DetalleTour HabitaciónHotel
- fechaSalida
- fechaLlegada - cantidadCamasDosPlazas
detalles - cantidadCamasUnaPlaza
+ buscarHotelesDeViaje()
1..* + getFecha() - capacidad
+ esMayorQueFechaActual()
+ getDatos() + getFechaLlegada()
+ getHotel() + estáLibre()
+ mostrarFechasdeLlegadaViaje()
+ ocuparHabitacionesDeHotel() + getCapacidad()
+ mostrarGrupos()
+ ocupar()
+ ocuparHabitaciones()
+ tienePasajeros()
1..*
0..* definiciónTour hotelReservado
tour 1 habitaciones
«entity» 0..1
1
DefiniciónTour
«entity»
«entity» Hotel
- duraciónDías
DetalleDefiniciónTour
- nombre
- descripción
- tour - cantidadDías - nombre
detalles - orden
+ buscarFechasDisponsibles() 1..* + buscarHabitacionesLibresParaFechas()
+ buscarHotel() + getCantidadDías() + getHabitaciones()
+ getFechasDisponiblesConPasajeros() + getCiudad() + getNombre()
+ getNombre() + getHotel() + ocuparHabitaciones()
+ mostrarFechasLlegada()
+ mostrarGrupoDePasajeros() 0..*
ciudad hoteles
+ ocuparHabitaciónPorPasajeros()
1
«boundary»
«entity»
PantallaAsignaciónHabitaciones
Ciudad
«control» - botonAceptar: Botón
- nombre
GestorAsignaciónHabitaciones - botonCancelar: Botón
- comboFechas: Combo
- fechaActual + getNombre()
- comboHabitación: Combo
- tours: DefiniciónTour - comboTour: Combo
- tourSeleccionado: DefiniciónTour - etiquetasDíasHospedaje: Etiqueta[]
- etiquetasGrupo: Etiqueta[]
+ asignarHabitación() - etiquetasHabitacionesLibres: Etiqueta[]
+ buscarFechasConPasajero() - etiquetasHotel: Etiqueta[]
+ buscarHotelesContratados() - grillaPasajeros: Grilla
+ buscarToursDisponibles() - solapasCiudad: Solapa
+ finCU()
+ mostrarDetalleTour() + solicitarConfirmación()
+ nuevaAsignaciónDeHabitaciones() + solicitarSelecciónHabitación()
+ tomarFecha() + solicitarSelecciónTour()
+ tomarHabitaciones() + tomarOpciónAsignaciónDeHabitaciones()
+ tomarTour() + tomarSelecciónConfirmación()
+ validarCapacidad() + tomarSelecciónFecha()
+ tomarSelecciónHabitaciónContratada()
+ tomarSelecciónHabitaciónHotel()
+ tomarSelecciónTour()
14. Considerar la manera de tener un acceso controlado a los servicios que brinda el subsistema de
hotelería, en lo que se refiere a la diagramación de los tours y posterior contratación de los mismos.
Modelar la vista dinámica del acceso a la diagramación de los tours.
15. Resolver la forma en que al habilitarse las pantallas de diagramación, modificación y consulta de la
asignación de habitaciones se muestran los componentes de la pantalla, considerando que los
componentes son los mismos para todas las pantallas pero se muestran habilitados o deshabilitados
según permitan o no la edición los datos. Mostrar la vista dinámica de la pantalla de diagramación
de la asignación de habitaciones.
El sistema de transporte público de la Municipalidad de Córdoba está integrado por colectivos, trolebuses,
taxis y remises. Para cumplir con el objetivo de trasladar los pasajeros de un punto a otro dentro de la
ciudad, se han establecido corredores que conectan determinados sectores de la ciudad. Cada corredor
cuenta con distintos recorridos que se asignan a una Línea de Colectivos o Trolebús determinada, de la
empresa. Cada recorrido, cuenta con paradas identificadas como “zona”. Las paradas pueden ser
utilizadas por distintas líneas y empresas.
Cada unidad de transporte está dotada con una máquina “Canceladora” que permite registrar el pago del
viaje. Cada vez que un usuario sube a un colectivo según el medio de pago que utilice ocurre lo siguiente:
Al final del turno, el chofer emite un comprobante desde la máquina canceladora en el que figura un
resumen de las transacciones realizadas por tipo y le permite saber cuántos cospeles debe rendir a la
empresa.
16. Definir una estructura flexible que permita manejar de manera sencilla la organización de corredores,
recorridos y paradas del sistema de transporte público masivo.
17. Resolver la administración de un Cierre de Turno generado para el caso que sea necesario restaurar el
Informe de cierre si ocurre un problema de impresión al momento de su emisión.
Líneas Aéreas
Una línea área desea implementar una página web en la cual sus potenciales pasajeros podrían consultar la
disponibilidad de vuelos a los diferentes destinos que ofrece la compañía. Para cada uno de estos destinos
(ciudad origen – ciudad destino) se determina una vigencia ya que en determinadas épocas del año pueden
o no ofrecerse, y esto es tenido en cuenta a la hora de diagramar los vuelos.
Además la página debe ofrecer un seguimiento de los vuelos, para lo cual el sistema que las soporte debe
registrar en cada momento la situación en la que se encuentra cada vuelo, ya que los mismos una vez
programados pueden concretarse, demorarse o cancelarse. Si para un vuelo programado ha llegado el
momento de embarque, el sistema debe informarlo para permitir registrar si el embarque se ha concretado o
no. Si esto fue posible, el sistema informará que se está embarcando o de lo contrario informará que el mismo
se encuentra demorado.
18. Al cancelarse un vuelo el sistema deberá notificar automáticamente esta situación a los distintos
interesados (cartelera de publicación de vuelos o pantalla de consulta del Sitio WEB de la aerolínea).
Para ello tendrá que diseñarse un esquema de notificación que sea genérico y flexible para permitir
informar en tiempo real y simultáneamente a los distintos interesados. A su vez, este esquema tendrá
que proporcionar la información referente a la cancelación (fecha, motivo, descripción y responsable)
para los interesados que lo requieran.
Una empresa privada se dedica a prestar el servicio de agua potable a diferentes ciudades del interior de la
provincia de Córdoba. Para realizar la facturación un grupo de empleados responsables de medición debe
recorrer la ciudad correspondiente controlando los medidores de agua.
Cada ciudad está divida en zonas, para cada zona se asigna un empleado responsable de tomar las lecturas.
Para tomar las lecturas cada responsable de medición cuenta con un captor y una impresora para generar
la factura asociada a un medidor. En la casa central de la empresa se deben actualizar los datos de los
captores, tomando de una base de datos centralizada la información correspondiente a cada zona:
propiedades incluidas en una zona, última lectura de cada propiedad, datos del medidor de cada
propiedad, ruta de lectura de la zona y número de orden de lectura de cada propiedad. Con esta
información cada responsable de medición debe seguir la ruta indicada y realizar las mediciones
correspondientes.
Al comprarse los medidores se guardan en un depósito, hasta ser asignados a una propiedad, en ese
momento se les asigna un número de medidor y se pega una etiqueta con éste número para que el
responsable de medición lo identifique con facilidad.
Cada propiedad cuenta con un único medidor. Cuando un responsable de medición llega a una propiedad,
controla el medidor y registra en el captor la lectura. Una vez tomada una lectura el responsable de medición
genera la factura correspondiente. Al registrar la lectura en el captor calcula el consumo actual desde la
última lectura tomada.
19. Hallar la forma de recuperar las propiedades correspondientes a la zona asignada a un captor
mostrando para las mismas el número de medidor asociado.
Asignación de Aulas
La Universidad Nacional de Córdoba posee en la ciudad universitaria baterías de aulas comunes que son
asignadas a las distintas facultades que no cuentan con infraestructura propia suficiente para todas sus
materias. Esa asignación se realiza a principio de año previendo el funcionamiento de materias anuales y
cuatrimestrales. Cada facultad debe hacer una solicitud detallando la carrera, la materia, la cantidad de
alumnos estratificados en rangos (ej.: 1-20, 21-30, 31-40, etc.), si el dictado es teórico o práctico, qué butacas
necesita (auditorio o sillas móviles para formarse en grupos), el nombre del docente a cargo y docente/s
dictantes. Si hay algún problema de movilidad y acceso para docentes o alumnos. Además debe explicitarse
los días y horarios de cursado ordinarios y si el docente hará uso de medios de proyección ya que el aula debe
poder oscurecerse. Las materias que se dictan más de una vez a la semana, deben detallar todos los días y
horarios en que se dictan.
Para exámenes y parciales se deben completar nuevas solicitudes, ya que en general los requerimientos
cambian.
Una vez vencido el plazo de presentación de solicitudes para materias anuales y cuatrimestrales, un
administrativo de la Secretaría General de la Universidad, busca las aulas más adecuadas para tratar de
satisfacer las necesidades de cada uno y realiza las asignaciones de acuerdo a los calendarios académicos
autorizados por cada facultad. Algunas materias no consiguen aulas totalmente adecuadas a lo que
solicitaron. En este caso, el administrativo consulta al solicitante si puede resignar alguna de las restricciones
(salvo la de la capacidad requerida). Si es así, realiza la asignación de todos modos.
Por determinados eventos declarados como de Interés de la Universidad, se puede suspender la asignación
de algún aula, y tratar de reasignar otro espacio para no entorpecer el normal funcionamiento de las clases
durante estos eventos que son Congresos, Conferencias y otras actividades organizadas por las mismas
facultades. Los espacios se consiguen únicamente con la condición de que la solicitud esté autorizada por el
Decano de la facultad.
20. Diseñar el comportamiento variable del método asignar() de la solicitud en función de la situación en
la que la misma se encuentre
reposición de aquellos que están en falta. Las ventas concluyen cuando Arg-Computers entrega la totalidad
de los productos correspondientes a las solicitudes de reabastecimiento.
Elecciones
Un partido político decidió encargar un sistema que registre los resultados electorales para poder tener un
contralor de los datos oficiales. La estructura geográfica considerada en una elección es la siguiente: El país
está divido en diferentes provincias, cada provincia está organizada en departamentos que están
compuestas por localidades. Cuando una localidad tiene una gran cantidad de habitantes es dividida en
diferentes circuitos que y cada circuito contiene un conjunto de establecimientos (escuelas, facultades, etc.)
en donde se encuentran ubicadas las mesas donde se realiza la elección. Las mesas están numeradas
unívocamente y se clasifican en femeninas, masculinas, extranjeras y militares. Los circuitos se identifican con
un nombre de circuito o seccional y un número. Hay que tener en cuenta que en un mismo establecimiento
pueden existir mesas femeninas y masculinas. Para cada mesa se debe determinar a partir de qué apellido y
hasta que apellido se incluye.
Cuando se convoca una elección, el juzgado electoral que es autoridad en cada distrito (provincia), fija una
fecha - siempre en día domingo - y se declara qué cargos se renovará.
Dependiendo del distrito del que se trate, se eligen distintos cargos y existen distintos cargos, según lo
establezca la Constitución de cada provincia. Al momento de registrar los resultados, se solicita que estos
puedan registrarse por mesa, o por grupos de mesas. Una vez cargado, ese resultado tiene carácter de
provisorio. Hay supervisores de carga, que controlan los resultados cargados por los data entry y los confirman
o los anulan. Cuando se anula un resultado, la mesa o el conjunto de mesas involucradas vuelven a aparecer
como “no escrutadas” y se les puede volver a cargar un resultado.
22. Definir una estructura flexible que permita manejar de manera sencilla la jerarquía de la estructura
geográfica.
23. Diseñar el comportamiento variable de la mesa dependiendo de la situación en que la misma se
encuentre.
Campeonato Náutico
Un club a las orillas del lago San Roque organiza campeonatos náuticos durante todo el año. Cada
campeonato es de un único tipo de embarcación y consiste en una o más regatas. Una regata es una carrera
entre un conjunto de veleros, tablas de windsurf, motos náuticas u otras embarcaciones, que tiene una ruta
predefinida.
Cada campeonato define un conjunto de restricciones que deben cumplir los participantes y las
embarcaciones para poder participar, como ser un rango de peso y tamaño, una forma de tracción
determinada (a vela, con motor, a remo) y ciertas medidas de seguridad definidas (barandas, salvavidas para
todos los miembros de un equipo). Los campeonatos tienen un máximo permitido de participantes.
Los campeonatos pueden ser por equipo o individuales, donde cada miembro del equipo puede formar parte
de una única embarcación en un mismo campeonato. Al inscribirse a un campeonato, si la participación es
por equipo, se debe definir un capitán del equipo y un nombre de equipo. En caso de ser un campeonato
por equipo está definido un rango permitido de cantidad de participantes y cada participante puede
pertenecer a un único equipo.
Al realizarse una regata se registra la hora de inicio de la misma, y al finalizar se registran las horas de llegada
de cada uno de los equipos o participantes individuales. Luego se generan los reportes donde se informan las
posiciones de los distintos participantes en cada regata, y los resultados finales en cada campeonato.
Campeonato
fechaInicio : Date Premio Proveedor
fechaFin : Date descripción nombre
+proveedor
cantidadMaximaPorEquipo posición dirección
cantidadMínimaPorEquipo 1 teléfono
cantidadMáximaInscriptos +premio 1..*conocerProveedor()
esPorEquipo
montoInscripción
nombre
Regata
Ruta
calcularMetrosTotales() fechaInicio : Date
cantidadVueltas : Integer
calcularDuración() fechaFin
nombre : String
determinarGanador() horaInicioPlanificada : Time +ruta
determinarPosición() +regatas horaInicioReal
conocerTipoEmbarcación() cantidadVueltasRuta 1 getNombre()
1..* getTramos()
conocerRestricciones()
seRealizó(fechaActual : Date) : Boolean getEquipoGanador()
validarUnicidadDeParticipantes() seRealizó() +tramoRegata
validarInscripciónParticipanteACampeonato() getFechaInicio() *
getNombre() : String getHoraInicio() TramoRegata
getRegatas() : Regata[] getRuta() nroOrden
getTipoEmbarcación() : TipoEmbarcacion mostrarDatos() metros
mostrarDatos()
getMontoInscripcion() getNúmero() : Double
+restricciones +posiciones getBoyaInicio() : Boya
1 0..* getBoyaFin() : Boya
+tipoEmbarcación 1..*
calcularDistancia()
1 PosiciónRegata
Restricción getDatosTramo()
horaLlegada +boyaInicio
TipoEmbarcación descripción fechaLlegada
cantidad +boyaFin
nombre : String posición 1
descripción : String esUnMáximo 1
Boya
getEquipoEnPosición()
getNombre() : String getDescripcion() getParticipanteEnPosición() númeroBoya : Double
+campeonato
setNombre() conocerInscripción() anguloDeGiro
getDescripción() calcularTiempoTotal() latitud
setDescripción() getDetalles() longitud
1 getNúmeroBoya()
Inscripción +inscripción Equipo
+TipoEmbarcación
fecha 1 nombre
número
conocerParticipantes()
getParticipantesDeEquipo() +equipo conocerParticipante()
esDeParticipante() +capitan
new() +Sesión +Sesión
Embarcación +participante
crearComprobante() 1 1 1
nombre getNumero() [mutuamente excluyente] 1..*
dominio Participante
+Embarcación conocerComprobante() nombre Sesión
titular cancelar()
alto +participante apellido fechaInicio
1 confirmarParaRegata() dni horaInicio +Sesión
ancho finalizar() 1
largo teléfono fechaFin
aprobarExamenMédico() dirección horaFin
peso rechazarExamenMédico()
reintegrarInscripción() getDNI() : Double 1
esDelTipo() validarAnulación()
cumpleConRestricciones() esDNI() : Boolean
validarParticipación() 1
mostrarDatos()
+estado +comprobanteCobro +Sesión
1 1
Estado ComprobanteCobro +Usuario
nombre número Usuario
descripcion monto nombre
fechaPago contraseña
getNombre()
getDescripcion() new()
getDatos()
24. Resolver el problema de lógica para buscar los participantes o los equipos aptos para ser inscriptos en
un campeonato determinado, teniendo en cuenta cómo se realizará la búsqueda si el campeonato
es en equipo o es para participantes individuales.
NOTA: en el Diagrama de Secuencia enfocar el modelado en detalle sólo para la búsqueda de los
participantes aptos para ser inscriptos.
25. Resolver la forma de recorrer y recuperar los campeonatos que aún no se han corrido y mostrar las
regatas, rutas y tipo de embarcación asociados.
Una empresa de servicios de la Ciudad de Córdoba realiza el corte del servicio a los clientes morosos (cuando
registran 3 facturas impagas) a través de contratistas. Para la gestión de los cortes de servicio necesita un
sistema que permita disminuir los costos, a través de las siguientes acciones:
• Optimizar el trabajo de los inspectores
• Optimizar el uso de materiales
• Realizar el seguimiento del trabajo de la contratista
Diariamente el Administrativo de Gestión de Cortes (AGC) de la empresa asigna a cada contratista las
órdenes de trabajo de corte de servicio a ejecutar (una orden de trabajo por cada cliente y cada asignación
es de una orden de trabajo) y se las entrega impresas. Con la información suministrada (número de orden,
fecha de generación, datos del cliente, dirección en donde efectuar el corte y tipo de corte a realizar.
Las cuadrillas de la contratista ejecutan el corte. Al final del día cada contratista devuelve las órdenes de
trabajo de corte impresas con información de campo del corte realizado, pudiendo ocurrir que existan
órdenes de trabajo asignadas que no se informen porque aún se encuentran pendientes.
Para las órdenes de trabajo de Reconexión también se necesita registrar su ejecución y la información de
campo asociada a la misma. Es importante destacar que es necesario mantener la relación entre una Orden
de Trabajo de corte y las Órdenes de Trabajo posteriores que la misma tiene asociadas.
26. Resolver el problema de creación de reportes tanto en pantalla, impreso o exportado a un archivo. El
reporte tendrá dos secciones: el encabezado (contendrá los filtros ingresados y la fecha de
generación) y el cuerpo (compuesto por los datos del informe).
NOTA: en el Diag. de Secuencia enfocar el modelado en detalle sólo para la generación del reporte
en forma impresa.
27. Diseñar el procedimiento de búsqueda de las órdenes de trabajo que cumplan con los filtros elegidos
para generar el reporte de tiempos de ejecución de las OT.
28. Resolver la forma en la que se manejarán las variaciones de comportamiento de la Orden de Compra,
en función del momento en que se encuentre.
29. Definir cómo se puede resolver la forma de establecer la relación entre la forma de presentación y el
tamaño que puede tener cada uno de los productos.
Contact Center
Se trata de una empresa cuyo objetivo es proporcionar un “centro de atención multimedia como único punto
de contacto”, entre Clientes y consumidores. Contact Center ofrece diferente tipos de servicios tales como:
Atención al Consumidor, Mesa de Ayuda, Telecobranzas, Telemarketing, Televentas, Estudios de Mercados y
Encuestas.
A continuación se describe la operatoria de “Atención al Consumidor”; cada Cliente de Contact Center tiene
una línea telefónica gratuita (0800) a través de la cual, los consumidores pueden realizar consultas o solicitar
información de un producto. Cuando el Representante de Atención al Consumidor atiende una consulta, la
registra en el sistema ingresando los siguientes datos: tipo de consulta, criticidad, producto, nombre, apellido,
domicilio y teléfono del consumidor, descripción detallada de la consulta. El Representante de Atención al
Consumidor analiza el requerimiento y valida en la ayuda en línea la solución; en caso de poder solucionarlo
comunica las acciones a realizarse al consumidor y las registra en el sistema, cerrando la consulta como
resuelta. Si no puede resolver la consulta, la deriva al Grupo de Soporte de Producto (integrado por personal
del Cliente) comunicando al consumidor: número de consulta, tiempo estimado en el que se comunicará
telefónicamente la solución, el cual va a depender del tipo de consulta.
Con el fin de evaluar la calidad de atención y efectividad de las soluciones, Contact Center mantiene el
detalle de todas las acciones realizadas asociadas a una consulta por cada uno de los recursos involucrados,
desde su generación hasta su cierre. Asimismo, diariamente realiza el monitoreo de las llamadas de los
Representante de Atención al Consumidor, el cual se sintetiza en Informes semanales que son enviados al
Cliente. Periódicamente, también envía a cada Cliente un Reporte de Consultas de Consumidores, en el que
se detalla los tipos de consultas realizadas, tiempo de resolución, soluciones brindadas, porcentajes de
llamadas solucionadas por los Representantes de Atención al Consumidor y de llamadas derivadas al Grupo
de Soporte de Producto.
class Modelo de Analisis
«control»
«boundary» GestorReporteConsulta «boundary»
PantGenReporteConsultas ImpresorReporte
- cliente
- bottonFormaVisualizacion - clienteElegido + imprimir()
- comboCriticidad - consulta
- comboNivelResolucion - criticidad
- comboTipoConsulta - criticidadElegida
- fechaFinPeriodo - fechaFin «entity»
- fechaInicioPeriodo - fechaInicio FormaVisualizacion
- lblCliente - formaVisualizacion
- lblCriticidad - formaVisualizacionElegida - nombre
- lblFechaDesde - nivelResolucion
+ getNombre()
- lblFormaVisualizacion - nivelResolucionElegido
- lblNivelResolucion - tipoConsulta
- lblPeriodo - tipoConsultaElegido
- lblProducto «entity»
+ buscarClientesSAC() «entity»
- lblTipoConsulta ServicioContratado
+ buscarConsultas() Producto
- listaCliente
+ buscarCriticidad() - descripcion - fechaFin
+ habilitarVentana() + buscarNivelResolucion() - nombre - fechaInicio
+ mostrarClientes() + buscarTipoConsulta()
+ mostrarReportePreliminar() + buscarVisualizacion() + getNombre() + conocerProducto()
-servicioContratado + conocerTipoServicio()
+ opcionGenerarReporteConsulta() + finCU()
+ pedirConfGeneracion() + generarReporte() + estaVigente()
+ pedirConfirmacionImpresion() + nuevoReporte() + mostrarNombreProducto()
1..*
+ pedirFormaVisualizacion() + tomarConfGeneracion() «entity» + tieneSACContrado()
+ pedirPeriodoReporte() + tomarConfirmacionImpresion() Cliente
+ pedirSeleccionCliente() + tomarFormaVisualizacion() - cuit
+ pedirSeleccionParametros() + tomarPeriodoReporte() - domicilio -tipoServicio
+ tomarConfGeneracion() + tomarSeleccionCliente() - razonSocial
+ tomarConfirmacionImpresion() + tomarSeleccionCliente() 1
+ tomarFormaVisualizacion() + tomarSeleccionParametros() + conocerServicioContratado()
«entity»
+ tomarSeleccionCliente() + tomarSeleccionPeriodo() + getCliente()
TipoServicio
+ tomarSeleccionCriticidad() + mostrarSACVigente()
+ tomarSeleccionNivResolucion() - descricpion
+ tomarSeleccionPeriodo() - nombre
+ tomarSeleccionProducto()
+ getNombre()
+ tomarSeleccionTipoConsulta() «entity» «entity»
TipoConsulta NivelResolucion «entity»
Criticidad
- descripcion - descripcion
- nombre - nombre - descripcion
- orden - nombre
+ getDescripcion()
+ getNombre() + getNombre() + getNombre()
+ setDescripcion() 1 1 1
«entity» + setNombre() -criticidad
Estado 1
-nivelResolucion
- descripcion -tipoConsulta
- nombre
-estadoInicial
1 -producto
-estado «entity»
Consulta 1
«entity» - apellidoConsumidor
«entity» Actuacion - descricpion
Recurso - direccionConsumidor
- descripcion
- fechaIngreso - fechaCreacion
- fechaFin
- legajo -recurso - nombreConsumidor
1 - fechaInicio
- nombre - nroConsulta
- horaFin -actuacion
- telefonoConsumidor
+ getNombre() - horaInicio
- tiempoEstimadoResolucion + buscarActuaciones()
-accion 1..* + cerrar()
+ conocerAccion()
+ conocerActuacion()
«entity» + conocerEstadoActual()
+ conocerCriticidad()
Accion + conocerEstadoInicial()
1 + conocerNivelResolucion()
+ conocerRecurso()
- descripcion + conocerTipoConsulta()
+ mostrarDatosActuacion()
- nombre + demorar()
+ derivarGrupoSoporte()
+ getNombre() + derivarRep()
+ guardarConsulta()
+ informarCliente()
+ new()
+ resolver()
+ retomar()
+ sonTusParametros()
30. Resolver la necesidad de las búsquedas de las consultas de los consumidores en función de los filtros
elegidos para generar el reporte.
31. Definir el proceso de creación de las diferentes formas de visualización del Reporte de Consultas de
Consumidores.
Administradora de Tambo
En el sureste de la provincia de Córdoba existe un tambo que requiere un sistema para administrar las vacas
destinadas a la producción lechera.
El Propietario describió el dominio y precisó que la gestión de cada vacuno comienza cuando se registra el
nacimiento de la ternera, considerándose que está en crianza hasta que alcance los 200Kgs; luego entra en
la etapa de vaquillona.
Cuando la vaquillona esté preñada (en servicio) por primera vez pasa a considerársela vaca. Después del
parto la misma está disponible para su ordeñe.
Cabe aclarar que es posible comprar animales cuando sean terneras, vaquillonas o vacas preñadas.
La vaca podrá ser ordeñada hasta que no tenga más leche, en esta situación se considera a la misma “seca”;
esto puede ser por razones naturales o luego de alguna enfermedad. La vaca podrá volver a tener leche
luego de un nuevo parto, en caso de que tenga algún impedimento directamente se procede a su venta.
La producción lechera se desarrolla todos los días por la mañana, y según la descripción efectuada por el
Responsable de Tambo es necesario dejar registro de la cantidad de litros ordeñados de cada vaca, grasa,
proteínas y/o células somáticas de la leche. Además, durante este proceso se indica cuando la vaca está
seca, el encargado de ordeñe y el contenedor de la leche extraída.
32. Resolver el comportamiento que puede asumir el Vacuno en función al momento en el que el animal
se encuentre.
33. Considerar la manera de tener un acceso controlado a los servicios que brindan las clases
relacionadas a la producción lechera, en lo que se refiere a la registración, modificación, consulta, de
la producción lechera.
Una empresa del mercado necesita un software para gestionar las auditorias internas que se exigen para la
certificación de las normas de Calidad ISO 9001:2000. A continuación se describe la operatoria de dicha
empresa en lo concerniente a las auditorias internas:
Una vez al año, el Responsable de Gestión de la Calidad (RGC) crea el Programa Anual de Auditoria. Dicho
programa contiene el detalle de las auditorias a realizar en el año, la fecha prevista para cada auditoria, el
proceso sobre el cual se realizará y el dueño del proceso a auditar.
Durante la etapa de ejecución de la auditoria el auditor responsable elabora un informe que contiene la
siguiente información: destinatarios del informe, proceso auditado, fecha de auditoria, objetivo, alcances,
participantes y hallazgos de la auditoria. Los hallazgos se clasifican en No Conformidades, Observaciones y
Oportunidades de Mejora. Una vez que el dueño del proceso auditado recibe el informe con el detalle de los
hallazgos, diseña y establece una propuesta de mejora para cada uno de ellos, definiendo las acciones
necesarias para resolver los hallazgos e indicando si se trata de acciones correctivas o preventivas. El
seguimiento de las acciones descriptas en la propuesta de mejora, se realiza de manera conjunta entre los
auditores y el dueño del proceso. Una vez cumplidas las acciones, las mismas son cerradas por el auditor
responsable.
Es importante para realizar el seguimiento de las auditorias mantener información de los tiempos en los que la
auditoría permanece en cada estado. Uno de los informes necesarios es el reporte de Acciones Vencidas, el
cual muestra los tiempos promedio de retraso en el cumplimiento de las acciones que presenta cada
auditoria, en un programa anual determinado.
Una vez ejecutada la auditoria el auditor responsable elabora el informe final de la auditoria, el cual incluye
los hallazgos y las acciones implementadas, con el seguimiento correspondiente.
34. Resolver como el sistema va a calcular el promedio de retraso considerando la totalidad de los días
calendario y cómo en la totalidad de los días hábiles.
35. Resolver la necesidad de recorrer las acciones asociadas a un hallazgo, al momento de generar el
reporte de acciones vencidas.
Restauración de Cuadros
La empresa se dedica a la conservación y restauración de cuadros, proceso que consiste en evitar el deterioro
de objetos artísticos y devolverles su estado original.
Cuando ingresa un cuadro para ser restaurado se confecciona la solicitud de restauración, definiendo: fecha,
número, organización solicitante, fecha estimada de finalización y el cuadro, para el cual se registra: número,
nombre, autor y año de creación. Al crearse la solicitud estará pendiente de determinar composición.
El proceso de restauración comienza examinando el cuadro con el fin de identificar los materiales de cada
componente. Una vez finalizado el o los análisis específicos, los restauradores determinan el tratamiento que
será aplicado al componente para restaurar la alteración reconocida.
El tratamiento de cada componente analizado implica realizar una actividad que depende del tipo de
componente (a modo ejemplo: el laminado sólo se efectúa sobre la capa pictórica). Existen distintas técnicas
para realizar cada actividad, pero para efectuar la actividad asignada a un tratamiento sólo se requiere la
aplicación de una sola. Además una técnica se utiliza en más de una actividad; por ejemplo: la actividad de
limpieza puede ejecutarse mediante cualquiera de la siguientes técnicas: lavado, blanqueado, etc.; y la
desacidificación puede producirse mediante el lavado.
Cabe aclarar que un componente del cuadro puede tener más de un tratamiento. A veces es necesario
esperar un tiempo de reposo antes de aplicar el segundo tratamiento. Para cada tratamiento se debe
especificar la fecha a realizarse, el componente involucrado, la actividad a realizar y la técnica a emplear.
Será necesario que el sistema deje registrado en la solicitud de restauración cada vez que la pintura esté con
tratamiento asignado y cuando se encuentre en un período de reposo.
La solicitud de restauración estará finalizada recién cuando se finalicen todos los tratamientos asignados a los
componentes de la pintura o se cumpla el período de reposo.
36. Resolver la forma de controlar la asignación del número de tratamiento generado para una solicitud
de restauración, de manera que el mismo no se repita.
Corte de Servicio
Una empresa encargada de brindar el servicio de agua potable a la ciudad de Corrientes necesita un
software que le permita gestionar los cortes de servicio que realiza cuando necesita hacer una reparación o
realizar una nueva obra.
Para proveer el servicio de agua la empresa abastece a sus clientes a través de una red compuesta de la
siguiente manera: sistema (planta potabilizadora) – subsistema (estación elevadora) – cañerías maestras – red
de distribución (de la cual se conectan cada una de las conexiones domiciliarias). Cada parte de esta
estructura abastece a zonas específicas de la ciudad. Por ejemplo, una planta abastece a la región norte de
la ciudad, una estación elevadora a un conjunto de barrios (dentro de los provistos por el sistema que
corresponde), una cañería maestra a un conjunto de manzanas y la red de distribución a un subconjunto de
éstas.
Nota: Para simplificar el dominio consideraremos que una manzana es abastecida en su totalidad por una
única red de distribución. Es decir, no se considerará la alternativa que un lado de la manzana sea abastecido
por una red y otro lado de la misma manzana por otra red.
Cuando la empresa decide realizar un corte de servicio (porque debe realizarse una reparación o una obra
de mantenimiento o ampliación de la red) el software deberá informar, en función del lugar de la red donde
se realice el corte, cuál es la zona afectada por el mismo. Esta información es de utilidad al área de Relaciones
Públicas para informar a la población acerca del corte y al área de Atención al Cliente para informar a los
clientes que consulten y no generar trámites ante reclamos por falta de servicio en la zona afectada mientras
dure el corte.
El corte puede ser Programado o No Programado. En caso de ser Programado deberá registrarse al momento
de la planificación la fecha y hora de inicio, motivo del corte, zonas afectadas y fecha y hora de fin prevista.
Para los cortes Programados cuando se inicia efectivamente el corte debe registrarse fecha y hora real de
inicio y capataz a cargo y luego de su ejecución la fecha y hora real de fin. En el caso de los cortes No
Programados se informa al momento de la ejecución la fecha y hora real de inicio, motivo del corte, zonas
afectadas, capataz a cargo y fecha y hora de fin prevista y luego de su ejecución la fecha y hora real de fin.
En el caso de los Cortes No Programados, cuando la duración real de los mismos es superior a 24 horas la
empresa debe descontar de la factura un importe proporcional a las horas en que duró la suspensión del
servicio.
El Ente Regulador exige a la empresa que comunique mensualmente los cortes de servicios realizados,
informando si han sido Programados o No Programados, la duración y el motivo que originó el mismo. En caso
que el motivo implique una reparación es necesario además informar el reclamo que le dio origen (tipo y
número de reclamo, contacto, dirección, fecha del reclamo, fecha de resolución)
37. Definir una estructura flexible que permita manejar de manera sencilla y uniforme la estructura de la
red de distribución de agua potable. Modelar la vista dinámica de la búsqueda de las zonas afectadas
por un corte de servicio luego de haber seleccionado los componentes afectados.
38. Resolver de manera controlada el acceso a los servicios que brinda el subsistema de Gestión de
Empleados, en lo que se refiere la consulta de cargos, turnos de trabajo y horarios de capataces y
operarios de cuadrillas. Modelar la vista dinámica de la consulta sobre los capataces disponibles para
ser responsables del corte.
Simulador de Compras
Existe una entidad bancaria que emite a sus clientes una o más tarjetas de crédito, es decir, distintas marcas
tales como Visa, MasterCard, etc. Luego de un análisis crediticio se le otorga al cliente una o más de estas
marcas de tarjetas de crédito.
Cada tarjeta de crédito posee diferentes planes de pago con sus respectivos costos financieros para realizar
compras.
Los planes de pago de cada tarjeta son variables, indican la cantidad de cuotas en que puede dividirse el
monto de la compra y el porcentaje sobre los ingresos que admite.
Los Comercios adheridos, es decir, aquellos comercios que reciben las tarjetas de crédito de la entidad
financiera como forma de pago, pueden recibir todas o algunas de las tarjetas, como así también pueden
aceptar todos o algunos de los planes.
La entidad financiera antes de autorizar una compra verifica el estado del cliente (*) y luego el límite, según
el plan que se haya escogido, como así también las compras que ya se han registrado.
A medida que se efectúan las compras se generan cada una de las cuotas, este proceso se realiza
diariamente. Los resúmenes son mensuales e incluyen las cuotas cuyo mes de vencimiento coincida con el
del resumen generado. Los resúmenes se generan el primer día hábil de cada mes y el vencimiento de los
mismos corresponde al sexto día hábil de cada mes.
La entidad desea disponer de un medio web que permite a sus clientes efectuar simulación de compras para
poder determinar si se autorizará o no una compra en las condiciones (tarjeta y plan) que desea.
(*) El Cliente puede estar habilitado o no para realizar compras y esto aplica para cualquiera de las tarjetas
de crédito que posea, este estado se asigna cuando se controla el nivel de pago de los resúmenes de cada
cliente.
«entity» «entity»
CompraRealizada Comercio «entity»
«entity»
Plan
- comercio :Comercio - nroComercio PlanAceptado
- cuotas :Cuota - planesRecibidos :PlanAceptado 1..* -
- cantidadDeCuotas
fechaVigencia
- fecha - razonSocial - codigo
1 - plan :Plan
- importeTotal - descuentosEspeciales :DescuentoEspecial
+ getNroComercio() 1 - fechaDeVigencia
- plan :Plan
+ obtenerPlanesRecibidos()
- nombre
+ esMayorAFechaYPlan()
- porcentajeDeInteres
+ esTuPlan()
+ esTuPlan() 1..* 1 - porcentajeDeLimite
+ getFecha() + getNombre()
«entity»
+ poseeDescuento() + getNombre()
TarjetaEmitida
+ getPorcentajeDeLimite()
- códigoSeguridad + getPorcentajeDeLímite()
1..* - compras :CompraRealizada + obtenerDescuentosEspeciales()
- fechaVencimiento
1..*
«entity» - habilitada :boolean
Cuota - nroTarjeta
- cantidadTotalCuotas :int - resúmenes :Resumen
- fechaEmisión - tarjeta :TarjetaDeCrédito «entity»
- últimoResumen :Resumen TarjetaDeCrédito
- importeCuota
- importeInterés + calcularImporteParcialCuotasSinResumen() - descripción
- mesVencimiento + crearIterador() 1 - nombre
- nroCuota + estáHabilitada() - planes :Plan
+ esTuPlan() + mostrarPlanes() + getNombre()
+ obtenerCuotasEnResumenNoVencidoDePlan()
1..*
+ getPlanes()
+ obtenerCuotasSiguienteAlUltimoResumen()
+ obtenerLímiteDePlan()
+ obtenerCuotasSinResumenDePlan()
+ obtenerLímiteDePlan()
«entity» 1..*
Resumen
- cuotas :Cuota 1 «entity»
- fechaEmision 0..* Usuario
- fechaVencimiento
- contraseña
- importeBonificacion 1
- nombre «entity»
- pagado «entity»
+ obtenerCliente() Cliente Estado
+ estaPagado()
+ estáPagado() 1 - apellido
- nombre
+ existeCuotaDePlan() - dni
1 + getNombre()
+ getFechaDeVencimiento() - estado :Estado
+ getPlan() - ingresosDeclarados
+ obtenerCuotaDeMes() - nombre
+ setCuotas() - tarjetas :TarjetaEmitida
+ setImporteBonificacion() «entity» + getEstado()
+ sumarImporteEInteres() Sesión + getIngresosDeclarados()
+ getNombre()
- fecha
+ getTarjetasHabilitadas()
- hora
- usuario :Usuario + obtenerCuotasDeÚltimoResumenNoVencidoDeTCYPlan()
+ obtenerLímiteDePlanDeTarjeta()
+ obtenerCliente() + obtenerPlanDeTarjeta()
«boundary» «control»
PantallaSimularCompra GestorSimularCompra
- cancelar :botton - clienteLogueado :Cliente
- cliente :etiqueta - importeCuotasDePlanProximosResumenes
- comercio :TextBox - importeCuotasDePlanUltimoResumen
- confirmar :botton - importeDeCompra
- importe :TextBox - importeParcial
- planes :ListBox - planSeleccionado :Plan
- saldoDisponible :TextBox - saldoDisponible
- tarjetasDeCredito :ListBox - tarjetaSeleccionada :TarjetaEmitida
+ guardarParámetrosYResultadosSimulación() + buscarPlanesDeTarjeta()
+ habilitarIngresoDeComercio() + buscarTarjetasDeCliente()
+ habilitarOpciónSimulaciónAnterior() + calcularImporteParcial()
+ habilitarPantalla() + calcularSaldoDisponible()
+ informarResultadosDeSimulación() + confirmar()
+ mostrarDatosSimulaciónAnterior() + finCU()
+ opciónSimularCompra() + obtenenerIngresosDeCliente()
+ solicitarConfirmación() + obtenerCliente()
+ solicitarIngresoImporteCompra() + obtenerCuotasDeÚltimoResumenNoVencido()
+ solicitarSeleccionDePlan() + obtenerCuotasSinResumenDeTCyPlan()
+ solicitarSeleccionPlan() + obtenerLímiteDePlan()
+ solicitarSeleccionTC() + simularCompra()
+ tomarConfirmación() + solicitarSelecciónPlan()
+ tomarIngresoMontoCompra() + tomarIngresoMontoCompra()
+ tomarOpciónSimulaciónAnterior() + tomarOpciónSimAnterior()
+ tomarSelecciónPlan() + tomarPlan()
+ tomarSelecciónTC() + tomarTC()
+ verificarDatosRequeridos()
+ verificarEstadoCliente()
+ verificarResultadoDeSaldoDeCompra()
39. Se desea obtener la simulación de una compra previamente realizada sin la necesidad de volver a
ejecutar el proceso de simulación. De esta manera un usuario logueado podría acceder nuevamente
al resultado de una simulación que realizó en un instante anterior sin necesidad de cargar nuevamente
todos los parámetros.
40. Se desea acceder a las compras realizadas, que corresponden a la tarjeta del cliente seleccionada,
recorriendo las mismas secuencialmente para obtener aquellas que corresponden al plan y superan
la fecha del último resumen.
Liga de Fútbol
Se trata de una Liga Regional de Fútbol, organización que depende de la Asociación Cordobesa de Fútbol,
y que todos los años organiza campeonatos en los que participan clubes de la región.
La LIGA organiza los campeonatos basándose en dos sistemas, los campeonatos todos contra todos, o los
campeonatos con eliminatorias. El primero consiste en organizar partidos para que todos los equipos se
enfrenten una vez. Generalmente se realizan dos campeonatos de este tipo en el año (Clausura en el primer
semestre, Apertura en el segundo semestre), es importante aclarar que la liga no organiza campeonatos en
forma simultánea.
Cuando se organizan campeonatos con eliminatorias (para copas de verano por ejemplo), se juegan
octogonales, cuartos de final, semifinales y finales. Estas son las denominadas rondas. En cada ronda los
equipos que pierden quedan eliminados, y los ganadores (el primero y segundo de cada grupo) pasan a la
ronda siguiente. Es decir, quienes ganan los octogonales luego juegan los cuartos de final y así sucesivamente.
En estos sistemas de campeonato cada equipo que gana o empata obtiene un puntaje. Al final de
campeonato gana el que más puntaje tiene. La cantidad de puntos que se le va a otorgar a cada partido
ganado o empatado puede variar en cada campeonato. La diferencia en los sistemas de campeonato es
que para los de “Eliminatoria” sólo se asigna puntaje por partido ganado porque en caso de empates, el
partido se alarga hasta que se obtiene una definición, es decir, hasta que alguno de los dos equipos gana.
Según la cantidad de equipos que jueguen los campeonatos se definirá la cantidad de partidos. En el caso
de un campeonato todos contra todos, se juega una cantidad de fechas igual a la cantidad de equipos
menos uno. Se juega una cantidad de partidos igual a la multiplicación de la cantidad de fechas por la
cantidad de clubes divida en dos. En el caso de un campeonato por eliminatorias se organizan tantos partidos
como sean necesarios para finalizar con dos equipos jugando la final. La cantidad de equipos para este
sistema debe ser múltiplo de 4.
Los clubes que desean participar deben inscribirse en la LIGA con un mes de anticipación al comienzo del
campeonato. Luego de realizada la inscripción cada club debe presentar la lista de los jugadores con los que
intervendrá en el campeonato, un examen médico para cada uno, y los datos de la cancha habilitada para
los partidos en que participe como local.
Cuando la Liga realiza la diagramación de un campeonato, de acuerdo al número de clubes inscriptos,
determina la cantidad de jornadas o “fechas” a realizarse, y para cada una se definen los partidos a jugarse,
donde para cada partido se indica la cancha en que se realizará, los árbitros que intervendrán y el rol de
cada uno en ese partido (árbitro principal, juez de línea, etc.).
La información de la diagramación del campeonato, conocida también como fixture, debe ser comunicada
a los interesados en conocerla, para la cual se ha acordado que se le enviará en un formato que le sea útil a
diarios y revistas y además se ha decido incorporar los servicios de mensajes a celulares y de envío de mails
que contengan esta información, para lo cual el sistema deberá resolver la generación de archivos con los
formatos requeridos.
Luego de culminada cada fecha, deben registrarse los resultados de cada partido:
Goles convertidos, indicando para cada gol el jugador que lo realizó, tiempo de juego transcurrido, y si fue a
favor o en contra).
Amonestaciones efectuadas, indicando para cada una el tipo (tarjeta amarilla, tarjeta roja), el jugador y el
tiempo de juego transcurrido.
Las amonestaciones se realizan debido a faltas que convierten los jugadores durante el juego. Si el árbitro
amonesta con una tarjeta roja el jugador debe retirarse del campo de juego (es expulsado) y se le aplica una
sanción que consiste en inhabilitarlo para jugar durante una cantidad “x” de partidos. Luego de cumplida la
sanción el jugador puede continuar jugando los partidos restantes.
Además se desea emitir una lista de goleadores (jugadores que convirtieron más goles) para premiar al
goleador de cada campeonato. Para todos los reportes y estadísticas se ha requerido que los mismos se
muestren tanto en formato de cuadros como en formato gráfico.
Cancha
TipoCampeonato SistemaCampeonato
domicilio
mesInicioSugerido caracteristicas nombre
nombre nombre
valorPartidoEmpatado
esTuMesJuego() valorPartidoGanado 1
getMesInicioJuego()
getNombre() getNombre() ExamenMedico
Inscripcion
1 descricpcion
1 cancha: Cancha fecha
club: Club resultado
detalleInscripcion: DetalleInscripcion 0..1
Campeonato fechaInscripcion
DetalleInscripcion
estadoActual: Estado conocerCanchaLocal()
estadoAnterior: Estado conocerClub() actuacionJugador: ActuacionJugador
0..* 1..*
fechaCampeonato: FechaCampeonato conocerDetalleInscripcion() examenMedico: ExamenMedico
fechaDeFin mostrarJugadores() jugador: Jugador
fechaDeInicio mostrarNombreClub() situacion: HistorialJugador
fechaVtoPresExamen 0..* conocerActuacionJugador()
inscripcion: Inscripcion conocerExamenMedico()
puntosPartidoEmpatado conocerHistorialJugador()
puntosPartidoGanado HistorialJugador conocerJugador()
sistemaCampeonato: SistemaCampeonato
tipoCampeonato: TipoCampeonato descricpion 0..*
estado: Estado 0..*
calcularDuracionCampeonato() fecha
calcularGoleadorCampeonato() Estado
estado conocerEstado()
calcularGoleadorFecha()
anterior ambito
calcularTablaPosicion()
conocerEstadoActual() descripcion 1
0..1 nombre
conocerEstadoAnterior()
conocerFechaCampeonato() esAmbitoCampeonato() 1
conocerInscripcion() estado 1
Actual
esVigente() 1
cuantasFechas() getAmbito() Club
cuantosPartidosPorFecha() getDescricpion() domicilio Jugador
determinarPuntajeAsignar() getNombre() inscripcion: Inscripcion apellido
esMesInicioJuego() setAmbito() nombre detalleInscripcion: DetalleInscripcion
estaVigente() setDescripcion() dni
mostrarCampeonato() setNombre() buscarJugadores()
fechaNac
mostrarFechasPendientes() buscarUltimaInscripcion()
mostrarNombre() 1 1 0..* nombre
canchaDeCampeonato()
mostrarPartidosPendientes() estaInscriptoCampenato() ActuacionJugador conocerDetalleInscripcion()
mostrarPartidosPorFecha() listarJugadoresInscriptos() estaInscripto()
mostrarPuntosPartidoEmpatado() mostrarNombre() calificacion
mostrarActuacionJuego()
mostrarPuntosPartidoGanado() gol: Gol
mostrarSituacion()
mostrarSistemaCampeonato() 0..1 0..1 partido: Partido
presentoExamen()
new() sancion: Sancion
local tiempoJugado
visitante titular
conocerGol()
0..* conocerPartido()
Partido esTitular()
0..* actuacionJugador: ActuacionJugador
FechaCampeonato asignacion: Asignacion
estado: Estado
estado: Estado fecha
fechaComienzo ganadorPartidoLocal: Partido
numero ganadorPartidoVisitante: Partido
partido: Partido hora 0..*
actualizarJugado() local: Club
calcularPuntajeObtenidoFecha() nombre Gol 0..*
puntajeObtenidoLocal 1
conocerPartido() enContra Sancion
cuantosPartido() puntajeObtenidoVisitante
tiempoJuego
dondeSeJuegaPartido() visitante: Club cantidadPartidosExpulsado
mostrarPartidosPendientes() conocerJugador() tiempoJuego
conocerAsignacion()
esGolEnContra() tipoSancion: TipoSancion
1..* conocerCanchaJuego()
conocerClubLocal() conocerTipoSancion()
Arbitro conocerClubVisitante()
Asignacion conocerGanadorPartidoLocal() 0..1
apellido conocerGanadorPartidoVisitante()
arbitro: Arbitro
dni
rol: Rol conocerGol() ganadorPartidoLocal
0..1
fechaNac 0..* conocerInfoJugador()
nombre 1 conocerArbitro() ganadorPartidoVisitante
conocerSansion()
conocerRol() cuantasSansiones() 1
mostrarNombre()
cuantosGoles()
estaJugado() TipoSancion
estaPteJuego() Estas relaciones descricpion
Rol autorreferenciales son
1 ganadorPartido() mutuamente excluyentes con las nombre
nombre mostrarNombreLocal() de Club, luego de jugados los
mostrarNombreVisitante() partidos (en el caso del Sistema
mostrarNombre() de Campeonato por
partidoJugado() eliminatorias) se reemplazan
queArbitrosIntervinien() estas relaciones con las de Club.
Los atributos puntajeObtenidoLocal y
puntajeObtenidoVisitante son utilizados para
queJugadoresSansionados()
asignar los puntos que le corresponde a cada registrarDesempeñoJugador()
club luego de jugado el partico.En la clase registrarGoles()
campeonato se define el puntaje que se asignará registrarPuntajeObtenido()
a cada partido ganado y empatado.
41. Resolver la forma en que el sistema deberá determinar la cantidad de fechas y partidos que deberán
jugarse para un campeonato en función del sistema de campeonato elegido para ese campeonato.
Modelar la dinámica para un campeonato cuyo sistema es “todos contra todos”
Seguimiento de Defectos
Una empresa se dedica al desarrollo y mantenimiento de software a medida para distintos clientes. Los
productos de software que se construyen son basados en Windows. En este último tiempo la empresa ha
tenido un crecimiento importante de la cartera de clientes y por consecuencia de la cantidad de productos
que desarrolla y debe mantener, la empresa ha decidido desarrollar un producto que le ayude a la
administración y seguimiento de los defectos identificados en los productos de software que desarrollan.
Es importante destacar que la empresa no realiza adaptaciones del producto puntuales para un cliente en
particular, si no que mantiene una única versión del producto. Esta versión del producto está compuesta por
módulos y cada módulo por un conjunto de funcionalidades (asociadas a una opción de menú en algún
punto del sistema). Las versiones del producto pueden variar en los módulos que contiene y dentro de cada
módulo en las funcionalidades disponibles. También puede pasar que dos versiones distintas de un producto
contengan el mismo módulo o la misma funcionalidad dentro de un módulo pero con versiones diferentes, es
por eso que se debe mantener información de las características y/o cambios asociados a cada versión tanto
del producto como de los módulos y funcionalidades que contienen.
Puede pasar que haya instaladas versiones diferentes de los productos en clientes diferentes, es por eso que
al momento de instalar un producto se registra que versión del mismo es la que se está instalando en cada
cliente. Si bien es cierto que cada producto tiene una única versión vigente en un momento de tiempo, puede
pasar que en un cliente se haya instalado una versión y luego el producto se modificó y a este cliente no se
le actualizó la versión.
Debido a lo explicado la empresa ha decidido desarrollar un proceso de seguimiento de defectos que se
adapte a sus necesidades. Con esto se pretende establecer un mecanismo, respaldado por un producto de
software, que permita gestionar los defectos encontrados y como consecuencia tratar de reducir la cantidad
de defectos que son detectados por los usuarios finales.
En caso que el usuario final detecte un defecto, podrá él mismo, informar acerca de su existencia por medio
de una página Web, a la que tendrá acceso utilizando una identificación de usuario y una palabra clave. La
disponibilidad debería ser permanente durante el horario de trabajo de la empresa, como así también durante
el horario de trabajo de sus clientes, los cuales están radicados en Argentina y en varios países de América
Latina.
El mismo sistema debería permitir registrar los defectos de todos los productos de software que están en
desarrollo y productos de software ya instalados en los distintos clientes.
Puede ocurrir que los clientes reporten los defectos mediante un archivo Excel, o mediante una aplicación
diferente. En estos casos el sistema deberá ser capaz de importar archivos Excel o un xml obtenido de otras
aplicaciones. Estos archivos deben ser leídos para registrar en el sistema los defectos detectados por el cliente.
La importación de estos archivos no debe demorar más de 30 segundos para 250 registros. Hay que tener en
cuenta que la forma de importar estos archivos es diferente, ya que requiere realizar una lectura al archivo
correspondiente según el formato del mismo.
«entity» «entity»
Estado «entity» «entity» «entity»
TipoActuacion TipoDefecto
Prioridad Severidad
- descripcion - descripcion
- nombre - nombre: int - descripcion - descripcion
- nombre - nombre
- nombre
+ esTipoActuación() : void + esEstado() : void + esPrioridad() : void
+ getDescripcion() + getNombre() : void + esTipoDefecto() : void
+ getNombre() : void 0..1
+ getNombre() : void
+ getNombre() : void 0..1
1
+ getNombre() : void 0..1
«entity»
1..* ReferenteCliente 1
«entity»
«entity» «entity»
Permiso
VersionProducto Producto
- descripcion
1..* - descripción - descripcion
- nombre
«entity» - modulos: VersionModulo - nombre
Instalacion - número - version: VersionProducto
1..*
«entity» - fechaInstalacion - responsable: Personal
+ buscarVersionesHabilitada()
Cliente 1..* - responsableInstalacion: Personal 1
+ conocerModulosIntegran() : void + esProducto()
- domicilio - versionProducto: VersionProducto + conocerResponsableVersion() + getFuncionalidad()
- instalacion: Instalacion + estaHabilitada() + getModulo()
- razonSocial + conocerResponsableInstalacion() + getNombre()
+ conocerVersionProducto() + esVersion()
- referente: ReferenteCliente + getNumero() + getVersión()
42. Resolver la forma en que se comportará el sistema al momento de realizar importación de los archivos
de defectos, según se trate de un archivo Excel o de un XML. Modelar la vista dinámica de la
importación de un archivo Excel.
43. Resolver la manera en que se manejará uniformemente la estructura del producto de software, sus
módulos y sus funcionalidades. Mostrar la vista dinámica del acceso al producto, sus módulos y
funcionalidades al momento de importar un archivo de defectos.
Vehiculo
Cliente - activo: boolean Modelo
VariacionModelo
- apellido - añoPatentamiento - descripcion
- cliente: Cliente - caracteristicasEquipamiento
- barrio: Barrio 0..1 - nombre
- color 1 - motorizacion
- calle - variacionModelo: VariacionModelo
- dominio - nombre
- celular
- fechaAlta - potencia 0..*
+ concocerVariacionesModelo() : void
- departamento
- email - variacionModelo: VariacionModelo + getNombre()
+ getNombre()
- nombre + mostrarModeloVehiculoCompleto() 0..*
1..* + conocerCliente()
- notificaViaMail: boolean
+ conocerOrdenTrabajo() 1..*
- numero
+ conocerVariacionModelo()
- piso
+ getDominio()
- telefono
+ mostrarDatosVehiculo() Marca
- vehiculo: Vehiculo
+ mostrarNombreCliente()
+ tiempoUltimaReparacion() - descripcion
+ conocerBarrio()
- modelo: Modelo
+ conocerVehiculo()
- nombre
+ getNombre()
0..*
+ conocerModelo()
1
OrdenTrabajo + getNombre()
Barrio - cantidadCombustible
- descripcion - descripcionTrabajoRequerido
- nombre - detalleOrdenTrabajo: DetalleOrdenTrabajo
Estado
- estado: Estado
- fechaCierre - ambito: Ambito
- fechaCreacion - descripcion: char
- horaCierre - nombre: char
- horaCreacion
+ getNombre()
- kmRecorridos
1 + new()
- notificadoPresupuesto: boolean
- notificadoTrabajoTerminado: boolean
- registro: Empleado 1
Empleado
- apellido + abrir()
- nombre + actualizarDetTerminValorizados()
- turno: TurnoTrabajo + actualizarEstado(Valorizada)
+ actualizarOTPtesTransferidas() Los métodos de seteo y
+ conocerTurnoTrabajo() + buscarDetalleOTTerminado() el constructor se
+ getNombre() + buscarDetallesCerrados() especifican para está
1 1 + buscarDetallesPendientes() clase unicamente,
+ calcularCostoTotal() aunque van en todas las
+ calcularCostoTotal() clases
+ calcularTiempoEstimado()
+ calcularTiempoResoluciónOT()
regi stro + cancelar()
1..* + cerrar()
+ cobrar()
TurnoTrabajo + conocerDetalleOrdenTrabajo()
- descripcion + conocerEstado()
- horaFin + crearDetalleOT()
- horaInicio + getDetallesActuados()
- nombre + getDetallesActuados()
+ getFecha() Repuesto
+ getFecha() - descripcion
+ getNombreEncargado() - nombre
+ getNumero() - precioReferencia
+ mostrarDatosOTSeleccionada() - variacionModelo: VariacionModelo
+ new()
+ notificar() + conocerVariacionModelo()
asi gnado
+ presupuestar() + getDatos()
+ registrarRespPresup() + getDescripcion()
+ setCostoHoraReal() + getNombre()
+ setEstado() Actividad + getPrecioReferencia()
+ tenesOTAbiertasConDetalleTerminado() + new()
- costoHora + setDescripcion()
+ valorizar() - descricpion
+ verTrabajosAutorizadosPorCliente() + setNombre()
- duracionEstimada + setPrecioReferencia()
- nombre
1
1..* + getDatos()
DetalleOrdenTrabajo 1
- actividad: Actividad
- asignado: Empleado
- autorizadoPorCliente: boolean
- costoHoraPresupuestado
- costoHoraReal
- duracionReal RepuestoRequerido
- estado: Estado - cantPresupuestada
- repuestoRequerido: RepuestoRequerido - cantRequerida
- tiempoEstimadoReparacion - precioPresupuestado
- tiempoRealReparacion - precioReal
- repuesto: Repuesto
+ abrir()
- utilizado: boolean
+ actualizarEstado(Valorizado) 0..*
+ asignarPrecioRealDeRepuesto() + conocerRepuesto()
+ buscarRepuestosUtilizados() + getDatos()
+ calcularCostoActividad() + setPrecioReal()
+ calcularMontoActividad() + seUtilizo()
+ cancelar()
+ cerrar()
+ conocerActividad()
+ conocerEmpleadoAsignado()
+ conocerEstado()
+ conocerRepuestoUtilizado()
+ estaPendiente()
+ estaTerminado()
+ getDetallesActuados()
+ new()
+ setValorHoraReal()
+ terminar()
+ transferir()
+ valorizar()
44. Resuelva la siguiente situación utilizando el patrón de diseño que corresponda: cómo debe
comportarse la Orden de Trabajo y el Detalle de Orden de Trabajo de acuerdo al momento en que se
encuentre cada uno.
Estaciones Agro-Meteorológica
Las estaciones meteorológicas rurales son un dispositivo que monitorea en forma continua los datos climáticos
que intervienen en el desarrollo de enfermedades en los cultivos (roya, hongos, oídios, gramíneas, orugas,
etc.).
Estos dispositivos tienen sensores que permiten registrar valores de distintas variables climáticas: temperatura,
humedad del aire, luminosidad, lluvias, hoja mojada, humedad del suelo, etc. Cada variable climática tiene
una unidad de medida única y una frecuencia de medición. Los sensores sólo pueden medir un determinado
rango permitido de acuerdo a la precisión del mismo.
Los sensores (pluviómetro, velocidad y dirección del viento, medidor de temperatura y humedad relativa, etc.)
se utilizan para obtener las mediciones de las variables climáticas que utilizará el método predictivo de un tipo
de pronóstico. Cada tipo de pronóstico predice una única enfermedad y es específico para un cultivo. Las
enfermedades detectadas por los pronósticos tienen diferentes grados de contagios, que definen el tipo de
severidad de la infección (leve, moderada o severa). El grado de contagio es determinado por el pronóstico
comparando los valores de las mediciones efectuadas a las variables climáticas y los valores de los parámetros
propios de cada grado de contagio de la enfermedad.
Cabe aclarar que cada parámetro tiene un valor o un rango de valores acerca de una única variable
climática. A la hora de generarse el pronóstico de acuerdo al tipo de evaluación (por valor o por parámetro)
del parámetro de un grado de contagio establece cómo debe evaluarse el mismo para determinar la
presencia de esa severidad de la enfermedad. Por lo tanto, el grado de contagio de una enfermedad se
determina por alcanzarse valores específicos o por estar comprendida en un determinado rango de valores
para los parámetros del pronóstico. Cabe aclarar, que cuando no se alcancen algunos de los valores de las
variables climáticas para un parámetro no existirá contagio de la enfermedad.
Las estaciones meteorológicas se instalan en distintas ubicaciones de una manera estratégica para poder
captar información con mayor precisión. Los pronósticos generados pueden ser almacenados para poder
consultar y comparar resultados a lo largo del tiempo y, de esta manera, poder sacar conclusiones más
exactas sobre la infecciones en los cultivos.
«boundary»
«entity» TipoSeveridad PantallaPronosticarEnfermedades
Parametro - nombre - comboTipoPronosticos
UnidadMedida VariableClimatica - descripcion + getNombre() - lblTipoPronosticos
+unidadMedida
- frecuenciaMedicion +variableClimatica - rangoDesde - lblUbicaciones
- nombre +tipoSeveridad 1
- nombre - rangoHasta - listaUbicaciones
- tipoUnidadMedida 1 1 - tipoEvaluacion
+ conocerUnidadMedida() +parametro + confirmarGeneraciónPronóstico()
+ getNombre() - valor + habilitarVentana()
+ getNombre() «entity»
+ compararValores() 1..* + mostrarResultadoPronóstico()
1 GradoContagioEnfermedad
+ conocerVblesClimaticas() + pedirImpresionPromostico()
«entity» + getTipoValuacion() + conocerTipoSeveridad() + pedirSelecciónCultivo()
+variableClimatica Medicion
TipoSensor + conocerVblesClimaticas() + pedirSelecciónTipoPronóstico()
- fecha +gradoContagioEnfermedad 1 + evaluarGradoContagio() + pedirSeleccionUbicaciones()
- nombre + seleccionarCultivo()
- hora 1..*
+gradoContagio
+ esParaVbleClimatica() 0..* - valor + seleccionarOpcionPronosticarEnfermedad()
1 + seleccionarPronóstico()
+ getFechaYHora()
+tipoSensor + seleccionarUbicación()
+medicion + getValor() «entity» + solicitarConfirmación()
TipoPronostico + tomarSelecciónImpresión()
«entity»
- descripcion
Pronostico +tipoPronostico - nombre
Sensor - fechaGeneracion
1 + conocerVbleClimatica()
- codigo - horaGeneracion + determinarSeveridad() «control»
- posicion - resultado + getDescripcion() GestorGeneracionPronostico
+ mideVbleClimatica() + new() + getNombre()
+ obtenerMedicionVbleClimatica() - cultivo
0..* - tipoPronosticoElegido
1..* +pronostico - ubicaciones
+cultivo
+sensor +enfermedad 1 + buscarMedicionesDeVbleClimatica()
«entity» + confirmarPronostico()
EstacionMetereologica 1
Cultivo + determinarVbleClimática()
Enfermedad
- codigo + evaluarPronostico()
- descripcion - nombre - nombre + finCU()
+ mideVlbeClimatica() + determinarSeveridad() + imprimirPronostico()
+ determinarVbleClimatica() + listarCultivos()
+ obtenerMedicionVlbeClimatica()
0..* + getNombre() + listarPronosticosParaCultivo()
+ listarTiposPronostico() + listarUbicaciones()
+ nuevoPronostico()
+estacionMetereologica
+ registrarPronostico()
Ubicacion
+ tomarCultivo()
- descripcion + tomarSeleccionPronostico()
- referencia + tomarUbicaciones()
+ getNombre() + validarEstacionesEnUbicaciones()
+ mideVbleClimatica() + verificarSensoresParaVbleClimatica()
+ obtenerMedicionesVbleClimatica()
+ poseeEstacionInstalada()
+ registrarPronostico()
45. Diseñar el procedimiento que permita recuperar los nombres y la descripción de los Tipos de Pronósticos
que aplican a un determinado cultivo.
46. Diseñar el algoritmo que utiliza la fórmula de predicción de cada Grado de Contagio de un Tipo de
Pronóstico para determinar la existencia y severidad de la enfermedad bajo estudio. Este algoritmo es
diferente para cada grado de contagio que posee el tipo de pronóstico, ya que determina la
existencia y severidad de la enfermedad.
Soluciones:
MEMENTO
ITERATOR
OBSERVER
BUILDER
FACHADA
Clasificados COMPOSITE
SINGLETON
STRATEGY
ITERATOR
13. Solucionar el problema de cómo deshabilitar a los expendedores
abastecidos por un tanque cuando el mismo no tiene la cantidad de
combustible suficiente para abastecerlos.
OBSERVER
FACHADA
15. Resolver la forma en que al habilitarse las pantallas de diagramación,
modificación y consulta de la asignación de habitaciones se
muestran los componentes de la pantalla, considerando que los
componentes son los mismos para todas las pantallas pero se
muestran habilitados o deshabilitados según permitan o no la edición
los datos. Mostrar la vista dinámica de la pantalla de diagramación
de la asignación de habitaciones.
Transporte 16. Definir una estructura flexible que permita manejar de manera
sencilla la organización de corredores, recorridos y paradas del
Urbano de sistema de transporte público masivo.
Pasajeros COMPOSITE
17. Resolver la administración de un Cierre de Turno generado para el
caso que sea necesario restaurar el Informe de cierre si ocurre un
problema de impresión al momento de su emisión.
MEMENTO
OBSERVER
ITERATOR
Elecciones 22. Definir una estructura flexible que permita manejar de manera
sencilla la jerarquía de la estructura geográfica.
COMPOSITE
STATE
Campeonato 24. Resolver el problema de lógica para buscar los participantes o los
equipos aptos para ser inscriptos en un campeonato determinado,
Náutico teniendo en cuenta cómo se realizará la búsqueda si el campeonato
es en equipo o es para participantes individuales.
NOTA: en el Diagrama de Secuencia enfocar el modelado en detalle
sólo para la búsqueda de los participantes aptos para ser inscriptos.
STRATEGY
ITERATOR
ITERATOR
Lácteos STATE
29. Definir cómo se puede resolver la forma de establecer la relación
entre la forma de presentación y el tamaño que puede tener cada
uno de los productos.
BRIGDE
Contact 30. Resolver la necesidad de las búsquedas de las consultas de los
consumidores en función de los filtros elegidos para generar el
Center reporte.
ITERATOR
31. Definir el proceso de creación de las diferentes formas de
visualización del Reporte de Consultas de Consumidores.
STRATEGY
ITERATOR
SINGLETON
Corte de 37. Definir una estructura flexible que permita manejar de manera
sencilla y uniforme la estructura de la red de distribución de agua
Servicio potable. Modelar la vista dinámica de la búsqueda de las zonas
afectadas por un corte de servicio luego de haber seleccionado los
componentes afectados.
COMPOSITE
38. Resolver de manera controlada el acceso a los servicios que brinda
el subsistema de Gestión de Empleados, en lo que se refiere la
consulta de cargos, turnos de trabajo y horarios de capataces y
operarios de cuadrillas. Modelar la vista dinámica de la consulta
sobre los capataces disponibles para ser responsables del corte.
FACHADA
Simulador de 39. Se desea obtener la simulación de una compra previamente
realizada sin la necesidad de volver a ejecutar el proceso de
Compras simulación. De esta manera un usuario logueado podría acceder
nuevamente al resultado de una simulación que realizó en un
instante anterior sin necesidad de cargar nuevamente todos los
parámetros.
MEMENTO
40. Se desea acceder a las compras realizadas, que corresponden a la
tarjeta del cliente seleccionada, recorriendo las mismas
secuencialmente para obtener aquellas que corresponden al plan y
superan la fecha del último resumen.
ITERATOR
Liga de Fútbol 41. Resolver la forma en que el sistema deberá determinar la cantidad
de fechas y partidos que deberán jugarse para un campeonato en
función del sistema de campeonato elegido para ese campeonato.
Modelar la dinámica para un campeonato cuyo sistema es “todos
contra todos”
STRATEGY
Seguimiento 42. Resolver la forma en que se comportará el sistema al momento de
realizar importación de los archivos de defectos, según se trate de un
de Defectos archivo Excel o de un XML. Modelar la vista dinámica de la
importación de un archivo Excel.
STRATEGY
43. Resolver la manera en que se manejará uniformemente la estructura
del producto de software, sus módulos y sus funcionalidades. Mostrar
la vista dinámica del acceso al producto, sus módulos y
funcionalidades al momento de importar un archivo de defectos.
COMPOSITE
Taller de 44. Resuelva la siguiente situación utilizando el patrón de diseño que
corresponda: cómo debe comportarse la Orden de Trabajo y el
reparación de Detalle de Orden de Trabajo de acuerdo al momento en que se
encuentre cada uno.
autos
STATE
Meteorológica ITERATOR
46. Diseñar el algoritmo que utiliza la fórmula de predicción de cada
Grado de Contagio de un Tipo de Pronóstico para determinar la
existencia y severidad de la enfermedad bajo estudio. Este algoritmo
es diferente para cada grado de contagio que posee el tipo de
pronóstico, ya que determina la existencia y severidad de la
enfermedad.
STRATEGY
Consigna:
Para c ada uno de los siguientes c asos de estudio se requiere que se implemente el cambio
de requerimientos y en función de la situación planteada:
1. Enumere los casos de uso que se deberán agregar y/o modificar como consecuencia de la incorporación de
los cambios requeridos.
2. Realice los cambios correspondientes en el Modelo de Dominio (Diagrama de Clases)
Contact Center
Se trata de una empresa cuyo objetivo es proporcionar un “centro de atención multimedia como único punto de
contacto”, entre Clientes y consumidores. Contact Center ofrece diferente tipos de servicios tales como: Atención
al Consumidor, Mesa de Ayuda (Resolución de los problemas referidos a Tecnologías de Información), Tele
cobranzas (Gestión de cobranzas telefónicas a clientes morosos), Telemarketing (Promoción del portafolio de
productos y/o servicios para realizar ventas o suministrar información de productos nuevos o existentes), Tele
ventas (Venta y postventa de productos a través de llamadas telefónicas salientes o atendiendo llamadas
específicas), Estudios de Mercados y Encuestas (Para conocer el posicionamiento de los Clientes en el sector o en
la industria, la aceptación de sus productos, y el posicionamiento de la marca).
A continuación, se describe la operatoria de “Atención al Consumidor”; la cartera de Clientes de Contact Center en
este servicio incluye a empresas que fabrican o comercializan productos de limpieza, de consumo masivo (tales
como jabones líquidos, en polvo o en pastillas, anti manchas, suavizantes de ropa, etc.).
Contact Center cuenta con personal especialmente entrenado que brinda de manera oportuna respuestas
correctas a las consultas realizadas por los consumidores, homogenizando el mensaje de comunicación y el
tratamiento de la consulta.
Cada Cliente de Contact Center tiene una línea telefónica gratuita (0800) a través de la cual, los consumidores
pueden realizar consultas o solicitar información de un producto; es decir que cuando una persona se comunica
telefónicamente, la llamada ingresa a la central telefónica de Contact Center y dependiendo del número entrante
se deriva automáticamente a la célula de Representantes de Atención al Consumidor, capacitados para la atención
de consultas de ese producto específico (componentes o ingredientes utilizados, dosis recomendadas, formas de
uso, manera de eliminar manchas, etc.)
Cuando el Representante de Atención al Consumidor atiende una consulta, la registra en el sistema ingresando los
siguientes datos: tipo de consulta, criticidad, producto, nombre, apellido, domicilio y teléfono del consumidor,
descripción detallada de la consulta. El Representante de Atención al Consumidor analiza el requerimiento y valida
en la ayuda en línea la solución; en caso de poder solucionarlo comunica las acciones a realizarse al consumidor y
las registra en el sistema, cerrando la consulta como resuelta. Si no puede resolver la consulta, la deriva al Grupo
de Soporte de Producto (integrado por personal del Cliente) comunicando al consumidor: número de consulta,
tiempo estimado en el que se comunicará telefónicamente la solución, el cual va a depender del tipo de consulta.
Si existe algún problema técnico y no es posible derivar la consulta a alguno de los grupos resolutores
(Representantes de Atención al Consumidor o Grupo de Soporte de Producto), se le debe asignar el estado
Demorado (para evitar que siga sumando el tiempo de solución). Es relevante destacar, que una vez solucionado
el problema, el recurso que demoró la consulta (independientemente del grupo al que pertenezca), debe volverlo
al estado que tenía antes de demorarlo, para luego poder derivarlo.
Cuando un Analista de Soporte de Producto -que pertenece al Grupo de Soporte de Producto- recibe una consulta,
analiza si puede solucionarla. Si puede solucionarla responde la consulta registrando las acciones a implementarse;
si no conoce cómo solucionar esta consulta específica, describe un mensaje comentando esta situación y reenvía
en ambos casos, la consulta a los Representantes de Atención al Consumidor, para que se contacten
telefónicamente con el consumidor.
Con el fin de evaluar la calidad de atención y efectividad de las soluciones, Contact Center mantiene el detalle de
todas las acciones realizadas asociadas a una consulta por cada uno de los recursos involucrados, desde su
generación hasta su cierre. Asimismo, diariamente realiza el monitoreo de las llamadas de los Representante de
Atención al Consumidor, el cual se sintetiza en Informes semanales que son enviados al Cliente. Periódicamente,
también envía a cada Cliente un Reporte de Consultas de Consumidores, en el que se detalla los tipos de consultas
1
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
TEMA: Evolución del Software – Cambios de Requerimientos
realizadas, tiempo de resolución, soluciones brindadas, porcentajes de llamadas solucionadas por los
Representantes de Atención al Consumidor y de llamadas derivadas al Grupo de Soporte de Producto.
Pedido de Cambio
«entity»
Accion
«entity» descripcion
Estado nombre
descripcion estadoInicial conocerTipoRespuesta()
nombre 1 getNombre()
estado 1
accion 1
«entity»
Recurso «entity» «entity»
Actuacion TipoConsulta
fechaIngreso
legajo recurso descripcion descripcion «entity»
nombre fechaFin nombre
1 Producto
getNombre() fechaInicio
horaFin conocerTipoRespuesta() descripcion
getDescripcion()
horaInicio nombre
tiempoEstimadoResolucion getNombre()
setDescripcion() getNombre()
«entity» conocerAccion() setNombre()
NivelResolucion conocerEstadoActual() 1
descripcion conocerEstadoInicial()
conocerRecurso() 1
nombre
orden mostrarDatosActuacion()
tipoConsulta
getNombre()
actuacion 1..*
1 producto
«entity»
«entity» ServicioContratado
Consulta
fechaFin
apellidoConsumidor fechaInicio
nivelResolucion descricpion
direccionConsumidor concocerTipoRespuesta()
fechaCreacion conocerProducto()
nombreConsumidor conocerTipoServicio()
«entity» nroConsulta estaVigente()
Criticidad telefonoConsumidor consulta mostrarNombreProducto() servicioContratado
criticidad
tieneSACContrado()
descripcion buscarActuaciones()
nombre cerrar() 1..*
1 0..*
getNombre() conocerActuacion()
conocerCriticidad()
conocerNivelResolucion() tipoServicio
«entity»
conocerTipoConsulta() Cliente
demorar() 1
derivarGrupoSoporte() «entity» cuit
derivarRep() TipoServicio domicilio
guardarConsulta() razonSocial
informarCliente() descricpion
nombre conocerServicioContratado()
new() getCliente()
resolver() getNombre() mostrarSACVigente()
retomar()
sonTusParametros()
2
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
TEMA: Evolución del Software – Cambios de Requerimientos
Pedido de Cambio
3
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
TEMA: Evolución del Software – Cambios de Requerimientos
4
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
TEMA: Evolución del Software – Cambios de Requerimientos
Agencia de Turismo
Una agencia de turismo se dedica a armar tours por Europa donde el traslado durante el tour y los hoteles en cada
ciudad visitada. Además, se incluyen algunas excursiones para cada ciudad incluida en un tour. La agencia tiene
definidos tours de una duración fija, a partir de los cuales se organizan viajes con diferentes fechas de salida.
Un tour tiene previamente definidos un conjunto de hoteles que se pueden ocupar en cada ciudad. En el momento de
definir un viaje se decide cuál de los hoteles disponibles será ocupado y en qué habitación se ubicará a cada pasajero.
Para esto se tiene en cuenta si los pasajeros vienen en grupos de amigos y/o familiares, y qué capacidad de habitación
solicitaron (una pareja con un hijo solicita una habitación triple, dos amigos solicitan una habitación doble con camas
separadas, etc.). Cabe aclarar que en el caso de que un pasajero solicite una habitación simple, ésta tiene un costo
extra.
Para realizar un viaje se arman grupos de pasajeros a los cuales se les asigna un colectivo y un chofer. Puede ocurrir
que se cambie de chofer y/o de colectivo en alguna ciudad del viaje.
En el momento en que se diagrama un viaje de un tour se debe asignar un guía que acompañe a los pasajeros en cada
ciudad a visitar.
La diagramación de un viaje incluye además la asignación de guías locales (además del guía que acompaña a los
pasajeros durante el viaje) en algunas excursiones de las distintas ciudades visitadas. Algunas excursiones requieren
de recursos especiales como ser auriculares para escuchar a los guías o vestimenta particular. Puede ocurrir que ciertas
excursiones no se puedan realizar si no se dan las condiciones necesarias (buen tiempo, disponibilidad de lugares
ajenos a la agencia de turismo, entre otros).
Pedido de Cambio:
A su vez, cada competencia de menor nivel definida asumirá un peso dentro de la evaluación final, el cual también
puede ser variable en función del puesto y de las competencias que la plantilla tiene asociadas para el mismo.
Una vez definidas las plantillas y llegado el momento de realizar las evaluaciones de desempeño, el Responsable del
Área de Desarrollo de RRHH genera las evaluaciones para todo el personal, informando el período a evaluar y el plazo
de tiempo asignado para realizar las evaluaciones. En función de esta información el sistema deberá generar las
evaluaciones de desempeño para todos los empleados, teniendo en cuenta que tanto el evaluado como los
evaluadores deben tener una antigüedad mínima requerida en el puesto, para el Período de Evaluación que se está
evaluando (caso contrario no puede realizarse la evaluación)
Para cada evaluación se asociará la siguiente información:
• Datos del Evaluado (cada uno de los empleados a los que se realizará la evaluación de desempeño): legajo,
apellido y nombre y puesto en el que se lo evalúa (por ejemplo, Analista o Jefe), sector en el que se lo evalúa,
antigüedad en el puesto, fecha de ingreso a la empresa)
• Datos del Evaluador (superior inmediato del evaluado en el período en el que se lo evalúa): legajo, apellido y
nombre y puesto.
• Competencias y Sub-competencias a Evaluar y comportamientos posibles asociados a cada una de ellas
Una vez generadas las evaluaciones, las mismas deberán ser realizadas por cada evaluador antes de su vencimiento.
Esto implica que el mismo deberá completar en el sistema los resultados de cada evaluación a su cargo (grado para
cada comportamiento en cada competencia y las secciones de comentarios). Con esta información el sistema deberá
calcular la Evaluación Final, que surge de multiplicar las calificaciones numéricas asociadas a los valores seleccionados
por el peso de incidencia de la competencia a la que dicho valor corresponde.
Pedido de Cambio
«boundary»
«control»
PantRegResultadoEvaluacion
GestorRegResultadoEvaluacion
- comentarioFinal
- comentarioFinal
- evaluacionFinal
- listadoCompetencias - competenciaSeleccionada
- comportamientoSeleccionada
- listadoEvaluaciones
- estadoPteCargaResultado
- observaciones
- estadoRegNvoResultado
- opcionCancelar
- evaluacionesPtes
- opcionConfirmar
- evaluacionFinal
+ confirmarResultados() - evaluacionSeleccionada
+ confirmarResultadosFinal() - evaluado
+ habilitarVentana() - evaluador
+ ingresarComentarioFinal() - observaciones
+ ingresarObservaciones()
+ buscarEstadoRegResultado()
+ mostrarEvaluacionFinal()
+ opcionRegResultadoEvaluacion() + buscarEvaluacionesPtes()
+ buscarEvaluacionesPtesEvaluador()
+ pedirSeleccionCompetencia()
+ calcularEvaluacionFinal()
+ pedirSeleccionComportamiento()
+ pedirSeleccionEvaluacion() + finCU()
+ mostrarCompetenciasAEvaluar()
+ seleccionarCompetencia()
+ mostrarComportamientosAsociados()
+ seleccionarComportamiento()
+ mostrarDatosEvaluacion()
+ seleccionarEvaluacion()
+ nuevoResultadoEvaluacion()
+ solicitarConfirmacion()
+ solicitarConfirmacionFinal() + obtenerEvaluador()
+ registrarEvaluador()
+ solicitarIngresoComentarioFinalEv()
+ registrarResultados()
+ solicitarIngresoObservaciones()
+ tomarComentarioFinal()
+ tomarConfirmacion()
+ tomarConfirmacionFinal()
+ tomarIngresoObservaciones()
+ tomarSeleccionCompetencia()
+ tomarSeleccionComportamiento()
«entity»
+ tomarSeleccionEvaluacion()
PlanillaEvaluacion
+ validarCumplimientoObjetivos()
- descripcion
- fechaAlta
- nombre
- vigenciaDesde
- vigenciaHasta
+ conocerDetallePlantillaEvaluacion()
+ conocerPuesto()
+ mostrarCompetencias() «entity» «entity»
+ mostrarComportamientoCompetencias() «entity»
Estado Sesion
+ mostrarSubcompetencias() Evaluacion
- descripcion - fecha
1 - fecha
- nombre - hora
- periodoAEvaluar
-detallePlantEvaluac -plantillaEvaluacion
- valorEvaluacionFinal + esEstadoRegResultado() + conocerUsuario()
1..* - vencimiento + esPteCargaResultados() + obtenerEmpleado()
-detallePE «entity» + getNombre()
+ buscarEstadoActual()
DetallePlanillaEvaluacion + conocerAprobador()
1
- ponderacion + conocerEvaluado()
0..* + conocerEvaluador()
+ conocerCompetencia() + conocerHistorialEvaluacion() -usuario
+ conocerComportamientoPlantilla() + conocerPlantillaEvaluacion() «entity»
+ conocerResultado() -historialEvaluacion HistorialEvaluacion
+ getValoracionNumerica()
+ esDeEvaluador() «entity»
+ mostrarCompetencias() - fecha
+ estaPteCargaResultado() Usuario
+ mostrarComportamiento() - hora
+ mostrarComportamientoAsociado() + getPeriodoEvaluar() 1..* - observaciones - contraseña
+ mostrarSubcompetencias() + getVencimiento() - nombre
+ mostrarCompetenciasAEvaluar() + conocerEmpleado()
1 + mostrarComportamientoCompetencia() + conocerEstado() + obtenerEmpleado()
-competencia
1 + mostrarDatosEvaluacion() + esEstadoActual() 1
+ mostrarDatosEvaluado() + new()
«entity» + mostrarDatosEvPtes() -usuario
Competencia + mostrarPuestoEvaluado()
+ mostrarSubcompetencias()
- descripcion
+ registrarResultadosEvaluacion()
- nombre
+ setEstado() -evaluador
+ getDescripcion()
+ getNombre() -empleado
+ mostrarDatosCompetencia() -detallePlantillaEvaluacion
1
«entity»
-comportamientoPlantilla Empleado
1..* 1
- apellido
-resultado - fechaIngreso
«entity» 0..* -ocupacionPuesto
ComportamientoPlantilla 1 -aprobador - legajo
«entity» 1 - nombre
- valoracionNumerica Resultado «entity»
+ conocerLugarFisico()
+ conocerComportamiento() - comentarios OcupacionPuesto
+ conocerModalidadContratacion()
+ getValoracionNumerica() - fechaOcupacion -ocupacionPuesto + conocerOcupacionPuesto()
+ mostrarComportamiento() + new() + conocerTurno()
+ conocerPuesto() + conocerUsuario()
-comportamiento 1 + conocerSector() + getApellido()
+ getFechaOcupacion() -empleado + getLegajo()
«entity» + mostrarPuestoEvaluado()
Comportamiento + getNombre()
1 + mostrarDatosLaborales()
- descripcion + mostrarLugarFisico()
- grado + mostrarTurno()
-lugarFisico
+ getDescripcion()
+ getGrado() -sector «entity»
+ setDescripcion() 1 LugarFisico 1
+ setGrado() «entity» - descripcion
Sector - nombre -modalidadContratacion
-puesto
- telefono
-puesto - descripcion
- nombre + getNombre() 1
1..* 1 -turno
«entity»
«entity» 1
ModalidadContratacion
Puesto
«entity»
- descripcion
- descricpion Turno
- nombre
- nombre
- descripcion
- vigenciaDesde
- horaEntrada
- vigenciaHasta
- horaSalida
+ getNombre() - nombre
+ getNombre()
Avisos Clasificados
En una localidad del interior de la provincia de Córdoba funciona desde hace más de 25 años un importante
semanario llamado “Tribuna”. Dicho semanario sale a la calle los días sábados, cubriendo las noticias y
sucesos de la localidad y región. El semanario está dividido en distintas secciones: Deportes, Regionales,
Sociales, etc. Como es un semanario local y no se cuenta con una gran infraestructura y maquinaria, se
imprime de a partes, comenzando con esta tarea los días miércoles, por lo que hay secciones que deben
estar preparadas para éste día.
A continuación, se describirá la gestión de clasificados. La recepción de clasificados puede ser vía telefónica,
personalmente en las distintas receptorías de la localidad y región o, solamente para algunas empresas que
hace bastante tiempo publicitan en el semanario, se hacen recepciones vía e-mail.
Las publicidades pueden aparecer en la sección clasificados o en otra sección del semanario, como por
ejemplo, una importante casa de venta de ropa deportiva puede elegir que su publicidad aparezca en la
sección deportes. Los avisos que se publican en la sección “Clasificados”, están a su vez diferenciados en
distintas categorías y a su vez cada categoría puede o no tener sub categorías. Por ejemplo, la categoría
“Profesionales” se subdivide en Oncología, Abogacía, Odontología, etc.la de “empleos y ocupaciones” en
pedidos y ofrecidos, pero la categoría de “Servicios” no tiene ninguna sub categoría. El orden de las
categorías en la edición impresa tiene un orden establecido, pero, eventualmente éste orden puede
alterarse. El aviso puede ser de texto plano o puede tener alguna imagen (en ese caso, el cliente debe enviar
el diseño del aviso) y, por política del Semanario, no en todas las categorías y sub categorías se puede publicar
cualquier tipo, por ejemplo, en la categoría “Empleos” no se admiten los avisos con el logo del
comercio/empresa/organización que solicita. El precio del aviso varía según el tamaño, el tipo, el formato y
la cantidad de sábados que aparecerá publicado, y esto está previamente definido. Los formatos están
predefinidos, tienen un nombre distintivo y definen qué fuente tendrá el aviso y el tamaño, cuál será el
espaciado (anterior, posterior, interlineado), cantidad de palabras en mayúscula, y otros efectos como
cursiva, negrita y subrayado. No todas las combinaciones de espaciado, fuente, tamaño y efectos son
posibles, debido a que hay fuentes que no admiten efectos o que dificultan la diagramación de la hoja con
determinados interlineados. El mínimo es de dos líneas, con la primer palabra en mayúscula publicado dos
sábados consecutivos. De allí existe muchas variantes, por ejemplo igual que el anterior pero con la primer
palabra en mayúscula y negrita, o todo el aviso en negrita con tres líneas y publicado tres sábados
consecutivos, etc. Un aviso como máximo puede publicarse 15 sábados consecutivos. Si algún cliente desea
extender éste plazo, deberá presentarse nuevamente en la fecha correspondiente y volver a solicitarlo como
si fuera un nuevo aviso. En el caso de los avisos con imagen o diseño, pueden ocupar una o dos columnas y
en caso de que el aviso exceda éste tamaño, se considera como publicidad y se cobra como tal. Cada aviso
tiene una fecha de vencimiento, que es publicada junto al aviso en cada edición. La fecha de vencimiento se
calcula a partir de la cantidad de sábados por los que fue solicitado el aviso, y corresponde a la fecha del
último sábado que el avisó aparecerá publicado.
Cuando el receptor del aviso registra un nuevo aviso, debe registrar todas las características del aviso,
incluido el texto, la fecha de recepción y fecha de vencimiento, forma de pago (tarjeta de débito, tarjeta de
crédito o efectivo), y se imprime el ticket correspondiente.
El director de Tribuna está interesado en implementar un sistema para la gestión de los clasificados para
poder llegar sin problemas a la impresión del día miércoles, cumpliendo con el funcionamiento descripto
anteriormente.
Pedido de Cambio
Propuestas de Solución:
Contact Center
Cambios en la Estructura
Agencia de Turismo
Funcionalidad
Registrar restaurante
Modificar restaurante
Consultar restaurante
Eliminar restaurante
Buscar restaurante (opcional)
Diagramar Media Pensión de Tour
Modificar Diagramación de Media Pensión de Tour
Consultar Diagramación de Media Pensión de Tour
Estructura
Funcionalidad
Casos de Uso que se agregan: Registrar Conocimiento
Registrar Conocimiento Modificar Tipo de Conocimiento
Modificar Conocimiento Eliminar Tipo de Conocimiento
Eliminar Conocimiento Consultar Tipo de Conocimiento
Consultar Conocimiento
Registrar Competencia Casos de uso que se modifican:
Modificar Competencia Registrar Puesto de Trabajo
Eliminar Competencia Modificar Puesto de Trabajo
Consultar Competencia Consultar Puesto de Trabajo
Estructura
PlanillaEvaluacion
descripcion
fechaAlta Competencia
nombre descripcion
vigenciaDesde nombre
vigenciaHasta
getDescripcion()
conocerPuesto() getNombre()
mostrarCompetencias() mostrarDatosCompetencia()
mostrarComportamientoCompetencias()
mostrarSubcompetencias() 1
Avisos Clasificados
Registrar promoción
Modificar promoción
Anular promoción
Consultar promoción
Registrar Aviso
Modificar Aviso
Registrar Cobro de Aviso
categoria
«entity» precioAviso 1
Categoria «entity»
descripcion PrecioAviso
nombre cantColumnas
0..*
numOrden cantLineas
ubicacion fechaVigenciaDesde
buscarAvisos() monto
categoria
buscarDatosAvisos() buscarFormato()
buscarFormartoAvisos() 0..1 conocerCategoria()
buscarSubcategorias() conocerFormato()
conocerAviso() conocerSubcategoria()
conocerSubcategoria() conocerTipoAviso()
conocerTipoAviso() esTipoDeAvisoDiseño()
getNombre()
getNumeroOrden()
listarSubcategoria()
ordenarAvisos()
tieneSubcategoria()
verificarTipoAviso()
Contenido
Agua Puntos Fijos ........................................................................................................................................ 3
Consigna: ................................................................................................................................................... 3
Presentación del caso: ............................................................................................................................ 3
Solución propuesta .............................................................................................................................. 8
Auditoría Médica de Órdenes ................................................................................................................... 10
Consigna: ................................................................................................................................................. 10
Presentación del caso: .......................................................................................................................... 10
Congreso de Informática y Tecnología ................................................................................................... 14
Consigna: ................................................................................................................................................. 14
Presentación del caso: .......................................................................................................................... 14
Cadena de Pastelería ................................................................................................................................ 19
Consigna: ................................................................................................................................................. 19
Presentación del caso: .......................................................................................................................... 19
Sistema de Compras y Proveedores ...................................................................................................... 24
Consigna: ................................................................................................................................................. 24
Presentación del caso: .......................................................................................................................... 24
Cupones de Descuentos ........................................................................................................................... 29
Consigna: ................................................................................................................................................. 29
Presentación del caso: .......................................................................................................................... 29
Consigna:
Una empresa privada se dedica a prestar el servicio de agua potable a una ciudad del interior de la
provincia de Córdoba. Una de sus obligaciones como prestador de servicio es asegurar que la provisión
del servicio se realice bajo los parámetros de presión y caudal establecidos contractualmente y regulados
por el Organismo de Control.
Para determinar las condiciones de presión y caudal con las que se está suministrando el servicio, el
Organismo de Control ha definido un conjunto de puntos dentro del radio servido por la Concesionaria,
denominados Puntos Fijos. Un Punto Fijo es un punto de la red de agua potable que se toma como
referencia para medir la presión y el caudal del suministro. Tiene una dirección (calle, altura, barrio)
asociada.
En cada Punto Fijo se toman permanentemente mediciones de presión y caudal, las cuales deben
encontrarse dentro de un rango de valores válidos, de acuerdo a lo que establece el contrato de
concesión. A su vez, la empresa tiene sus propios Puntos Fijos definidos, a fin de realizar un control más
minucioso sobre la provisión del servicio, siendo importante discriminar cuáles son los definidos por el
Organismo de Control y cuáles no.
Las mediciones de presión y caudal son monitoreadas permanentemente por el Área de Gestión
Hidráulica de la empresa para asegurar que los valores se mantienen dentro de los rangos definidos
como válidos. Además, las mediciones realizadas deben ser informadas mensualmente al Organismo de
Control.
Para medir la presión de los distintos Puntos Fijos distribuidos en la ciudad, existen componentes
electrónicos, llamados data logers, instalados de manera permanente en los Puntos Fijos, los cuales
capturan los datos de las mediciones (presión y caudal) y los convierten a datos digitales en formatos de
texto plano. Dependiendo la marca del data loger variará el formato del archivo generado. Actualmente
las mediciones son realizadas cada 5 minutos, pero esa periodicidad puede variarse.
La empresa necesita un sistema que permita gestionar las mediciones de cada Punto Fijo, debiendo poder
importarse las mismas tal como son informadas por los distintos data loger, sin aplicar ningún tipo de
operación de sumarización o promedio al momento de almacenar la información y sin importar la marca
del data loger ni el formato del archivo plano que dicho data loger genera. Para esto es necesario que el
sistema se conecte a los data loger instalados en cada Punto Fijo y capture las mediciones registradas
en los archivos que los mismos generan. Los datos de las mediciones se enviarán al software a través
de un módem GSM.
Está previsto que cada 1 hora se realice la importación de los datos de los distintos archivos planos
generados por los data loger (en el cual se van adicionando las nuevas mediciones) pero este lapso de
tiempo puede ser variable (no pudiendo nunca ser superior a 2 horas). El sistema deberá permitir
importar los datos de hasta 50 Puntos Fijos en simultáneo y la importación de cada archivo no debe
demorar más de 10 segundos para 12 mediciones (ya que las mediciones se toman cada 5 minutos y la
importación de las mismas se hace cada hora)
Al momento de importar cada una de las mediciones de un determinado Punto Fijo, desde el archivo plano,
puede ocurrir que la misma se realice en forma exitosa o que por algún inconveniente la importación de
una medición no pueda realizarse. Cuando la importación se realiza en forma exitosa el sistema deberá
borrar del archivo plano las mediciones importadas. En caso de que la importación de alguna medición
sea errónea (por no importarse todos los datos correctamente o porque la medición fue registrada de
manera incompleta por el data loger) se vuelve a intentar realizar la misma y luego de 2 intentos fallidos
se la identifica como errónea y se continúa con las siguientes mediciones del archivo.
El software a construir deberá permitir al Área de Gestión Hidráulica de la empresa la gestión de las
mediciones diarias de cada Punto Fijo, pudiendo visualizar las mediciones en forma de distintas vistas, a
fin de detectar los valores que queden fuera de los parámetros definidos. Estas vistas deberán mostrar
tanto las mediciones diarias para un día de particular como la tendencia de varios días consecutivos. Las
vistas posibles para la visualización de los resultados deberán ser las siguientes:
• Tabla de resultados: Mostrará cada una de las mediciones realizadas en una grilla, indicando momento
de la medición y presión o caudal (ya que hay Punto Fijos que miden presión y otros que miden caudal).
Deberán resaltarse en la tabla los valores que se encuentran fuera de los rangos considerados como
aceptables.
El resultado de la ejecución del reporte deberá poder imprimirse o exportarse a un archivo Excel.
• Gráficos: Mostrarán cada una de las mediciones realizadas en un gráfico de líneas que permita
observar tendencias de las mediciones a lo largo del tiempo. Deberán resaltarse los valores que se
encuentran fuera de los rangos considerados como aceptables.
El resultado de la ejecución del reporte deberá poder imprimirse o exportarse a un archivo Excel.
Se necesita que se visualicen en una misma pantalla los gráficos de 2 puntos fijos, para facilitar su
seguimiento.
• Comparativa: Deberá poder realizarse la comparación de las mediciones diarias de distintos puntos
fijos.
Además, deberán existir reportes mensuales en donde se visualicen valores máximos, mínimos y
promedios.
Deberá contemplarse la posibilidad que la aplicación sea accedida desde una PC que se encuentre fuera
de la empresa (ya que el control se realiza las 24 horas todos los días del año) sin que se requiera realizar
ninguna instalación especial para acceder al software. Lo mismo vale para cuando el acceso se hace
desde dentro de la empresa. Para ello se pensó en utilizar una página Web para visualizar las mediciones,
a la que se tendrá acceso utilizando una identificación de usuario y una palabra clave de al menos 8
caracteres. El navegador a utilizar deberá ser Internet Explorer 7 o superior, ya que es el navegador
utilizado en la empresa definido por política.
Por otra parte se requiere que el sistema emita alertas cuando los valores de las mediciones de los
Puntos Fijos estén fuera de los rangos establecidos o cuando se detecten caídas abruptas en la medición
de la presión o el caudal, aun cuando los valores se encuentren dentro de los rangos válidos. Las alertas
deberán enviarse utilizando diferentes medios: mail y mensajes de texto a celular. Los alertas deberán
proveer información del Punto Fijo, la medición que se encuentra fuera de rango y la fecha y hora de dicha
medición.
Una vez finalizado el análisis de las mediciones, el Operador de Gestión Hidráulica debe registrar el
análisis realizado sobre las mismas. Como resultado de ese análisis las mediciones pueden encontrarse
dentro del rango definido como aceptable, en los límites (consideradas como Observaciones) o fuera del
rango (consideradas como No Conformidades si el Punto Fijo es de los definidos por el Ente de Control y
como Observaciones si es un Punto Fijo definido por la empresa).
Si la medición se encuentra dentro de los valores aceptables se actualiza el estado de esta a Aceptada.
Si en cambio el valor de esta se encuentra en los límites o fuera del rango, la misma deberá ser tratada
Glosario
Radio Servido: Es el área geográfica a la cual provee el servicio la empresa concesionaria del servicio
de agua potable
Data Loger: Dispositivo que se instala en los Puntos Fijos para medir presión y caudal.
Organismo de Control: Ente regulador de servicios públicos que controla el cumplimiento del Contrato
de Concesión por parte de la empresa concesionaria.
Emitir reporte con tabla de Emitir un reporte de cada una de las mediciones realizadas en
18
resultados para un Punto Fijo una grilla, indicando momento de la medición y presión o caudal
Generar reporte de evolución Visualizar las mediciones de un Punto Fijo en un gráfico de
19 de mediciones para un Punto líneas que permita observar tendencias a lo largo del tiempo.
Fijo
Mostrar comparativa de las Mostrar la comparación de las mediciones diarias de distintos
20 mediciones de un conjunto de Puntos Fijos seleccionados por el usuario
Puntos Fijos
Generar un reporte en donde visualicen valores máximos,
Emitir reporte mensual de
21 mínimos y promedios para un determinado conjunto de Puntos
mediciones
Fijos en un determinado período de tiempo.
Enviar alerta por medición Emitir alerta para mediciones fuera de los rangos establecidos
22
fuera de rango o cuando se detecten caídas abruptas en la medición.
Registrar el análisis de cada medición de un Punto Fijo en un
23 Registrar análisis de medición determinado período de tiempo, actualizando el estado de las
mismas.
Modificar el análisis asociado a una medición registrado
24 Modificar análisis de medición
siempre que aún no se haya generado la acción asociada.
Eliminar el análisis asociado a una medición siempre que aún
25 Eliminar análisis de medición
no se haya generado la acción asociada.
Consultar los análisis asociados a las mediciones de un Punto
26 Consultar análisis de medición
Fijo.
Generar una acción correctiva o preventiva asociada a una
27 Generar acción medición que se encuentre en los estados “Con Observaciones”
o “No Conformidad”
Modificar una acción generada siempre y cuando la misma no se
28 Modificar acción
encuentre en estado “Cerrada”.
Eliminar una acción generada siempre y cuando la misma no se
29 Eliminar acción
encuentre en estado “Cerrada” ni tenga seguimientos asociados.
30 Consultar acción Consultar una o más acciones generadas.
Registrar seguimiento de Registrar el seguimiento de las acciones generadas, asociadas
31
acciones a mediciones con valores no aceptables.
Modificar los seguimientos registrados para una acción
Modificar seguimiento de
32 generada siempre y cuando la misma no se encuentre en estado
acciones
“Cerrada”.
Eliminar los seguimientos registrados para una acción generada
Modificar seguimiento de
33 siempre y cuando la misma no se encuentre en estado
acciones
“Cerrada”.
Consultar seguimiento de Consultar los seguimientos registrados para una acción
34
acciones generada.
35 Registrar cierre acción Registrar cierre de acción correctiva o preventiva.
Generar informe de las mediciones identificadas como No
Emitir informe de mediciones
36 Conformidades, desde su registro inicial y hasta el cierre de la
No Conformes
Acción Correctiva
37 Registrar Empleado Registrar un empleado en el sistema
38 Modificar Empleado Actualizar los datos de un empleado
39 Consultar Empleado Visualizar los datos de un empleado
Solución propuesta
Diagrama de Máquina de Estados: Clase Medición
ConObservaciones NoConforme
ConAccionPreventivaGenerada
Consigna:
El área de Auditoría Médica de una importante Obra Social tiene por objetivo realizar las autorizaciones
de las órdenes médicas y de las prácticas médicas prescriptas en ellas. Las prácticas médicas están
definidas en el nomenclador de los planes asistenciales que pueden tener los afiliados.
La Obra Social quiere establecer un nuevo proceso de autorizaciones de las órdenes médicas que permita
agilizar los trámites al afiliado. De acuerdo a la complejidad de las prácticas médicas solicitadas en la
orden, la autorización puede ser efectuada: por Auditoría On-Line (vía Internet), por Auditoría Interna en
las instalaciones de la obra social o por un Comité Médico designado para analizar el caso.
Según lo definido anteriormente, la relación entre la complejidad de las prácticas médicas y los niveles
de autorización son:
• Práctica Simple: corresponde a consultas médicas, prácticas odontológicas simples, estudios de
rutinas, etc. La autorización debe ser realizada por Auditoría On Line.
• Práctica Semi-compleja: corresponden a estudios o consultas a especialistas, ecografía, etc. La
autorización debe ser realizada por un Auditor Interno, que es una persona designada por la Obra
Social para analizar la situación del afiliado.
• Práctica Compleja: implican prácticas médicas tales como tratamientos oncológicos, trasplantes, etc.
La autorización es efectuada por un Comité Médico que analiza el caso del afiliado.
El proceso a seguir para realizar la autorización de una orden médica se describe a continuación:
Antes de atenderse el afiliado, debe presentar su carnet y la orden médica con las prácticas solicitadas
por el médico prescriptor. El Responsable del Centro Médico (RMC) solicita la autorización de la orden
médica ingresando al Sitio Web de la Obra Social. En dicha solicitud ingresa el número de afiliado, plan
asistencial, matrícula del médico, diagnóstico presuntivo o definitivo, las prácticas y/o estudios
solicitados, número de orden médica y la fecha de prescripción. Al confirmar la solicitud, se envía la
misma para que sea procesada por el módulo de auditoría on line. Como respuesta se obtiene el resultado
de la evaluación de la orden médica. Si está autorizada la orden médica se muestra la fecha de validez
(30 días corridos) y el código de autorización que asegure la legitimidad de la operación. En cambio, si
está rechazada, se notifica el motivo por el cual se rechazó la misma. Por ejemplo, una solicitud puede
ser rechazada, cuando se envía a autorizar una práctica que no puede ser realizada porque el paciente
requiere un determinado tiempo mínimo de asociación (carencia).
Las solicitudes de autorización deben enviarse encriptadas al servidor mediante el algoritmo RSA, al igual
que las respuestas.
Cuando se envía una solicitud de autorización de orden médica se verifica la validez de los datos del
médico prescriptor por medio de un web service del Ministerio de Salud de la Nación para evitar órdenes
adulteradas, médicos inhabilitados, y cualquier otra irregularidad.
El resultado de la auditoría debe obtenerse en menos de 10 seg. Al excederse ese tiempo se debe informar
al usuario de la demora, para que éste tenga una sensación de control sobre la aplicación. Cabe aclarar
que la autorización es realizada por orden médica. Por lo tanto, si una práctica no fue autorizada queda
rechazada la orden.
El sitio web debe ser soportado por el navegador Microsoft Internet Explorar 6.0 o superior con una
resolución de pantalla de 1024 x 768. Los fondos y textos de la interfaz deben seguir la gama de colores
azules institucionales, cuya degrades se mantenga dentro de los 256 colores.
El módulo encargado de la Auditoría On-Line debe verificar la validez y completitud de los datos
ingresados por el RMC en el formulario de solicitud de autorización. Si existiese un error, la solicitud es
devuelta para que el RMC realice la corrección y pueda enviarla nuevamente para su autorización; o bien,
anularla. Una vez anulada, no podrá solicitarse una autorización para la orden médica. Si la orden llega a
ser devuelta más de 2 veces se rechaza automáticamente. Esta aplicación web debe tener una capacidad
de atención de 100 solicitudes simultáneas.
Puede ocurrir que determinadas prácticas de la orden médica, en función de su complejidad, requieran
aprobación de Auditoría Interna o de un Comité Médico. En ambos casos, la respuesta de la evaluación
indica que está derivada para la revisión del afiliado. Cuando el usuario se presenta en la Obra Social para
la evaluación del Auditor Interno o el Comité Médico, éstos autorizan o rechazan la orden médica. El
afiliado tiene 7 días hábiles para realizarse la revisión en la Obra Social; de lo contrario, se invalidará
automáticamente la orden.
Para evitar fraudes en la realización efectiva de las órdenes médicas la autorización de las órdenes tienen
una fecha de validez. Superada la misma existe un tiempo de prórroga de 20 días corridos para que el
afiliado pueda solicitar una reautorización en la oficina de la Obra Social, en caso contrario, se invalidará.
La reautorización se puede realizar por única vez, extendiendo la validez por 10 días corridos.
Se debe contar con el registro de las situaciones por las cuales atravesó una solicitud de orden médica
en el tiempo y, cuando corresponda, el código de la autorización. Por otro lado, la base de datos debe
tener habilitada la función de log para dejar pistas de auditoría de las operaciones realizadas sobre los
datos. Los accesos a la base de datos deben realizarse únicamente con procedimientos almacenados.
El Centro de Cómputos de la Obra Social requirió el uso de tres servidores: un servidor que gestione la
base de datos, otro que contenga toda la lógica de la aplicación, y un tercer servidor para alojar el servidor
web (apache). Los componentes de presentación de las funcionalidades para administración y auditorías
internas deben ser instalados en las computadoras de los usuarios, ya que se ejecutan localmente.
Listado de Casos de Uso
Solución Propuesta
Máquina de Estados de la clase: Orden Médica
Consigna:
• Cada evaluador debe revisar los trabajos que le fueron asignados y registrar para cada uno el
resultado de su evaluación. Para ello, el evaluador asigna un puntaje (que es un valor entero entre
1 y 5, donde 1 significa “insuficiente” y 5 significa “excelente”) y un comentario a cada uno de los
aspectos que deben evaluarse, los cuales se encuentran predefinidos (contenido técnico, lenguaje
y estilo, pertenencia al simposio, novedad y contribuciones, etc.). Por ejemplo: el Evaluador XX
asigna al Trabajo N° 23 un puntaje de 5 en el aspecto contenido técnico, un 3 en lenguaje y estilo,
un 4 en pertenencia al simposio, y un 5 en novedad y contribuciones. Además de estos puntajes,
el evaluador debe indicar su decisión global acerca del trabajo, la cual puede ser: aceptado o
rechazado.
• Cuando el trabajo ha sido evaluado por al menos uno de los evaluadores pero todavía no ha sido
evaluado por los tres, se considera que se encuentra en el estado en evaluación inicial, pasando
al estado pendiente de evaluación por chairs, cuando efectivamente los tres evaluadores lo hayan
revisado.
• Luego, los chairs deben analizar para cada trabajo estas evaluaciones y en función de las mismas
tomar una decisión final, la cual puede ser que el trabajo sea aceptado, aceptado sujeto a
correcciones o rechazado. En el último caso, ya no existen posibilidades de reformularlo para
volver a presentarlo.
• Si el trabajo es aceptado sujeto a correcciones, los autores tendrán una única instancia y una
determinada cantidad de días (dependiendo del simposio) para realizar las correcciones
solicitadas y volver a presentarlo. Si transcurrido este tiempo los autores no envían una versión
corregida del trabajo, el mismo se considera anulado. Si por el contrario, es enviada la versión
corregida, los chairs serán los encargados de revisar estos trabajos para cotejar que se hayan
efectuado las correcciones solicitadas. Como resultado de este análisis puede resultar que el
trabajo sea rechazado o que sea aceptado.
• Una vez concluido el congreso, todos los trabajos que fueron aceptados son publicados en los
proceedings (actas) pertenecientes a cada simposio, asignando a cada trabajo su correspondiente
ISSN.
• Los autores pueden retirar por razones particulares y personales sus trabajos del congreso, sólo
si los mismos todavía no han sido aceptados.
• Es necesario conocer para cada trabajo, el tiempo de permanencia en cada uno de los estados
transitados.
SOLUCIÓN PROPUESTA
1. Máquina de estados para la clase “TrabajoDeInvestigación”.
stm DTE_TrabajoDeInvestigación
09 Registrar
recepción de trabajo PendienteDeAsignación
/new() DeEvaluador
18 Asignar evaluadores a
trabajos /asignarEvaluador()
25 Retirar trabajo
/retirar()
PendienteDe
PrimeraEvaluación
25 Retirar trabajo
19 Registrar evaluación realizada por
/retirar()
evaluador /evaluar() [y es la primera
evaluación]
25 Retirar trabajo
19 Registrar evaluación realizada /retirar() Retirado
EnEvaluaciónInicial
por evaluador /evaluar() [y no es la
última evaluación]
20 Registrar resultado
de evaluación
/evaluarChairs() [y se 20 Registrar resultado de
aceptó sujeto a evaluación /evaluarChairs() [y
correcciones] se aceptó]
26 Registrar recepción de
trabajo corregido
/recibirCorrección() [y se
30 Anular Trabajos recibió corrección] 29 Registrar
/anular() [y no se 20 Registrar resultado publicación de
recibió corrección] de evaluación trabajos /publicar()
/evaluarCorrección() [y
PendienteDe se aceptó]
Anulado SegundaEvaluación Publicado
Cadena de Pastelería
Autor: Gerardo Boiero
Consigna:
Una importante cadena de pastelería se dedica a fabricar tortas, turrones y dulces de altísima calidad y a
enviarlos a cualquier lugar del mundo. Esta cadena desea contar con una plataforma que le permita
mejorar la comunicación con sus clientes e incrementar la cantidad de pedidos de sus productos a nivel
mundial.
Esta plataforma virtual estará disponible tanto para la web como para smartphones Android. El cliente
podrá acceder a todas las noticias, novedades de la cadena, visualizar videos publicitarios, y disfrutar de
cientos de beneficios exclusivos que están disponibles sólo para quienes se suscriban a estos contenidos
virtuales.
Con esta herramienta de comunicación, el cliente podrá realizar sus pedidos de compras y saber en qué
situación se encuentran desde cualquier lugar del mundo. El cliente puede consultar el catálogo de
productos de la cadena, y agregar los productos con sus cantidades al carro de compras. Una vez
seleccionados todos los productos deseados, el cliente debe proceder a crear el pedido indicando el
nombre del destinatario y la ciudad de entrega. Si el destino elegido está dentro del país o de países
limítrofes (Brasil, Chile, Paraguay, Bolivia o Uruguay) se calcula automáticamente el monto total del
pedido incluidos los gastos de envío y los impuestos, y se espera la confirmación del pedido. En cambio,
si el destino es otro, el pedido debe ser analizado por un encargado de ventas de la cadena para calcular
el costo del envío, ya que es un destino no frecuente. Una vez evaluado, de igual manera, se informará el
monto total del pedido y se esperará la confirmación. Si el cliente no está conforme con cualquier aspecto
del pedido, puede cancelarlo.
Recién cuando el cliente confirma, se realiza el cobro del pedido a través de entidades de cobro online
(Mercado Pago, PayPal, Visa, Mastercard) que disponen de un web service para tal fin. A fin de simplificar
la solución asumiremos la representación de un web service único, independientemente de la entidad.
Una vez que se concreta el cobro, se procede a preparar el pedido con todos los productos solicitados. Si
la entidad rechaza el cobro, se da por extinguido el pedido; de igual manera, si no se realiza el cobro luego
de 2 intentos de autorización.
Después de preparado el pedido, debe ser inspeccionado por el personal de control de calidad para
asegurarse que los productos sean correctos, no estén vencidos ni dañados y estén correctamente
embalados. Si cumple los criterios de calidad, el pedido queda listo para ser despachado. El despacho
comienza cuando se envía a la empresa de correo que corresponde a ese destino. En caso de que no
cumpliere con los criterios de calidad establecidos, retorna nuevamente a preparación para que se lo
prepare y embale correctamente.
Esta cadena trabaja con empresas de correo contratadas para cada destino. Estas empresas envían los
pedidos a sus centros de distribución y, luego, se los entregan a uno o más repartidores para que ellos
realicen el reparto del pedido al destinatario final. Una vez entregado, se da por finalizado el pedido. Si el
repartidor no puede entregar el pedido porque el destino es incorrecto o el destinatario no está en su
domicilio, lo informan a la cadena para que se comunique con el cliente. El cliente podrá decidir si se
cancela el pedido o corrige/cambia el domicilio de entrega para que sea nuevamente despachado.
Las empresas de correo informan la situación de envío del pedido diariamente a través de archivos con
diferentes formatos y tipos (XML, CSV o TXT). Cada vez que ocurre un cambio en el estado del pedido es
enviado un email al cliente y al destinatario si desean ser notificados sobre la situación del mismo.
Como la plataforma maneja dinero, es necesario que el esquema de seguridad de los usuarios cuente con
una clave de acceso de 8 caracteres a 16 caracteres alfanuméricos, y que se utilice un protocolo de
transferencia de datos seguro -conocido como HTTPS. El sistema debe soportar 1.500 accesos y
operaciones en simultáneo.
La aplicación deberá ser desarrollada en HTML5 y en Android para los teléfonos móviles. La aplicación
Android será un cliente liviano que no requiera programaciones complejas, y permitirá consultar las
publicaciones, consultar el catálogo y crear pedidos de igual manera que la aplicación web. La empresa
ya dispone de una licencia de Oracle 11g para utilizar como motor de base de datos, que además ya posee
configurado un esquema de auditoría que permite registrar toda operación (creación, actualización y
borrado) que se realicen sobre los datos.
Glosario:
• Carro de compras: es un complemento del catálogo web que facilita la selección de los
productos (y sus cantidades) a incluir en el pedido.
Solución Propuesta
EsperandoAceptación
16. Confirmar pedido
/confirmar()
PendienteDeDespacho
Cancelado
stm EnDespacho
EntregadoACorreo
Pedido
- estado :Estado
+ new()
+ analizarDestino() :void
+ confirmar() :void
+ autorizarCobro() :void
+ inspeccionar() :void Estado
+ registrarCobro() :void
+ despachar() :void - nombre
1
+ finalizarPreparacion() :void
+ devolver() :void
+ repartir() :void A fines de simplificar la solución, se
+ cancelar() :void
muestran sólo los atributos y
+ finalizar() :void
+ preparar() :void métodos utilizados por la maq. de
+ iniciarReparto() :void estado.
+ enviarACentroDist() :void
NOTA: Con esta estructura básica ya se resuelve la solución, porque no hay un requerimiento de llevar
un historial de estado.
Consigna:
Una Cooperativa de Obras y Servicios públicos del interior de la Provincia de Córdoba desea desarrollar
un sistema para administrar las compras y los proveedores de la organización. El sistema en cuestión
deberá dar soporte a los circuitos de compras definidos en la organización y que funcionan de la siguiente
manera: cada área dentro de la Cooperativa realiza un presupuesto anual en el que tienen contemplados
todos los gastos para uso interno y para obras que realizarán. El sistema de compras debe controlar que
las compras se mantengan dentro del presupuesto estipulado por área y que se siga todo el circuito de
aprobaciones necesarias para liberar una orden de compra.
Cada área tiene asignado un centro de costos y puede manejar uno o varios presupuestos. Por ejemplo,
el área de operaciones administra el mantenimiento de la red de agua potable con un centro de costo
específico y un presupuesto dado y a su vez administra una obra de cloacas con un centro de costo
diferenciado y a la que se le ha asignado un presupuesto por separado.
El procedimiento de compras estipula que de acuerdo con el monto de la compra cuál es el circuito de
aprobación y los requisitos:
El sistema tiene un Ranking donde los proveedores están ponderados por actuaciones anteriores. Cuando
son nuevos proveedores o se trata de una compulsa de precios o licitación, la ponderación se realiza de
acuerdo con la oferta. Algunos proveedores envían a la cooperativa en forma periódica sus ofertas y lista
de precios en formato digital. El sistema deberá importar esos datos y tenerlos en cuenta como referencia
de precios.
Cualquier persona del área o proyecto puede hacer un pedido de compra. Cuando lo carga al sistema,
éste toma como valor, el último valor de compra. Si no existe en el sistema, se puede valorizar en forma
manual haciendo referencia de la fuente del precio indicado. También puede sugerir proveedor y agregar
alguna observación o justificación. Se adjuntan al pedido los requisitos y luego de creado el pedido de
compra, se deriva al jefe (primer nivel) para su autorización y se indica la prioridad de la compra con la
siguiente escala: urgente, alta, mediana y baja.
Un pedido de compra puede estar formado por varios ítems de productos y/o servicios, no obstante, al
aprobarlo y o rechazarlo, se lo hace en forma completa; no hay manejo independiente de los ítems que
integran un pedido de compra.
Cada nivel de aprobación en el circuito puede aprobar, pedir cambios o rechazar. Si rechaza este rechazo
es definitivo por lo que cierra el pedido de compra. Si se solicitan cambios, que pueden ser por falta de
cumplimiento de alguno o varios de los requisitos necesarios para la aprobación. Una vez que el
solicitante corrige lo que se le pidió, puede seguir el circuito de aprobaciones en el mismo punto donde
se interrumpió. El solicitante puede cancelar el pedido de compra, que no haya sido rechazado, en
cualquier momento antes de que el proveedor haya enviado los productos o haya prestado el servicio
Se solicita que el sistema envíe un mail al solicitante notificando cuando hay rechazos, cuando está
emitida la orden de compra y cuando se puede cerrar el pedido de compra. El sistema deberá también
ordenar los pedidos por prioridad dentro de un rango de fechas determinado para que los niveles
gerenciales puedan realizar las aprobaciones de acuerdo con las necesidades de la organización y
permitir aprobaciones en lote.
Una vez que está aprobado en el nivel requerido, se emite la orden de compra al mejor proveedor. El
monto de la compra se descuenta del presupuesto del centro de costo en forma provisoria.
Cuando la mercadería es enviada por el proveedor o se ha provisto el servicio, se completa un Informe
de Satisfacción indicando un puntaje que asigna el solicitante respecto de la adquisición para nutrir el
Ranking de Proveedores de la Cooperativa y de esta manera se cierra el incidente del pedido de compra.
Además, se descuenta la compra del presupuesto en forma definitiva.
El sistema de compras debe relacionarse con el sistema contable para que se realicen todos los asientos
correspondientes a los movimientos contables y también con el sistema de Planificación del que obtiene
los montos de los presupuestos anuales. El sistema debe ser multimoneda ya que hay algunas compras
que deben hacerse en moneda extranjera.
Solución Propuesta
«entity»
PedidoDeCompra
fechaCreacion «entity»
numero Estado Se muestra una vista incompleta
aprobadoPrimerNivel() descripcion de las clases, sólo haciendo foco
aprobadoSegundoNivel() nombre
aprobadoTercerNivel() actual en lo requerido para dar soporte
getDescripcion()
cambioRealizado() 1
getNombre() a la máquina de estados.
cancelar() anterior
cerrar() new() En el dominio se aclara que el
0..1 setDescricpion()
crearDetallePedidoCompra()
setNombre() estado el para el pedido en
derivar()
emitirOrdenCpra() forma completa, por eso no se
new() requiere estado para cada detalle
pedirCambios()
rechazar() de Pedido de Compra.
El puntero anterior es
1..*
principalmente, para manejar la
detallePedidoCompra historia del estado
«entity» “EnCorreccion”
DetallePedidoCompra
Cupones de Descuentos
Autor: Gerardo Boiero
Consigna:
Una empresa desea implementar un portal web a nivel nacional para permitir a quienes se suscriban al
mismo, obtener grandes beneficios al adquirir productos y/o servicios de diferentes rubros:
gastronómico, fotografía, deporte, gimnasio, spa, etc. con precios bonificados. Esos beneficios se
materializan adquiriendo cupones de descuentos que pueden ser canjeados por productos o servicios en
los comercios adheridos. La empresa también actúa como comercio adherido, ofreciendo productos que
se entregan en sus sucursales distribuidas a lo largo del país. Cada cupón contendrá un código QR que al
ser leído dirigirá a una página de confirmación provista por este portal web para validar si el cupón es
original, evitando posibles falsificaciones. Los comercios adheridos que ofrecen productos y/o servicios
deberán tener un dispositivo (Smart pone, PC o similar) que tenga instalada una aplicación lectora de
código QR, por ejemplo, QuickMark Reader.
Los comercios adheridos que deseen publicar sus ofertas a través del portal web, deben registrarse en
el sistema como empresa publicante, podrán registrar ofertas que serán comunicadas vía e-mail a los
usuarios suscriptos. Las ofertas se emiten para una o más ciudades, tienen una fecha de fin de vigencia,
un rubro, un importe (precio final), un cupo mínimo (que representa la cantidad de suscriptos que se
requiere hayan adquirido la oferta para que este sea válida), una fecha y hora de cierre, y una descripción
de las condiciones referentes a la prestación de la misma. Al registrar una oferta, el comerciante debe
elegir una imagen que sea representativa de la oferta; el sistema debe manejar un banco de imágenes de
alta definición en formato .png libres de derecho de autor sin restricción de tamaño (organizadas por
rubro) para que al momento de publicar la oferta el comerciante elija la que lo represente mejor o,
adicionalmente cargue una nueva imagen. A continuación, se muestra un ejemplo de oferta del comercio
“Foto Express” para la ciudad de Córdoba:
Finaliza en
DíasHoras
Para que los comercios adheridos puedan promocionar sus ofertas, el sistema expone una API (Interfaz
de programación de aplicaciones que proporciona un conjunto de funciones de uso general que definen
cómo invocar un servicio, es una interfaz de comunicación entre componentes software) que permite a
los comercios adheridos incrustar en sus páginas un componente visualizador de las ofertas disponibles,
ese componente obtendrá las ofertas actuales -a través de un webservice desarrollado por la empresa-
y redirigirá al portal web en el caso que se desee adquirir un cupón.
Para suscribirse en el portal web y comenzar a recibir las novedades de ofertas diarias, el usuario debe
completar sus datos personales, la ciudad donde vive y los rubros de interés (gastronómico, fotografía,
deporte, gimnasio, spa, etc.) sobre los cuales le gustaría recibir ofertas. Cuando se registra una oferta el
sistema las agrupa según su rubro y ciudad, luego genera las novedades diarias combinándolas. Las
ofertas permanecen disponibles como novedad hasta que se cumple la fecha de cierre. Todos los días se
envían una o más ofertas al e-mail del Suscriptor. Si éste desea adquirir algún producto/servicio ofertado
debe loguearse en el portal web, si aún no posee usuario puede completar el formulario de registración.
Para efectuar una compra debe dirigirse a la opción Comprar, indicar la cantidad a adquirir, la tarjeta de
crédito (marca de tarjeta, número, fecha de vencimiento y código verificador (cvc)con la cual realizará el
pago, y confirmar que acepta las condiciones de compra del producto/servicio ofertado. El sistema
generará un cupón de descuento como pendiente hasta cumplirse la fecha de cierre de la oferta adquirida.
Por ejemplo, para la oferta anterior, el suscriptor puede realizar la compra de la oferta de las 50 fotos
impresas pagando tan sólo $45. Si lo desea, el suscriptor puede adquirir 2 ofertas pagando $90 que podrá
canjear por 100 fotos impresas.
Dado que se trata de una metodología de compra colectiva, recién se concreta la compra de la oferta del
producto/servicio cuando se cumple la fecha y hora de cierre establecida y se ha alcanzado el cupo
mínimo. Si no se alcanza este cupo se cancelarán todos los cupones de descuento generados. Al
concretarse la compra se enviará un mail informando que el cupón ya fue cobrado y está disponible para
usar; si por alguna razón el cobro no puede concretarse, se le notificará mediante mail al comprador para
que regularice la situación y el cupón permanecerá en espera de que se concrete el cobro o hasta
cumplirse un periodo de 48hs hábiles, en cuyo caso será cancelado.
Cuando el Suscriptor quiera hacer uso de los cupones de descuento, deberá imprimirlos y canjearlos en
el comercio adherido que lo ofreció. Así, el comerciante recibirá el cupón y podrá validar el código a través
de la página web. Una vez validado el cupón y registrado como usado, no podrá ser usado nuevamente.
Si el Comercio Adherido es la misma empresa, el producto que se adquiere deberá ser retirado en
cualquiera de las sucursales habilitadas para tal fin. Una vez retirado de la sucursal se marcará el cupón
como entregado. En caso de que el producto retirado presente defectos o fallas el usuario podrá
reclamarlo dentro de los 5 días hábiles posteriores a su retiro, si pasa ese periodo el cupón se
considerará usado. En caso de reclamar un cupón, el usuario deberá devolver el producto en el mismo
lugar donde lo retiró, la empresa decidirá si rechaza el reclamo (según las condiciones en que se devuelve
el producto), o lo acepta. En caso de aceptar el reclamo puede proceder de dos maneras: generando un
cambio de producto, si se contara con stock disponible, o en caso contrario, realizando el reembolso del
importe del cupón de descuento. La empresa sólo recibe reclamos por productos que ella misma
comercializa, en caso contrario los clientes deben dirigirse al comercio adherido que publicó la oferta.
El usuario podrá logueándose en el portal web, consultar todos sus cupones y visualizar el historial de
estados por los que pasó cada cupón de descuento.
Durante la noche a las 04:00 AM, el sistema verificará la fecha de vencimiento de todos los cupones
disponibles, si alguno vence dentro de las 48hs, enviará un mail alertando a cada dueño del cupón sobre
esta situación y marcará todos los cupones próximos a vencer con color rojo (código RGB: #FF0000).
Aquellos para los que se haya cumplido la fecha de vencimiento y no hayan sido usados serán marcados
con color gris (código RGB: #585858).
El portal web también brinda la posibilidad de manejar una cuenta de créditos a cada usuario, de forma
tal que, a la hora de comprar una oferta, permita descontar el costo de esa cuenta. El usuario podrá cargar
saldo en su cuenta a través de su tarjeta de crédito o medios de pago en efectivo como RapiPago o
PagoFácil. El saldo de la cuenta también se puede incrementar con los rembolsos por cupones devueltos.
A fin de simplificar la solución, se considera que las devoluciones de cupones se pueden hacer
únicamente con reembolsos que se acreditarán a la cuenta del cliente.
Para conseguir más suscriptores, el portal web deberá permitir que los usuarios registrados
recomienden ofertas a personas no registradas actualmente, enviándoles un link exclusivo generado para
cada oferta. El sistema debe hacerle seguimiento a ese link de manera que si el nuevo usuario hace click
en el link dentro de las siguientes 72 horas, se registra en el sitio web y realiza una compra de una oferta,
se le depositará en la cuenta del usuario que lo recomendó $10 de crédito, que se acumularán en la cuenta.
La empresa dispuso que la base de datos a utilizar debe ser MySQL 5.6 y se instale en un servidor
dedicado. Además, el banco de imágenes también se instalará en otro servidor dedicado.
Adicionalmente el sistema debe permitir a los comerciantes generar un reporte de la cantidad de cupones
comprados y usados por cada oferta publicada, además de los montos totales ganados por cada oferta.
Para el usuario suscriptor debe permitir visualizar un reporte del importe ahorrado anual, además de los
movimientos de créditos en su cuenta.
Nro Nombre del Caso de Uso Objetivo / Breve Descripción
Registra una oferta con todos sus datos y la foto representativa
1 Registrar Oferta.
incluyéndola en el listado de publicación.
Visualizar todos los datos de la oferta con el contador de tiempo
2 Consultar Oferta.
restante.
Cancelar la oferta y todos sus cupones pendientes por no llegar
3 Cancelar Oferta.
a la cantidad mínima de suscriptores.
Recomendar ofertas a través del envío de un link de
4 Recomendar Oferta. recomendación. Se llama al caso de uso de realizar seguimiento
al link de recomendación.
Procesar el cierre de las ofertas de productos/servicios
5 Ejecutar Cierre de Ofertas. llamando a los casos de uso de cobro de todos los cupones
asociados en caso de haber alcanzado el cupo mínimo.
6 Registrar Comercio Adherido Registrar los datos de un comercio adherido al portal web.
7 Modificar Comercio Adherido Modificar los datos de un comercio adherido al portal web.
8 Consultar Comercio Adherido Visualizar los datos de un comercio adherido al portal web.
Eliminar un comercio adherido siempre que no tenga ofertas
9 Eliminar Comercio Adherido
publicadas.
Solución Propuesta
stm Statecharts
15 Validar
Vencimiento Cupon 17 Registrar Cobro con Tarjeta de Crédito
/validarVto() [y 18Registrar Cobro con Créditos /cobrar() [y
faltan mas de 48hs] se autoriza]
Usado
Disponible
Reembolsado
14 Registar Uso
Cupón /usarCupon()
30 Validar Periodo de Reclamo 32 Registar Resolución de Reclamo de
15 Validar
de Cupón /permiteReclamo() [y Producto /reembolsar() [aceptar y no hay
Vencimiento Cupon 28 Registrar Entrega se cumplio periodo] stock]
/validarVto() [y faltan 14 Registrar
en Sucursal ConReclamoRechazado
48hs] Uso Cupón
/entregar()
/usarCupon() 22 Reclamar Reclamado
Proximo a Entregado Cupón de 32 Registrar Resolución de
Vencer 28 Registrar Entrega Descuento Reclamo de Producto
en Sucursal /reclamar() /rechazarReclamo() [y se rechaza]
15 Validar Vencimiento Cupon /entregar()
/efecturarVto() [y hoy es fecha de 28 Registar Entrega 32 Registrar Resolución de Reclamo de
30 Validar Periodo Reclamo Producto /cambiar() [aceptar y hay stock]
vto] en Sucursal
/permiteReclamo() [y no se
Vencido /entregar()
cumple periodo]
PendienteCambio
1
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
Se pide:
1. Definir el sistema de información utilizando: objetivo, alcances y reglas de negocio.
2. Construir el Modelo de Dominio utilizando un diagrama de clases, especificando atributos y
métodos para las clases y navegabilidad y multiplicidad para las relaciones.
3. Construir la vista esencial de la funcionalidad, utilizando un diagrama de casos de uso,
describiendo el objetivo de cada caso de uso identificado.
2
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
Solución propuesta:
Objetivo:
Administrar los pedidos de venta de pizza y el cobro de estos, brindar información
resultante de la gestión.
Reglas de Negocio
3
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
Modelo de Dominio
4
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
4 Registrar
Tamaño
10 Registrar 7 Generar reporte de
Pedido ingresos por período
Administrador
2 Registrar
Pizza
1 Generar
Factura
6 Generar reporte de
ventas por día de la
semana 3 Registrar
EmpleadoPizzería Variedad de
Pizza
5 Generar reporte de
pizzas más
demandadas
5
Universidad Tecnológica Nacional – Facultad Regional Córdoba
Cátedra de Diseño de Sistemas de Información
6
Universidad Tecnológica Nacional – Facultad Regional Córdoba / Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
1|Página
Universidad Tecnológica Nacional – Facultad Regional Córdoba / Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
• También debe contemplarse la situación de interrupción del trabajo en cualquiera de las etapas
en las que personal de la empresa esté dedicando tiempo a una SR, para que el tiempo no sea
computado como esfuerzo asociado. Cuando se retoma el trabajo, la SR vuelve al estado en el
que estaba al momento de la interrupción; a partir de ahí seguirá con la evolución
correspondiente a ese estado.
• Es necesario poder informar a los clientes del estado de la solicitud de requerimientos en todo
momento y del avance del proyecto de desarrollo asociado a la SR.
• También es necesario poder informar cuánto tiempo permanece una solicitud en cada estado y
quién es el responsable de cada intervención (cambio de estado).
2|Página
Universidad Tecnológica Nacional – Facultades Regionales Córdoba y Villa María
Cátedra de Diseño de Sistemas de Información
1. Construya la realización de caso de uso de análisis del escenario del curso normal del caso de uso planteado.
2. Construya la vista Realice el diagrama de clases de análisis incluyendo las clases del diagrama de
comunicación del punto anterior. Incluir atributos y métodos de las clases, navegabilidad y multiplicidad en
todas las relaciones.
3. Respecto de la Clase “VUELO”:
a. Construir el DTE, indicando: estados, transiciones, métodos asociados a las transiciones y
condiciones de control si aplica.
b. Listar los casos de uso asociados a las transiciones.
4. Realice la vista de la estructura (diagrama de clases de diseño) y la vista dinámica (diagrama de secuencia)
implementando el patrón de diseño que resuelva la siguiente consideración. Incluir el pseudo-código o una
explicación textual que muestre el funcionamiento de la solución construida (20 pts.):
Al cancelarse un vuelo el sistema deberá notificar automáticamente esta situación a los distintos
interesados (cartelera de publicación de vuelos o pantalla de consulta del Sitio WEB de la
aerolínea). Para ello tendrá que diseñarse un esquema de notificación que sea genérico y flexible
para permitir informar en tiempo real y simultáneamente a los distintos interesados. A su vez, este
esquema tendrá que proporcionar la información referente a la cancelación (nro. de vuelo, estado,
fecha y hora) para los interesados que lo requieran.
Una línea área desea incorporar un sistema de información accesible por web, para brindar a sus potenciales
pasajeros la posibilidad de consultar la disponibilidad de vuelos a los diferentes destinos que ofrece la compañía y
eventualmente reservar lugares en uno o más vuelos.
La definición de los vuelos que ofrece la empresa se diagrama determinando el número de vuelo, el o los días de la
semana y el horario de partida, la duración, el aeropuerto de origen y el aeropuerto de destino y las tarifas de los
pasajes. Estas tarifas dependen del destino, del tipo de clase que se desee (básica, turista, negocio reducida,
negocio, primera clase) y del tipo de aeronave.
Cabe destacar que las ciudades pueden tener más de un Aeropuerto, por lo tanto los vuelos están diagramados
para un aeropuerto específico. Tanto las ciudades como los aeropuertos tienen un código que los identifica, por
ejemplo: Buenos Aires, código BUE; Aeropuerto Jorge Newbery, código (AEP).
La disponibilidad depende de las reservas que cada vuelvo posea, entendiendo que las ventas de los pasajes se
concretan siempre a partir de las reservas. Las reservas pertenecen a un pasajero, poseen una fecha y hora de
vencimiento y también el detalle del tipo de clase solicitada.
La capacidad de las aeronaves está limitada por el tipo de clase que admitan (algunas solo tienen clase turista y
otras una combinatoria por ejemplo.)
La aerolínea permite realizar vuelos de distintos tipos: solo ida (origen-destino) ó ida y vuelta (origen-destino-
origen). Las consultas en la web deben solicitar que se indique el tipo de vuelo y además si el pasajero desea un
horario específico o es flexible. La flexibilidad de horarios permitirá que el sistema busque todos aquellos vuelos
disponibles en una fecha durante las 24 horas de esa fecha.
Además el sistema debe ofrecer un seguimiento de los vuelos, ya que los mismos una vez programados pueden
concretarse, demorarse o cancelarse. Si para un vuelo programado ha llegado el momento de embarque, el sistema
debe informarlo para permitir registrar si el embarque se ha concretado o no. Si esto fue posible, el sistema
informará que se está embarcando o de lo contrario informará que el mismo se encuentra demorado. El sistema
debe permitir reprogramar un vuelo programado o un vuelo demorado.
Cuando un vuelo por diferentes motivos no pueda concretarse, el mismo debe registrarse como cancelado. Esta
situación es posible para aquellos vuelos que se encuentren en estado no final. Se debe registrar el empleado
responsable de cada cambio de estado que se realice al vuelo, como así también el día y la hora en que se realizó
el cambio de estado. Para el caso de las cancelaciones se debe indicar el motivo de cancelación.
Una vez que todos los pasajeros han embarcado se cierra el vuelo, no pudiendo subir más pasajeros al mismo.
Luego, el vuelo se considera en ejecución, a partir de que el avión despega. Cuando el avión alcanza la altura de
viaje, el vuelo asume el estado “EnAire” hasta que se encuentra en la zona previa al aterrizaje y, finalmente,
aterrizado. Dado que es necesario informar la situación por la que pasa cada vuelo en todo momento y a través del
tiempo, debemos mantener dicha información en el sistema.
Finalmente el vuelo se considera finalizado cuando todos los pasajeros se encuentran en zona de retiro de equipaje.
No contempla
Gestión de ventas y cobros de vuelos reservados
Variación de tarifas por compra anticipada, tipo de vuelo (sólo ida o ida y vuelta) y con posibilidad de cambio
de fecha y horario
Reglas de Negocio
Reglas de Negocio
2 Itinerario de Vuelo Los vuelos tienen un único aeropuerto de origen y un único aeropuerto de destino.
Un vuelo puede ser cancelado en cualquier momento, hasta tanto no aterrice. Una
7 Cancelación del Vuelo
vez aterrizado no se puede cancelar.
Las ventas de los pasajes se concretan siempre a partir de las reservas. Es decir, no se
8 Ventas de pasajes
puede vender un pasaje directamente, primero se reserva, luego se vende.
16- Sistema: verifica que los datos requeridos hayan sido completados 16.A. Sistema: el sistema verifica que los datos
y así es. requeridos hayan sido completados y no es así.
16.A.1. Sistema: informa los datos requeridos faltantes.
16.A.2. Pasajero: completa los datos requeridos y
confirma la búsqueda.
17- Sistema: Verifica si se seleccionó flexibilidad, y es así, y realiza las 17.A. Sistema: Verifica si se seleccionó flexibilidad, y se
búsquedas sobre los siguientes horarios para la fecha indicada: seleccionó horarios requeridos, y determina sobre qué
HorarioDesde = 0:00 horarios debe realizar la búsqueda para las fechas
HorarioHasta = 23:59 indicadas:
HorarioDesde = horario indicado
HorarioHasta = horario indicado
18- Sistema: verifica que se indicó “Solo Ida”, busca los vuelos que 18.A. Sistema: verifica que se indicó “Ida y Vuelta”,
correspondan: 18.A.1. Sistema: busca los vuelos de Ida que
A la ciudad de origen y destino indicadas, correspondan:
A la fecha indicada, A la ciudad de origen y destino indicadas,
Al horario: HorarioDesde y HorarioHasta determinado A la fecha indicada de salida (Ida)
Y que posean butacas para la cantidad de pasajeros y tipo Al horario: HorarioDesde y HorarioHasta
de clase indicados, verificando las reservas vigentes y la determinado de salida (Ida)
capacidad de la aeronave asignada al vuelo. Y que posean butacas para la cantidad de
pasajeros y tipo de clase indicados, verificando las
reservas vigentes y la capacidad de la aeronave
asignada al vuelo.
18.A.2. Sistema: busca los vuelos de Vuelta que
correspondan:
A la ciudad de origen y destino indicadas (ver
Observación 1),
A la fecha indicada de regreso (Vuelta)
Al horario: HorarioDesde y HorarioHasta
determinado de regreso (Vuelta)
Y que posean butacas para la cantidad de
pasajeros y tipo de clase indicados, verificando las
reservas vigentes y la capacidad de la aeronave
asignada al vuelo.
19- Sistema: encuentra vuelos disponibles y muestra para cada uno: 19.A. Sistema: no encuentra vuelos disponibles.
Horario de salida 19.A.1. Sistema: informa la situación.
Aeropuerto de salida 19.A.2. Se cancela el caso de uso.
Horario de llegada
Aeropuerto de llegada
Número de Vuelo
Duración
Importe Total
20- Fin del caso de uso.
Observaciones:
1. Cuando se selecciona vuelos Ida y Vuelta debe tenerse en cuenta: si se ha seleccionado Córdoba (Origen) – Buenos Aires
(Destino), la búsqueda para el vuelo de Ida se efectúa por Origen y Destino como se indicó; pero para la búsqueda de
vuelos de Vuelta se tiene en cuenta para el Origen, el destino indicado anteriormente, y para el Destino, el origen
indicado anteriormente, es decir, Buenos Aires (Origen) – Córdoba (Destino) para el vuelo de Vuelta.
2. El Pasajero puede cancelar el caso de uso en cualquier momento.
Asociaciones de Extensión: no aplica
Asociaciones de Inclusión: no aplica
Use Case de Generalización: no aplica
Flujos Alternativos
A1: Pasajero selecciona Tipo de Viaje= IDA y VUELTA
A2: Pasajero selecciona horarios NO flexibles
A3: Pasajero no confirma la búsqueda
A4: Faltan datos obligatorios para hacer la consulta
A5: No se encuentran vuelos que cumplan con el criterio de búsqueda
A6: Pasajero decide cancelar el caso de uso
Observaciones:
1. Cuando se selecciona vuelos Ida y Vuelta debe tenerse en cuenta: si se ha seleccionado Córdoba (Origen) – Buenos Aires
(Destino), la búsqueda para el vuelo de Ida se efectúa por Origen y Destino como se indicó; pero para la búsqueda de
vuelos de Vuelta se tiene en cuenta para el Origen, el destino indicado anteriormente, y para el Destino, el origen indicado
anteriormente, es decir, Buenos Aires (Origen) – Córdoba (Destino) para el vuelo de Vuelta.
2. El Pasajero puede cancelar el caso de uso en cualquier momento.
Modelo de Dominio
Realización de Análisis para el caso de uso Consultar Disponibilidad de Vuelos – Curso Normal con diagrama de
comunicación
Realización de análisis para el CU Cancelar Vuelo – Curso Normal con diagrama de comunicación
Realización de análisis para el CU Cancelar Vuelo – Curso Normal con diagrama de secuencia
4. Modelo de Diseño:
a. Realizaciones de Casos de Uso de Diseño, parte estructural con diagrama de clases y parte
dinámica con diagrama de secuencia, aplicando los patrones de diseño más convenientes.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 1
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
i. Realizar el rediseño necesario para crear una solución que resuelva una forma de
flexibilizar el modelo permitiendo realizar notificaciones a los clientes vía email y sms al
momento en que sus pedidos son incluidos en un plan de entrega.
ii. Realizar el rediseño necesario para modelar una solución que resuelva en forma flexible
el cálculo por efectividad de las entregas de pedidos a los clientes de acuerdo con el
método seleccionado por el actor.
iii. Rediseñar la estructura de forma de optimizar el manejo del comportamiento variable
del remito y los cortes vacunos que lo componen, según la situación en la que se
encuentre.
iv. Resolver el proceso de creación del Plan de Entrega en sus diferentes formas de
visualización (impreso, PDF, o en formato Excel).
b. Prototipos de Diseño de Interfaces de usuario.
Glosario
Término Definición
Servicio Nacional de Sanidad y Calidad Agroalimentaria: organismo descentralizado,
dependiente del Ministerio de Agricultura, Ganadería y Pesca de la Nación, encargado
de ejecutar las políticas nacionales en materia de sanidad y calidad animal y vegetal e
SENASA
inocuidad de los alimentos de su competencia, así como de verificar el cumplimiento
de la normativa vigente, relacionada con la Agricultura, Ganadería y Pesca de la
Nación.
CUIG Clave única de identificación ganadera
Proceso mediante el cual se divide una res en diferentes cortes vacunos y se separa la
Despostar
merma.
Merma Huesos, grasa y desperdicios de una res que se desechan y no se comercializan.
Apropiarse [la autoridad competente] de una mercancía por estar prohibida, no
Decomisar
cumplir estándares de salubridad o porque se comercia con ella de manera ilegal.
Es una técnica de programación que permite adaptar la apariencia de las páginas web
al dispositivo (tablets, pc, smartphone, etc.) que se esté utilizando para visualizarla. Se
Web Responsive
pretende que, con un solo diseño web, tengamos una visualización adecuada en
cualquier dispositivo.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 2
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 3
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Gestión de clientes:
Cuando un cliente va a realizar un pedido por primera vez se registrarán sus datos: nombre, apellido,
CUIT, domicilio, teléfono, mail y puntos de entrega que posea.
Se llama punto de entrega a cada carnicería, boca de expendio o centro de distribución que un cliente
tenga. Para cada punto de entrega, se indicará nombre, domicilio, localidad y barrio. Utilizando Google Maps y la
dirección de cada punto de entrega, se calcularán sus coordenadas geo-referenciales.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 4
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Al finalizar este proceso se emite un remito que incluye la fecha de preparación, un número de remito y
el detalle de cada uno de los cortes vacunos incluidos, asociados a cada detalle de pedido para un cliente y un
punto de entrega en particular. Este remito quedará pendiente hasta tanto sea incluido en un plan de entrega.
Deberá ser posible imprimir el remito por triplicado: uno para el chofer, uno para el receptor y uno para el
frigorífico. También debe ser posible exportar el mismo a PDF o Excel, y enviarlo por email con formato HTML. El
remito deberá ser el siguiente formato:
REMITO
FRIGORÍFICO N° 00001-00001
CÓRDOBA Fecha: 01/03/2022
Los remitos pueden modificarse o cancelarse hasta antes de ser incluidos en un plan de entrega. Si se los cancela,
cada uno de los cortes vacunos que integraban el remito vuelven al estado creado, es decir disponible para su
inclusión en otro remito. La modificación del remito implica que se agreguen cortes vacunos o se quiten cortes
vacunos del remito, actualizando el estado de cada corte vacuno según corresponda.
Se muestra a continuación el proceso descripto:
Actualización del
Registro de un Aceptación/Rechazo
Generación de un estado del remito,
pedido de un cliente total o parcial de un
remito para un DISTRIBUCIÓN del pedido y de los
para un punto de remito que contiene
pedido cortes vacunos (si
entrega los cortes vacunos
corresponde)
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 5
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Logística de distribución:
El frigorífico organiza la logística de distribución creando recorridos tipo indicando los puntos de
entrega que se deberán visitar, el orden y la duración estimada total del recorrido. Cada vez que un
cliente agrega un punto de entrega es necesario agregarlo a algún recorrido, para que sea posible realizar la
distribución de los productos que el cliente pida. Además, para realizar la distribución, la empresa cuenta con
una flota de camiones con diferentes capacidades en kilos. Para organizar los recorridos genéricos se tiene en
cuenta que los puntos de entrega que se van a incluir en un recorrido deben estar ubicados en la misma
localidad.
Periódicamente se organizan planes de entrega indicando para cada uno, el camión que lo realizará, el
recorrido que se hará, la fecha de salida y los remitos que deberían incluirse. Cuando se finaliza el armado del
plan de entrega, se notificará la fecha y hora planificada de salida del camión mediante un mensaje de texto y
email a todos los clientes que posean algún punto de entrega en el plan.
Además, los camiones cuentan con un módulo de seguimiento satelital (GPS) que permitirán por medio del
sistema web monitorear su recorrido en todo momento y se generarán alertas cuando el camión realiza paradas
fuera de los puntos de entrega o se desvía del camino.
También, se ha pedido que los choferes, puedan disponer de una aplicación mobile que les permita:
• consultar por medio de Google Maps el recorrido que deben realizar, mostrando en el mapa cada uno de
los puntos de entrega en los que deben descargar la mercadería
• registrar el inicio del recorrido.
• registrar el fin del recorrido.
Estos datos brindarán información para estimar la duración de los recorridos y para notificar vía SMS a los
clientes cuando un pedido sea incluido en un plan de entrega próximo a ser enviado.
Para todo esto, tanto el sistema web como la aplicación mobile deben establecer una interfaz con google
maps para resolver la funcionalidad de seguimiento satelital (en el caso del sistema web) y para resolver la
visualización de un recorrido y sus puntos de entrega (en el caso de la aplicación mobile).
Hasta antes que el camión salga con la mercadería y su correspondiente plan de entrega, es posible
modificar un plan de entrega o cancelarlo. La cancelación del plan de entrega deja todos los remitos que estaban
incluidos en estado pendiente. La modificación del plan de entrega puede quitar algunos remitos e incluir otros,
con las actualizaciones de estado correspondientes a cada remito.
Cuando un camión llega a un punto de entrega y un cliente recibe su pedido se le entrega también el
remito físico. En este punto el cliente constatará los cortes recibidos contra el remito y podrán ocurrir 3
situaciones:
1. Los cortes recibidos coinciden con el remito
2. Los cortes recibidos coinciden parcialmente con el remito
3. Los cortes recibidos no coinciden con el remito
Luego el cliente podrá firmar el remito indicando que está conforme con lo recibido en su totalidad o
parcialmente (Situaciones 1 y 2). En el caso de que no esté no conforme no firmará el remito (Situación 3) y el
chofer podrá escribir en el espacio de “Observaciones” el motivo del rechazo. Por ejemplo: Se recibió menos de
lo solicitado, no se recibió el corte pedido, la carne se considera en mal estado, etc.
Cuando el chofer finalice su recorrido, los remitos serán llevados nuevamente al frigorífico donde el
administrador, se encargará de actualizar su estado en el sistema, según corresponda. La actualización de los
remitos implicará la actualización de los pedidos asociados y eventualmente de los cortes vacunos; esto último
en caso de que el cliente los haya devuelto.
En el caso de que un remito haya sido rechazado el responsable de administración podrá generar un
descuento para dicho cliente para su próxima compra. Los descuentos deberán estar tipificados por porcentajes.
Por ejemplo: Descuento del 10%, Descuento del 20%, Descuento del 50%, etc. Al generar el cupón de descuento
se le enviará un mail al cliente indicando que dispone de un cupón de descuento para su próxima compra. El
mismo tendrá fecha de vencimiento pasados 31 días desde su generación.
Por razones de salud pública tanto el frigorífico como los camiones de reparto tienen inspecciones que
constatan la documentación sanitaria y el estado de los cortes vacunos. Si alguna autoridad considera que se
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 6
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
incumple alguna de las normas establecidas para el almacenamiento y traslado de la carne, puede decomisar la
carga y en el sistema debe quedar registrada la razón del decomiso. Los remitos afectados quedarán en estado
Decomisado.
Facturación
Cuando el administrador recibe los remitos físicos, registrará si han sido aceptados, rechazados o
aceptados parcialmente en el sistema. Para aquellos que se encuentren aceptados o aceptados
parcialmente el administrador podrá generar una factura para el cliente y punto de entrega que corresponda
incluyendo aquellos cortes que fueron aceptados. La factura deberá tener: número, fecha, CUIT y nombre del
frigorífico, nombre y apellido del cliente y punto de entrega, los kilos de cada corte, precio por kilo y precio total.
Al generar la factura, se calcularán los vencimientos, generalmente se tendrán hasta 3 vencimientos desde la
fecha de emisión de la factura y cada uno con un porcentaje de aumento. En caso de que el cliente disponga de
uno o más cupones de descuento que aún no ha utilizado se aplicará sobre el total de la factura aquel que tenga
la fecha más antigua y se registrará que ha sido utilizado. También se indicará con una leyenda en la factura qué
descuento se ha aplicado sobre el total.
Luego de la facturación el remito pasará a estado Facturado.
Las facturas serán enviadas a los clientes por email. Para poder procesar el envío, el sistema deberá
comunicarse con un servidor de correo externo.
Podrá suceder que una factura se genere de manera incorrecta en cuyo caso podrá ser anulada,
registrando la fecha de anulación, el motivo y el empleado que realizó dicha anulación.
Gráficamente:
Recepción de remitos y
Generación de factura para un Anulación de la factura, de ser
actualización de estado de
cliente necesario
remito y pedido
Gestión de usuarios
El sistema deberá mantener información sobre los empleados que usan el sistema. Se deberá asignar
a cada uno un legajo y se guardará su nombre y apellido, CUIL y dirección. Cada empleado tendrá un
usuario y una contraseña de entre 8 y 16 caracteres y que incluya letras y números. Se solicitará al usuario que
renueve la misma cada 30 días por motivos de seguridad. Cada usuario podrá tener uno o más perfiles asignados
con diferentes permisos.
Por otro lado, el sistema deberá ser desplegado de manera que sea seguro y resguarde los datos ante
acceso indebidos o malintencionados.
Reportes
Se solicitará que el sistema pueda generar informes y estadísticas sobre:
• Rendimiento de los cortes vacunos, que se determina a partir de la cantidad de kilos de cada
corte vacuno obtenidos a partir de una res.
• Listado de clientes que más pedidos hacen.
• Efectividad de entregas es el porcentaje de pedidos entregados y aceptados por los clientes sobre el
total de pedidos realizados por los clientes.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 7
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Todos los reportes deberán visualizar la información tanto en listados como en gráficos (barra, torta,
dispersión, etc.) y se debe permitir la exportación de los reportes y estadísticas a formato Excel (xls o xlsx) y a
PDF.
Solución Propuesta
Propósito del Sistema
Objetivo:
Administrar los procesos de faena de ganado vacuno, almacenamiento de cortes vacunos y gestión de pedidos y
entregas de un Frigorífico de la Ciudad de Córdoba brindando información vinculada a la gestión realizada.
No Contempla:
Gestión de Devoluciones
Gestión de Cobro por venta.
Reglas de Negocio
Nro. Nombre de la RN Descripción de la Regla de Negocio (RN)
1 Identificación del Cada animal está identificado con un código único llamado CUIG, de acuerdo
ganado con el Sistema Nacional de Identificación de Ganado Bovino que define el
SENASA. Este es una clave de cinco dígitos: dos letras y tres números.
2 Puntos de entrega Un cliente podrá poseer uno o más puntos de entrega. Un punto de entrega
será cualquier domicilio donde el Cliente pueda recibir mercadería. Cuando
realice un pedido deberá indicar para cuál de sus puntos de entrega se solicita el
mismo.
3 Remito Un remito es un documento que comprueba el traslado de mercaderías. Se
deben imprimir tres copias de este para entregar una a cada interesado: cliente,
frigorífico y chofer que transporta la mercadería.
4 Descuentos En el caso de que un remito sea rechazado total, se le ofrecerá al cliente un
cupón de descuento para su próxima compra con fecha de caducidad en los
próximos 31 días.
5 Recepción de Por definición del negocio, los clientes solo podrán recibir mercadería que
mercadería en el tengan fecha de comercialización menor a la actual.
cliente
6 Donaciones Todos los cortes vacunos para los que expiró la fecha de comercialización, pero
aún no han vencido, son donados al banco de alimentos y ya no es posible
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 8
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
9 Datos del cliente Cuando un cliente va a realizar un pedido por primera vez se registrarán sus
datos: nombre, apellido, CUIT, domicilio, teléfono, mail y puntos de entrega que
posea.
10 Datos de puntos de Para cada punto de entrega, se indicará nombre, domicilio, localidad y barrio.
entrega
11 Registro de pedido Para realizar un pedido el cliente deberá indicar el punto de entrega donde
desea recibirlo y los kilos de cada corte que desea recibir. Se debe guardar un
número de pedido único, secuencial y correlativo, la fecha en que se realizó el
pedido, el cliente que lo solicitó y el estado correspondiente. Si el cliente no ha
abonado las facturas con antigüedad mayor a 2 meses, el cliente no podrá
efectuar un nuevo pedido hasta que no regularice el pago.
12 Política de entrega La empresa tiene una política de entrega de los pedidos dentro de las próximas
en 48 hs 48 horas de realizado este, por lo que no se contemplan pedidos planificados
para una fecha específica, al contrario, los pedidos se entregan lo más rápido
posible.
13 Peso aproximado La preparación del pedido tiene en cuenta los cortes vacunos con fecha de
de pedidos comercialización más cercana y el peso, buscando redondear el peso lo más
cercano al peso solicitado en el pedido, pero teniendo en cuenta que no
siempre es exacto.
14 Datos del remito Los datos del remito son: la fecha de preparación, número de remito y detalle
de cada uno de los cortes vacunos incluidos, asociados a cada detalle de pedido
para un cliente y un punto de entrega.
15 Recorrido Existen recorridos tipo donde se indican los puntos de entrega que se deberán
visitar, el orden y la duración estimada total del recorrido. Cada vez que un
cliente agrega un punto de entrega es necesario agregarlo a algún recorrido,
para que sea posible realizar la distribución de los productos que el cliente pida.
16 Planes de Entrega Periódicamente se organizan planes de entrega indicando para cada uno, el
camión que lo realizará, el recorrido que se hará, la fecha de salida y los remitos
que deberían incluirse. Cuando se finaliza el armado del plan de entrega, se
notificará la fecha y hora planificada de salida del camión mediante un mensaje
de texto y email a todos los clientes que posean algún punto de entrega en el
plan.
17 Modificación y Hasta antes que el camión salga con la mercadería y su correspondiente plan de
cancelación de un entrega, es posible modificar un plan de entrega o cancelarlo. La cancelación del
plan de entrega plan de entrega deja todos los remitos que estaban incluidos en estado
pendiente. La modificación del plan de entrega puede quitar algunos remitos e
incluir otros, con las actualizaciones de estado correspondientes a cada remito.
18 Recepción de Podrán ocurrir 3 situaciones cuando un cliente recibe un pedido:
cortes vacunos 1. Los cortes vacunos recibidos coinciden con el remito
2. Los cortes vacunos recibidos coinciden parcialmente con el remito
3. Los cortes vacunos recibidos no coinciden con el remito
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 9
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Aclaración: Las reglas de negocio relacionadas a los estados y transiciones permitidas entre los estados para los
objetos de la clases Pedido, Corte Vacuno, Remito y Plan de Entrega no están especificadas, porque se espera que
los estudiantes las analicen e identifiquen cuando construyan las máquinas de estado correspondientes.
Listado de Actores
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 10
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 11
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Gestión de clientes
1 Registrar Cliente Registrar los datos de un cliente. RP
2 Modificar Cliente Actualizar los datos permitidos de un cliente registrado. RP
3 Consultar Cliente Visualizar datos de uno o más clientes. RP
Dar de baja un cliente registrado del sistema, validando que no
4 Eliminar Cliente RP
tenga transacciones asociadas.
Registrar los datos un punto de entrega de un cliente y calcular
5 Registrar Punto de Entrega RP
sus coordenadas georreferenciales utilizando Google Maps
6 Modificar Punto de Entrega Actualizar los datos permitidos de un punto de entrega. RP
7 Consultar Punto de Entrega Visualizar datos de un punto de entrega. RP
Dar de baja un punto de entrega registrado en el sistema,
8 Eliminar Punto de Entrega RP
validando que no tenga transacciones asociadas.
Gestión de localidades
9 Registrar localidad Registrar los datos de una localidad. PS
10 Modificar localidad Actualizar los datos de una localidad. PS
11 Eliminar localidad Dar de baja una localidad. PS
Consultar los datos de una localidad, validando que no tenga
12 Consultar localidad PS
transacciones asociadas.
13 Registrar barrio Registrar los datos de un barrio. PS
14 Modificar barrio Actualizar los datos de un barrio. PS
Dar de baja un barrio, validando que no tenga transacciones
15 Eliminar barrio PS
asociadas.
16 Consultar barrio Visualizar los datos de un barrio PS
Gestión de Pedidos y Facturación
Registrar un pedido de un cliente para un punto de entrega
17 Registrar pedido RP
indicando los kilos solicitados de cada corte.
18 Consultar pedido Visualizar los datos de un pedido. RP
19 Cancelar pedido Registrar la cancelación de un pedido realizado por un cliente. RP
Generar una nueva factura para los pedidos realizados por todos
Generar facturación de
20 clientes durante un mes determinado, siempre que no hayan RF
pedidos del mes
sido facturados previamente.
Generar una nueva factura para todos los pedidos realizados por
Generar factura para un un cliente para un periodo de tiempo determinado. Debe
21 RF
cliente generar una factura con los pedidos de todos los puntos de
entrega del cliente.
Anular una factura para un Registrar la anulación de una factura determinada, registrando
22 RF
cliente motivo de anulación y responsable de la anulación.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 12
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 13
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 14
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 15
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Generar informe de cortes Generar informe de kilos generados por corte vacuno por
86 RA
vacunos categoría de animales.
Generar informes de
87 Generar un listado de clientes que más pedidos realizan. RA
clientes
Generar estadísticas de Generar una estadística de los pedidos realizados por los clientes
89 RA
pedidos en un período de tiempo
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 16
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 17
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Gestión de clientes
uc Gestión de clientes
8 Eliminar
punto de 7 Consultar
entrega punto de
entrega
4 Eliminar 6 Modificar
cliente punto de
entrega
Responsable de
Pedidos
3 Consultar
cliente
5 Registrar
punto de
entrega
2 Modificar «include»
cliente 1 Registrar
cliente
Gestión de localidades
uc Gestión de localidades
10 M odificar
localidad
11 Eliminar
localidad
9 Registrar
localidad
12 Consultar
localidad
16 Consultar Parametrizador
barrio de Sistema
13 Registrar
barrio
15 Eliminar 14 M odificar
barrio barrio
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 18
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
18 Consultar
pedido
19 Cancelar
17 Registrar pedido
pedido
26 Dar de baja
20 Generar un
Responsable de
facturación vencimiento
Pedidos
de pedidos
del mes
25 Consultar
vencimiento
21 Generar
factura para Responsable de 24 Modificar
un cliente facturación vencimiento
88 Actualizar
estado de 23 Registrar
factura un nuevo
22 Anular una vencimiento
90 Consultar 91 Enviar
factura para factura por
un cliente factura para un
cliente email
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 19
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
32 Consultar
mapa de
recorrido
38 Consultar
seguimiento
geo-satelital
Chofer 33 Finalizar
Responsable de viaje
distribución
34 Registrar
Responsable de camión
Administración
35 Modificar
camión
36 Consultar
37 Eliminar camión
camión
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 20
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Gestión de Entregas
uc Gestión de Entrega
42 Generar
41 Cancelar
plan de
remito 43 Modificar
40 Modificar entrega
remito plan de
92 Consultar entrega
remito
44 Cancelar
plan de
entrega
39 Generar
remito
45 Registrar
Responsable de
entrega
distribución
Responsable de realizada
Pedidos
54 Eliminar tipo
de descuento 46 Consultar
94 Registrar plan de
donación entrega
53 Consultar
tipo de
descuento Parametrizador de 47 Registrar
Sistema motivo de
rechazo
52 Modificar
tipo de
descuento
48 Modificar
motivo de
51 Registrar rechazo
tipo de 49 Consultar
descuento 50 Eliminar motivo de
motivo de 93 Generar cupón rechazo
rechazo de descuento
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 21
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Gestión de animales
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 22
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Gestión de usuarios
uc Gestión de usuarios
80 Eliminar
usuario
75 Iniciar
sesión
Usuario
81 Registrar
empleado
Parametrizador de
Sistema
82 Modificar
84 Consultar
empleado
empleado
83 Eliminar
empleado
Informes y estadísticas
uc Informes y estadísticas
86 Generar 87 Generar
informe de informe de
cortes vacunos clientes
85 Generar
informe de
efectividad
Responsable de
Administración
89. Generar
estadísticas de
pedidos
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 23
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 24
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 25
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 26
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 27
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Observación 4: El plan de entrega está compuesto por un Encabezado, con la fecha y hora de salida y nombre del
recorrido. En el cuerpo están referenciados los remitos: fecha y número de remito, nombre del cliente y nombre
del punto de entrega. En el pie figura la fecha de emisión del plan de Entrega y un texto para registrar una firma.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 28
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 29
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Observaciones:
Observación 1: Un periodo será correcto si la fecha hasta es mayor a la fecha desde, y ambas con formato de
fecha válido.
Observación 2: El usuario podrá cancelar el CU en cualquier momento.
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 30
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Flujos Alternativos
A1: El RA no selecciona ninguna localidad
A2. El RA selecciona algunas localidades
A3: El RA cancela la operación
A4: El RA selecciona exportar a Excel el reporte
A5: El RA selecciona exportar a PDF el reporte
A6: El RA selecciona método de cálculo de efectividad por pedidos cumplidos parcialmente
A7: El RA selecciona método de cálculo de efectividad por pedidos no realizados
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 31
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 32
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Modelo de Dominio
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 33
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 34
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 35
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 36
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 37
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Realización de Análisis del Caso de Uso 39 Generar Remito con Diagrama de Comunicación
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 38
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
Realización de Análisis del Caso de Uso 39 Generar Remito con Diagrama de Secuencia
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 39
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 40
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 41
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 42
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 43
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 44
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 45
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 46
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 47
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 48
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 49
Universidad Tecnológica Nacional – Facultad Regional Córdoba y Facultad Regional Villa María
Cátedra de Diseño de Sistemas de Información
PPA_Frigorífico.docx – V 1.28
Autor: Giuliana Belli Página 50
Cátedra de Diseño de Sistemas de Información
Universidad Tecnológica Nacional
Facultad Regional Córdoba
Ejercicio práctico tipo parcial 1
Ing. en Sistemas de Información
Glosario:
• Droides: Robots que poseen inteligencia artificial. El imperio utiliza estos robots para todas las operaciones que
pueden ser peligrosas para otros soldados. También para dar soporte en operaciones militares complicadas.
• DS-MK: Nombre clave que utiliza el imperio de manera oficial para referirse al proyecto de construcción de la
estación espacial de gran tamaño conocida por los soldados del imperio como “Estrella de la Muerte”
• Unidad Militar: Es un elemento organizacional dentro de las fuerzas armadas bajo el mando de un líder o jefe. La
unidad militar básica es un escuadrón que está compuesto por entre 7 y 15 soldados.
• Tipo de Unidad Militar: El tipo de una Unidad Militar se refiere al lugar que la Unidad Militar ocupa en la jerarquía.
Estos tipos pueden ser: escuadrón, pelotón, compañía, batallón, brigada, división o cuerpo armado.
Son tiempos de guerra civil en la galaxia. Un grupo armado clandestino llamado “Alianza Rebelde” ha atacado
diversas bases de operaciones del Imperio Galáctico. El Emperador Palpatine ha ordenado a su comandante en jefe de
las fuerzas armadas, Darth Vader, que se encargue de los rebeldes para traer paz y estabilidad a la galaxia. Darth Vader
ha comisionado una estación espacial de gran tamaño para transportar tropas más rápida y cómodamente a lo largo
de la galaxia, esta estación espacial también estará armada para permitir tomar acciones defensivas y ofensivas contra
la Alianza Rebelde. Esta estación espacial es conocida con el nombre clave DS-MK, pero los soldados del imperio la
llaman “Death Star” o “Estrella de la Muerte”. La Estrella de la Muerte puede transportar entre 1 y 1.5 millones de
personas (Entre las cuales se encuentran soldados de diversos rangos, médicos, cocineros, etc.). Se necesita un
software especializado que controle todos los aspectos de la estación, desde los accesos a las distintas áreas hasta las
raciones y suministros que se encuentran en la misma.
La armada imperial tiene su propia organización militar avanzada ya que deben patrullar y proteger toda la
galaxia. Dentro de la Estrella de la Muerte se maneja una jerarquía similar a la que suele manejar el resto de la armada
imperial. La unidad más pequeña es un Escuadrón compuesto por entre 7 y 15 soldados (llamados Stormtroopers) y
liderado por un teniente. Estas unidades militares son de una especialidad dada (Infantería, Artillería, Unidades
Especiales, Paracaidistas, Pilotos, etc.) y todos los miembros del escuadrón tienen el mismo entrenamiento y
habilidades de combate. Además de esto, cada Escuadrón cuenta con al menos un soldado con entrenamiento como
médico de campo, (cumple su función de médico sólo durante una misión) y un soldado con entrenamiento de cocina
Cátedra de Diseño de Sistemas de Información
Universidad Tecnológica Nacional
Facultad Regional Córdoba
Ejercicio práctico tipo parcial 1
Ing. en Sistemas de Información
de campo, (cumple su función de cocinero sólo durante una misión). A su vez un grupo de 4 o 5 escuadrones componen
un Pelotón que es liderado por un comandante. Todos los escuadrones de un pelotón son de la misma habilidad. Un
grupo de 2 a 4 pelotones componen una Compañía que es liderada por un capitán. Los pelotones dentro de una
compañía pueden tener distintas especialidades para lograr misiones más completas. De esta forma, si se debe realizar
un ataque a gran escala se puede utilizar diversas habilidades de combate. Además, se puede planificar misiones
pequeñas que requieran de distintos escuadrones para complementar habilidades. Un grupo de 2 a 5 compañías
forman un Batallón que es liderado por un comodoro. Un grupo de 2 a 6 batallones forman una brigada que es liderada
por un Vicealmirante. Un grupo de 4 a 5 brigadas forman una división que es liderada por un Almirante. Finalmente,
un grupo de 2 a 7 divisiones forman un cuerpo armado, que es liderado por un Gran Almirante. Debería haber al menos
2 cuerpos armados completos en la Estrella de la Muerte en todo momento. Toda esta estructura se encuentra al
mando de Darth Vader, que ocupa el cargo de Comandante en Jefe de las Fuerzas Imperiales. Darth Vader responde
solo ante la autoridad del Comandante Supremo, Darth Sidious.
Cada una de estas unidades militares posee un número identificatorio que se combina con una letra que indica
su jerarquía. Entonces un Cuerpo Armado puede tener el numero identificatorio “CP-1”. La cantidad de dígitos de este
número no tiene restricción ya que puede haber miles de unidades militares a lo largo de la Galaxia. Además de esto,
cada unidad militar tiene un emblema identificatorio único elegido por su líder (Un Gran Almirante en el caso de un
Cuerpo Armado) que permite a otras unidades una rápida identificación en caso de encontrarse. Este emblema debe
ir acompañado siempre del símbolo imperial oficial para su tipo de unidad. Estos símbolos se ilustran en la tabla, son
iguales para todas las unidades del mismo tipo.
Para cualquier individuo que se encuentre habitando la estación espacial, es importante conocer su nombre
completo, su planeta de origen, su raza, su fecha de nacimiento y su fecha de ingreso al ejército. En caso de los solados
debe conocerse también su código de identificación único dentro del ejército (Un código alfanumérico generado
automáticamente al enlistarse) y su rango. Darth Vader ha especificado que es muy importante mantener un registro
de los cambios de rango de cada soldado ya que algunas de las misiones planeadas sólo pueden ser asignadas a
soldados y/o líderes con mayor experiencia.
Las tropas duermen en habitaciones conjuntas por Escuadrón. Cada habitación tendrá una pantalla sobre la
puerta que indicará toda la información del escuadrón que duerme en la habitación. Esto es el emblema de ese
escuadrón, su número de identificación y los números de identificación de todas las unidades militares superiores a
las que pertenece dicho escuadrón (pelotón, compañía, brigada, etc.). Cada teniente duerme junto a su escuadrón,
pero el resto de los oficiales de alto rango duerme en habitaciones separadas por rango junto a otros oficiales de alto
rango de su propia unidad militar. La estrella de la muerte cuenta con diversas Secciones Habitacionales identificadas
por colores. A lo largo de los pasillos de las secciones habitacionales hay luces LED que cambian de color según el color
de la sección. Cada sección está asignada a un cuerpo armado y no puede haber soldados asignados a otro cuerpo
durmiendo en la sección. Darth Vader puede cambiar como están delimitados los módulos habitacionales, creando
algún módulo nuevo, eliminando un módulo o reasignado las divisiones. Las luces LED que marcan las distintas
secciones deben cambiar de color según el color asignado por Darth Vader. Todas las habitaciones son iguales ya que
se desea tener gran flexibilidad a la hora de transportar las tropas.
Por esta razón el Imperio permite que se creen nuevas unidades militares de cualquier tipo correspondientes
a una unidad de orden superior ya existente. También está permitido mover una unidad militar para que pertenezca a
cualquier otra. Por ejemplo, el pelotón P-501 era parte de la Compañía C-1103, pero luego de la Guerra de los Clones
fue movido a la Compañía C-609 encargada del patrullaje de los sistemas exteriores. Esta flexibilidad es la que permite
que el Imperio responda de forma rápida y eficiente a las diversas necesidades de los ciudadanos del imperio.
Para mover unidades militares de una base militar a otra se utiliza una Orden de Reubicación. Esta Orden de
Reubicación puede ser iniciada por un oficial con rango de comandante o superior. Un oficial no puede generar
Órdenes de Reubicación para una unidad militar que sea superior a él en la jerarquía, es decir que un comandante no
puede generar una Orden de Reubicación para un Batallón. El oficial debe indicar que unidad militar desea reubicar,
que oficial se hará cargo ahora de la unidad militar (Indicando su nombre, rango y el número identificatorio de la
unidad militar que encabeza), el lugar o base al cual se reubicará a la unidad militar, el motivo por el que se reubica a
esa unidad y una fecha óptima para que las tropas ocupen su nuevo puesto. Para que una Orden de Reubicación sea
ejecutada, debe ser aprobada por al menos un oficial de rango superior al que generó la orden. Este oficial puede
aceptar o rechazar la Orden de Reubicación. Las únicas excepciones son las órdenes generadas por Darth Vader o un
Gran Almirante, esas órdenes están aprobadas desde su creación. Una vez que la Orden ha sido aprobada, la misma
debe ser comunicada a las tropas afectadas para que puedan prepararse para el movimiento, esta comunicación debe
incluir el motivo de la Reubicación, la base a donde han sido asignados y la fecha de salida de la base actual. Si la Orden
no es comunicada a las tropas, entonces no es posible ejecutar la salida de la base origen. Si la comunicación no se
realiza antes de la fecha de vencimiento de la Orden, entonces la misma se considera como vencida y no puede
ejecutarse. En ese caso debe comunicarse al oficial que la creó mediante un correo electrónico. Una vez comunicada
la orden y llegada la fecha de salida, las tropas salen de su base actual camino a la nueva base. En este punto se
considera que la Orden está en proceso. Cuando las tropas llegan a la nueva base militar y han sido acomodadas en
sus habitaciones se considera que la Orden fue ejecutada. Darth Vader desea obtener estadísticas respecto al
cumplimiento de las órdenes, es por eso por lo que es de extrema importancia diferencias las ordenes que se
Ejecutaron satisfactoriamente (Es decir, las que cumplieron con todas las fechas óptimas) y las que se Ejecutaron
insatisfactoriamente (Es decir, las ordenes en las que las tropas llegaron luego de la fecha optima de llegada). Para
simplificar la mejora del proceso de ejecución de órdenes, Darth Vader ha pedido que se registren todas las fechas de
actividad de una Orden. Finalmente, una Orden de Reubicación puede ser cancelada por el oficial que la creó si todavía
no ha sido aprobada.
Darth Vader quiere que el software de la Estrella de la Muerte pueda manejar el hospedaje de todo aquel que
habite la estación espacial, la gestión de expediciones y misiones militares que salgan de la misma y la gestión de los
suministros necesarios para mantener a todos los habitantes de la Estrella de la Muerte.
Gestionar el hospedaje del personal militar de la Estrella de la Muerte, las expediciones militares y los
suministros necesarios para su mantención, generando información relacionada a las expediciones y el consumo de
suministros militares.
La aplicación permite a los deportistas crear metas de entrenamiento personalizadas. Al definir una meta de
entrenamiento, se pueden seleccionar diferentes parámetros como el tipo de actividad (carrera, ciclismo,
caminata), el tipo de objetivo, es decir si se mide por duración, distancia o frecuencia semanal de los
entrenamientos. También se especifica el período en días durante el cual se desea alcanzar la meta de
entrenamiento y la fecha de inicio para comenzar a medirla que puede ser distinta del momento de la
creación.
Por ejemplo, una meta de entrenamiento de distancia podría ser “correr 50 kilómetros en un mes a partir
del 1 de julio de 2023”, y una meta de entrenamiento de frecuencia semanal sería “caminar 3 veces por
semana durante un mes a partir de hoy”. Al cumplirse la fecha de inicio de la meta de entrenamiento, la
aplicación enviará notificaciones para ayudar al deportista a mantener el rumbo hacia su objetivo. Es decir,
si creo una meta hoy con fecha de inicio para el 1 de julio 2023, sólo a partir de ese día comenzará a validarse
el avance de la meta de entrenamiento.
Entrenamientos y Rutas
Una vez creada una meta de entrenamiento, la forma de cumplimentarla es a través de los entrenamientos
que se realizan a lo largo del periodo estipulado. Es importante destacar que sólo puede existir una meta de
entrenamiento por tipo a la vez. Si el deportista desea crear una meta de entrenamiento cuyo periodo y tipo
coincide con otra ya existente, el sistema solicitará que cancele la preexistente antes de crear una nueva; de
forma que sea simple determinar a qué meta de entrenamiento corresponde cada entrenamiento realizado.
Mientras no se superpongan periodos por cada tipo de actividad, el sistema permite al corredor que registre
todas las metas de entrenamiento a futuro que desee.
Cuando el deportista inicia un entrenamiento la aplicación utiliza la señal del GPS para determinar la
ubicación actual y registrar la distancia (en Km) recorrida a medida que se mueve. Se registrará además la
fecha y hora de inicio y fin del ejercicio de forma de poder calcular la duración del entrenamiento. La
aplicación también puede proporcionar información adicional sobre la velocidad, el ritmo y la elevación del
suelo durante la ejecución de la actividad. Una vez finalizado el entrenamiento, la ruta recorrida queda
marcada y es posible visualizarla al consultar el listado de entrenamientos. Cuando se registra un
entrenamiento, la aplicación validará si corresponde o no asociarlo a alguna meta de entrenamiento. Es
decir, el deportista puede registrar entrenamientos de diferentes de tipos de actividades, pero para el avance
de la meta de entrenamiento sólo se consideran aquellos que corresponden al tipo de actividad de la meta
de entrenamiento cuyo periodo esté vigente.
El cumplimiento de una meta de entrenamiento depende entonces de dos factores, el avance del tiempo y
los entrenamientos registrados en el periodo definido. Por esa razón para medir el avance de una meta, el
sistema debe controlar con cada entrenamiento realizado si se alcanza el objetivo definido. Por ejemplo,
para una meta de correr por distancia, cada vez que el deportista finaliza una carrera se debe sumar la
distancia actual a las distancias de las actividades anteriores para determinar si son iguales o mayores a la
distancia objetivo. Pero también puede suceder que avancen los días y no se registre ningún entrenamiento.
En este caso el control del avance se realizará una vez por día de manera automática validando que la fecha
actual no sea igual a la fecha de inicio más el periodo en días configurado para la meta. En ambos casos, se
enviará una notificación al usuario cuando se produzca un cambio en el avance de la meta de entrenamiento.
Según el tipo de objetivo de la meta habrá diferentes formas de calcular su avance. Cuando el tipo de objetivo
es de distancia deberán sumarse las distancias recorridas en cada entrenamiento; Si es de tipo duración,
deberá calcularse la duración total de todos los entrenamientos asociados a la meta; Si es de tipo frecuencia,
se deberán contar la cantidad de entrenamientos semanales. En cualquier caso, si los entrenamientos
realizados cumplen el valor objetivo configurado para la meta de entrenamiento en el periodo definido
entonces la meta de entrenamiento se alcanzó.
Reportes y Estadísticas
La aplicación elabora diferentes reportes y estadísticas que permiten al deportista hacer un seguimiento de
su progreso y desempeño de cada entrenamiento.
Se requiere generar un resumen de indicadores de entrenamiento que muestre detalles como la distancia
recorrida, el tiempo empleado, la velocidad y la elevación del suelo, en un periodo de tiempo.
El sistema muestra además estadísticas detalladas sobre el progreso del deportista a lo largo de un mes,
incluyendo la situación de cada meta de entrenamiento que es alcanzada y el tiempo que permanece en
progreso hasta que se alcanza.
PlateUp es un servicio de entrega de recetas junto con los ingredientes necesarios pre-porcionados para
prepararlas, para lograr que cocinar en casa sea más fácil y práctico. Los clientes pueden armar su propio
plan alimentario según sus preferencias dietarias y escoger de una variedad de recetas, y recibir las recetas
con sus ingredientes directamente en la puerta de su casa semanalmente. La compañía tiene como
objetivo hacer que cocinar en casa sea más conveniente, económico y agradable para sus clientes.
Las recetas de PlateUp son desarrolladas por un equipo de chefs profesionales y están diseñadas para
ser rápidas y fáciles de preparar.
Cada receta tiene asociada un nombre, una descripción, una categoría dietaria, tiempo de preparación,
tiempo total de cocción y dificultad (fácil, medio, difícil). Una receta puede corresponder a más de una
categoría dietaria a la vez. Por ejemplo, “Milanesas con puré” corresponde con la categoría dietaria “Carne
y vegetales” y también a “Rápida y simple”. Además, cada receta tiene una serie de pasos para realizarse.
Las recetas están hechas de forma tal que una receta equivale a una porción para una persona.
Cada receta lleva una serie de ingredientes. Un ingrediente puede estar en distintas recetas. De acuerdo
con la receta, el ingrediente estará presente en diferentes proporciones. Los ingredientes podrán
trabajarse en distintas unidades de medida (como gramos, litros o unidades) de acuerdo con el tipo de
ingrediente que se maneje.
PlateUp funciona con un servicio de suscripción semanal, mediante el cual los clientes reciben una vez a
la semana un kit de comida con todas las recetas y sus ingredientes pre-porcionados. Para poder acceder
al servicio de suscripción de PlateUp, los clientes deben registrarse indicando todos sus datos: nombre,
apellido, DNI, dirección de envío, correo electrónico y teléfono celular.
PlateUp no tiene planes alimentarios definidos por defecto, por lo cual cada cliente –una vez registrado–
diseña su propio plan alimentario de acuerdo con sus necesidades y preferencias. Cada plan alimentario
tiene fecha de creación y de cierre, un nombre, un código identificatorio, una o varias categorías dietarias
seleccionadas por el cliente (carne y vegetales, vegetariana, apta para consumo familiar, saludable, rápida
y simple, marina, etc.), la cantidad de personas destinatarias del plan alimentario, y la cantidad de recetas
semanales que se enviarán. Por ejemplo, se puede definir un plan alimentario llamado “Semanales de
Pollo”, que tenga las categorías dietarias carne y vegetales y rápida y simple, para 3 personas y con 3
recetas, seleccionando recetas como “Pollo a la plancha con vegetales”, “Pollo teriyaki”, y “Pollo
Cacciatore”. El cliente recibirá entonces un kit de comida con los ingredientes pre-porcionados suficientes
para hacer tres porciones de cada una de las tres recetas.
La única forma de acceder al servicio es suscribiéndose. Un cliente puede tener asociada una única
suscripción. Para determinar el costo de esta suscripción se asocia una tarifa de servicio, que representa
el precio base que se paga por suscribirse. Esta tarifa es modificable en el tiempo por lo que tiene una
vigencia, y es igual para todos los planes alimentarios. A este precio se le suma un cálculo que varía para
cada plan alimentario de acuerdo con la cantidad de personas y la cantidad de recetas, y se determina en
función de eso el precio por persona y el precio total a pagar por el plan alimentario que suscribe el cliente.
Un cliente puede tener activos varios planes alimentarios, y a cada plan alimentario se le asocian los kits
Ciclo lectivo: 2023 Págin a |1
Cátedra Diseño de Fecha: 20/05/2023
de comida que el cliente desea recibir. El precio final que pagará un cliente en una suscripción al servicio
de PlateUp se compondrá de la tarifa base (por suscripción) y un monto adicional por cada plan alimentario
activo que tenga.
Cuando el cliente se registra, se le solicita que diseñe su plan alimentario, para lo cual se le pide que
personalice todas las opciones de éste (cantidad de personas, preferencias alimenticias, cantidad de
recetas por semana). En este punto se le muestra el catálogo de recetas disponible para que conforme su
plan alimentario. A la hora de elegir las recetas, al cliente se le recomendarán de manera prioritaria las
recetas de la o las categorías dietarias que haya escogido inicialmente, pero tendrá acceso a todas las
recetas disponibles. Esto implica que seleccionar una o más categorías dietarias no tiene un costo extra.
Una vez conformado el plan alimentario, este se registra con estado Inactivo. Los planes alimentarios
inactivos permanecen registrados un máximo de dos semanas luego de su creación, tiempo en el que el
cliente debe activar su plan alimentario pagando su suscripción mediante medios electrónicos (tarjeta de
crédito, débito o Mercado Pago). Registrado el pago, se coloca al plan alimentario en estado Activo, y se
define que, a partir de esa fecha, cada siete días, se le cobrará el monto correspondiente a su suscripción.
El kit de comida que se enviará al domicilio registrado por el cliente consiste en todas las recetas y todos
los ingredientes pre-porcionados necesarios para realizar dichas recetas. Se envía un kit de comida por
plan alimentario activo que tenga el cliente. Los kits de comida se preparan semanalmente una vez que se
activa el plan alimentario al que están asociados.
Las recetas escogidas por un cliente para su plan alimentario pueden cambiar en el tiempo en tanto y
en cuanto el plan alimentario esté activo, por lo que es importante tener registro de qué recetas se envían
al cliente en una semana determinada.
PlateUp prepara kits de comida de lunes a viernes, para luego despacharlos por la tarde del viernes. Los
clientes recibirán sus kits entre sábado y domingo dependiendo de donde sea el domicilio consignado para
la entrega.
Si no se desea recibir un kit de comida en una semana en particular, el cliente tiene la opción de pausar
uno o varios de sus planes alimentarios. Pausar un plan alimentario implica que esa semana el cliente no
recibirá el kit de comida asociado a él. La pausa es temporal y se activará el plan alimentario nuevamente
de forma automática.
Se desea que el software genere estadísticas para facilitar la toma de decisiones, respecto de las recetas
más solicitadas, y del porcentaje de kits que se entregaron exitosamente con respecto a los que no. Esta
información debe estar disponible en formato PDF o Excel.