Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Duración: 70 minutos.
Normas a seguir:
Los apellidos, nombre y DNI se deben escribir en todas las hojas.
Se debe entregar cada pregunta en hojas separadas.
La primera pregunta se debe entregar a los 20 minutos del
comienzo del examen.
Debéis indicar si sois alumnos ERASMUS o si estáis en 5ª/6ª convocatoria.
No olvidéis entregar las preguntas en el montón correspondiente a
vuestro plan de estudios
Los siguientes diagramas presentan tres versiones de una parte aferente encargada
de la lectura y validación de un NIF. En esta rama se comprueba el DNI y la letra.
Señala los problemas que presenta cada versión e indica cuál te parece la más
conveniente.
Nota: Sin justificación de la respuesta no se dará por válida aunque sea la correcta
a)
NIF valido
Letra val
DNI val
Letra val
DNI val
ok
ok
ok
Letra
DNI
Letra
ok
DNI
ok
ok
ok
b)
NIF valido
DNI val
Cadena
Letra
Letra
ok
ok
ok
DNI
Letra
DNI
ok
ok
c)
Error
Obtener NIF
Mostrar
error
Error
Solución
1. La opción B no realiza una correcta edición por niveles de las 3 validaciones existentes,
mientras la opción A sí.
2. Los módulos “Obtener Dni válido” y “Obtener letra” de la opción A no llaman al módulo de
“Mostrar error”. Esto provoca que la cohesión de estos módulos no sea funcional. Además,
por esa razón, aparecen dos datos “ok” vagabundos. La opción B no tiene estos problemas.
3. La solución sería simplemente añadir el módulo “Mostrar error” a “Obtener Dni válido” y
“Obtener letra” y eliminar los datos “ok” vagabundos. Lo que implica que la c) es la correcta
Pregunta 2 (2.5 ptos)
GestiónPistas
PLAN 93
En la entrevista con el administrativo del club de tenis, nos ha contado lo siguiente:
“… Los socios llaman al club para reservar pistas. Esa reserva prevista puede fallar por
varios motivos: porque el socio la anule, porque se detecte algún problema en la pista
y tenga que ser cerrada para que entre el equipo de mantenimiento o porque,
simplemente, el socio no aparezca. Si el socio no aparece debe pagar el PrecioNoUso
establecido por el club. Si anula con menos de 24 horas de antelación también debe
pagar el PrecioAnulación establecido por el club...”
Añade al diagrama de clases las operaciones que consideres necesarias para soportar
este comportamiento, y dibuja el diagrama de estados correspondiente a la clase
Reserva.
Solución
Vamos a suponer que la clase que maneja los cambios de estado es la clase Club (ya
que la clase reserva no puede hacerlo, puesto que cada cambio de estado supone su
destrucción y nueva creación).
Las operaciones necesarias serían aquellas que sirven para cambiar dicho estado:
Club::anularMant(Reserva r, Fecha f)
Club::anularCliente(Reserva r, Fecha f)
Club::usar(Reserva r)
Club::isNoUsada(Reserva r)
Otra alternativa es que las operaciones usar y anularCliente sean responsabilidad del
socio.
anularMant()
AnuladaMant
anularCliente()
AnuladaCliente
Prevista
usar()
Usada
Administra
ción
Gestión
Reservas
Pistas
Facturación
Las dependencias vienen inducidas por:
Pregunta 3 (3 puntos)
Responded BREVEMENTE a las siguientes cuestiones:
PLAN 93
1.- (1 punto) ¿Qué diferencias hay entre un diagrama de secuencia y un
diagrama de colaboración?
Tanto diagramas de secuencia como diagramas de colaboración son
diagramas de interacción, cuyo objetivo es mostrar en detalle cómo
interaccionan los objetos de la aplicación para realizar una determinada
tarea. Ambos diagramas muestran casi la misma información. La diferencia
estriba en los aspectos en que cada diagrama pone el énfasis: mientras el
modo de dibujar los diagramas de secuencia dirigen la atención hacia la
secuenciación de llamadas (aspecto temporal), el diagrama de colaboración
la dirige hacia los objetos que están interactuando en la resolución de esa
funcionalidad/caso de uso, y los enlaces que deben existir entre ellos.
Nota: hay información que sólo se puede reflejar en uno de los dos
diagramas. E.g. el tiempo que tarda un mensaje en llegar al receptor, o el
tiempo durante el que permanece activo un objeto como respuesta a un
mensaje es información exclusiva del diagrama de secuencia
PLAN 2001
1.- (1,5 puntos) ¿Qué patrones podríais aplicar al Diagrama de Clases de la
Fig. 1? Describe brevemente las ventajas que aportarían al diseño.
3.- (0,5 puntos) ¿Cuáles son las fases principales del USDP?
• Recordemos que una fase en el USDP es Intervalo de tiempo
entre dos hitos importantes del proceso, cuando se cumplen un
conjunto de objetivos bien definidos (milestones), se completan
los artefactos (e.g. Modelos) y se toman las decisiones sobre si
pasar a la siguiente fase.
• El USDP define cuatro fases: inception, elaboration,
construction, transition
• Fase de Inception
• Define ámbito del proyecto
• Desarrolla el modelo de negocio del sistema
• Establece la factibilidad del sistema (puede apoyarse en
prototipos)
• Fase de Elaboración
• Captura los requisitos funcionales/no funcionales del
sistema
• Crea la arquitectura del sistema
• Fase de Construcción
• Donde se construye el producto. Completa el análisis del
sistema, realiza la mayoría del diseño y la
implementación.
• Fase de Transición
• Implantación y mantenimiento del sistema
Examen ISI/DSS Septiembre 2005
Test OCL. Solución.
Vuelo
i d_vuelo : Integ er Avion
tipo_vuelo : String +avion tipo_avion : String
clase : Integ er capacidad_pasajeros : Integer
edad_permitida_pilotos : Integer 1
+pilotos
+pertenece_a
1 1..*
Compañia
Tripulante
nom bre : String +asis tent es_del_vuelo n ombre : String
1..*
edad : Integer
e s_med ico : Bo olea n
Coorporacion_de_Lineas
nombre_corporacion : String
cantidad_de_lineas_aereas : Integer
context Vuelo
inv: self.tipo_vuelo = ‘trasatlantico’ implies (self.pilotos-> size() = 3 and self.avion.tipo_avion =
‘boing’)
and self.avion.capacidad_pasajeros >= 70
and self.pilotos ->forAll (h | h.edad >= self.edad_permitida_pilotos)
3. Alguna parte de la expresión OCL enunciada anteriormente significa alguna de las siguientes expresiones
escritas en Lenguaje Natural. ¿Cuál de las siguientes opciones es verdadera?
a) La capacidad de pasajeros del vuelo debe ser siempre superior (o igual) a 70 pasajeros.
b) La capacidad de pasajeros del avión de todo vuelo trasatlántico, es igual a 70 (o superior) pasajeros
c) La capacidad de pasajeros del avión de un vuelo es igual a 70 (o superior) pasajeros.
4. Alguna parte de la expresión OCL enunciada anteriormente significa alguna de las siguientes expresiones
escritas en Lenguaje Natural. ¿Cuál de las siguientes opciones es verdadera?
a) Los pilotos de un vuelo deben ser mayores de edad.
b) La edad de los pilotos de un vuelo no debe ser inferior a la edad permitida para pilotos para ese
vuelo.
c) Los pilotos de un vuelo deben tener una edad mayor que la antigüedad mínima del vuelo.
5. Se requiere rescribir la expresión OCL de tal forma que sean válidos los siguientes requerimientos:
- La capacidad de pasajeros del avión de todo vuelo debe ser inferior a 450 pasajeros.
- Si el tipo de vuelo es ‘cabotaje’ entonces la cantidad de ‘asistentes del vuelo’ debe ser menor a 5 y el
tipo de avión no debe ser ‘boing’.
- Una de las personas del conjunto de ‘asistentes del vuelo’ es médico.
¿Cuál de las siguientes es válida?
a) context Vuelo
inv: self.tipo_vuelo = ‘cabotaje’ implies (self.asistentes_del_vuelo-> size() < 5 and
self.avion.tipo_avion <> ‘boing’)
and self.avion.capacidad_pasajeros < 450
and self.asistentes_del_vuelo ->exists (es_medico)
b) context Vuelo
inv: self.tipo_vuelo = ‘cabotaje’ implies (self.piloto-> size() < 5 and self.avion.tipo_avion <>
‘boing’)
and self.avion.capacidad_pasajeros-> size() < 450
and self.asistentes_del_vuelo ->exists (es_medico)
b) context Vuelo
inv: self.tipo_vuelo = ‘cabotaje’ implies (self.asistentes_del_vuelo-> size() < 5 and
self.avion.tipo_avion <> ‘boing’)
and self.avion.capacidad_pasajeros < 450
and self.asistentes_del_vuelo = es_medico
Banco
nombre_banco : String
+banco
1
TarjetaTitular
id_tarjeta : Integer TarjetaExtension
l im ite_m ax_ perm iti do : Real +extensiones limite_permitido : Real
limite_min_permitido : Real nom bre_im preso : String
tien e_extensiones : Boolean 0. .*
1..*
+resumenes
ResumenMensual
id_res umen : Integer
total_m ensual : Real +titular
importe_minimo_a_pagar : Real 1
1 +poseedor
+garantia
Persona
nombre : String
tipo_seguro_de_vida : Integer
6.¿A cuántas clases (distintas) se ha navegado a partir de la expresión? Indique el número y el nombre de
esas clases a las cuales se ha navegado:
a) Se navego a 4 clases distintas: Banco, TarjetaExtensión, Persona, ResumenMensual
b) Se navego a 4 clases distintas: Banco, TarjetaTitular,, TarjetaExtensión, Perosna
c) Se navego a 3 clases distintas: Banco, TarjetaTitular,, TarjetaExtensión
7. Alguna parte de la expresión OCL enunciada anteriormente significa alguna de las siguientes expresiones
escritas en Lenguaje Natural. ¿Cuál de las siguientes opciones es verdadera?
a) Si la tarjeta de crédito del titular tiene menos de 6 extensiones, la tarjeta pertenece al banco Galicia.
b) Si la tarjeta de crédito del titular tiene extensiones y pertenece al banco Galicia, entonces la cantidad de
extensiones no es superior a 5
c) El banco Galicia permite hasta 6 extensiones de una tarjeta de crédito del titular.
8. Alguna parte de la expresión OCL enunciada anteriormente significa alguna de las siguientes expresiones
escritas en Lenguaje Natural. ¿Cuál de las siguientes opciones es verdadera?
a) El tipo de seguro de vida es igual a 3 o superior.
b) El titular de toda tarjeta de crédito titular tiene un tipo de seguro de vida igual a 3 o inferior.
c) El titular de una tarjeta de crédito titular tiene un tipo de seguro de vida superior a 2.
9. Alguna parte de la expresión OCL enunciada anteriormente significa alguna de las siguientes expresiones
escritas en Lenguaje Natural. ¿Cuál de las siguientes opciones es verdadera?
a) Todos los resúmenes de todas las tarjetas de crédito titulares tienen un importe total que no supera el
limite máximo.
b) Todos los resúmenes de una tarjeta de crédito titular tienen un importe total que no supera el limite
máximo permitido para esa tarjeta.
c) Todos los resúmenes de una tarjeta de crédito titular tienen un importe total que es inferior estrictamente
al límite máximo permitido para la tarjeta.
10. Se requiere rescribir la expresión OCL de tal forma que sean válidos los siguientes requerimientos:
- Si la tarjeta pertenece al banco galicia y no tiene extensiones, entonces la cantidad de extensiones es
cero.
- El tipo de seguro de vida de la persona garantía de una tarjeta titular, es superior a 3.
- Todos los resúmenes de una tarjeta de crédito tienen un ‘importe mínimo a pagar’ que es igual a la
mitad de su importe total.
a) context TarjetaTitular
inv: ((self.banco.nombre_banco = ‘Galicia’ and self.tiene_extensiones = false)
implies (self.extensiones->isEmpty()) )
and self.garantia.tipo_seguro_de_vida-> size()>3
and self.resumenes ->forAll(a | a.importe_minimo_a_pagar = (a.total_mensual /2) )
b) context TarjetaTitular
inv: ((self.banco.nombre_banco = ‘Galicia’ and self.tiene_extensiones = false)
implies (self.extensiones->isEmpty()) )
and self.garantia.tipo_seguro_de_vida > 3
and self.resumenes ->forAll(a | a.importe_minimo_a_pagar = (a.total_mensual /2) )
c) context TarjetaTitular
inv: ((self.banco.nombre_banco = ‘Galicia’ and self.tiene_extensiones = false)
implies (self.extensiones->isEmpty()) )
and self.garantia.tipo_seguro_de_vida -> size()>3
and self.resumenes ->set (a | a.importe_minimo_a_pagar = (a.total_mensual /2) )