Professional Documents
Culture Documents
Especificacin de sistemas
software en UML
POLITEXT 153
Especificacin de sistemas
software en UML
POLITEXT
Especificacin de sistemas
software en UML
EDICIONS UPC
Diseo de la cubierta:
Manuel Andreu
Produccin:
ndice
1
Requisitos y especificacin
17
27
El lenguaje UML
39
101
Coleccin de ejercicios
107
Software
Importancia
Evolucin
Caractersticas
Crisis del software
Paradigmas
Ciclo de vida clsico
Prototipaje
Modelo en espiral
Bibliografa
100%
HARDWARE
SOFTWARE
1960
70
80
90
Distribucin
Hardware barato
Software de consumo
Batch
Poca distribucin
A medida
Multiusuario
Tiempo real
Bases de datos
Software de producto
1950
60
70
Aplicaciones web
Sistemas sobremesa
Sistemas expertos
Clculo paralelo
80
90
2000
10
Se desarrolla, no se fabrica.
No se estropea.
Mantenimiento ms difcil que el hardware.
Se construye a medida, no se reusa demasiado.
Fallos H/S
ndice
Fallos
hardware
software
tiempo
11
Problemas:
Evolucin continua
Insatisfaccin de los usuarios
Poca calidad
Mantenimiento difcil
Causas:
Naturaleza del software
Complejidad
Gestin
Mitos:
De gestin
De los clientes
De los diseadores
12
In fo rm e C H A O S (19 9 4 )
Acabado en el plazo y
presupuesto, satisfaciendo los
requisitos
16,2 %
52,7 %
Cancelado durante el
desarrollo
31,1 %
13
10
Un ingeniero ...
Dispone de un abanico de tcnicas probadas que dan resultados
precisos.
Se preocupa de la fiabilidad y del rendimiento.
Trata de reducir costes y complejidad.
Basa sus modelos en teoras matemticas slidas.
Construye prototipos de los nuevos diseos.
Utiliza diagramas formales.
11
El proceso de la ingeniera
Formulacin
Anlisis
Generacin
Seleccin
Especificacin
Implementacin
Modificacin
14
12
Desarrollo:
Diseo del software
Codificacin
Prueba
Mantenimiento:
Correccin
Adaptacin
Mejora
13
ESPECIFICACIN
DISEO
CODIFICACIN
PRUEBA
MANTENIMIENTO
15
14
Prototipaje
ANLISIS
REQUISITOS
DISEO
RPIDO
PRODUCTO
PROTO_
TIPO
REFI_
NAMIENTO
EVALUACIN
15
Modelo en espiral
Anlisis de riesg s
Planificacin
Evaluacin
Ingeniera
16
16
Bibliografa
Pressman, R.S
software Engineering: A Practitioners Approach.
5a edicin.
McGraw Hill, 2001. (Cap. 1y 2)
Requisitos y especificaciones
Requisitos y especificaciones
Bibliografa
17
Requisitos y especificaciones
Requisitos y especificaciones
HARDWARE
SOFTWARE
PERSONAS
Determinar
requisitos
Especificar
requisitos
Diseo
Ingeniera
del hardware
Ingeniera
del software
Ingeniera de sistemas
18
Requisitos y especificaciones
ALMACN
Requisitos y especificaciones
2. Comprobar correspondencia
albarn
3. Control de calidad
4. Actualizar pedido
defectuoso
5. Determinar dnde va
PEDIDO A
PROVEEDOR
PRODUCTOS
ESTANTERAS
6. Almacenar
PRODUCTOS EN ESTANTERAS
19
Requisitos y especificaciones
error
1. Comprobar si esperado
error
2. Comprobar correspondencia
albarn
3. Control de calidad
defectuoso
4. Actualizar pedido
5. Determinar dnde va
orden
PEDIDO A
PROVEEDOR
PRODUCTOS
ESTANTERAS
6. Almacenar
SOFTWARE
MANUAL
PRODUCTOS EN ESTANTERAS
HARDWARE
Requisitos y especificaciones
Recepcin
pedido
albarn
aviso
defectuoso
resultado
albarn
Sistema
Inf rmtic
orden
errores
Transp rte
20
Requisitos y especificaciones
pedido
albarn
SISTEMA
INFORMTICO
resultado
orden
errores
Requisitos y especificaciones
error
pedido
Recibir
pedidos
Tratar
albaranes
pedidos
Actualizar
pedidos
resultado
productos
estanteras
Emitir
orden
orden
21
Requisitos y especificaciones
10
Solicitarlos al usuario.
Extraerlos de un sistema software existente.
Sintetizarlos a partir del sistema global.
Descubrirlos mediante experimentacin.
Requisitos y especificaciones
11
No funcionales
Definen las cualidades generales que ha de tener el sistema al
realizar su funcin
Eficiencia
Tipos de interfaces
Econmicos
Estructurales
Polticos
Calidad
22
Requisitos y especificaciones
12
Requisitos y especificaciones
13
23
Requisitos y especificaciones
14
No ambiguas
Completas
Verificables
Consistentes
Modificables
Trazables
Usables durante la operacin y el mantenimiento
Requisitos y especificaciones
15
2. Descripcin general
2.1 Perspectiva del producto
2.2 Funciones del producto
2.3 Caractersticas de los usuarios
2.4 Restricciones generales
2.5 Suposiciones y dependencias
3. Requisitos especficos
4. Apndices
5. ndice
24
Requisitos y especificaciones
16
Requisitos y especificaciones
17
Bibliografa
Davis, A. M.
Software Requirements - Objects, Functions and States.
Prentice-Hall, 1993. (Cap. 1-5)
25
Motivacin y orgenes
La notacin UML
27
Motivacin
- Aparicin de los lenguajes de programacin orientados a objetos
SIMULA: finales de los aos 60
SMALLTALK: principios de los aos 70
Orgenes
Fusion
Martin-Odell
OOSE
Procesos y modelos
recomendados
BOOCH
OMT
Shlaer &
Mellor
UML
28
Objetos
Objeto:
Entidad que existe en el mundo real.
Tienen identidad y son distinguibles entre ellos.
el avin con
matrcula 327
una manzana
la factura 3443
un semforo
el avin con
matrcula 999
29
Clases de objetos
Clase de objetos: Describe un conjunto de objetos con:
- las mismas propiedades
- comportamiento comn
- idntica relacin con otros objetos
- semntica comn
abstraccin
clase avin
Avin
Atributos
Atributo: Es una propiedad compartida por los objetos de una clase.
Ejemplos:
Persona => nombre, direccin, telfono, ...
Avin => modelo, capacidad, color, ...
Persona
Nombre
Direccin
Telfono
Fecha_nacimiento
Edad
Avin
Modelo
Capacidad
Color
30
Operaciones (I)
Operacin: Es una funcin o transformacin que se puede aplicar a
los objetos de una clase.
Persona
Nombre
Direccin
Telfono
Avin
Modelo
Capacidad
Color
Cambio_direccin
Cambio_trabajo
Reparar
Mover
Operaciones (II)
- En las operaciones, hay que indicar tambin el tipo de los argumentos y
del resultado.
Tringulo
Cuadrado
Color
Color
Posicin
Posicin
Seleccionar (p:Punto):Booleano
Polimorfismo:
- Una misma operacin se puede aplicar a diferentes clases.
- Su implementacin depende de cada clase.
31
10
Asociaciones
Asociacin:
Define la manera de enlazar o conectar objetos de
diferentes clases.
Ciudad
tiene_capital
Nombre
Habitantes
11
Generalizacin / Especializacin
Generalizacin: Es el acto o resultado de distinguir un concepto
que es ms general que otro.
Empleado
Nombre
Sueldo
Contratar
Pagar_sueldo
Jubilar
Especializacin
Directivo
Generalizacin
Viajante
Periodo contrato
Desp. autor.
Autorizar gastos
Jubilar
...
Regin
Cuota
Asignar regin
Asignar cuota
Herencia: Permite que las propiedades y las operaciones de una clase sean
accesibles en sus subclases.
32
12
Intra - objeto
Aspecto
esttico
Clases de objetos
Atributos
Operaciones
Inter - objetos
Asociacin
Generalizacin
...
13
33
14
15
nacimiento
Casada
divorcio
Divorciada
boda
divorcio
boda
separacin
enviudar
Separada
Viuda
enviudar
34
16
Aceptar
pedido
Preparar
pedido
Entregar
pedido
pedido
entregado
Cerrar
pedido
pedido
preparado
Enviar
factura
Cliente paga
factura
factura
enviada
factura
pagada
pedido
cerrado
17
Intraobjeto
Aspecto
esttico
Aspecto
dinmico
Clases de objetos
Atributos
Operaciones
Diagrama de
transicin de
estados
Interobjetos
Asociacin
Generalizacin
...
Esquema de eventos
35
18
19
UML 1.4
Industrialitzacin
UML 1.1
Estandarizacin
UML 1.0
UML Partners
Expertise
Unificacin
OOPSLA 95
Booch93 OMT-2
OMT-1
OOSE
Fragmentacin
36
20
U.M.L.
Proceso
(metodologa)
Craig Larman
The Unified Process
Herramienta
Rational Rose,
Objecteering,
Visio, etc.
21
Modelo de
casos de uso
Modelo
conceptual de
los datos
Casos de uso
- nivel alto
- esencial
Diagramas
estticos de
estructura
para objetos
del dominio
Diagramas de
casos de uso
Modelo del
comportamiento
del sistema
Modelo de los
estados
Diagramas de
secuencia
del sistema
Diagramas
de estado de
objetos y
casos de uso
Contratos
para las
operaciones
del sistema
37
22
Bibliografa
Pressman, R.S.
Software Engineering: A Practiotioners Approach (5th edition)
Mc-Graw-Hill, 2001 (Cap. 20 y 21)
Booch, G.
Object-Oriented Analysis and Design
Benjamin/Cummings, 1994
Jacobson, I. et al.
Object Oriented Software Engineering: A Use Case Driven Approach
Addison-Wesley, 1992
Rumbaugh, J. et al.
Object-Oriented Modelling and Design
Prentice-Hall, 1991
Larman, C.
Applying UML and Patterns
An Introduction to Object-Oriented Analysis and Design
Prentice-Hall 1998
Jacobson, I.; Booch, G.; Rumbaugh, J.
The Unified Software Development Process
Addison-Wesley, 1999
39
Modelo de
casos de uso
Modelo
conceptual de
los datos
Modelo del
comportamiento
del sistema
Casos de uso
- nivel alto
- esencial
Diagramas
estticos de
estructura
de objetos
del dominio
Diagramas de
secuencia
del sistema
Diagramas de
casos de uso
Contratos
para las
operaciones
del sistema
Modelo de los
estados
Diagramas
de estado de
objetos y
casos de uso
Muestra, principalmente:
clases de objetos
asociaciones entre clases de objetos
atributos de las clases de objetos
restricciones de integridad
40
Objetos
Objeto:
Entidad que existe en el mundo real
Tienen identidad y son distinguibles entre ellos
el avin con
matrcula 327
una manzana
la factura 3443
un semforo
el avin con
matrcula 999
Clase de objetos
Clase de objetos: Describe un conjunto de objetos con:
- las mismas propiedades
- comportamiento comn
- idntica relacin con otros objetos
- semntica comn
abstraccin
clase avin
Avin
41
TPV
Supermercado
Lnea de venta
Cliente
Venta
Producto
Pago
42
Supermercado
Venta
nm-pv: Integer
direccin: String
nombre: String
fecha: Date
hora: Time
Lnea de venta
Cliente
TPV
cantidad: Integer
Pago
nombre: String
telfs [1..*]: Integer
tipcli: TipoCliente
Producto
upc:Integer
descripcin [0..1]:String
precio: Integer
importe: Integer
Los atributos:
- Pueden tomar valores nulos (por ejemplo: descripcin).
- Pueden ser multivaluados (por ejemplo: telfs).
- Pueden ser definidos por el usuario mediante enumeraciones.
-Por ejemplo, TipoCliente se define a parte como una enumeracin con los
valores que puede tener y que son: Normal y Preferente.
Asociaciones
Es la representacin de relaciones entre dos o ms objetos.
- direccin de lectura
Vive en
Persona
Ciudad
- nombre de asociacin
43
10
Alumno
Cuatrimestre
Asignatura
Se matricula
11
1..*
0..*
0..1
2..5
A
B
2, 5
A
B
A
1..3,7..10,15..*
B
B
B
B
B
44
12
0..2
13
Asignatura
Cuatrimestre
Se responsabiliza
Segn este esquema, para toda pareja de asignatura y cuatrimestre, ha de haber como
mnimo un profesor reponsable.
Alumno
0..500
*
Asignatura
* Cuatrimestre
Se matricula
Este esquema permite que haya alguna pareja de asignatura y cuatrimestre para la cual
no hay ningn alumno que se haya matriculado de la asignatura en el cuatrimestre.
45
14
Restricciones textuales
Las restricciones que no se pueden especificar grficamente con la notacin UML se
especifican de forma textual
La especificacin textual se puede hacer con lenguaje natural, con OCL, etc.
Especialidad
Pertenece a
nom-esp
Equipo mdico
cod-equipo
*
Tiene
Mdico
*
num-col
Asignado a
*
15
Vuela hacia
Vuelo
1
destino
Ciudad
Nombre de Rol
Describe el Rol de una
ciudad en la asociacin
vuela hacia
46
16
Asociaciones recursivas
Asociaciones en las que una misma clase de objetos participa ms
de una vez (con papeles diferentes o no).
Persona
*
hijo
0..2
padre
Tiene
Persona
*
17
Clase asociativa
Representa una asociacin que se puede ver como una clase.
Estudiante
Asignatura
EstMatriculado
direccin
nombre
nombre
* crditos
Matrcula
nota
Empresa
Clase asociativa
Los atributos hacen referencia a la
asociacin
Su vida depende de la asociacin
Persona
Emplea
nombre
nombre
direccin
Contrato
sueldo
47
18
Proyecto
Asiste
Reunin
Empleado
Participa
No es equivalente a:
Reunin
*
Proyecto
Asistir
*
Empleado
19
Generalizacin/Especializacin
Identificar elementos comunes entre los objetos definiendo relaciones de
superclase (objeto general) y subclase (objeto especializado).
superclase
Persona
E
G
{disjoint, complete}
sexo
Mujer
Hombre
subclase
48
20
Generalizacin / Especializacin
Permite entender los conceptos en trminos ms generales, refinados y abstractos.
Hace los diagramas ms expresivos.
Todos los objetos de la subclase lo son tambin de la superclase.
La definicin de la superclase tiene que ser aplicable a la subclase
- atributos
- asociaciones
- restricciones
(- operaciones)
Pago
Paga por
cantidad: Dinero
tipo
Pago
en metlico
Venta
{disjoint, complete}
Pago
a crdito
Pago
con taln
21
Generalizacin / Especializacin
Motivaciones para particionar una clase en subclases
La subclase tiene atributos adicionales.
La subclase tiene asociaciones adicionales.
La subclase es tratada o manipulada de forma diferente a las otras subclases.
La subclase se comporta de manera diferente a la superclase o a otras subclases.
Paga por
1
Pago
cantidad: Dinero
Atributos y
asociaciones comunes
{disjoint, complete}
tipo
Pago
a crdito
Pago
en metlico
Pago
con taln
*
Identifica crdito
1
Tarjeta
Cada pago se
trata diferente
Venta
asociaciones
adicionales
nm-taln: Integer
49
22
Generalizacin/Especializacin
Motivaciones para definir una superclase
Las subclases potenciales representan variaciones de un mismo concepto.
Las subclases tienen atributos que pueden ser factorizados y expresados en las
superclases.
Las subclases tienen asociaciones que pueden ser factorizadas y relacionadas con la
superclase.
Atributos y
asociaciones comunes
Paga por
1
Pago
cantidad: Dinero
{disjoint, complete}
Pago
en metlico
Cada pago se
trata diferente
Venta
asociaciones
adicionales
tipo
Pago
a crdito
*
Identifica crdito
1
Tarjeta
Pago
con taln
nm-taln: Integer
23
Agregacin
La agregacin es un tipo de asociacin usada para modelar relaciones parte-todo
entre objetos.
El todo se denomina compuesto y las partes componentes.
Contiene
Ruta
1..*
Usa
Men
Segmento
Receta
A1
B1
*
*
C1
B2
C3
C2
A2
A3
A4
50
24
Composicin
La composicin es un tipo de agregacin por la cual:
- La multiplicidad del extremo compuesto puede ser como mximo 1 (como
mximo un componente lo es de un compuesto).
- Si un componente est asociado a un compuesto y el compuesto se borra
entonces el componente tambin se ha de borrar (no lo puede sobrevivir).
Tiene
Mano
1
Dedos
0..5
Contiene
Venta
1
0..*
Contiene
Catlogo
0..1
1..*
LneadeVenta
Especificacin
de Producto
25
Agregacin/Composicin
Existe una semejanza todo-parte fsica o lgica.
Algunas propiedades del todo se propagan a las partes
(como destruccin, movimiento...).
Composicin
La vida de la parte est incluida en la vida del compuesto.
Existe una dependencia crear-borrar de la parte respecto al
compuesto.
51
26
Informacin derivada
Un elemento (atributo o asociacin) es derivado si se puede calcular a partir de otros
elementos.
Se incluye cuando mejora la claridad del modelo conceptual.
Una constraint (regla de derivacin) ha de especificar cmo se deriva.
Atributo derivado
Departamento
Tiene
Empleado
nombre
/nm_empleados
Asociacin derivada
Departamento
Est situado en
1 Ciudad
*
Tiene
Empleado
*
/Trabaja en
27
Multiplicidad de clase
La multiplicidad de clase establece el rango de posibles cardinalidades para
las instancias de una clase.
Por defecto, es indefinida.
En algunos casos es til establecer una multiplicidad finita, especialmente en
casos de clases que pueden tener una sola instancia (y que se denominan
singleton).
- multiplicidad de clase
1
La Puntual, S.A.
NIF
direccin
52
28
Cuenta
cuenta per
*
{xor}
*
cuenta emp
1
empresa propietaria
Empresa
Subset
Indica que una asociacin es un subconjunto de otra asociacin
*
Persona
Pertenece a
*
Comisin
{subset}
1
Preside
29
Cambiabilidad
La cambiabilidad indica si los valores de un atributo o el extremo de una
asociacin pueden cambiar o no.
Cambiable (changeable)
Persona
telfono {changeable}
Vive en
*
residente
*
Ciudad
ciudad-res
{changeable}
Congelado (frozen)
Persona
Naci en
*
fecha-nac {frozen} per-nacida
1
ciudad-nac
{frozen}
Ciudad
Slo-aadir (addOnly)
Persona
Ha residido en
*
*
Ciudad
residente
ciudad-res
{addOnly}
ttulo-aca y ciudad-res son slo-aadir
ttulo-aca {addOnly}
53
30
Pago
num-pago
tipo-pago
importe
{disj., inc.}
tipo-pago
{disj., inc.}
Efectivo
Efectivo
Tarjeta
cambio
cambio
num-tarjeta
Empleado
nombre-empleado
sueldo
/dept
{disj., inc.}
num-pago
importe
Trabaja en
*
/dept
tipo-pago
Tarjeta
num-tarjeta
Departamento
nombre-dept: Tdept
Direccin
Produccin
matr-coche
precio-hora-ext
31
Clasificacin mltiple
Persona
estado
sexo
{disjoint, complete}
{disjoint, complete}
Hombre
Soltera
Mujer
Casada
Divorc.
Viuda
54
32
Herencia mltiple
Variante de generalizacin/especializacin en la cual una subclase tiene
ms de una superclase.
Estudiante
universidad
{disjoint, incomplete}
EstUPC
EstUAB
estudios
{disjoint, incomplete}
EstUB
{incomplete}
Inform.
Mates
{incomplete}
InformUPC
Slo se puede utilizar si no hay conflictos de herencia.
Conflicto de herencia: Una clase tiene ms de una superclase con un
mismo atributo/asociacin/(operacin) que no proviene de un nico
antecesor.
Empres.
33
Tringulo
Rectngulo
Pentgono
...
Pentgono
...
es equivalente a:
Polgono
Tringulo
Rectngulo
Problema?
55
34
Docencia_Asignatura
1
*
Clase_Teora
*
Clase_Probl
*
Clase_Lab
es equivalente a:
Docencia_Asignatura
1
*
Clase_Teora
*
Clase_Probl
*
Clase_Lab
35
Ejemplos (I)
Qu solucin es mejor?
Persona_UPC
nombre
num-asignaturas [0..1]
sueldo [0..1]
Persona_UPC
nombre
tipo
{overlapping, incomplete}
Empleado
Estudiante
num-asignaturas
sueldo
56
36
Ejemplos (II)
Qu solucin es mejor?
Persona_UPC
nombre
telfono [0..1]
Persona_UPC
nombre
tener_telfono
Persona_con_telfono
telfono
37
Ejemplos (III)
Empleado
Proyecto
nombre: Texto
proy_emp: Proyecto
cod_proy: Texto
descripcin: Texto
Un atributo no puede tomar valores de una de las clases del modelo conceptual.
Empleado
nombre: Texto
Trabaja en
Proyecto
cod_proy: Texto
descripcin: Texto
57
Bibliografa
Booch, G.; Rumbaugh, J.; Jacobson, I.
The Unified Modeling Language User Guide
Addison-Wesley, 1999
Rumbaugh, J.; Jacobson, I.; Booch, G.
The Unified Modeling Language Reference Manual
Addison-Wesley, 1999
Larman, C.
Applying UML and Patterns
An Introduction to Object-Oriented Analysis and Design and
the Unified Process (second edition)
Prentice-Hall 2002
Cap. 10, 11, 12, 26 y 27
38
Para qu sirve?
Propiedades del modelo conceptual
Colecciones: conjuntos, bolsas y secuencias
Navegacin para clases asociativas
Generalizacin / Especializacin
Cmo especificar en OCL
58
OCL:
Es un lenguaje formal.
Es un lenguaje de navegacin que permite definir expresiones (o sea, no tiene
efectos laterales).
No es un lenguaje de programacin, sino de especificacin.
Es un lenguaje tipificado.
Se usa para:
Especificar invariantes (restricciones y reglas de derivacin) del modelo
conceptual.
Especificar precondiciones, postcondiciones y salidas de las operaciones.
Ejemplo
Persona
*
director
Empresa
empresasDirigidas
fechaNacimiento: Fecha 1
nombre: String
nombre: String
empleado
contratador /nmEmpleados: Integer
apellido: String
sexo: SexoVlido
1..*
*
/estCasado: Boolean
/estParado: Boolean
esposa
/edad: Integer
0..1
esposo 0..1
Trabajo
Matrimonio
l gar : String
fecha: Fecha
tt lo: String
fechaInicio: Fecha
salario: Integer
59
Cmo se navega?
Objeto.nombre-de-rol
objeto de partida
Si no hay nombre de rol especificado, se puede usar el nombre de la clase de objetos del
otro extremo de la asociacin (con minsculas).
Ejemplos de navegacin:
context Empresa inv
self.director
self.director.nombre
self.empleado
self.empleado.esposo
60
Ejemplo:
Reglas de navegacin:
Collect: Especifica una coleccin que se deriva de otra, pero que contiene
objetos diferentes.
61
Combinacin de propiedades
62
Los sueldos de las personas que trabajan en la UPC han de ser ms altos que
1000
context Persona inv
self.empleado.estParado = false
10
11
efecta
1
Transaccin
fecha: Date
cantidad: Integer
{disjoint, complete}
Navegacin:
Ingreso
Extraccin
c-oficina: Integer
persona: String
Aspectos adicionales:
63
12
13
-- es preferible a
-- es preferible a
64
14
Operacin
or
and
or exclusivo
negacin
igualdad
desigualdad
implicacin
if-then-else
Notacin
Resultado
a or b
a and b
a xor b
not a
a=b
a <> b
a implies b
if a then b else b
boolean
boolean
boolean
boolean
boolean
boolean
boolean
tipo de b b
15
Notacin
Resultado
string.concat(string)
string.size()
string.substring(int,int)
string1 = string2
string1 <> string2
string
integer
string
boolean
boolean
Resultado
allInstances
65
16
Resultado
size()
count(object)
includes(object)
includesAll(collection)
excludes(object)
excludesAll(collection)
isEmpty()
notEmpty()
sum()
exists(expression)
forAll(expression)
isUnique(expression)
17
Operacin
Resultado
select(expression)
reject(expression)
union(set)
intersection(set)
union(bag)
intersection(bag)
66
18
Bibliografa
http://www.omg.org
http://www.software.ibm.com/ad/ocl
http://www.rational.com
Propsito
Casos de uso
Diagrama de casos de uso
Especificacin de casos de uso
Estructuracin de casos de uso
Identificacin de casos de uso
67
Modelo de
casos de uso
Modelo
conceptual de
los datos
Modelo del
comportamiento
del sistema
Casos de uso
- nivel alto
- esencial
Diagramas
estticos de
estructura
de objetos
del dominio
Diagramas de
secuencia
del sistema
Diagramas de
casos de uso
Modelo de los
estados
Diagramas
de estado de
objetos y
casos de uso
Contratos
para las
operaciones
del sistema
Modelo de casos de uso: Cules son las funciones del sistema PARA CADA ACTOR?
nfasis: USOS del sistema, valor aadido para cada actor.
68
Casos de uso
Caso de uso: Documento que describe una secuencia de eventos que
realiza un actor (agente externo) que usa el sistema para llevar
a cabo un proceso que tiene algn valor para el [Jacobson 92].
Extraccin de
dinero del
cajero
Caso de uso 2
Actorn
Caso de uso i
Comunicacin
69
70
Ref #
R1.1
R1.2
R1.3
R1.4
R1.5
R1.6
R1.7
R2.1
R2.2
R2.3
Categora
evident
evident
evident
hidden
hidden
evident
evident
evident
evident
hidden
Compra de productos
Devolver producto
Cliente
Acabar sesin
Responsable
de compras
Fijar pPrecio
Comprar a proveedores
Proveedor
Hacer ofertas
Director
comercial
71
10
Devolver
producto
CLIENTE
Iniciar
sesin
supermercado electrnico
Compra de
productos
CLIENTE
Devolver
Producto
11
72
12
Cursos Alternativos
Lnea 4: Se introduce un identificador de producto inexistente. Indicar error.
Lnea 9: El Cliente no tiene suficiente dinero. Cancela la venta.
13
Real
(muy concreto)
Esencial
Accin del actor
1. El cliente se identifica.
3. Etc...
Real
Accin del actor
1. El cliente inserta la tarjeta.
3. Teclea el PIN por teclado.
5. Etc...
73
14
15
Cursos alternativos
Lnea 4: Efectivo insuficiente para devolver el cambio. Pedir cambio a otra persona.
Section: Pagar con tarjeta
Cursos tpicos y alternativos para la historia del pago con tarjeta.
74
16
Cajero
Compra de productos
<<include>>
Pagar con tarjeta
Cliente
caso de uso que se efecta realmente
Compra de productos + Pagar con tarjeta
Cliente
Cajero
17
<<include>>
Comprar
productos
Pagar en
efectivo
Cliente
<<include>>
Pagar con
tarjeta
<<include>>
<<include>>
Devolver producto
Acciones de los actores
Servicio de
autorizacin
de crdito
Contabilidad
Respuesta del sistema
75
18
19
Bibliografa
Larman, C.
Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and the Unified Process (second edition)
Prentice-Hall, 2002. (Cap. 6, 9, 25)
Cockburn, A.
Writing Effective Use Cases
Addison-Wesley, 2001.
76
Introduccin
Diagramas de secuencia del sistema
Contratos de las operaciones del sistema
Otras consideraciones
Bibliografa
77
Modelo de
casos de uso
Modelo
conceptual de
los datos
Modelo del
comportamiento
del sistema
Casos de uso
- nivel alto
- esencial
Diagramas
estticos de
estructura
de objetos
del dominio
Diagramas de
secuencia
del sistema
Diagramas de
casos de uso
Contratos
para las
operaciones
del sistema
Modelo de los
estados
Diagramas
de estado de
objetos y
casos de uso
78
79
Objetivos:
Punto de partida:
Casos de uso:
80
actor
:Cajero
:Sistema
inicioVenta(pv)
:venta
entrarProd(venta,prod,cant)
finVenta(venta)
:importe
pago(venta,importePago)
:cambio
81
10
:Actor
:Sistema
evento1()
iteracin de un
nic event
*
*
iteracin de una
secuencia de event s
evento2()
evento3()
evento4()
11
:Sistema
inicioVenta(pv)
:venta
entrarProd(venta,prod,cant)
finVenta(venta)
:importe
:Cajero
:Sistema
pagTarjetaCrdito(nm-t,fecha-cad)
tratarRespTarjeta(respuesta)
aadeAprobacin(respuesta)
82
12
Eventos y operaciones
13
83
14
:Cajero
:Sistema
inicioVenta
entrarProd
finVenta
pago
frontera del
sistema
15
84
16
17
PuntoDeVenta
num-pv
1
tiene
Venta
1..* LneaDeVenta
1
da
consta de
cantidad
hora
*
/importe
corresponde a
1
Producto
cdigo
precio
descripcin
RI textuales:
1- La clave externa de PuntoDeVenta es num-pv.
2- La clave externa de Producto es cdigo.
3- Un punto de venta no puede tener ms de una venta con el mismo da y hora.
85
18
19
86
20
21
87
22
:Sistema
:Caixer
:Sistema
inicioVenta(pv)
inicioVenta(pv)
:venta
entrarProd(venta,prod,cant)
entrarProd(pv, prod,cant)
finVenta(venta)
Venta
da
hora
/importe
finVenta(pv)
:importe
:importe
pago(venta,importePago)
pago(pv,importePago)
:cambio
:cambio
VentaEnCurso
23
88
24
Inclusin: i1 = i2 + i3 + i4
Ejemplo:
ListadoVentas = num-pv + {cod-prod + cantidad}
num-pv = Integer; codi-prod = Integer; quantitat = Integer
ResumenVentas(num-pv:Integer) : ListadoVentas
25
89
26
:Cajero
:Sistema-X
:Sistema
inicioVenta(pv): venta
:Sistema
hacer-Venta(infoVenta)
finVenta(venta): importe
27
Redundancia - Ejemplo
Los contratos de las operaciones tienen precondiciones, que son requisitos del
contenido del esquema conceptual para poder ejecutar una transaccin.
90
Redundancia - Definicin
Redundancias posibles:
Entre el esquema conceptual y los contratos
Entre los diagramas de secuencia y los contratos
...
28
29
tiene
0..3
Coche
matr
ao
Significado habitual:
:Persona
:Sistema
CompraCoche(nom-p,matr)
Significado alternativo:
91
30
31
:Sistema
AltaPersona(nombre,direccin)
habla
1..*
Idioma
nombre
nm-parlantes
:Sistema
AltaPersona(nombre,direccin)
* HablaIdioma(nombre, idioma)
Precondiciones:
Postcondiciones:
- creacin de un objeto Persona con
el nombre y la direccin especificados
Salida:
Nombre: HablaIdioma(nombre,idioma)
Precondiciones:
- existe Idioma con nombre=idioma
- no existe la asociacin habla entre nombre
e idioma
Postcondiciones:
- creacin de una asociacin habla entre
la Persona con nombre=nombre y el Idioma
Salida:
92
32
:Sistema
inicioVenta(pv): venta
finVenta(venta): importe
Precondiciones:
- existe Venta venta
- la Venta venta ha finalizado
Postcondiciones:
...
Salida:
son redundantes
33
Bibliografa
Larman, C.
Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and the Unified Process (second edition)
Prentice-Hall, 2002. (Cap. 13, 15)
93
Introduccin
Uso de los diagramas de estado
Ejemplos
Acciones y condiciones de una transicin
Estados imbricados
Bibliografa
94
Modelo de
casos de uso
Modelo
conceptual de
los datos
Modelo del
comportamiento
del sistema
Casos de uso
- nivel alto
- esencial
Diagramas
estticos de
estructura
de objetos
del dominio
Diagramas de
secuencia
del sistema
Diagramas de
casos de uso
Contratos
para las
operaciones
del sistema
Modelo de los
estados
Diagramas
de estado de
objetos y
casos de uso
Objetivos:
Crear diagramas de estado para objetos y casos de uso.
95
Diagrama de estados
Un diagrama de estados muestra la secuencia de estados que pasa un objeto (o una
interaccin) durante su vida en repuesta a los estmulos recibidos, junto con sus respuestas.
Nombre Estado
Entry/accin
do/actividad
exit/accin
event/accin
Soltera
nacimiento
{disjoint, complete}
estadocivil
Casada
Separada
Divorciada
Soltera
Viuda
boda
Casada
divorcio
Divorciada
boda
divorcio
boda
separacin
Separada
enviudar
Viuda
enviudar
96
Esperando
venta
inicioVenta
entrarProd
Esperando
producto
Introduciendo
productos
finVenta
Esperando
pago
pagoEnMetlico
tratarRespTarjeta
Autorizando
pago
PagTarjetaCrdito
97
libre
descolgar
activo
colgar
transicin
evento
condicin
libre
descolgar [abonadoVlido]
activo
/marcarTono
colgar
accin
98
10
Estados imbricados
descolgar [abonadoVlido]
/marcarTono
Activo
Emetiendo Tono
Marcar
libre
Charlando
dgito
dgito
colgar
conectado
Marcando
Conectando
completo
11
Bibliografa
Larman, C.
Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and the Unified Process (second edition)
Prentice-Hall, 2002.
Powel Douglass, B.
Real-Time UML.
Addison-Wesley, 1998.
99
101
Plan y
elaboracin
Construccin
Implantacin
Construccin
Implantacin
3. Definir requisitos
5. Implementar prototipo
9. Refinar el plan
102
Etapa de construccin
Plan y
Elaboracin
Ciclo de
desarrollo 1
Refinar
plan
Sincr.
artefactos
Construccin
Ciclo de
desarrollo 2
Anlisis
Diseo
Implantacin
...
Construccin
Prueba
Ventajas:
La complejidad nunca sobrepasa al diseador.
Primeras impresiones muy rpidamente, porque la implementacin
de una pequea parte del sistema se hace muy rpidamente.
Ciclo de desarrollo 1
Refinar plan
...
Ciclo de desarrollo 2
Anlisis
Sincr. artefactos
Diseo
Construccin
2. Refinar los
diagramas
3. Refinar el modelo
conceptual
4. Refinar el
glosario
5. Definir diagramas
de secuencia
6. Definir contratos
de operacin
Prueba
7. Definir diagramas
de estado
103
Ciclo de desarrollo 1
Refinar plan
...
Ciclo de desarrollo 2
Sincr. artefactos
Anlisis
Diseo
Construccin
Prueba
2. Definir informes e
interfaces de usuario
3. Refinar la arquitectura
del sistema
5. Definir el diagrama de
clases de diseo
6. Definir el esquema de la
base de datos
Ciclo de
desarrollo
Caso de uso A
Versin
Simplificada
...
...
Caso de uso A
Versin
Completa
...
...
Cmo priorizar?
a. Incluyen funciones arriesgadas, crticas o complejas.
b. Involucra tecnologa nueva o arriesgada.
c. Representan procesos primordiales para el negocio.
d. Impacto significativo en el diseo (aade muchas clases
al dominio o requiere muchos servicios).
e. Permite obtener informacin significativa respecto al
diseo con poco esfuerzo.
Ciclo de
desarrollo
Caso de uso B
...
...
...
Caso de uso C
...
...
...
104
:Sistema
inicioVenta(pv)
:venta
entrarProd(venta,prod,cant)
finVenta(venta)
:importe
hacerPago
:Sistema
inicioVenta(pv): venta
Interaccin comn a
todo tipo de pago
entrarProd(venta,prod,cant)
:Sistema
pago(venta,importePago)
:cambio
105
10
:Cajero
:Sistema
pagTarjCrdito(nm-t,fecha-cad)
aadixAprovacin(respuesta)
11
Bibliografa
Larman, C.
Applying UML and Patterns.
An Introduction to Object-Oriented Analysis and Design.
Prentice Hall, 1998. (Cap. 13, 32)
106
Coleccin de ejercicios
1 Conceptos bsicos
1 Conceptos bsicos
1.
2. El ciclo de vida denominado modelo espiral est basado en cuatro actividades: planificacin,
anlisis de riesgos, ingeniera y evaluacin. Comenta brevemente el objetivo de cada una de estas
actividades y cmo se encadenan.
3.
4.
5.
109
110
17. Considera un modelo conceptual de datos, especificado con notacin UML, de los datos de un
sistema que contiene slo una relacin ternaria R entre las entidades A, B y C. Sean a, b y c
ocurrencias cualesquiera de las entidades A, B y C, respectivamente. Indica cmo se deberan
expresar en este modelo las restricciones siguientes:
1. Todos los c han de participar como mnimo en dos ocurrencias de R.
2. Una pareja a,b cualquiera ha de estar relacionada, va R, con un mnimo de 3 ocurrencias de C.
3. Una ocurrencia c cualquiera ha de estar relacionada como mximo con tres ocurrencias distintas de B.
4. Un tro a,b,c cualquiera puede estar relacionado, va R, como mximo una vez, y como mnimo
ninguna.
18. Explica brevemente las diferencias existentes entre los dos modelos conceptuales de datos
siguientes por lo que respecta a la informacin que puede guardarse en r. Ilustra las explicaciones
mediante instanciaciones de los modelos.
0..2
M1
B
y
0..1
0..2
1 Conceptos bsicos
19. Da tres motivos diferentes que justifiquen el hecho de particionar un tipo en subtipos o bien de
definir un supertipo.
20. Considera los modelos conceptuales a) y b) siguientes, especificados con la notacin UML:
a)
b)
Informtico
ProyectoSw
participa-en
Informtico
ProyectoSw
asignar
Etapa
Participacin
asignada
Etapa
Indica cmo se deberan expresar en cada uno de estos modelos a) y b) las restricciones siguientes:
r1- Un informtico est en, como mnimo, tres proyectos.
r2- Un proyecto tiene, como mximo, cuatro informticos para una determinada etapa.
r3- Un informtico no puede estar dos veces en la misma etapa para un determinado
proyecto.
21. Dado el modelo conceptual de la figura siguiente, di cul de las cinco afirmaciones dadas es la
correcta.
Persona
habitante
vive
vivienda
1..*
{subset}
propietario
posee
* propiedad
*
Piso
(a) No puede ser que una persona posea un piso y viva en otro.
(b) Una persona puede vivir slo en aquellos pisos que posea ella misma.
(c) El modelo es incorrecto porque las multiplicidades de las dos asociaciones son incompatibles.
(d) Son ciertas (a) y (b).
(e) Ninguna de las anteriores.
Sesin reserva
Asiento
nombre
fila, butaca
* precio
da, hora *
Claves: Sesin -> (nombre, da, hora)
Aiento -> (fila, butaca)
22. Explica la utilidad de los diagramas de estado de los casos de uso.
23. Dados el curso tpico de eventos y el modelo conceptual siguientes, construye el(los)
diagrama(s) de secuencia correspondiente(s):
111
112
8. El cliente se va contento -.
24. Justifica por qu los casos de uso correspondientes a la etapa de especificacin se clasifican
siempre como esenciales (en el apartado tipo de la especificacin del caso de uso).
25. Modelo del comportamiento en UML:
a) Es posible en UML que la especificacin del contrato de una operacin no tenga ni precondicin
ni postcondicin, pero en cambio s que tenga salida?
b) Es posible en UML que la especificacin del contrato de una operacin no tenga precondicin,
pero en cambio s que tenga postcondicin?
En ambos casos, justifica brevemente tu respuesta y, si lo crees conveniente, ilstrala mediante un
ejemplo.
26. Di en qu casos es til construir un diagrama de estados para una clase de objetos. Pon un
ejemplo en el que este diagrama no sea til y explica el porqu.
27. En un diagrama de estados UML, tiene sentido especificar una transicin que lleve de un estado
a s mismo como consecuencia de un evento determinado? Justifica tu respuesta y, en caso afirmativo,
pon un ejemplo que ilustre el porqu.
28. Sean los elementos de una especificacin siguientes: diagrama de casos de uso, especificacin de
los casos de uso, esquema conceptual y diagramas de secuencia. Di cules de ellos es imprescindible
consultar para poder hacer los contratos de las operaciones. Justifica brevemente la respuesta.
1 Conceptos bsicos
29. Dados el modelo conceptual, el diagrama de secuencia (para borrar un ejemplar de un libro) y
los contratos (abreviados) siguientes, di qu partes de la precondicin de los contratos sobran (si las
hay) y, si es el caso, di cules faltan. En caso que sobren partes de las precondiciones, indica para
cada una si es redundante o no.
Libro
ISBN
autor
Restricciones textuales:
- ISBN es clave de Libro
- un libro no puede tener dos
ejemplares con el mismo nm
Ejemplar
tiene
nm
1
3..* estado
obtenerLibro(x): l
borraEjemplar(l, n)
obtenerLibro(x): l
pre (1) Libro l con ISBN = x
post --sal l
borrar
borraEjemplar(l, n)
pre (2) l.ISBN = x
(3) el libro l tiene al menos 4 ejemplares
(4) Ejemplar e con nm = n
(5) e.estado = defectuoso
post borrar la instancia (l, e) de la asociacin tiene;
e
30. Cules son las ventajas y los inconvenientes principales, si los hay, del proceso unificado de
desarrollo de software de UML en relacin al ciclo de vida clsico?
31. Cules son las ventajas y los inconvenientes principales, si los hay, del ciclo de vida basado en
el desarrollo incremental e iterativo de UML en relacin al ciclo de vida clsico, en cascada?
32. Enumera criterios de priorizacin de los casos de uso para la etapa de construccin del proceso
unificado de desarrollo de software.
113
115
El horario indica para cada grupo de una asignatura (por ejemplo, Ingeniera del software grupo 10)
qu das de la semana hay clase, en qu aula y a qu horas. Puedes suponer que los periodos de clase
son de una hora. Cada asignatura tiene un cierto nmero de horas de clase (no hace falta distinguir
entre horas de teora, problemas y laboratorios, ni tener en cuenta el concepto de subgrupo).
Expresa grficamente todas las restricciones que puedas. Las restricciones que no se puedan expresar grficamente
y las reglas de derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL.
2. Haz el modelo conceptual de datos con notacin UML de una empresa de transportes que
contiene informacin relativa a rutas, carreteras y poblaciones.
La empresa cubre un mbito geogrfico comprendido por unas 1000 poblaciones. Cada poblacin tiene un
cdigo y un nombre. Estas poblaciones estn unidas por unas 50 carreteras. Cada carretera tiene un cdigo.
Una carretera consta de una serie de tramos consecutivos. De media, hay 100 tramos por carretera. Un tramo
de una carretera se define por las dos poblaciones que une y la distancia en kilmetros entre ellas. Tambin
se considera la duracin del trayecto, en minutos, entre estas dos poblaciones, que, en caso general, puede
ser diferente segn sea un sentido o el otro. Por una misma poblacin pueden pasar diversas carreteras. Un
ejemplo con 9 poblaciones, 3 carreteras y 10 tramos podra ser:
El trayecto que ha de recorrer un camin de la empresa es una ruta. Hay unas 30 rutas, cada una de las
cuales tiene un cdigo. Una ruta parte y acaba en una misma poblacin, y consta de una serie de
tramos consecutivos de la misma o diferentes carreteras, que se han de recorrer en una cierta
direccin. Por ejemplo, la ruta 10 podra ser:
(B,C,autA2),(C,F,com12),(F,E,com12),(E,H,loc1),(H,E,loc1),(E,D,autA2),
(D,C,autA2),(C,B,com12)
autA2
com12
loc1
A
I
D
116
Por ejemplo, el aparato A requiere 5 unidades del aparato B, 8 unidades del aparato C y 4 unidades de la materia
prima D (la cual es suministrada por el proveedor P1). El aparato B consta de 10 unidades de la materia prima E
(del proveedor P2). El aparato C consta de una unidad del aparato F, el cual consta de 5 unidades de la meteria
prima G (del proveedor P1).
Un sustituto de un componente que es un aparato puede ser una materia prima u otro aparato. Un
sustituto de un componente que es una materia prima slo puede ser otra materia prima del mismo
proveedor.
Por ejemplo, si no se dispone de la materia prima G cuando se fabrica el aparato F, se puede utilizar en su lugar la
materia prima H. Esta materia prima H es suministrada por P1. Por tanto, cumple la restriccin indicada.
Haz el modelo conceptual de datos de este sistema con notacin UML. Expresa grficamente todas las
restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas bien claramente.
4. Considera un comit organizador de un congreso que est interesado en construir un sistema que
incluya, entre otras cosas, informacin sobre las ponencias que se presentarn. Cada ponencia tiene un
cdigo y un ttulo y est escrita por uno o ms autores. Una vez recibidas, cada ponencia se enva a
uno o ms revisores. Los revisores no pueden ser autores de ninguna ponencia. Al cabo de un tiempo, los
revisores envan sus informes de cada ponencia que han de revisar. A veces, un revisor no enva ninguno
de los informes, o no enva alguno de los que tena que hacer. De todas maneras, siempre se tiene al
menos un informe de cada ponencia. Cada informe, cuando se recibe, da una puntuacin (de 0 a 10) de la
ponencia y clasifica la ponencia en una de las sesiones que habr en el congreso. Cada sesin
corresponde a uno de los das del congreso, con una hora inicial y una hora final.
Por ejemplo, la ponencia 10, de ttulo YSM, est escrita por los autores A1 y A2. La ponencia se envia a los
revisores Ra, Rb y Rc. El primero le da un 5 y la clasifica en la sesin Anlisis Estructurada Moderna. El segundo
le da un 8 y la clasifica en la sesin Nuevos mtodos de especificacin. El tercero se olvid de enviar el informe.
La ponencia 23, de ttulo La importancia de los eventos, est escrita por los autores A2 y A5 y se enva al revisor
Rb, que no contesta, y al Rd, que la califica con un 3 y la clasifica en la sesin Nuevos mtodos de especificacin.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
5. Considera el caso de una federacin de ciclismo que quiere construir un sistema que trate, entre
otras cosas, los resultados de las carreras ciclistas. Las carreras se organizan en ediciones de series.
Cada serie consta de ediciones, que se van haciendo peridicamente. Una serie se identifica por un
nombre y una edicin por la serie y el ao. Una edicin consta de un conjunto de etapas, que varan de
una edicin a otra. Cada etapa tiene un nmero de etapa, una longitud, una poblacin de inicio y una
poblacin final.
Por ejemplo, de la serie Volta a Catalunya se han hecho tres ediciones. La tercera edicin tena dos etapas. La
primera iba de Barcelona a Montserrat (50 Km.) y la segunda de Montserrat a Poblet (200 Km.).
Otro ejemplo puede ser la serie Tour de France, de la cual se han hecho 20 ediciones. La ltima tena cinco
etapas. La primera de stas iba de Pars a Lin, etc.
Interesa tambin que el sistema registre los ciclistas y su participacin en las carreras. De cada ciclista
se deber saber su nombre, fecha de nacimiento, etc. Cada ciclista que participa en una carrera la
puede acabar o no. Si la acaba es en una cierta posicin (clasificacin) y si no la acaba es por un cierto
motivo, e interesa saber en qu etapa corri por ltima vez. Tambin se debe guardar el resultado de
117
los ciclistas en cada etapa. Como es obvio, un ciclista slo puede tener un resultado en una etapa si
participaba en la carrera correspondiente.
Por ejemplo, los ciclistas C1, C2 y C3 participan en la tercera edicin de la Volta a Catalunya. C3 fue el
primero, C1 el segundo y C2 no acab, por enfermedad. La ltima etapa que hizo fue la de Barcelona a
Montserrat. En la primera etapa el primero fue C3, el segundo C2 y el tercero C1. En la segunda etapa, el
primero fue C3 y el segundo C1.
Algunas etapas tienen Premio de Montaa en la meta. Para estas etapas, se debe registrar cul de los
ciclistas que particip gan el premio.
Por ejemplo, la etapa Barcelona-Montserrat de la carrera que estamos considerando tena este premio (la otra, no).
El premio lo gan C2, que, naturalmente, haba participado en la etapa.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
118
6. Considera una empresa que est interesada en construir un sistema que incluya, entre otras cosas,
informacin sobre sus empleados. Cada empleado tiene un nmero de documento de identidad, un
nombre y una direccin. Los empleados estn asignados a un, y slo uno, departamento. Cada
departamento tiene un nombre. Los departamentos estn estructurados jerrquicamente, y cada
departamento puede depender como mximo de otro departamento. Cada departamento tiene un nico
director, que ha de ser uno de los empleados que le estn asignados.
Por ejemplo, Juan, Mara, Rosa, Alberto y Jorge son empleados de la empresa. Juan trabaja en el departamento de
Ventas, Mara en el Servicio Tcnico Postventa, Rosa en el Laboratorio, y Alberto y Jorge en Recepcin. Ventas
depende de Direccin Comercial que, a su vez, depende de Direccin General. El Servicio Tcnico Postventa
depende de Ventas, etc. La directora del Laboratorio es Rosa. El director de Recepcin es Jordi.
Cada empleado es de una sola categora determinada. Slo hay tres categoras: Vendedor, Tcnico
y Administrativo. De cada categora se han de guardar los das de vacaciones y el plus del sueldo
que tienen.
Por ejemplo, la categora Vendedor tiene 30 das de vacaciones y un plus de 60 euros. La categora Administrativo
tiene 20 das de vacaciones y 120 euros de plus. Juan es vendedor, Mara y Rosa son tcnicos y Alberto es
administrativo.
Para los empleados que son vendedores se ha de registrar la zona donde trabajan. Una zona tiene
un cdigo y un nombre. Un vendedor slo trabaja en una zona. Para los empleados que son
tcnicos se han de registrar los estudios que tienen. Cada estudio tiene un cdigo, un nombre y el
Centro donde se imparte. Un mismo tcnico puede tener diversos estudios. Para los empleados que
son administrativos se han de registrar los cursos de perfeccionamiento que han hecho. Cada curso
tiene tambin un cdigo, un ttulo y una fecha de realizacin. Un mismo administrativo puede
haber hecho diversos cursos.
Por ejemplo, Juan trabaja en la zona de Gerona. Mara tiene los estudios de ingeniera en informtica, y Rosa los de
elecrnica y los de mecnica. Alberto ha hecho dos cursos de perfeccionamiento: mecanografa y archivo.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
7. Considera el caso de un aficionado a la msica rock que quiere construir un sistema que gestione
informacin sobre su fonoteca. El sistema ha de permitir guardar y consultar datos sobre los discos
(compactos, eleps o cassettes) y sus intrpretes.
Los discos son editados por casas discogrficas. Cada casa discogrfica se identifica por un nombre, y
cada disco se identifica por un cdigo alfanumrico y tambin tiene un nombre. Los discos se
estructuran en secuencias de cortes. Un corte es una grabacin continuada, normalmente de una nica
cancin, y se identifica mediante un cdigo alfanumrico.
Tambin tienen un nombre y una fecha de grabacin. En un disco compacto hay una sola secuencia de
cortes y cada corte aparece en una cierta posicin de la secuencia. En un LP o un cassette hay una
secuencia de cortes por cada cara y cada corte aparece en una posicin de una cara. Un mismo corte
puede aparecer en diversos discos (por ejemplo, en el disco original y en una recopilacin) pero no
puede aparecer ms de una vez en el mismo disco.
Por ejemplo, la casa discogrfica Zafiro ha editado el disco compacto D1 y el disco LP D2. D1 tiene la cancin C1
como primer corte y la cancin C2 como segundo corte. El disco D2 tiene la cancin C1 como primer corte de la
primera cara, y la cancin C3 como primer corte de la segunda cara, y no tiene ms cortes.
Tambin se quiere tener informacin sobre los intrpretes de cada corte. Un intrprete se identifica
mediante un cdigo alfanumrico; tiene un nombre, un ao de nacimiento y, si ya est muerto, un ao
de defuncin. Un intrprete puede participar en la grabacin de un corte interpretando diversos
papeles (vocal, guitarra solista, piano, batera, etc.), pero un instrumento determinado de un corte slo
lo puede tocar un intrprete. Desgraciadamente, a veces se desconocen los intrpretes de un corte, o
los instrumentos que han tocado.
Por ejemplo, el intrprete I1 naci el ao 1930 y todava vive. I2 naci el 1920 y muri el 1965. Ambos
participaban en la grabacin de C1: I1 como vocalista y piano, e I2 como batera.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
8. Considera el caso de una compaa ferroviaria que quiere construir un sistema que mantenga los
horarios previstos de sus trenes y los horarios reales.
119
Cada lnea de tren tiene un cdigo que la identifica, un tipo de tren, una estacin de origen y una hora de
salida (prevista). Supondremos que cada lnea de tren circula diariamente. Cada lnea consta de una serie
de tramos, que van de una estacin a otra. Las estaciones se identifican por un cdigo. Como mnimo hay
un tramo, que sale de la estacin origen de la lnea. Para cada tramo de una lnea, nos interesar mantener
la hora de salida prevista de la estacin origen y la hora de llegada prevista a la estacin destino.
Podemos suponer que la hora de llegada y la de salida de una estacin son del mismo da.
Por ejemplo, la lnea R12 sale de Manresa, cada da a las 10:00. Es un tren Talgo y consta de dos tramos. Va de
Manresa a Tarrasa (a donde ha de llegar a las 10:15 y salir a las 10:17) y de Tarrasa a Barcelona (a donde ha de
llegar a las 10:31).
La lnea C240 sale de Barcelona, cada da a las 23:00. Es un tren correo y consta de 3 tramos. Va de Barcelona a
Tarrasa (a donde ha de llegar a las 23:20 y salir a las 23:30), de all a Monistrol (a donde ha de llegar a las 00:05 y
salir a las 00:15) y de aqu a Sant Vicen de Castellet (a donde ha de llegar a las 01:00).
Cada da, el jefe de la estacin origen de una lnea de tren registra la hora de salida real del tren y se la
comunica inmediatamente al sistema. Si el tren no ha podido salir (es decir, se se ha cancelado) se
apunta el motivo. Todos estos datos, y los que se mencionan posteriormente, se han de registrar en el
sistema, a efectos de informacin al pblico y estadsticos. Supondremos que, si los trenes salen de la
estacin origen, acaban llegando a la estacin final.
120
Por ejemplo, el da 26/04/03 el tren de la lnea R12 sali de Manresa a las 10:01. En cambio, el da 27/04/03 este
tren no pudo salir por Tormenta.
En cada estacin que para un tren, el jefe de estacin correspondiente registra la hora real de llegada
y, si no es la estacin final, la hora real de salida, y tambin se lo comunica inmediatamente al sistema.
Como es natural, los trenes slo paran en las estaciones en que est previsto que paren.
Por ejemplo, el tren de la lnea R12 del da 26/04/03 lleg a Tarrasa a las 10:14 y sali a las 10:17. El mismo tren
lleg a Barcelona a las 10:33.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
9. Considera una compaa de seguros que est interesada en un sistema para el control de los
siniestros en que intervienen los coches que tiene asegurados. Un siniestro lo tiene un coche
determinado, siendo conducido por una cierta persona, y ocurre en una cierta fecha. La compaa
identifica los coches por su matrcula, y necesita registrar su marca y su modelo, entre otros datos. Las
personas se identifican por su documento de identidad, registrndose tambin otros datos como su
nombre y su direccin. No es imposible que un coche tenga dos siniestros, con el mismo o diferente
conductor, pero sera en das diferentes.
Por ejemplo, el coche 10 (marca Renault, modelo R6) tuvo un siniestro el da 10/10/02, cuando lo conduca Juan.
Algunos siniestros requieren que el coche accidentado se lleve a un (o ms) taller(es) para su
reparacin. La compaa tiene fichados los talleres posibles, con un cdigo identificador, su nombre
comercial, direccin, etc. No todos los siniestros acaban con el coche en un taller. La compaa indica
a qu talleres se ha de llevar el coche y los das en que se ha de llevar. El sistema ha de anotar dnde
se asignan los coches.
Por ejemplo, como consecuencia del siniestro anterior, haba que llevar el coche a dos talleres. Primero, el da
15/10/02, a El Mecnico, y despus, el 20/10/02, a El Pintor de Coches.
Un taller tratar de reparar el coche siniestrado, en la parte que le corresponda. Para ello emplear un
cierto nmero de horas de mano de obra. Por otro lado, la reparacin puede exigir (aunque no
siempre) el uso de unas ciertas cantidades de materiales determinados. La compaa tiene codificados
estos materiales, y para cada uno de ellos tiene tambin su nombre y su precio unitario. Cuando un
taller acaba una reparacin, lo comunica a la compaa, indicando los datos mencionados, que el
sistema ha de registrar.
Por ejemplo, la reparacin indicada anteriormente requiri en el taller El Pintor de Coches 15 horas de mano de
obra y el uso de 2 litros de pintura azul y 1 litro de pintura blanca. La pintura azul tiene el cdigo ABC y est a 6
euros el litro, etc.
De vez en cuando, los talleres facturan a la compaa de seguros las reparaciones que han
hecho. Una factura puede incluir diversas reparaciones, pero una reparacin slo puede estar
incluida en una factura (las reparaciones no se facturan parcialmente). De cada factura se
guarda su nmero y la fecha de la factura. El sistema ha de poder saber, de una forma u otra,
el cdigo del taller emisor de la factura. Una factura no puede incluir reparaciones de dos o
ms talleres distintos.
Por ejemplo, el taller El Pintor de Coches nombrado emiti la factura n 100 el da 30/12/02. La factura inclua la
reparacin anterior y la de otros coches.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
10. Considera una mutua sanitaria que est interesada en un sistema para el control de los ingresos
hospitalarios en que intervienen sus socios. Un ingreso es de una persona determinada en un cierto
centro mdico y ocurre en una cierta fecha. La mutua identifica sus socios por el nmero de asociado
y guarda tambin su nombre y su direccin. Los centros mdicos se identifican por su nombre y se
121
Los ingresos requieren que a la persona ingresada se le administren uno o ms medicamentos para
su curacin. El sistema guarda informacin de los posibles medicamentos, que tienen un cdigo
identificador, un nombre y un precio unitario. Todos los ingresos requieren la administracin de
algn medicamento, indicndose en cada caso cul es el nombre diario de unidades a administrar y
la fecha de inicio y la fecha final de administracin. Un mismo medicamento se puede administrar
en diversas ocasiones durante un ingreso. El sistema ha de registrar nicamente cules son los
medicamentos administrados a un paciente que est ingresado en un centro que no tiene convenio
con la mutua.
Por ejemplo, como consecuencia del ingreso anterior, la socio 17 recibi tres medicamentos. El medicamento 3,
en una cantidad de 3 unidades diarias, desde el da 8/8/2003 hasta el 10/8/2003. El medicamento 5, en una
cantidad de 5 unidades diarias, desde el da 8/8/2003 hasta el 11/8/2003. Finalmente, una segunda
administracin del medicamento 3, en una cantidad de 7 unidades diarias, desde el da 12/8/2003 hasta el
14/8/2003.
122
El sistema conoce tambin los medicamentos que son incompatibles para los socios. Un socio puede
tener ms de un medicamento incompatible y se registrar, para cada medicamento, el motivo de la
incompatibilidad. Durante un ingreso, no se pueden administrar a un socio medicamentos que sean
incompatibles.
Por ejemplo, el medicamento 33 es incompatible para la socio 17 ya que contiene penicilina.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
11. Considera que la federacin de hockey sobre patines est interesada en el control de los partidos
que se disputan en el transcurso de una liga. Para simplificar, supondremos que conviene registrar
solamente la informacin correspondiente a una nica liga. Un partido de hockey sobre patines se
celebra entre un equipo que juega en casa y un equipo que juega fuera. Un partido corresponde a una
determinada jornada. En una jornada se juegan siempre ocho partidos. Los equipos se identifican por
su nombre y se registra tambin su direccin y el color de la camiseta. Las jornadas se identifican por
un nmero de jornada. Es imposible que un mismo equipo juegue dos partidos diferentes en una
misma jornada. Tampoco puede ser que un equipo juegue en su campo dos jornadas distintas contra el
mismo equipo visitante.
Por ejemplo, el equipo Vic (direccin C/Guilleries, color blanco) jug contra el equipo Voltreg (direccin C/
Osona, color azul) en la jornada 3. El Tordera es un equipo de hockey con direccin C/ Riera y color amarillo.
La federacin tambin quiere guardar informacin de los jugadores que juegan los partidos de la liga
y de los rbitros que arbitran estos partidos. Tanto jugadores como rbitros se identifican por su
documento de identidad, y se registra tambin su nombre en ambos casos. No puede ser que alguien
sea jugador y rbitro al mismo tiempo. En el caso de los jugadores hay que registrar tambin cul es
su posicin (puedes suponer que un jugador tiene una nica posicin: portero, defensa, medio, etc.) y
el nombre del equipo al que pertenece. La federacin de hockey sobre patines quiere registrar tambin
la informacin de los rbitros que estn recusados por los diversos equipos. En una liga los equipos
pueden recusar un mximo de 3 rbitros si consideran que stos les han perjudicado en ligas
anteriores, guardndose en cada caso el motivo de la recusacin.
Por ejemplo, Juan tiene el DNI 111, es portero y pertenece al Vic. Pedro tiene el DNI 222, es delantero y pertenece
al Voltreg. Oriol tiene el DNI 333 y es rbitro. El Tordera ha recusado a Oriol porque les pit un penalti injusto.
Los jugadores de los equipos participan en partidos durante un determinado nmero de minutos. Un
jugador slo puede participar en partidos en los que juega su equipo. Adems, hay que registrar
tambin la informacin del nmero de goles marcados por un jugador en un partido. Un jugador slo
puede marcar goles en los partidos en los que participa. El sistema conoce tambin los rbitros que
arbitran los partidos y cul es la calificacin otorgada al rbitro cada vez que pita un partido. Un
rbitro puede arbitrar ms de un partido (siempre que sean de jornadas distintas) y un partido lo
arbitra un nico rbitro. Un rbitro no puede pitar un partido en el que juega un equipo que lo ha
recusado.
123
Por ejemplo, Juan jug 40 minutos y Pedro 25 del partido mencionado anteriormente. Pedro marc 3 goles en este
partido. El partido fue arbitrado por Oriol, que fue calificado con Notable.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
12. Considera el caso de una entidad bancaria que est interesada en un sistema para el control de
peticiones y de concesiones de prstamos hipotecarios. Los prstamos solicitados se identifican por
un cdigo y se registra tambin la cantidad de dinero solicitada y el nmero de aos en que se
devolver el prstamo. Un prstamo est solicitado por una o ms personas. Las personas se
identifican por su nombre y se guarda tambin informacin de su direccin y edad. Todo prstamo
tiene un nico primer titular. El primer titular de un prstamo ha de ser una de las personas que lo
ha solicitado.
Por ejemplo, Juan (direccin C/ Valencia, 25 aos) y Mara (C/ Prat, 24 aos) han solicitado el prstamo con
cdigo 111 (por un valor de 180.000 euros, a devolver en 15 aos). Mara es el primer titular de este prstamo.
Carmen (C/ Balmes, 27 aos) ha solicitado el prstamo 222 (300.000 euros, 20 aos) y es el primer y nico titular.
Los prstamos solicitados son asignados a uno o ms evaluadores (que se identifican por su nombre y
de los cuales se conoce tambin su direccin y edad) para que los estudien. Un evaluador no puede
haber solicitado ningn prstamo en aquella entidad bancaria. Al cabo de un tiempo, los evaluadores
envan los informes de los prstamos que les han sido asignados. A veces, un evaluador no enva
alguno de los informes que se le haban asignado. Cada informe, cuando se recibe, dice si el evaluador
aconseja o no la concesin del prstamo. En caso afirmativo, hay que indicar tambin el tipo de
inters con el cual se debera hacer efectivo el prstamo, y en caso negativo el motivo por el cual no se
debera conceder el prstamo.
Por ejemplo, el prstamo 111 se ha asignado a los evaluadores Jorge, Ana y Rosario. Jorge y Rosario consideran
que hay que conceder el prstamo con un inters del 5,5% y 6%, respectivamente, y Ana no enva el informe
preceptivo. Por otro lado, el prstamo 222 se enva a los revisores Pablo y Ana, que envan un informe negativo con
el motivo de que se ha solicitado una cantidad excesiva.
En una cierta fecha, la entidad bancaria decide si conceder o no un prstamo solicitado a partir de
los informes de los evaluadores. A los prstamos concedidos se les asigna un tipo de inters igual
al promedio de los tipos de inters sugeridos por los revisores que haban emitido un informe
positivo. Para los prstamos denegados, hay que registrar el motivo por el cual la entidad bancaria
ha decidido no concederlos. Un prstamo no se puede conceder si tiene un mnimo de dos informes
negativos. Hay que guardar tambin informacin de la fecha en que se ha hecho la evaluacin del
prstamo. Para los prstamos concedidos, hay que guardar tambin la informacin de la cuenta
corriente de la cual se habr de extraer el dinero (nica para cada prstamo, identificada por
nmero de cuenta) y el da del mes en que se efectuar el traspaso del dinero de la cuenta a la
entidad bancaria.
124
Por ejemplo, el prstamo 111 ha sido condedido el da 5/4/03 con un inters del 5,75%. El pago de este prstamo se
har a partir de la cuenta C567, el da 4 de cada mes. El prstamo 222 ha sido denegado el da 7/4/03 porque lo
haba solicitado una nica persona.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
13. Considera el caso de una compaa propietaria de diversos teatros y que est interesada en un
sistema para el control de las compras de entradas de las obras que se representan en sus teatros. Las
obras de teatro se identifican por su nombre y se registra tambin su autor, su director y el nmero de
actores que intervienen. Las obras de teatro se representan en diversas sesiones (cada una de las cuales
se identifica por el da y por el orden dentro del da) y en un determinado teatro. Hay que guardar
tambin la informacin de la hora de inicio de la representacin.
Los teatros se identifican por su nombre y se registra tambin su aforo (nmero total de butacas
de que dispone) y la ciudad donde se encuentran. En un mismo da no se pueden representar
obras de teatro diferentes en un mismo teatro. Una obra de teatro no se puede proyectar en tatros
diferentes un mismo da. En una determinada representacin de un teatro se representa una nica
obra.
Por ejemplo, el teatro Monumental est en Figueras y tiene un aforo de 400 butacas. La obra El visitante es de E.
Schmidt, est dirigida por R. M. Sard y participan 25 actores. En la tercera sesin del 26/4/03 se representar en el
teatro Monumental la obra El visitante. Esta representacin comenzar a las 21 horas.
Cada teatro tiene un cierto nmero de butacas, cada una de las cuales se identifica (para un teatro
determinado) por el nmero de la fila y el nmero de asiento en la fila. El sistema ha de guardar
tambin la informacin de las entradas que se han vendido para una determinada representacin. Las
entradas se pueden vender de dos maneras distintas: directamente en ventanilla o bien por telfono.
Para las entradas vendidas directamente en ventanilla hay que registrar la representacin para la cual
se ha vendido la entrada y la butaca asignada.
En el caso de entradas vendidas por telfono hay que registrar la misma informacin que para el caso
de entradas vendidas en ventanilla y, adems, el nmero de documento de identidad de la persona que
ha comprado la entrada y el nmero de tarjeta de crdito a la que hay que hacer el cargo de la venta.
En una representacin no se pueden vender entradas para las que se asigne una butaca que no exista
en el teatro donde se hace la representacin.
Por ejemplo, se han vendido tres entradas de la representacin anterior: dos a ventanilla y una por telfono. Las
entradas vendidas a ventanilla ocupan las butacas (1,18) y (1,20), donde 1 corresponde al nmero de fila y 18 y 20
al nmero de asiento en la fila. La entrada vendida por telfono ocupa la butaca (5,20), ha sido comprada por una
persona con documento de identidad 111, y se ha de cargar a la tarjeta de crdito 333.
El sistema ha de almacenar tambin informacin de las personas que estn abonadas a la compaa.
Un abonado se identifica por su documento de identidad y se registra tambin su nombre y su
direccin. Slo pueden comprar entradas por telfono las personas que estn abonadas a la compaa
propietaria del teatro.
Por ejemplo, Juan est abonado a la compaa, tiene el documento de identidad 111 y vive en la C/ Matadero.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
14. Considera una federacin de entidades excursionistas que est interesada en un sistema para el
control de las expediciones efectuadas para los centros excursionistas adscritos a la federacin. Una
expedicin la efecta un centro excursionista a una cierta montaa, con una fecha de inicio y una de
finalizacin. La federacin identifica los centros excursionistas por su nombre y registra tambin su
direccin. Las montaas se identifican por su nombre y se registra tambin su altitud. Un centro
excursionista puede efectuar diversas expediciones a la misma montaa, en fechas diferentes. A una
montaa se pueden hacer diversas expediciones, pero en una fecha concreta slo puede haber un
mximo de 5 expediciones.
Por ejemplo, el centro excursionista CEC (direccin Gran Va) efectu una expedicin al Everest (altitud 8848 m.)
del da 5/5/2003 al 20/7/2003.
En una expedicin participan diversas personas (como mnimo una). Una persona puede participar en
ms de una expedicin. El sistema guarda informacin de todas las personas (que tienen el dni como
identificador, un nombre y una edad) que han participado en alguna expedicin. Alguno de los
componentes de una expedicin puede alcanzar la cima. En este caso, se registrar este hecho y
125
tambin la fecha en que se ha alcanzado la cima. Una persona puede alcanzar la cima ms de una vez
en una misma expedicin.
Por ejemplo, las personas con DNI 111 (nombre Juan, edad 25 aos), 222 (Mara, 23), 333 (Pedro, 24) y 444 (Ana,
22) participaron en la expedicin anterior. Las personas 111 y 222 alcanzaron la cima el da 24/6/2003. Adems, la
persona 222 volvi a llegar a la cima el da 30/6/2003.
Cuando una persona participa en una expedicin juega un determinado papel. Para simplificar,
supondremos que los posibles papeles son: mdico, alpinista, encargado de material y jefe de
expedicin. En una expedicin un papel puede ser interpretado por ms de una persona. Una misma
persona puede interpretar ms de un papel en una expedicin. No todos los papeles tienen por qu
interpretarse en una expedicin.
Cuando una persona hace de alpinista en una expedicin, el sistema ha de registrar tambin el seguro
mdico (que tiene un nombre de seguro identificador y el nombre de la mutua que la cubre) contratada
para la ocasin. En el caso de que una persona de una expedicin haga de mdico, hay que registrar
tambin el nombre del centro mdico en el que trabaja actualmente (que supondremos que es nico).
Por ejemplo, las cuatro personas eran alpinistas en la expedicin anterior y tenan un seguro de nombre Accidentes
en el Himalaya (cubierta por la Mutua de Tarrasa). La persona 222 era el mdico de la expedicin y trabajaba en el
Hospital del Mar. La persona 444 era el jefe de la expedicin.
126
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
15. Considera que un club de tenis est interesado en el control de los partidos que disputan sus
socios en el torneo social del club. Para simplificar, supondremos que conviene registrar slo la
informacin correspondiente a un nico torneo. Un partido de tenis se celebra entre dos socios y
corresponde a una determinada jornada. En una jornada se juegan siempre veinte partidos. Los
socios se identifican por su nombre y se registra tambin su direccin y edad. Las jornadas se
identifican por un nmero de jornada. Es imposible que un mismo socio juegue dos partidos
diferentes en una misma jornada. Tampoco puede ser que dos jugadores se enfrenten entre ellos en
dos jornadas distintas.
Por ejemplo, Juan (direccin C/ Guilleries, 27 aos) jug contra Jos (C/ Osona, 25 aos) en la jornada 3.
El club de tenis quiere guardar tambin informacin de los jueces principales que arbitran los partidos
disputados. Los jueces, como los socios, se identifican por su nombre y se registra tambin su
direccin y edad. No puede ser que alguien sea socio del club de tenis y juez de la competicin a la
vez. El club de tenis quiere registrar tambin la informacin de los jueces que han sido recusados por
los socios.
En un torneo los socios pueden recusar hasta un mximo de 5 jueces si consideran que stos les han
perjudicado en torneos anteriores, registrndose para cada caso el motivo de la recusacin. El
sistema conoce tambin los jueces que arbitran los partidos y cul es la calificacin otorgada al
juez cada vez que arbitra un partido. Un juez puede arbitrar ms de un partido, y un partido lo
arbitra un nico juez. Un juez no puede arbitrar un partido en el que participe un jugador que lo
haya recusado.
Por ejemplo, Oriol vive en C/ Tortosa, tiene 29 aos y es juez. Mara vive en C/ del Mar, tiene 29 aos y es juez.
Juan ha recusado a Oriol porque el ao pasado le hizo perder un partido. El partido entre Juan y Jos fue arbitrado
por Mara, que fue calificada con Excelente.
Cada partido de tenis se disputa al mejor de tres sets. Gana el partido el primer jugador que gane dos
sets. El club de tenis quiere guardar tambin informacin de los resultados de todos los sets de un
partido y, en caso que un set se decida por tie-break (es decir, si el resultado final del set es de 7-6),
hay que guardar tambin el resultado del tie-break.
Por ejemplo, el partido entre Juan y Jos dur tres sets. El primero lo gan Juan por 6 a 2. El segundo lo gan Jos
por 7 a 6 (7-2 en el tie-break). El tercero lo volvi a ganar Jos por 6 a 3.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
16. Considera el caso de una biblioteca que est interesada en el control de los prstamos y de las
reservas que efectan sus usuarios. La biblioteca dispone de un amplio fondo bibliogrfico de
libros y de un gran nmero de ejemplares de cada libro. Los libros se identifican por su ttulo (esto
lo hacemos para simplificar) y se registra tambin su autor y el nombre de la editorial. Los
ejemplares de un libro se identifican por un nmero de ejemplar correlativo (comenzando desde el
1) dentro de cada libro.
Por ejemplo, del libro titulado Oriente, Occidente (escrito por M. de la Pau Janer y publicado por la editorial
Columna) se tienen dos ejemplares: el 1 y el 2. Del libro El Atlas furtivo (Alfred Bosch, Columna) se tienen cinco
ejemplares: el 1, el 2, el 3, el 4 y el 5.
La biblioteca admite que todos sus usuarios puedan hacer tanto prstamos como reservas. Un usuario
se identifica por un nmero de usuario y el sistema guarda tambin informacin de su nombre y
direccin. Una reserva la hace un usuario, para un libro determinado, con una fecha de recogida de la
reserva y se indica tambin el nmero de das reservados. Un prstamo la hace un usuario, para un
ejemplar de libro determinado, en una cierta fecha y se indica tambin la fecha lmite en que el usuario
puede devolver el ejemplar que se lleva prestado.
Un usuario puede hacer como mximo 3 reservas para una misma fecha. Un usuario puede hacer un
nico prstamo de un mismo ejemplar en un mismo da. Un mismo ejemplar de un libro en un cierto
da se puede prestar a como mximo una nica persona. No se puede hacer una reserva de un libro si
no queda ningn ejemplar disponible de aquel libro durante todo el periodo para el cual se quiere
reservar. No se puede prestar un ejemplar si no est disponible durante todo el periodo de prstamo o
bien si hacer efectivo este prstamo afecta la disponibilidad de las reservas ya hechas.
127
Por ejemplo, el socio nmero 22 (de nombre Bernardo y direccin C/ Cristina) ha hecho dos prstamos distintos del
ejemplar 3 del libro El Atlas furtivo. El primero de estos prstamos lo hizo el da 1/9/02 con fecha mxima de
devolucin el 15/9/02. El segundo lo hizo el da 20/1/03 con fecha mxima de devolucin el 20/2/03. El rocio 33
(Ruth, C/ Buenaventura) ha hecho una reserva del libro El Atlas furtivo con fecha de recogida el 10/2/03 y para un
total de 15 das.
Los prstamos que se han hecho se devuelven en una cierta fecha. El sistema ha de registrar qu
prstamos se han devuelto y la fecha en que se hizo efectiva la devolucin. Las reservas que se hacen
se pueden recoger en la fecha que se haba indicado al hacer la reserva. El sistema ha de registrar el
ejemplar del libro que se ha asignado a la reserva. Una reserva slo se puede recoger en la fecha de
recogida que se haba indicado inicialmente (es decir, ni antes ni despus).
Por ejemplo, el primero de los prstamos que haba hecho el socio 22 fue devuelto el da 14/9/02. La reserva que
haba hecho la socio 33 del libro El Atlas furtivo fue recogida el da 10/2/03 y se le asign el ejemplar nmero 5 de
aquel libro.
128
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
17. Considera el caso de una guardera que est interesada en construir un sistema que incluya, entre
otras cosas, informacin sobre los nios que tiene a su cargo. Cada nio tiene un nombre, que lo
identifica, una direccin y una fecha de nacimiento. Los nios tienen diversas personas adultas que
son sus responsables y que los pueden recoger en la escuela. De cada adulto que es responsable de
algn nio, la guardera quiere conocer su nombre (que lo identifica), su nmero de telfono y el tipo
de responsabilidad que ejerce respecto al nio (padre, madre, abuelo, abuela, canguro, etc.). Como te
puedes imaginar, hay adultos que son responsables de ms de un nio (por ejemplo, de hermanos que
van juntos a la guardera). Cada nio est incluido en la cobertura mdica de un adulto, que ha de ser
uno de sus adultos responsables. En este caso es necesario conocer el nmero de seguridad social (o
pliza mdica) del adulto.
Por ejemplo, Alberto, Iris, Judith y Ariadna son nios de la guardera. Alberto tiene tres adultos responsables: su
madre (Mara), su padre (Jos) y su abuela (Concepcin), y est incluida en la pliza mdica de Jos (nmero
5643578).
Cada nio est asignado a una (sola) clase. Slo hay tres clases: Bebs, Pulgarcitos y Lobos. De cada
clase se ha de conocer su nombre, el nombre de la educadora y el aula que ocupa. No puede ser que un
nio de ms de un ao sea beb. Para los nios que son bebs hay que registrar la leche que toman (las
leches se identifican por su nombre y se guarda tambin su composicin). Para los bebs y los pulgarcitos
se debe conocer los paales que usan (que tambin se identifican por su nombre y se guarda informacin
tambin de las posibles contraindicaciones). Un nio puede usar diferentes tipos de paales.
Por ejemplo, la clase de los Lobos la lleva Dolores y ocupa el aula A1; la de los Bebs la lleva Carmen y ocupa el aula
A2; y la de los Pulgarcitos la lleva Isabel y ocupa el aula A3. Ariadna es un Beb, Iris es un Pulgarcito y Alberto y
Judith son Lobos. Ariadna toma la leche Dorlat y usa los paales Dodot y Ausonia. Iris usa los paales Dodot.
Para coordinarse entre ellos, los padres de los nios de cada clase organizan una cadena de
comunicacin, que ha de estar registrada. De esta manera, cuando es necesario que todo el mundo se
entere de algo, se llaman los unos a los otros en el orden que establece la cadena. En una cadena,
todos los nios son de la misma clase. Adems, en la guardera se hacen informes diarios de cada nio
donde se indica: cmo ha dormido la siesta (bien o mal) y cmo ha comido (todo, poco o nada). A
veces puede ocurrir que un da no se haga el informe de algn nio.
Por ejemplo, en la clase de los Lobos la primera de la cadena es Judith, la sigue Alberto y as sucesivamente hasta
completar todos los nios de la clase. El da 1/11/02 Alberto se lo comi todo y durmi bien la siesta. En cambio, el
da 2/11/02 Alberto durmi mal la siesta y no comi nada.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas. Las restricciones que no se puedan expresar grficamente y las reglas de
derivacin de los atributos derivados, si los hay, especifcalos con el lenguaje OCL. Has de indicar
tambin, necesariamente, la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al
hacer este ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e
indcalas claramente.
18. Considera un centro de enseanza que est interesado en un sistema para la gestin de las
preguntas que se hacen en los exmenes efectuados en el centro. Un examen corresponde a una
cierta asignatura, a un cierto curso en el que la asignatura se imparte y se realiza en una fecha
determinada. El centro identifica las asignaturas por su nombre y registra tambin su rea. Los
cursos se identifican por su nombre y se registra la edad habitual de los alumnos que la cursan. Una
asignatura puede impartirse en ms de un curso. El sistema registra los crditos que tiene una
asignatura en un curso determinado y el hecho de si una asignatura es obligatoria u opcional en un
curso. Se pueden hacer como mximo 5 exmenes por asignatura y curso en el que la asignatura se
imparte.
Por ejemplo, la asignatura Biologa (rea Ciencias) se imparte en ESO-1 (edad 12) como opcional y con 6 crditos.
Se hizo un examen de Biologa en el curso ESO-1 el da 24/3/2003.
El sistema gestiona informacin de preguntas que se han puesto en algn examen o que pueden
ponerse en algn examen futuro. Las preguntas se identifican por un nmero y se registra tambin su
texto, su tipo (terica, prctica, test), su asignatura y el profesor que es su autor. Los profesores se
identifican por su nombre y se registra tambin su telfono.
Por ejemplo, la pregunta nmero 1 (texto Explicad los descubrimientos de Mendel, tipo terica) es de Biologa y
su autor es Juan (telfono 935286748). La pregunta 2 (texto Encontrad el factor Rh que se puede obtener de ...,
tipo prctica) es de Biologa y su autora es Nuria (telfono 937226432). La pregunta nmero 3 (texto Decid qu
..., tipo test) es tambin de Biologa y su autor es Luis (telfono 937226432).
Todos los exmenes que se efectan en el centro tienen un nico profesor organizador del examen. En
un examen se han de poner entre 1 y 10 preguntas de las que el sistema tiene registradas. Todas las
preguntas han de ser de la asignatura del examen. Para cada pregunta de un examen, se registra el peso
que tiene y la nota promedio que han obtenido los alumnos para la pregunta en aquel examen.
Por ejemplo, el examen anterior lo organiza Nuria y tiene tres preguntas: la nmero 1 (peso 0.4, nota promedio 5),
la nmero 2 (peso 0.4, nota promedio 7.5) y la nmero 3 (peso 0.2, nota promedio 3).
129
Para las preguntas tericas de un examen, el sistema ha de registrar tambin la nota mnima y la nota
mxima que se ha obtenido, para las preguntas prcticas el porcentaje de alumnos que han contestado
la pregunta y para las preguntas de test los puntos negativos que tienen las respuestas errneas.
Por ejemplo, en el examen anterior la pregunta 1 tiene una nota mnima de 1.5 y una mxima de 10, la pregunta 2
tiene un porcentaje de respuestas del 90 por ciento y la pregunta 3 tiene 5 puntos negativos si es errnea.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas las
restricciones que puedas (las otras, si las hay, escrbelas en forma de texto). Has de indicar tambin
necesariamente la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al hacer este
ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e indcalas claramente.
19. Considera que un consorcio de empresas est interesado en informatizar el seguimiento de los
proyectos informticos que desarrolla. Todos los proyectos desarrollados en el consorcio son
proyectos subcontratados. Es decir, en cualquier caso, una empresa subcontrata a otra empresa (o a
ella misma) para que lleve a cabo el proyecto. Todo proyecto informtico se inicia en una cierta fecha
y se almacena tambin la fecha prevista de finalizacin. Lgicamente, una empresa puede subcontratar
diversas veces a otra empresa para desarrollar proyectos diferentes. Las empresas se identifican por su
cdigo y se registra tambin su poblacin. Una empresa no puede subcontratar a una misma empresa
dos proyectos diferentes con una misma fecha de inicio.
130
Por ejemplo, la empresa 111 (de El Vendrell) subcontrat la empresa 222 (de Altafulla) para desarrollar un proyecto
informtico que comenzaba el 2-2-2002 y se prevea acabar el 5-5-2002. Adems, la empresa 111 subcontrat
tambin la empresa 222 para desarrollar un proyecto del 3-3-2002 al 4-4-2002.
Todo proyecto informtico ha de llevar a cabo alguna de las etapas tradicionales del ciclo de vida
de un proyecto software (es decir, especificacin, diseo o implementacin). Lgicamente, no todo
proyecto ha de comprender todas las etapas, y una etapa se lleva a cabo una nica vez en un
proyecto.
Por ejemplo, el primero de los proyectos anteriores comprenda las etapas de especificacin, diseo e
implementacin. En cambio, el segundo proyecto consista slo en una implementacin.
El sistema ha de guardar tambin la informacin de los empleados (identificados por nombre y de los
que se registra tambin su direccin y edad) que trabajan en las empresas. Para simplificar,
supondremos que un empleado comienza a trabajar en una empresa en una cierta fecha y que no se da
nunca de baja. Los empleados que trabajan en una empresa pueden participar en los proyectos que
aquella empresa est desarrollando a partir de una cierta fecha (para simplificar, supondremos tambin
que cuando un empleado comienza a trabajar en un proyecto no lo deja nunca). Un empleado slo
puede participar en un proyecto en el que su empresa es la subcontratada.
Por ejemplo, Montse (Camino Real, 21) trabaja en la empresa 111 desde el 1-1-2001, y Juan (Calle Mayor, 22) y
Mara (Calle del Torrente, 20) trabajan en la empresa 222 desde el 2-2-2001. Juan y Mara participan en el primero
de los proyectos anteriores; Juan desde el 2-2-2002 y Mara desde el 3-3-2002.
Cuando un empleado trabaja en un proyecto, lo hace en el marco de alguna de las etapas de desarrollo
del proyecto. Hay que registrar la informacin de las etapas a las que se ha asignado cada empleado
(en el marco de un proyecto) y de las horas trabajadas en esta etapa.
Por ejemplo, en el marco del primer proyecto informtico, Juan fue asignado a la etapa de especificacin y dedic
40 horas. En cambio, Mara fue asignada a la etapa de diseo, dedicando tambin 40 horas, y a la etapa de
implementacin, dedicando 60 horas.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, escrbelas en forma de texto). Has de indicar tambin
necesariamente la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al hacer este
ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e indcalas
claramente.
20. Considera el caso de una ciudad de la isla de Menorca que est interesada en construir un
sistema que le permita gestionar, entre otras cosas, la informacin de las propiedades y los alquileres
de sus fincas y de los pisos de stas. Para poder localizar las fincas, se necesita saber la informacin
de las calles (identificadas por nombre y de las que se registra tambin su barrio) que forman la
ciudad. Una finca se identifica por un nmero en una calle. Por tanto, dos fincas de una misma calle
han de tener nmeros diferentes. Toda calle ha de contener alguna finca. Una finca puede estar
dividida en diferentes pisos, que se identifican por el nmero de piso y nmero de puerta en la finca.
Por ejemplo, la calle Son Saura (barrio del Puerto) y la calle Mahn (barrio del Centro) son calles de la ciudad. La
calle Son Saura tiene dos fincas, situadas en los nmero 2 y 26, y la calle Mahn tiene una situada en el nmero 17.
La finca situada en el nmero 2 de la calle Son Saura tiene dos pisos (1-1 y 1-2) y la finca del nmero 17 de la
calle Mahn tiene dos (1-1 y 1-2).
Las fincas son propiedad de personas (identificadas por nombre y de las que se registra tambin su direccin).
Una persona puede poseer diversas fincas, y una finca puede ser propiedad de diversas personas. Una persona
posee una cierta finca a partir de una fecha y en un determinado porcentaje. Lgicamente, la suma de los
porcentajes de posesin de una finca no puede superar el 100%. Para simplificar, supondremos que el
porcentaje de posesin de una finca por parte de una persona no vara nunca.
Por ejemplo, la finca situada en el nmero 2 de la calle Son Saura es propiedad de Juan (C/ Algaiarens) en un 40%
desde el 1-1-2002 y de Mara (C/ Macarella) en un 60% desde el 2-2-2002. En cambio, la finca de la calle Mahn
es propiedad ntegra de Mara.
Las personas pueden alquilar pisos de las fincas. Una persona alquila un piso, desde una cierta fecha y
para un nmero de meses determinado. Una persona puede tener diversos pisos alquilados a la vez.
Dada una fecha de inicio y un nmero de meses de alquiler, un piso es alquilado por una nica
persona. Una persona puede alquilar diversas veces el mismo piso, pero con fechas diferentes. Una
persona no puede alquilar un pso de una finca que posee.
Por ejemplo, Juan ha alquilado el 1-1 de la finca del nmero 17 de la calle Mahn desde el 4-4-2002, para 3
meses. Marta (C/ Macarelleta) ha alquilado el 1-2 del nmero 2 de la calle Son Saura desde el 3-3-2002, para 12
meses.
Los alquileres de un piso se facturan a un propietario de la finca donde se encuentra situado el piso,
concretamente al propietario que tiene el porcentaje de posesin ms alto de aquella finca (al que
podramos denominar propietario principal). Hay que registrar la informacin del nmero de cuenta
corriente al que se ha de efectuar el pago. Si una persona es propietaria principal de diversas fincas, la
cuenta corriente a la que se facturan sus alquileres puede ser diferente para cada finca.
131
Por ejemplo, el alquiler de Marta se facturaba a Mara como propietaria principal de la finca donde estaba situado
el piso, a cargo de la cuenta corriente 1234. En cambio, el alquiler de Juan que tambin se facturaba a Mara como
propietaria principal se ingresaba en la cuenta 6789.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, escrbelas en forma de texto). Has de indicar tambin
necesariamente la instanciacin del modelo con los datos del ejemplo que se ha dado. Si al hacer este
ejercicio necesitas ms informacin, haz las suposiciones que creas ms adecuadas e indcalas
claramente.
21. Considera el caso de una empresa que est interesada en construir un sistema software que
incluya, entre otras cosas, informacin sobre sus empleados. Cada empleado tiene un nmero de
documento de identidad (que lo identifica), un nombre y una fecha de ingreso en la empresa. En el
transcurso de su vida laboral, los empleados se van asignando a diversos departamentos. Cada
departamento tiene un nombre (que lo identifica), una direccin y est en una ciudad. La empresa
tiene un total de 10 departamentos. Cuando se asigna un empleado a un departamento, se registra la
fecha de asignacin y, cuando se desasigna, la fecha de deseasignacin.
132
Un empleado se puede asignar como mximo tres veces al mismo departamento, pero siempre con
fechas de inicio diferentes y en periodos que no se solapen entre s. En toda su vida laboral, un
empleado se puede asignar como mximo a cinco departamentos diferentes. En un momento
determinado, un empleado puede no estar asignado a ningn departamento, y todas las asignaciones se
han de hacer en fechas posteriores a la fecha de ingreso en la empresa.
Por ejemplo, el empleado con DNI 111 (Pedro Mrtir, 1-10-02) fue asignado al departamento de Ventas
(C/Crcega, Colera) desde el 1-10-2001 al 5-9-2002 y desde el 5-10-2002 hasta el 20-10-2002 y al departamento de
Gerencia (C/Cerdea, Darnius) desde el 21-10-2002 al 1-11-2002. La empleada con DNI 222 (Mara Dulcet, 2-202) est asignada al departamento de Mrketing desde el 2-2-2002.
Por ejemplo, mientras el empleado con dni 222 ha estado en el departamento de Mrketing, ha participado en el
proyecto Ara, Lleida y ha realizado las actividades de Responsable de Imagen, dedicndole 20 horas semanales,
y de Relacin con los medios de comunicacin, con una dedicacin de 7 horas por semana.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
22. Considera una empresa que se dedica a la organizacin de congresos y que est interesada en un
sistema para la gestin de las ponencias y de los asistentes a los diversos congresos que organiza. Un
congreso tiene unas siglas y un ao que lo identifican y es necesario que el sistema registre tambin el
idioma que se se utiliza en el congreso, la ciudad donde se realiza y el precio de la inscripcin.
Por ejemplo, el congreso ER del ao 2002 tiene: idioma ingls, ciudad Singapur y precio 300 euros. El congreso
ER del ao 2003 tiene: idioma ingls, ciudad Pars y precio 360 euros.
A cada congreso se envan muchas ponencias. A cada ponencia se le asigna un cdigo que la identifica y
tambin se registra su ttulo y quines son sus autores. De cada autor, el sistema ha de tener su nombre,
que se considerar identificador, y tambin su e-mail. Algunas de las ponencias enviadas son escogidas
para ser presentadas en el congreso. Todas las ponencias escogidas para un determinado congreso han de
estar entre las que se haban enviado para aquel congreso. Es posible que una misma ponencia se presente
a diversos congresos pero entonces puede ser escogida como mximo en uno. De las ponencias
escogidas, el sistema ha de registrar la puntuacin que se les ha otorgado.
Por ejemplo, al ER del 2003 se ha presentado la ponencia de cdigo C125 (ttulo Evolucin de jerarquas) que
tiene por autores a Jorge (email: jorge@fib.upc.es) y Rosa (email: rosa@fib.upc.es). Esta ponencia ha sido escogida
y se le ha otorgado una puntuacin de 7.
Un congreso se estructura en sesiones. Cada sesin tiene un nombre que indica la temtica de la sesin
y que no se puede repetir en sesiones diferentes de un mismo congreso pero s se puede repetir en
congresos diferentes. Cada ponencia escogida se asigna a una sesin del congreso para el cual se la ha
escogido. A una sesin se pueden asignar como mximo cuatro ponencias.
Por ejemplo, al ER de 2003 hay una sesin que tiene por nombre Modelado conceptual y la ponencia C125 ha
sido asignada a dicha sesin.
Las personas que quieren asistir a un congreso se han de inscribir y el sistema ha de registrar su
nombre, que se considera identificador, y su e-mail. Hay dos tipos de inscripciones: las inscripciones
133
normales y las inscripciones de estudiantes. Para las inscripciones de estudiantes hay que registrar el
nombre de los estudios que est realizando la persona inscrita en el momento de la inscripcin. Hay
que considerar que una misma persona puede tener inscripciones de tipos diferentes (para congresos
distintos) y tambin que una persona puede tener diversas inscripciones como estudiante cada una de
las cuales con unos estudios diferentes.
Por ejemplo, al ER de 2001 se inscribi Jorge como estudiante (nombre estudios Informtica). Al ER de 2002 se ha
inscrito Jorge con inscripcin normal y Rosa tambin con inscripcin normal. Otra persona, Mara (email:
maria@fib.upc.es) se ha inscrito al ER de 2002 con inscripcin normal.
Para cada congreso existen algunos hoteles que servirn para alojar a los inscritos en el congreso que
as lo deseen (no obligatoriamente). El sistema ha de registrar cules son los hoteles de cada congreso.
Los hoteles se identifican por su nombre. Hay que registrar tambin todos los alojamientos de las
personas inscritas en un congreso correspondientes a hoteles del congreso. De cada alojamiento se
registrar la fecha de inicio y el nmero de noches. Se considerar que una persona inscrita en un
congreso puede tener diversos alojamientos diferentes en periodos que no se solapen.
Por ejemplo, los hoteles del ER de 2002 son el Montmartre y el Sena. Jorge, para su inscripcin al ER de 2002, se
aloja en el hotel Montmartre durante 2 noches desde el 5-11-2002, se aloja en el hotel Sena durante 2 noches desde
el 7-11-2002 y se aloja en el Montmartre durante 3 noches desde el 9-11-2002.
134
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
23. Considera el caso de una cadena de tiendas de ropa que est interesada en construir un sistema
software que incluya, entre otras cosas, informacin sobre sus productos y las tiendas donde se venden.
Cada producto tiene un cdigo (que lo identifica), una descripcin, un precio, una fecha de alta y, si
ya no se fabrica, una fecha de baja. De cada producto se disean diversas tallas y de cada talla se
fabrican diversas piezas (esta cadena de tiendas no disea modelos exclusivos). Las tallas se identifican
por el nmero de talla. Los productos pueden ser de tres tipos: infantil, juvenil y adulto. Un producto se
considera de tipo infantil si se ha diseado por alguna talla entre la 2 y la 12; de tipo juvenil si se ha
diseado para alguna talla entre la 34 y la 38; y de tipo adulto si se han diseado tallas superiores a la 38.
Nada impide que un producto sea de ms de un tipo (por ejemplo, infantil y juvenil).
Por ejemplo, el producto con cdigo 333 (forro polar de flores, 39 euros, 1-9-2003) se dise en las tallas
2, 4 y 6. El producto con cdigo 444 (abrigo azul marino, 72 euros, 1-9-2001) se dise en las tallas 12,
34 y 36, y se dio de baja el 30-6-2002). El producto con cdigo 555 (guantes de lana, 9 euros, 1-9-2001)
se dise en las tallas 2 y 4. Por tanto, los productos 333 y 555 son infantiles, y el producto 444 es infantil
y juvenil.
Las tiendas de la cadena tienen un nmero, que las identifica, y una direccin. El sistema ha de
guardar, para cada producto, la cantidad de piezas de cada talla que estn disponibles (a la venta) en
cada tienda.
Por ejemplo, en la tienda nmero 1 (Rambla Catalua) del producto 333 tienen tres piezas de la talla 4, una pieza
de la talla 2 y la talla 6 est agotada. En la tienda nmero 2 (Diagonal) del producto 444 tienen dos piezas de la talla
12, una pieza de la talla 34 y una pieza de la talla 36.
Un par de veces al ao la empresa elabora los catlogos de sus productos para promocionarlos en las
temporadas de primavera/verano y otoo/invierno, respectivamente. Se elaboran tres tipos de
catlogos: el infantil, el juvenil y el adulto. El sistema ha de registrar, para cada tipo de catlogo y
temporada, la fecha en que entra en vigor y el conjunto de productos que lo conforman. Como es
natural, en el catlogo infantil slo puede haber productos de tipo infantil, en el juvenil productos de
tipo juvenil y en el adulto productos de tipo adulto.
Por ejemplo, en el catlogo infantil otoo/invierno02 (1-9-2002) encontramos el producto 333 y el producto 555.
135
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
24. Considera un club de jubilados que est interesado en un sistema que gestione los viajes que
organizan en el club. Los jubilados se identifican por su nombre y es necesario que el sistema
registre su ao de nacimiento.
Los viajes se identifican por un nmero y hay que registrar el tipo de transporte que se utiliza. Los
jubilados que desean hacer un viaje han de hacer una reserva para el viaje (que se ha de registrar).
Tambin hay que registrar qu jubilados de entre los que haban reservado un viaje lo han hecho
finalmente junto con su grado de satisfaccin por el transcurso del viaje. Si un viaje no tiene como
mnimo dos personas que lo hagan, el viaje se anula y el sistema no lo registra.
Por ejemplo, Juan (ao nacimiento 1930), Carmen (ao nacimiento 1933) y Carlos (ao nacimiento 1931) son
jubilados del club. Se ha organizado un viaje de nmero 25 (tipo transporte autobs). Para el viaje 25 se han hecho
tres reservas: una de Juan, una de Carmen y una de Carlos. Finalmente, los que han hecho el viaje 25 han sido Juan
con un grado de satisfaccin de 5 y Carmen con un grado de 10.
Cuando un jubilado hace un viaje tiene la posibilidad de contratas un seguro para el viaje. En estos
casos, se registra el nmero del seguro y la mutua aseguradora.
Para el viaje 25, Juan ha contratado un seguro que tiene el nmero 111 de la mutua Seguro.
En un viaje se hacen paradas en diversas localidades. Para cada parada del viaje hay que registrar la
localidad, la fecha de inicio de la parada y la fecha de fin de la parada. En una determinada fecha un
viaje no puede iniciar una parada en ms de una localidad. Un viaje puede parar como mximo dos
veces en la misma localidad y puede hacer un mximo de diez paradas en total. Las localidades se
identifican por el nombre y se quiere saber tambin su nmero de habitantes.
El viaje 25 tiene una parada en Figueras (30000 habitantes) que se inicia el da 6-10-2003 y finaliza el da 8-102003. Tambin tiene una parada en Castell de Ampurias (5000 habitantes) que se inicia el 8-10-2003 y finaliza el
9-10-2003.
Las paradas de un viaje pueden incluir diversas visitas. A cada visita se le asigna un nmero
identificador y el sistema ha de registrar para cada visita a qu parada corresponde (una sola), el
nombre de la visita, y su fecha.
Por ejemplo, la parada que el viaje 25 inicia el da 6-10-2003 en Figueras incluye la visita nmero 1234 (nombre
Museo Dal, fecha 7-10-2003). La parada que el viaje 25 inicia el da 8-10-2003 en Castell de Ampurias incluye
la visita nmero 1235 (nombre Museo de la Catedral, fecha 8-10-2003).
Los jubilados que hacen un viaje pueden dar, si quieren, su valoracin (muy buena, buena, regular,
mala) de las visitas incluidas en las paradas del viaje. Estas valoraciones han de ser registradas por el
sistema.
136
Por ejemplo, Juan ha valorado la visita 1234 como regular y la visita 1235 como muy buena.
Entre los jubilados que hacen un viaje se hace un sorteo y el ganador recibe un regalo. El sistema ha
de registrar quin es el ganador y cul ha sido su regalo.
Por ejemplo, para el viaje 25 la ganadora del sorteo ha sido Carmen que ha tenido como regalo un reloj.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
25. La Asociacin de Posadas de Catalua (APC) est interesada en desarrollar un sistema
software para la gestin de los convites que se organizan en sus posadas. Una posada tiene un
nombre (que la identifica), una direccin y est situada en una ciudad. Una posada dispone de
diversas salas que se pueden utilizar para hacer los convites. Una sala se identifica por un nmero
dentro de la posada.
Por ejemplo, la posada La Cuadra, situada en la calle Mayor de Maanet de Cabrenys, dispone de tres salas: la 1,
la 2 y la 3. Por otro lado, la posada El Hostal de la Plaza, situada en la plaza de la Iglesia de Cabrils, tiene dos
salas: la 1 y la 2.
Las personas, identificadas por DNI y de las que se registra tambin el nombre, pueden organizar
convites en las posadas de la asociacin. Un convite lo organiza una persona, en una posada y para
una fecha determinada e interesa guardar tambin la informacin de la fecha en que se ha hecho la
reserva del convite y de su precio. Lgicamente, una persona puede reservar en una misma fecha dos o
ms convites en una misma posada, siempre que los convites se hagan en fechas distintas. Por otro
lado, una persona no puede organizar ms de un convite en posadas diferentes para una misma fecha.
Por ejemplo, la persona de DNI 111 y de nombre Juan ha organizado un convite en La Cuadra para el 12-5-2003 y
ha organizado otro en La Cuadra para el da 24-6-2003. Ambas reservas las hizo el 1-1-2003. El primer convite
tena un precio de 12 euros y el segundo de 15. En cambio, Ana, que tiene el DNI 222, ha organizado un convite en
el Hostal de la Plaza el da 28-7-2003 y lo reserv el 1-3-2003 con un precio de 36 euros.
La APC ofrece diversos tipos de convite, que se identifican por un nombre y de los que se registra
tambin el nmero de platos diferentes de los que consta cada tipo de convite. Los convites son de un
tipo determinado. Si un convite es del tipo Buffet libre, entonces hay que registrar tambin qu salas
de la posada se usarn para hacer el convite. Si un convite es del tipo Men, entonces hay que
registrar tambin las personas que asistirn al convite. No hay que guardar ninguna informacin
adicional si un convite no es de ninguno de estos dos tipos.
Por ejemplo, el tipo de convite Buffet libre consta de 25 platos, el tipo Men de 5 platos y el tipo Rgimen de 1
nico plato. El convite de Juan en la Cuada para el da 12-5-2003 es de tipo Buffet libre y el otro convite de Juan es
de tipo Men. El primero de estos convites se har en las salas 1 y 2 de La Cuadra y al otro convite asistirn Jorge (de
DNI 333) y Montse (de DNI 444). Montse tambin asistir al convite de Ana que tambin es de tipo Men.
137
Cuando una persona asiste a un convite de tipo Men puede especificar si quiere comida
vegetariana o no. Slo se permite que los asistentens soliciten comida vegetariana si el precio del
convite es superior a 21 euros.
Por ejemplo, Montse pidi comida vegetariana en el convite de Ana y no pidi comida vegetariana en el
convite de Juan.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
26. Considera el caso de una refinera automatizada que est interesada en un sistema para el control
de su servicio de mantenimiento. Dado que sus instalaciones no se pueden parar, este servicio trabaja
da y noche cada da de la semana, incluyendo fines de semana y festivos. Los empleados se
identifican por su nombre y se guarda tambin informacin de su direccin y edad. Los empleados del
servicio de mantenimiento trabajan en equipos. Los equipos se identifican por un nmero. Cada
persona est asignada a un nico equipo de mantenimiento. Cada equipo tiene un jefe de turno que
necesariamente ha de ser uno de sus miembros.
Por ejemplo, Juan (direccin C/Valencia, 25 aos), Jos (Gran Va, 24 aos) y Alberto (C/Aribau, 30 aos)
pertenecen al equipo de mantenimiento nmero 2. Jos es el jefe de turno de este equipo. Pedro (C/Mallorca, 25
aos), Flix (C/Guipzcoa, 29 aos) y Nuria (C/Carlos Alts, 30 aos) pertenecen al equipo de mantenimiento
nmero 1. Nuria es la jefe de turno de este equipo.
Para configurar el calendario de trabajo, los das se estructuran en turnos. Los das no festivos tienen
tres turnos de ocho horas (maana, tarde y noche) y los das festivos tienen dos turnos de 12 horas (da
y noche). Cada turno de cada da se asigna a un equipo de mantenimiento.
Por ejemplo, viernes 6 de noviembre el equipo 1 trabajar en el turno de maana, el equipo 2 en el turno de tarde y
el equipo 3 en el turno de noche. Sbado da 7 de noviembre el equipo 1 trabajar de da y el equipo 2 de noche; el
equipo 3 no trabaja.
Para coordinar los diferentes equipos, se programa la realizacin de los trabajos que se han de llevar a
cabo cada turno de cada da. Los trabajos se identifican por un cdigo y tienen una descripcin. A
veces, no todos los trabajos programados se pueden realizar, porque surgen imprevistos. Al acabar la
jornada, el jefe de turno ha de indicar cules de los trabajos programados se han podido realizar y
cules no. De los trabajos que no se han podido realizar se ha de indicar el motivo y de los que se han
realizado hay que indicar la hora de inicio y de fin del trabajo y una descripcin del desarrollo del
trabajo. Por descontado, la empresa tambin quiere tener informacin de los trabajos que se han
tenido que hacer improvisadamente. En este caso el jefe de turno da la misma informacin que para
los trabajos programados realizados.
138
Por ejemplo, jueves 5 de noviembre por la noche estaba programado el 1: revisar la mquina 303, 2:
cambiar los filtros de las mquinas de las salas 2 y 4 y tambin el trabajo 3: preparar la instalacin de la
nueva mquina en la sala 3. Los trabajos 1 y 2 se pudieron realizar, pero el trabajo 3 no, porque fall un centro
de transformacin durante la noche y se tuvo que reparar. El trabajo 1 se realiz entre las 10 y las 12 de la
noche, el trabajo 2 desde las 12 hasta las 3 de la madrugada, y la reparacin del centro de transformacin se
acab a las 6 de la maana.
El equipo de turno, al realizar sus trabajos, usa ciertos materiales. Se quiere tener informacin de qu
materiales se han usado para cada trabajo y en qu cantidad.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
27. Un palacio de ferias necesita un sistema que gestione informacin de las ferias que se
organizan. Una feria se identifica por su nombre y el sistema ha de registrar la fecha de inicio y de
fin de la feria. No puede haber simultneamente ms de una feria en el palacio. Para cada feria que
se organiza se hace una divisin del palacio en parcelas. Cada parcela tiene un nmero que es
diferente para todas las parcelas de una misma feria, pero que puede coincidir en parcelas de ferias
diferentes. De cada parcela se desea registrar su superficie. Tambin se desea registrar qu parcelas
son limtrofes (slo pueden ser limtrofes parcelas de una misma feria). Una parcela puede tener
como mximo dos parcelas limtrofes y puede haber parcelas aisladas que no tienen ninguna
parcela limtrofe.
Por ejemplo, la feria Construmat03 comienza el 6-3-2003 y acaba el 10-3-2003. La divisin del palacio para esta
feria feria consta de 3 parcelas: la nmero 1 (superficie 10), la nmero 2 (superficie 20) y la nmero 3 (superficie
30). La parcela 1 no limita con ninguna parcela. La parcela 2 limita con la 3 y la parcela 3 limita con la 2. La feria
Informat03 comienza el 3-4-2003 y acaba el 7-4-2003. Para Informat03, el palacio se ha dividido en dos parcelas:
la nmero 1 (superficie 40) y la nmero 2 (superficie 10). La parcela 1 de esta feria limita con la 2 y la parcela 2
limita con la 1.
Las parcelas de una feria son contratadas por empresas que desean exponer sus productos. Se desea
registrar qu empresa (una sola) ha contratado cada parcela. Las empresas se identifican por su
nombre y se desea registrar tambin su telfono. Algunas parcelas pueden quedar sin contratar.
Por ejemplo, la empresa Rajolsa (telfono 933333333) ha contratado la parcela 1 y la parcela 2 de la feria
Construmat03. La empresa CAD (telfono 911111111) ha contratado la parcela 3 de la feria Construmat03 y ha
contratado la parcela 2 de la feria Informat03.
A las parcelas se asignan personas que se encargan de atender a los asistentes de la feria que estn
interesados en lo que se expone en la parcela. Estas asignaciones tienen una fecha de inicio y una
fecha de fin que estarn incluidas entre las fechas de inicio y de fin de la feria correspondiente a la
parcela. Hay que tener en cuenta que una misma persona puede tener diversas asignaciones que se
solapen temporalmente. De las personas asignadas, hay que registrar su titulacin y su poblacin de
residencia. Supondremos, para simplificar, que podemos identificar a las personas por su nombre.
Por ejemplo, a la parcela 1 de la feria Construmat03 se ha asignado a Ana (titulacin arquitecta y poblacin
Girona) desde el 6-3-2003 hasta el 7-3-2003, a Juan (titulacin aparejador y poblacin Barcelona) desde el 6-32003 hasta el 10-3-2003 y a Ana otra vez desde el 9-3-2003 hasta el 10-3-2003. A la parcela 2 de la feria
Construmat03 se ha asignado a Nuria (titulacin delineante y poblacin Reus) desde el 6-3-2003 haste el 10-32003. Finalmente, a la parcela 2 de la feria Informat03 se ha asignado a Juan desde el 3-4-2003 hasta el 7-4-2003.
Las personas que quieren asistir a una feria se han de inscribir y el sistema ha de registrar su nombre
(que como ya hemos explicado consideramos que identifica a las personas), su poblacin de
residencia y su e-mail. Las personas que estn asignadas a parcelas de una determinada feria no
pueden estar inscritas en la misma feria. La mayora de inscripciones son vlidas para todos los das
que dura la feria pero existe la posibilidad de hacer una inscripcin de tipo parcial que incluya slo
alguno de los das de la feria no necesariamente consecutivos y con un mximo de 3 das. El sistema
ha de registrar las fechas incluidas en cada una de las inscripciones que sean de tipo parcial. Las
inscripciones pueden pagarse slo de dos maneras: en efectivo o mediante tarjeta. De las inscripciones
pagadas en efectivo, hay que registrar qu porcentaje de descuento se les ha aplicado (considerando
que se puedan aplicar porcentajes diferentes a inscripciones de una misma feria) y, de las pagadas con
tarjeta, el nmero de tarjeta utilizado.
Por ejemplo, Ana (e-mail: ana@coac.com) se ha inscrito a Informat03. El pago ha sido en efectivo y se le ha
aplicado un descuento del 10%. Gustavo (e-mail: gustamante@cons.com y poblacin Logroo) se ha inscrito a
Construmat03 con una inscripcin parcial que incluye los das 7-3-2003 y 9-3-2003. En este caso el pago ha sido
con la tarjeta nmero 333.
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
139
28. Una agencia de viajes est interesada en desarrollar un sistema software para la gestin de los viajes
que se contratan en sus oficinas. La agencia tiene diversas oficinas (identificadas por nmero y de las que
se registra tambin su direccin). Una persona (identificada por nombre y de la que queremos saber
tambin su edad) puede ser cliente de alguna oficina de la agencia desde una cierta fecha. Una oficina
emplea diversas personas, pero una persona trabaja como mximo en una nica oficina. El sistema slo
ha de guardar informacin de los clientes y de los empleados de la agencia y no puede pasar que una
persona sea al mismo tiempo cliente de la agencia y sea empleada de alguna oficina.
Por ejemplo, Juan (20 aos) es cliente de las oficinas 1 (C/Mayor) y 2 (C/Menor), en ambos casos desde el 25 de
octubre del 2002, y Mara (19 aos) es cliente de la oficina 1 desde el 3 de noviembre de 2002. Marta (22 aos) e
Isabel (21 aos) trabajan en la oficina 1 y Pablo (22 aos) trabaja en la oficina 2.
Cuando una persona es cliente de una oficina, puede pedir presupuestos de viajes en la oficina. La
peticin de presupuesto de un viaje se hace en una cierta fecha y para un cierto pas de destino. Para
simplificar, consideraremos que un viaje se hace a un nico pas. Interesa saber tambin la fecha de
inicio y la duracin del viaje. En una misma fecha un cliente puede pedir diversos presupuestos de
viajes a pases distintos, pero no puede pedir en una oficina dos presupuestos para el mismo pas. Una
persona no puede pedir presupuesto de viaje en una oficina si no es cliente de aquella oficina.
140
Por ejemplo, el da 4 de noviembre del 2002 Juan pidi presupuesto de un viaje a Noruega en la oficina 1. El viaje
tena que comenzar el 27 de diciembre del 2002 y durar 7 das. El mismo da, Juan pidi presupuesto de un viaje a
Italia, que comenzara el 10 de febrero del 2003 y durara 15 das, en la oficina 2.
Las peticiones de presupuestos de viajes son evaluadas por un mximo de 3 empleados de la oficina y
se indicar, para cada evaluacin, el precio aproximado del viaje. Una vez se tiene alguna evaluacin
de un viaje presupuestado, el cliente puede decidir contratar este viaje. El precio del viaje contratado
ser el promedio de precios de todas las evaluaciones hechas del viaje presupuestado. No se puede
contratar un viaje presupuestado que no tenga ninguna evaluacin.
Por ejemplo, Marta e Isabel hicieron una evaluacin del viaje que Juan haba pedido el da 4 de noviembre del 2002
para ir a Noruega. Marta sugiri un precio aproximado del 600 euros e Isabel de 900. Juan decidi contratar este
viaje por el precio resultante de 750 euros.
Un viaje contratado puede usar diversos medios de transporte (identificados por nombre del medio y
de los que se registra tambin su grado de seguridad). Esta informacin ha de registrarse en el sistema
y, adems, para los viajes que usen el avin habr que registrar tambin la informacin de los
aeropuertos (identificados por cdigo y del que se sabe tambin la ciudad) por donde pasa el avin en
aquel viaje.
Por ejemplo, el anterior viaje contratado usaba el barco (97% de seguridad) y el avin (98%). El avin pasaba por
los aeropuertos de BCN (Barcelona), CPN (Copenhaguen) y OSL (Oslo).
Haz el modelo conceptual de datos de este sistema con la notacin UML. Expresa grficamente todas
las restricciones que puedas (las otras, si las hay, y los posibles atributos derivados, escrbelos en
forma textual). Indica los atributos de las clases de objetos y, si es el caso, los atributos de las
asociaciones. Has de indicar tambin necesariamente la instanciacin del modelo con los datos del
ejemplo que se ha dado. Si al hacer este ejercicio necesitas ms informacin, haz las suposiciones que
creas ms convenientes e indcalas claramente.
Posee
propietario
1..*
posedo
propiedad
Persona
Coche
*
Conduce
1..*
conductor
conducido
conduccin
Persona
habitante *
vive
vivienda
1..* propietario
{subset}
posee
* propiedad
*
Piso
3. Dado el modelo conceptual de la figura siguiente, expresa en OCL las restricciones textuales r1)
y r2).
141
Empleado
cdigo
*
vive-en
1..*
trabaja-en
Ciudad
nombre
Departamento
nmero
*
situado-en
142
Msico
nombre
*
es-experto-en
*
Instrumento
interpreta
*
*
ObraMusical
Interpretacin
toca
ASIGNATURA
cdigo
nombre
GRUPO
Hace-clase
0..1 nmero
HORARIO
{incomplete}
HO-COMPLETO
aula
143
Cuando se efecta una asignacin de aula, se indica el cdigo de la asignatura, el nmero de grupo, el
da, la hora y el aula asignada. Esta operacin es efectuada por los empleados de secretara cuando as
lo requiere el Jefe de Estudios.
Para solicitar el listado de horarios sin aula de una asignatura determinada, el Jefe de Estudios indica
al sistema el cdigo de la asignatura y el sistema muestra, para cada horario de aquella asignatura sin
aula asignada, el nmero de grupo, el da y la hora.
En cualquier momento, cualquier usuario de este sistema (incluidos profesores y alumnos) puede pedir
el listado de horarios de todas las asignaturas. El sistema muestra, para cada asignatura, su cdigo y,
para cada grupo de la asignatura, su nmero, los das y horas en que se hace clase y, si se conoce, el
aula.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML). En todos los
casos, hay que realizar todas las comprobaciones que sean necesarias. Si las hay, hay que indicar las
modificaciones necesarias a hacer en el modelo conceptual de datos de partida.
144
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso de la
asignacin de aula.
x Modelo del comportamiento del sistema: todos los diagramas de secuencia y contratos de las
operaciones correspondientes a la definicin de los horarios de un grupo y al listado de horarios sin
aula de una asignatura.
2. Considerad una empresa de transportes que est interesada en un sistema para la definicin de
los recorridos de las rutas de distribucin de sus camiones. Una ruta est formada por una serie de
tramos consecutivos (que se distinguen por el nmero de tramo dentro de la ruta). Un tramo se define
por un apoblacin de origen, una de destino y una carretera que une las dos poblaciones. Adems,
tambin hay que guardar la informacin de la distancia y de la duracin de recorrido de un tramo.
El sistema que se debe desarrollar slo ha de consultar los datos de POBLACIN y de
CARRETERA, dado que existe otro sistema encargado de darlos de alta. El modelo conceptual de
datos en UML de este sistema es el siguiente:
POBLACIN
nombre-p
habitantes
0.. 2
(origen)
Hacen-tramo
0.. 2
CARRETERA
*
(destino)
TRAMO
distancia
duracin
De-la
*
cdigo-c
RUTA
* cdigo-ruta
TRAMO-RUTA
nm-tramo
R.I. textuales:
- La poblacin destino de un tramo de la ruta ha de coincidir con la poblacin origen del tramo siguiente de la misma ruta.
- La poblacin origen y la poblacin destino de un tramo han de ser diferentes.
El sistema ha de permitir efectuar las funcionalidades siguientes: alta-tramo, alta-ruta, listado-detramos-sin-ruta y listado-de-tramos-de-ruta.
Cuando se da de alta un tramo, se indica el nombre de la poblacin de origen, el nombre de la
poblacin de destino, el cdigo de la carretera, la distancia y la duracin del tramo. Esta operacin es
efectuada por los empleados de la empresa, a peticin del Director de Distribucin.
Cuando el Director de Distribucin da de alta una ruta, indica l mismo al sistema el cdigo de la ruta
y, para cada tramo que forma parte de la ruta que se est dando de alta, las poblaciones de origen y
destino del tramo, el cdigo de carretera y el nmero de tramo dentro de la ruta. Haced que la
interaccin necesaria para llevar a cabo esta funcionalidad requiera ms de un evento.
El listado de los tramos sin ruta asignada se emite siempre a final de mes y va dirigido al Director de
Distribucin. El resultado de este listado incluye, para cada tramo que no est asignado a ninguna ruta,
el nombre de las poblaciones de origen y destino del tramo y el cdigo de la carretera que las une.
En cualquier momento, los empleados de la empresa pueden solicitar el listado de los tramos de una
ruta. El sistema muestra, para cada tramo de la ruta indicada por el empleado, el nombre de la
poblacin de origen y de destino, el cdigo de la carretera, la distancia y la duracin del tramo y el
nmero de tramo dentro de la ruta.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML). En todos los
casos, hay que realizar todas las comprobaciones que sean necesarias. Si las hay, hay que indicar las
modificaciones necesarias a hacer en el modelo conceptual de datos de partida.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso del alta de
tramo.
x Modelo del comportamiento del sistema: Todos los diagramas de secuencia. Contratos de las
operaciones correspondientes al alta de ruta y al listado de los tramos de una ruta.
3. Considerad una agencia inmobiliaria de un pueblo turstico del Alt Empord que est interesada
en un sistema para gestionar los alquileres de las fincas que posee en el pueblo. El sistema guarda
informacin de las calles (identificadas por nombre) donde tiene situadas las fincas (identificadas por
nmero dentro de la calle) y de los alquileres de las fincas que hacen los clientes de la agencia
(identificados por dni). Los alquileres hacen referencia a un piso de la fina (1 1, 1 2, etc.) y pueden
ser temporales o bien indefinidos. El sistema ha de guardar tambin informacin del precio del
alquiler y de atributos especficos para cada tipo de alquiler. Adems, el sistema slo ha de consultar
los datos de CLIENTE, dado que hay otro sistema encargado de darlos de alta. El modelo conceptual
de datos en UML de este sistema es el siguiente:
145
CALLE
nombre-c
1..*
Con
FINCA
* Alquilada-por
nm-f
ALQUILER
piso
precio
tipo
tipo
TEMPORAL
fecha-fin
* CLIENTE
dni
nombre
{Disj., Comp.}
INDEFINIDO
aumento
R.I. textuales:
- Claves de las clases no asociativas: (Calle,nombre-c), (Cliente, dni).
- Una calle no puede tener dos fincas con el mismo
El sistema ha de permitir efectuar las funcionalidades siguientes: alta-calle, alta-alquileres-finca, bajaalquileres y listado-de-alquileres-con-aumento-elevado.
146
Cuando se da de alta una calle, se indica el nombre de la calle y, para cada finca de aquella calle, su
nmero de finca. Esta operacin es efectuada por los empleados de la agencia, a peticin de la
Directora de la agencia.
Cuando el Responsable de Alquileres da de alta todos los alquileres de una finca, indica l mismo al
sistema el nombre de la calle, el nmero de la finca y, para cada alquiler de aquella finca que se da de
alta, el DNI del cliente, el piso alquilado, el precio, el tipo de alquiler (temporal o indefinido) y la
fecha-fin o el aumento anual establecido, segn proceda. Haced que la interaccin necesaria para
llevar a cabo esta funcionalidad requiera ms de un evento.
Al final del da, se dan de baja automticamente todos los alquileres que finalizan en esta fecha.
Adems, el sistema genera un listado que incluye, para cada alquiler dado de baja, el nombre de la
calle, el nmero de finca, el DNI del cliente y el piso.
En cualquier momento, todos los empleados de la empresa pueden pedir el listado de los alquileres
con aumento elevado. El sistema muestra, para cada alquiler indefinido con un aumento superior al
5%, el nombre de la calle, el nmero de finca y el nombre del cliente que tiene el piso alquilado.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML). En todos los
casos, hay que realizar todas las comprobaciones que sean necesarias. Si las hay, hay que indicar las
modificaciones necesarias a hacer en el modelo conceptual de datos de partida.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso de alta calle.
x Modelo del comportamiento del sistema: Todos los diagramas de secuencia. Contratos de las
operaciones correspondientes al alta de alquileres de una finca y al listado de los alquileres con
aumentos elevados.
4. Considerad un centro excursionista que ha decidido organizar la travesa de los Pirineos a
pie, desde Biarritz a Cabo de Creus. Esta travesa consta de diversas jornadas (identificadas por
un nmero) que se recorren entre una poblacin de inicio y otra final. Toda jornada tiene una
serie de controles (identificados por un nmero dentro de la jornada) para garantizar que ningn
participante se pierde. Las personas se pueden inscribir en una jornada de la travesa. El sistema
almacena tambin las horas de paso de todos los participantes para cada uno de los controles que
pasan. Adems, el sistema slo ha de consultar los datos de PERSONA dado que hay otro
sistema encargado de darlos de alta. El modelo conceptual de datos en UML de este sistema es
el siguiente:
JORNADA
Se-inscribe
PERSONA
dni
nombre-p
Nm-jorn
Pob-inicio
* Pob-fin
Con
1..*
*
CONTROL
nm-cont
lugar
Pasa-por
*
PARTICIPACIN
CONTROL PARTICIPANTE
hora-de-paso
R.I. textuales:
- Claves de las clases no asociativas: (Jornada, nm-jorn), (Persona, dni).
- Una jornada no puede tener dos controles con el mismo nm-cont.
- La poblacin final de una jornada y la de inicio de la jornada siguiente han de coincidir
- La persona que participa en control-participante ha de estar inscrita en la jornada de aquel control
147
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML). En todos los
casos, hay que realizar todas las comprobaciones que sean necesarias. Si las hay, hay que indicar las
modificaciones necesarias a hacer en el modelo conceptual de datos de partida.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso de alta
jornada.
x Modelo del comportamiento del sistema: Todos los diagramas de secuencia. Contratos de las
operaciones correspondientes al alta de controles y al listado de controles.
5. Considerad una facultad universitaria que est interesada en un sistema para la definicin de
grupos de las diferentes asignaturas. Una asignatura puede tener diversos grupos (por ejemplo,
grupos 10 y 20 de la asignatura FBD; grupos 10, 20 y 30 de IS:E, etc.). Una matrcula se define por
un estudiante y por un grupo donde el estudiante se matricula. Las matrculas pueden ser de dos
tipos: de evaluacin continua y de evaluacin no continua. Para las matrculas de evaluacin no
continua se registra la nota final del estudiante. Para las de evaluacin continua se registran las
diversas notas parciales del estudiante. El modelo conceptual de datos en UML de este sistema es
el siguiente:
ASIGNATURA
148
cdigo-asig
nombre
crditos
ESTUDIANTE
GRUPO
1 Tiene * nmero * Se-matric * dni
nombre
capacidad
telfono
MATRCULA
PARCIAL
nm-parcial
NOTA
nota
Corresponde
*
tipo
EVALUACIN
CONTINUA
{disjoint, complete}
EVALUACIN
NO CONTINUA
nota-final
R.I. textuales:
- Claves de las clases no asociativas: (Asignatura, cdigo-asig), (Estudiante, dni), (Parcial, nmparcial).
- No puede haber ninguna asignatura que tenga dos grupos con el mismo nmero.
- Un estudiante no puede matricularse de ms de un grupo de la misma asignatura.
El sistema que se debe desarrollar slo ha de consultar los datos de ASIGNATURA, ESTUDIANTE y
PARCIAL, dado que existe otro sistema encargado de darlos de alta. El sistema ha de permitir
efectuar entre otras las funcionalidades siguientes: alta-grupos-asignatura, matrcula-estudiante,
asignacin-notas-parciales, consulta-estudiantes-con-notas-finales-aprobadas.
Cuando el Jefe de Estudios quiere definir los grupos de una asignatura, indica el cdigo de la
asignatura y, para cada grupo a dar de alta, el nmero de grupo y la capacidad del grupo. Es el propio
Jefe de Estudios quien comunica estos datos al sistema. Haced que la interaccin necesaria para llevas
a cabo esta funcionalidad requiera ms de un evento.
Congreso
Sesin
Tiene
siglas
ao
precio
nom-sesin
* duracin
Ponencia
Se-presenta
1
Asiste-a
Inscripcin
tipo
{disjoint, complete}
Ins. Normal
Ins.Estudiante
profesin
universidad
cdigo
ttulo
0..4
Es-autor
*
*
1..*
Persona
nombre
149
R.I. textuales:
- Claves de clases no asociativas: (Congreso: siglas, ao), (Ponencia: cdigo), (Persona: nombre).
- No puede haber ningn congreso que tenga dos sesiones con el mismo nombre de sesin.
El sistema que se debe desarrollar no ha de dar de alta los datos de las inscripciones, dado que existe
otro sistema encargado de hacerlo. El sistema ha de permitir efectuar entre otras las funcionalidades
siguientes: alta-congreso-y-sesiones, alta-ponencias-sesin y consulta-estudiantes-y-autores.
Cuando el Presidente del Comit Organizador de un congreso quiere dar de alta el congreso y sus
sesiones, indica las siglas, ao y precio del congreso y, para cada sesin del congreso, el nombre de
la sesin y su duracin. Es el propio Presidente del Comit Organizador quien comunica estos
datos al sistema. Finalmente, el sistema muestra el nmero total de sesiones dadas de alta por el
congreso. Haced que la interaccin necesaria para llevar a cabo esta funcionalidad requiera ms de
un evento.
150
Cuando el Presidente del Comit de Programa de un congreso quiere dar de alta las ponencias de una
sesin del congreso, se indican las siglas y ao del congreso y tambin el nombre de la sesin.
Adems, para cada ponencia de la sesin, se indican el cdigo y ttulo de la ponencia junto con los
nombres de todos los autores de la ponencia. Hay que considerar que algunos de estos autores
existirn en la base de informacin mientras otros no. Tambin hay que tener en cuenta que no se
pueden dar de alta ponencias en sesiones de congresos que ya tienen alguna persona inscrita. Este alta
es efectuada por un administrativo de la empresa a peticin del Presidente del Comit de Programa.
Haced que la interaccin de esta funcionalidad requiera ms de un evento.
Finalmente, cuando una persona cualquiera indica que quiere hacer una consulta de estudiantes y
autores, el sistema muestra los nombres de las personas que asisten con inscripcin de estudiante a
algn congreso y que, al mismo tiempo, son autores de alguna ponencia que se presenta en alguna
sesin del mismo congreso.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo de casos de uso: Diagrama de casos de uso (para las funcionalidades especificadas).
x Modelo del comportamiento del sistema: Diagramas de secuencia y contratos de las operaciones
correspondientes al alta de congreso y sesiones, al alta de las ponencias de una sesin y a la consulta
de estudiantes y autores. Expresad las salidas de las operaciones con la ayuda del lenguaje OCL.
7. Considerad una agencia de viajes que est interesada en desarrollar un sistema software para
gestionar los viajes que hacen sus clientes. La agencia dispone de informacin de las personas que
quieren hacer algn viaje, identificadas por DNI y de las que se registra tambin su nombre. Tambin
se guarda informacin de las ciudades en las que la agencia ofrece viajes. Concretamente, se registra
el nombre y, si son ciudades de mar, se guarda informacin de sus hoteles.
8.
Adems, el sistema guarda informacin de los viajes planeados por las personas. Un viaje planeado
puede ser presupuestado (cuando inicialmente el cliente conoce el presupuesto), reservado (si al
cliente le parece bien el presupuesto y da un apaga y seal para garantizar su viaje) y confirmado
(cuando se asegura que el viaje reservado se har y se dice, si el viaje se hace a una ciudad de mar, en
qu hotel se alojar la persona). El modelo conceptual de datos en UML de este sistema es el
siguiente:
Fecha
Persona
1
dni
nombre
fecha
/Tiene-presupuestados
Ciudad
inicio
0.. 3
Quiere-viajar
{incomplete}
Viaje-planeado
Mar
{disjoint, complete}
Presupuestado
precio
Reservado
avance
nombre
1
Confirmado
*
De-la
Se-aloja-en
*
Hotel
0..1
nombre
R.I. textuales:
- Claves clases no asociativas: (Persona, dni); (Fecha, fecha); (Ciudad, nombre).
- Una Ciudad no puede tener ms de un Hotel con el mismo nombre.
- Un viaje confirmado se hace a un Hotel de la misma ciudad donde se hace el viaje.
- Una persona no puede tener ms de un viaje confirmado con una misma fecha de inicio.
Info. derivada:
- Tiene-presupuestados: una Persona tiene-presupuestados un conjunto de Viajes planeados.
151
El sistema que se debe desarrollar no ha de dar de alta los datos de Persona, Fecha, Ciudad y Mar,
dado que existe otro sistema encargado de hacerlo. El sistema ha de permitir efectuar las
funcionalidades siguiente: alta-viajes-planeados, confirmar-viaje y listado-coincidencias-hotel.
Los clientes quieren que la agencia les planee los viajes para una cierta fecha. Cuando esto pasa, un
empleado de la agencia indica al sistema el DNI del cliente, la fecha de los viajes planeados y, para
cada ciudad a la que el cliente haya planeado viajar en aquella fecha, el nombre de la ciudad y el
precio del viaje. Como consecuencia de esta interaccin, el cliente pasa a tener tantos viajes
presupuestados en aquella fecha como ciudades se hayan especificado. Tal y como se muestra en el
modelo conceptual de datos, una persona no puede tener ms de tres viajes planeados a diferentes
ciudades en una cierta fecha. Haced que la interaccin necesaria para llevar a cabo esta funcionalidad
requiera ms de un evento.
Cuando un cliente quiere confirmar un viaje planeado, un empleado de la agencia indica al sistema el
DNI de la persona, la fecha del viaje, la ciudad donde quiere viajar y, si la ciudad es de mar, el
nombre del hotel donde se alojar el cliente. Un viaje slo se puede confirmar si estaba reservado.
Si un cliente quiere saber las personas, sin repeticiones, que se han alojado en el pasado en algn hotel
en el que l tambin ha estado, indica l mismo al sistema su dni. El sistema muestra, para cada una de
estas personas, su nombre.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo de casos de uso: Diagrama de casos de uso (para las funcionalidades especificadas).
x Modelo del comportamiento del sistema: Todos los diagramas de secuencia. Contratos de todas las
operaciones que aparecen en los diagramas de secuencia. Expresad las salidas de las operaciones con
la ayuda del lenguaje OCL.
9. Considerad un club de jubilados que est interesado en un sistema que gestione los viajes que
organiza el club. Un viaje consta de diversas paradas. Cada parada de un viaje se hace en una
localidad desde una determinada fecha de inicio y hasta una fecha de finalizacin. Cada parada puede
incluir diversas visitas. Una visita est incluida en una nica parada. Un jubilado del club se puede
inscribir a diversos viajes y un viaje puede tener diversos jubilados inscritos. El modelo conceptual de
datos en UML de este sistema es el siguiente:
Jubilado
nombre_jub
ao_nac
Visita
nm
nombre
fecha_vis *
152
Viaje
* nm_viaje
tipo_transp
Se-inscribe
*
Parar
0..1
Incluye
1
Parada
fecha_fin
Fecha
fecha_in
Localidad
nombre_loc
nm_hab
R.I. textuales:
- Claves de clases no asociativas: (Jubilado: nombre_jub), (Viaje: nm_viaje), (Fecha: fecha_in),
(Localidad: nombre_loc), (Visita: nm).
- Las paradas de un viaje no se pueden solapar temporalmente.
- La fecha_fin de una parada ha de ser posterior a su fecha_inicio.
- La fecha_visita de una visita ha de estar entre la fecha_inicio y la fecha_fin de la parada que
incluye la visita.
El sistema que se debe desarrollar no ha de dar de alta los datos de los jubilados ni de sus
inscripciones, dado que existe otro sistema encargado de hacerlo. El sistema ha de permitir efectuar
entre otras las funcionalidades siguientes: alta-viaje, cambio-fechas-parada y consulta-viajeslocalidad.
Cuando el administrativo del club de jubilados quiere dar de alta un viaje, indica su nmero y el tipo
de transporte. A continuacin, para cada parada del viaje indica su fecha de inicio, su fecha de fin, el
nombre de la localidad donde para, el nmero de habitantes de la localidad (slo en caso de que la
localidad no existiera en la base de informacin) y, adems, la informacin de todas las visitas que
incluya la parada (nmero, nombre y fecha). Haced que la interaccin necesaria para llevar a cabo esta
funcionalidad requiera ms de un evento.
Cuando el administrativo del club de jubilados quiere hacer un cambio de fechas de una parada indica
al sistema el nmero de viaje, la fecha de inicio y el nombre de la localidad de la parada. Tambin
indica la nueva fecha de inicio y la nueva fecha de fin de la parada. Hay que tener en cuenta que no se
puede hacer este cambio de fechas si el viaje de la parada tiene algn jubilado inscrito.
Finalmente, cuando un jubilado del club quiere hacer una consulta de viajes a una localidad, l mismo
indica al sistema un nombre de localidad. Entonces el sistema muestra el nmero de viaje de todos los
viajes que tienen alguna parada en la localidad indicada.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo de casos de uso: Diagrama de casos de uso (para las funcionalidades especificadas).
x Modelo del comportamiento del sistema: Diagramas de secuencia y contratos de las operaciones
correspondientes a alta-viaje, cambio-fechas-parada y consulta-viajes-localidad. Expresad las salidas
de las operaciones con la ayuda del lenguaje OCL.
10. Considerad una empresa que est interesada en un sistema para la gestin de sus proyectos
informticos. Los proyectos se identifican por cdigo y se guarda su fecha de inicio. Un proyecto
puede constar como mximo de tres etapas: especificacin, diseo o implementacin. De cada etapa
se conoce su nombre (que la identifica) y el precio a facturar por hora de trabajo.
Una etapa de un proyecto es dirigida por un empleado, identificado por DNI y de quien se registra
tambin su nombre y plus de sueldo. Adems, un empleado puede participar en diversas etapas de
proyectos. Una participacin se hace en la etapa de especificacin, en la de diseo o en la de
implementacin (segn el nombre de la etapa correspondiente en aquella etapa del proyecto). El
modelo conceptual en UML de este sistema es el siguiente:
Proyecto
cdigo: String
fecha-ini: Fecha
Empleado
1
director
Dirige
Consta-de
Etapa
0.. 3
nombre: String
precio-h: Entero
edp-dir
*
dni: String
*
0..10
Participa
nombre: String
edp-part
participante
plus: Entero
Participacin
153
EtapaDelProy
nm-h: Entero
nombre
{disjoint, complete}
Especificacin
Implementacin
Diseo
Usa
Material
*
cdigo: Entero
R.I. textuales:
- Claves clases no asociativas: (Proyecto, cdigo); (Empleado, dni); (Etapa, nombre); (Material, cdigo).
- El nombre de una etapa puede ser slo Especificacin, Diseo o Implementacin.
- Un proyecto no puede constar de la etapa de implementacin si no consta tambin de la de diseo.
- Un empleado no puede dirigir ms de 3 etapas de diseo en total.
El sistema que se debe desarrollar no ha de dar de alta los datos de Etapa, Empleado y Material, dado
que hay otro sistema encargado de hacerlo. El sistema ha de permitir efectuar, entre otras, las
funcionalidades: alta-proyecto, nueva-participacin y listado-proy-con-directivos-participantes.
Cuando el gerente de la empresa quiere dar de alta un proyecto, indica (l mismo) al sistema el cdigo
y la fecha de inicio del proyecto y, para cada etapa de que constar el proyecto, el nombre de la etapa
y el DNI del empleado que dirigir esta etapa del proyecto. Como consecuencia de esta interaccin, el
gerente recibe un listado que indica, para cada empleado que dirige una etapa del proyecto, el nombre
del empleado y el nmero de etapas de otros proyectos dirigidas por aquel empleado. Lgicamente, un
proyecto se da de alta una nica vez. Haced que la interaccin necesaria para llevar a cabo esta
funcionalidad requiera ms de un evento.
El encargado de proyectos, a peticin del gerente, puede dar de alta nuevas participaciones en etapas
de un proyecto. En este caso, se indicar el cdigo del proyecto, el nombre de la etapa, el DNI del
empleado, el nmero de horas de la participacin y, si la etapa es de diseo, el cdigo de los
materiales que se usarn.
Los empleados de la empresa pueden pedir en cualquier momento el listado de proyectos con
directivos participantes. Entonces, el sistema devolver un listado con el cdigo y la fecha de inicio de
los proyectos en que el director de alguna de sus etapas es tambin uno de los participantes de la
etapa.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML). En todos los
casos, hay que realizar todas las comprobaciones que sean necesarias.
x Modelo de casos de uso: Diagrama de casos de uso (de las funcionalidades especificadas).
x Modelo del comportamiento del sistema: Todos los diagramas de secuencia y contratos de todas
las operaciones que aparecen. Expresad las salidas con la ayuda del lenguaje OCL.
11. Considerad el caso de la escuela que hace actividades extraescolares del primer parcial de la
asignatura. Suponed que una parte del modelo conceptual en UML de este sistema es el siguiente:
Actividad
154
nombre:string
Edificio
nombre: string
direccin: string *
telfono: entero
Actividad
programada
se_hace_en
*
se_programa
inicio:date
Curso
ao1: ao
ao2:ao
Horario
hora_inicio:hora
hora_fin: hora
Dia_Semana
Actividad
en_edificio
tiene_horario
nombre:string
1
*
Grupo de
actividad
nombre: string
profe: string
matricula
Estudiante
*
cdigo: entero
nombre: string
R.I. textuales:
Claves clases no asociativas: (Curso: ao1,ao2); (Actividad: nombre); (Edificio: nombre);
(Dia_semana: nombre); (Grupo de actividad: nombre, actividad_en_edificio).
Una misma actividad no se puede hacer simultneamente en ms de un edificio.
En un edificio no se pueden hacer ms de cinco actividades en un da.
El personal de administracin, a peticin del director, programa las actividades de un curso. Indica al
sistema el curso (ao1, ao2) que quiere programar. Entonces, para cada actividad indica su nombre y
la fecha de inicio. Si la actividad no exista previamente, hay que darla de alta en este momento.
Opcionalmente, tambin puede indicar los edificios en que se har la actividad. Para cada edificio
indicar su nombre. Haced que la interaccin necesaria para llevar a cabo esta funcionalidad requiera
ms de un evento.
El director de la escuela puede pedir, en cualquier momento, el listado de aceptacin de las
actividades en un curso determinado. Indicar el curso y un nmero de matriculados. Entonces el
sistema ha de proporcionar un listado de todas las actividades programadas por el curso indicado que
superen en estudiantes matriculados el nmero indicado. El listado mostrar, para cada actividad, su
nombre y el nmero total de estudiantes.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML). En todos los
casos, hay que realizar todas las comprobaciones que sean necesarias.
x Modelo de casos de uso: Diagrama de casos de uso (de las funcionalidades especificadas).
x Modelo del comportamiento del sistema: Todos los diagramas de secuencia y contratos de las
operaciones que aparecen. Expresad las salidas con la ayuda del lenguaje OCL.
155
157
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
158
Cuando se produce el evento de Cambio de perro, nos comunican el identificador de la persona que
nos devuelve el perro (no es necesario que nos indiquen el perro que devuelve). El cambio slo se
acepta si tenemos algn otro perro libre de la raza preferida por el cliente.
En este caso, se asigna un perro cualquiera de estos al cliente y se produce una salida Adopcin
realizada, indicando el identificador del perro y el del cliente. No es necesario guardar la historia de
las adopciones hechas por los clientes. Podis suponer que las razas estn codificadas.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
4. Considera un sistema que registra las compras que hacen los clientes, y que las factura. El
sistema ha de responder a tres eventos: nueva compra, hacer facturas y fin de ao. Cuando se produce
una nueva compra nos comunican el cdigo del cliente que la ha hecho, el cdigo del producto que ha
comprado, la cantidad comprada de este producto y la fecha de la compra. Se supone que en una
compra el cliente slo compra un nico producto.
El sistema accede a dos archivos ya existentes: Productos y Clientes. El archivo de productos
contiene, para cada producto, su cdigo, la descripcin y el precio unitario. El archivo de cliente
contiene, para cada cliente, su cdigo, su nombre y el total comprado en el ltimo ao.
Un producto puede ser comprado por un nmero indeterminado de clientes. Al mismo tiempo, un
cliente puede llegarnos a comprar un nmero indeterminado de productos. Un cliente puede
comprarnos el mismo productor en diversas ocasiones.
Cuando se produce el evento hacer facturas, el sistema ha de generar facturas de todas las compras
que an no se han facturado. Una factura se identifica por un nmero de factura (que el sistema asigna
correlativamente). Interesa registrar, de cada factura, la fecha en que se ha hecho y su importe. Se ha
de generar una factura para cada cliente que tiene una o ms compras no facturadas. El importe de la
factura es la suma de los importes de las compras. Al acabar el proceso, ha de salir un mensaje que
diga el primer y el ltimo nmero de factura generado o, si no ha generado ninguna (porque todas las
compras ya estaban facturadas), el aviso: Ninguna factura realizada. (No tendremos en cuenta el
listado de las facturas.)
Cuando se produce el evento fin de ao, el sistema ha de calcular, para cada cliente, el importe total
de las compras que nos ha hecho durante el ao, y registrarlo en el archivo Clientes.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
5. Una federacin de ciclismo ha decidido facilitar la organizacin de carreras por etapas para
aficionados. Con esta intencin ha encargado a una empresa de software la construccin de un sistema
informtico capaz de gestionar los datos de una nica carrera.
La carrera consta de diversas etapas, numeradas correlativamene. Los ciclistas tienen un nmero de
dorsal y se quiere conocer tambin su nombre y el de su equipo. En cada etapa, los corredores llegan
en un cierto orden y habiendo tardado un determinado tiempo. La clasificacin general de la carrera se
establece segn el tiempo acumulado durante todas las etapas disputadas.
El sistema ha de responder a los tres eventos siguientes: dar de alta un corredor, registrar los
resultados de una etapa y generar un listado con la clasificacin general. Para dar de alta un
corredor se proporciona su nmero de dorsal, su nombre y el de su equipo. El sistema ha de
comprobar que no exista otro ciclista con el mismo nmero. Los resultados de una etapa se
registran una vez llegan todos los corredores (exceptuando aquellos que abandonan o llegan fuera
de control). Para cada uno de ellos se introduce el nmero, la posicin en la que ha llegado y el
tiempo que ha consumido. El sistema comprueba que los datos entrados son correctos, genera un
nmero de etapa (el ms alto que ya exista ms uno) y almacena los resultados. Adems, se
imprime un listado en el cual se muestra el nmero de etapa y, para cada corredor, la clasificacin,
el nmero, el tiempo, el nombre y el equipo. En cualquier momento se puede solicitar un listado
con la clasificacin general (que ser provisional si no ha acabado la carrera). Se ha de mostrar el
nmero de la ltima etapa recorrida y, para cada corredor que la ha acabado, la clasificacin, el
nmero, el tiempo acumulado, el nombre y el equipo.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
159
6. Los gestores de El sptimo sello, una sala de cine, han decidido ofrecer a sus clientes un servicio
de reserva por telfono de entradas numeradas. Con este propsito, han encargado a un estudiante de
IS:E la construccin de un sistema informtico.
Los films se proyectan en sesiones, cada una de las cuales se identifica por el da y por el orden dentro
del da. Cada sesin comienza en una hora determinada y proyecta una determinada pelcula (de la
cual slo nos interesa su nombre). En un mismo da, se pueden proyectar pelculas diferentes. La sala
dispone de un nmero fijo de butacas, cada una de las cuales se identifica por el nmero de la fila y el
nmero dentro de la fila.
De todos los eventos a los cuales ha de responder el sistema, slo nos interesan cuatro: 1) compra
directa en ventanilla (sin reserva previa) de una entrada, 2) peticin (telefnica) de reserva de una
entrada, 3) recogida y pago (en ventanilla) de una entrada reservada y 4) consulta de la ocupacin de
una sesin. Otros eventos (p.ej.: altas y bajas de sesiones) pueden ignorarse.
160
Para comprar directamente una entrada se proporciona la sesin, la fila y el nmero de la butaca. Una
vez hechas las comprobaciones pertinentes, se anota la ocupacin de la butaca y se imprime la entrada
con los datos necesarios. En el caso de una reserva se requieren los mismos datos y el DNI de la
persona que ha de recoger la entrada. Despus de las validaciones oportunas, se anota la reserva con el
DNI. Para recoger una reserva se vuelve a introducir la misma informacin; se hacen, como siempre,
las comprobaciones necesarias, se registra que la entrada ha sido pagada y se imprime como en el caso
de la compra directa. Finalmente, la ocupacin de una sesin se puede consultar mediante su
identificador. Como respuesta se obtiene una lista de butacas reservadas y/o compradas directamente,
y una lista de butacas libres.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
Cuando se recibe una ponencia, se indica el cdigo de la ponencia, su ttulo, el autor principal y el
resto de autores.
El presidente del comit de programa asigna cada ponencia a diversos revisores indicando, para cada
asignacin, el cdigo de la ponencia y el nombre del revisor. Un mismo revisor puede tener asignadas
diversas ponencias. No se puede asignar un aponencia a un revisor que sea autor de esta misma
ponencia.
Al cabo de unos das, los revisores envan el resultado de la revisin que han hecho de una ponencia
indicando el cdigo de la ponencia, el nombre del revisor y la calificacin que expresa, en una escala
de 0 a 10, la valoracin global que el revisor hace de la ponencia. Como es lgico, un revisor no
puede enviar la valoracin de una ponencia que no le haba sido asignada. Por otro lado, un revisor no
puede enviar dos valoraciones de una misma ponencia.
En cualquier momento, el presidente puede pedir un listado con las revisiones pendientes de
valoracin. Se ha de mostrar, para cada ponencia pendiente de valoracin por parte de un revisor, el
cdigo de la ponencia, su ttulo y el nombre del revisor.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
8. Considerad una federacin de entidades excursionistas que est interesada en un sistema para el
control de las expediciones efectuadas por los centros excursionistas adscritos a la federacin. Una
expedicin la efecta un centro excursionista a una cierta montaa, con una fecha de inicio y una de
fin. La federacin identifica los centros excursionistas por su nombre y registra tambin su altura. Un
centro excursionista puede efectuar diversas expediciones a la misma montaa, con fechas de inicio
diferentes. A una misma montaa se pueden hacer diversas expediciones, pero en una fecha cualquiera
puede haber como mximo 5 expediciones.
En una expedicin participan diversas personas (como mnimo una). Una persona puede participar en
ms de una expedicin. El sistema guarda informacin nicamente de las personas (que tienen el DNI
como identificador, un nombre y una edad) que han participado en alguna expedicin que tena como
objetivo una montaa de ms de 8000 metros.
Alguno de los componentes de una expedicin a una montaa de ms de 8000 metros puede alcanzar
la cima. En este caso, se registrar este hecho y tambin la fecha en que se ha llegado a la cima. Para
simplificar, suponed que una persona puede alcanzar la cima una nica vez en una misma expedicin.
El sistema que se debe desarrollar nicamente ha de consultar los datos referentes a centros
excursionistas y montaas, dado que ya existe otro sistema encargado de mantenerlos.
El sistema ha de permitir efectuar las operaciones siguiente: alta de expedicin, alta de participante a
una expedicin a una montaa de ms de 8000 metros, alta de persona que ha alcanzado la cima y
emitir un listado de los datos de una expedicin determinada.
161
Cuando se efecta una alta de expedicin, hay que indicar el nombre del centro excursionista, el
nombre de la montaa a la que se efecta la expedicin, la fecha de inicio y la fecha de final de
expedicin.
Cuando se efecta un alta de un participante a una expedicin a una montaa de ms de 8000 metros,
se indica el DNI de la persona, el nombre del centro excursionista que hace la expedicin, la montaa
y la fecha de inicio de la expedicin.
Cuando se efecta un alta de persona que ha llegado a la cima se indica el nombre del centro
excursionista que hace la expedicin, la montaa y la fecha de inicio de la expedicin, el DNI de la
persona y la fecha en que alcanza la cima.
Para pedir el listado de los datos de una expedicin hay que indicar el nombre del centro excursionista que
hace la expedicin, la montaa y la fecha de inicio de la expedicin. Se muestran el nombre del centro, la
montaa, su altura, la fecha de inicio y final de expedicin y, si es el caso, el nombre de todas las personas
que han participado en la expedicin y, opcionalmente, la fecha en que han llegado a la cima.
En todas las operaciones anteriores, hay que realizar todas las comprobaciones que se consideren
adecuadas.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
162
x
x
x
x
9. Una gran organizacin ha decidido poner en funcionamiento un sistema que le permita gestionar
los cursos de fomracin a los que asisten sus empleados, ya sea como oyentes o bien mediante una
matrcula oficial.
Los empleados se identifican por cdigo, y tienen tambin un nombre y una categora. Los cursos de
formacin se identifican por nombre, y se registra tambin quin es el organizador. En ambos casos, el
sistema a desarrollar nicamente ha de consultar sus datos, dado que ya existe otro sistema que
mantiene tanto los datos de empleados como de cursos de formacin.
Un empleado se inscribe en un curso de formacin en una cierta fecha. Cada inscripcin hace
referencia a un curso concreto. Un empleado se puede inscribir a tantos cursos como quiera y en un
curso se pueden inscribir diversos empleados. Un empleado se inscribe una nica vez en un mismo
curso de formacin. La inscripcin de un empleado en un curso de formacin puede ser de dos tipos:
como oyente o bien como matrcula oficial. En el primer caso, el sistema guardar informacin
nicamente del motivo por el cual se ha realizado la inscripcin. En el segundo, se registrarn tanto el
motivo como el precio de la inscripcin.
En el caso de las inscripciones correspondientes a matrculas oficiales, el empleado tiene un mximo
de tres convocatorias con tal de aprobar el curso al cual se ha inscrito. Para cada una de las
convocatorias a las que tiene derecho un empleado para un curso determinado, ser necesario registrar
tambin su nota.
El sistema ha de permitir efectuar las operaciones siguiente: nueva inscripcin, asignar nota, emitir un
listado de inscripciones de un empleado y emitir un listado de convocatorias.
Cuando se efecta una nueva inscripcin, hay que indicar el cdigo de empleado, el nombre del curso,
la fecha de inscripcin, el motivo que la justifica, el tipo de inscripcin y, en caso de tratarse de una
matrcula oficial, el precio.
Cuando se asigna una nota de una convocatoria, se indica el cdigo de empleado, el nombre del curso
y la nota correspondiente. El nmero de la convocatoria se asignar, automticamente y de forma
correlativa, por el propio sistema y se mostrar al usuario si la operacin se ha podido efectuar
satisfactoriamente.
Las inscripciones de un empleado se pueden consultar indicando su cdigo y, opcionalmente, el tipo
de inscripcin (si se proporciona slo se listan las inscripciones de aquel tipo). Se muestran, para cada
curso de formacin en el que se ha inscrito el empleado, el nombre del curso, su organizador, la fecha
de inscripcin, el motivo, y, si es el caso, el precio.
Para solicitar el listado de convocatorias hay que indicar el cdigo del empleado y el nombre del curso
de los cuales se pide el listado. Se muestran el nombre y la categora del empleado, el nombre del
curso y, para cada convocatoria de aquel empleado en aquel curso, el nmero de la convocatoria y su
nota.
163
En todas las operaciones anteriores, se deben realizar todas las comprobaciones que se consideren
adecuadas.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x
x
x
x
10. Considerad un club de automovilistas que est interesado en desarrollar un sistema software para
gestionar seguros de vehculos. Un vehculo (identificado por su nmero de matrcula y del que se
registra tambin su modelo) es comprado por un nico conductor (identificado por nmero de licencia
y del que se conoce el nombre) en una cierta fecha. Un conductor puede haber comprado diversos
vehculos. El sistema guardar la informacin de los conductores que han comprado algn vehculo.
Todo vehculo comprado ha de contratar un seguro de accidentes a alguna compaa. Cuando se hace
uno de estos contratos, se registra tambin la fecha de inicio del mismo. Un vehculo no puede estar
contratado en ms de una compaa, mientras que una compaa puede tener diversos contratos de
vehculos diferentes. De las compaas de seguros nos interesa registrar su nombre y la direccin (que
supondremos nica para cada compaa).
Se debe registrar tambin la informacin de los conductores que no son aceptados por las compaas
de seguros, conjuntamente con el motivo de la no aceptacin. Lgicamente, una compaa no podr
tener seguros de coches comprados por conductores que no son aceptados por la compaa. Un
conductor puede no ser aceptado por diversas compaas.
164
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo conceptual de datos, que ha de incluir todas las restricciones textuales necesarias y una
instanciacin del modelo que demuestre su validez.
x Modelo de casos de uso:
- Diagrama de casos de uso
- Especificacin del caso de uso del alta de contrato, que ha de incluir todas las
comprobaciones a realizar
x Modelo del comportamiento del sistema:
- Diagramas de secuencia de registrar conductores no aceptados y de listado de
contratos de una compaa
- Contratos de las operaciones correspondientes a estos diagramas de secuencia
11. Considerad un centro de gestin electoral que est interesado en desarrollar un sistema software
para gestionar las candidaturas y resultado de las sucesivas elecciones municipales.
Una candidatura se identifica mediante el partido que la presenta, el municipio al cual corresponde y las
elecciones para las que se ha confeccionado. A cada candidatura se presenta un conjunto de personas
candidatas (como mnimo 3) que pueden presentarse como candidatos independientes o no. Una misma
persona no puede estar en ms de una candidatura por eleccin. El sistema debe tener registradas cules
son las personas candidatas de cada candidatura y tambin si se presentan como independientes o no (tipo
de candidato). Las personas se identifican por su DNI y tambin se quiere registrar su nombre.
Cada una de las elecciones municipales se identifica por su ao de realizacin, los municipios se
identifican por su nombre y los partidos por sus siglas. Adems, el sistema ha de registrar el nombre
de cada partido y la comarca de cada municipio.
Una vez se han efectuado unas elecciones, para las candidaturas que hayan obtenido representacin, el sistema
deber permitir tener registrado el nmero total de representantes obtenido y cules son los candidatos (de la
candidatura) que quedan escogidos como representantes. Para las candidaturas que no hayan obtenido
representacin, el sistema deber permitir registrar el nmero de votos obtenidos por la candidatura.
Para simplificar, supondremos que la informacin de elecciones, municipios, partidos y personas es
mantenida por algn sistema externo y, por tanto, el sistema a desarrollar nicamente la consultar. En
cambio, el sistema a desarrollar ha de permitir efectuar altas de candidaturas, entradas de resultados
de candidaturas sin representacin, entradas de resultados de candidaturas con representacin y
listados de candidatos escogidos de una candidatura.
Cuando se quiere dar de alta una candidatura hay que indicar las siglas del partido, el nombre del
municipio, el ao de las elecciones y, para cada candidato, el DNI, el nombre y su tipo (independiente
o no). Una candidatura se da de alta toda a la vez y, una vez dado el alta, no se pueden aadir
candidatos. Adems, no se pueden dar de alta nuevas candidaturas para elecciones que ya tengan
algn resultado introducido. El alta de candidaturas es efectuada por los empleados del centro a
peticin de los interlocutores de los partidos. Haced que la interaccin necesaria para llevar a cabo
esta funcionalidad requiera ms de un evento.
Cuando un empleado del centro quiere introducir los resultados de una candidatura sin representacin,
indica l mismo al sistema las siglas del partido, el nombre del municipio, el ao de las elecciones y el
nmero de votos obtenido por la candidatura.
Cuando un empleado del centro quiere introducir los resultados de una candidatura con
representacin, indica l mismo al sistema las siglas del partido, el nombre del municipio y el ao de
las elecciones. Adems, para cada candidato que queda escogido como representante, indica su DNI.
Los resultados de una candidatura con representacin se introducen todos a la vez. Haced que la
interaccin necesaria para llevar a cabo esta funcionalidad requiera ms de un evento.
En cualquier momento, los interlocutores de los partidos pueden pedir un listado de candidatos
escogidos de una candidatura. Entonces, un empleado del centro indica las siglas del partido, el
nombre del municipio y el ao de las elecciones de la candidatura. Como respuesta el sistema muestra,
para cada candidato de la candidatura que haya quedado escogido como representante, el DNI, el
nombre y el tipo de candidato (independiente o no). Evidentemente, para poder pedir este listado, la
candidatura ha de tener representacin.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo conceptual de datos, que ha de incluir todas las restricciones textuales y atributos
derivados necesarios (en narrativa, no en OCL) y una instanciacin del modelo que demuestre su
validez.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso de la entrada
de resultados de una candidatura con representacin (que incluya todas las comprobaciones).
x Modelo del comportamiento del sistema: Diagramas de secuencia de alta candidatura y listado
de candidatos escogidos de una candidatura. Contratos de las operaciones correspondientes a estos
diagramas de secuencia (que incluyan todas las comprobaciones a realizar). Si hay, indicad las
modificaciones necesarias en el modelo conceptual de datos de partida. Expresad las salidas con la
ayuda del lenguaje OCL.
165
12. Considerad una biblioteca que est interesada en desarrollar un sistema software para gestionar
los ejemplares de los libros de que dispone y los prstamos de estos ejemplares.
La biblioteca identifica todos los ejemplares de libros mediante un cdigo que asigna la propia
biblioteca. Cada ejemplar corresponde a un determinado libro. De todos los libros de los cuales la
biblioteca tiene algn ejemplar, hay que registrar el ISBN (que los identifica), el ttulo, los autores, la
editorial, el ao de edicin y el nmero mximo de das que el libro se puede dejar en prstamo.
Los socios se identifican por su DNI y tambin se quiere registrar su nombre y telfono. Los socios
pueden realizar prstamos. Para cada prstamo, se debe conocer el socio que lo ha hecho, el ejemplar
prestado, la fecha de inicio del prstamo y la fecha de finalizacin del prstamo. Las fechas de
finalizacin de los prstamos han de respetar el mximo de das que se puede dejar en prstamo el
libro correspondiente al ejemplar.
Un socio no puede llevarse ms de 10 ejemplares en prstamo en una misma fecha de inicio.
Evidentemente, para un determinado ejemplar, puede haber diversos prstamos siempre que sean en
periodos que no se solapen. Tambin puede pasar que un socio haya realizado diversos prstamos de
un mismo ejemplar (que puede no coincidir con la fecha de finalizacin del prstamo).
166
A veces, un socio desea llevarse un ejemplar de un libro que no est disponible porque todos sus
ejemplares estn prestados. Entonces puede hacer una reserva del libro. El sistema registra todas las
reservas de libros que an no han sido satisfechas. De cada reserva, se debe tener la fecha, hora y
minuto en que se ha hecho con tal de poder priorizar las ms antiguas.
El sistema a desarrollar ha de permitir efectuar las funcionalidades siguientes (entre otras): el alta del
prstamo de un ejemplar, el alta de un libro y todos sus ejemplares y el listado de prstamos no
devueltos de un libro.
Cuando un socio quiere hacer un prstamo de un ejemplar, el bibliotecario comunica al sistema el
cdigo del ejemplar y el DNI del socio. El sistema muestra cul es la fecha mxima que se puede
escoger para la finalizacin del prstamo (que depende del nmero mximo de das que el libro del
ejemplar se puede dejar en prstamo). A continuacin, el bibliotecario comunica esta fecha mxima al
socio. Entonces, el socio da una fecha de finalizacin del prstamo. El bibliotecario comunica esta
fecha al sistema as como la fecha en que se realiza el prstamo. Finalmente, el sistema emite un
comprobante del prstamo, que incluye el ttulo y autores del libro, el cdigo del ejemplar, el DNI del
socio y la fecha de finalizacin del prstamo.
Se debe considerar que si un libro tiene reservas no siempre se podr dejar en prstamo un
ejemplar de aquel libro. Concretamente, si el socio que se quiere llevar el ejemplar no tiene
reserva, es necesario que haya ms ejemplares disponibles (sin prstamos no devueltos) que
reservas tiene el libro. Si el socio que se quiere llevar el ejemplar tiene una reserva del libro
correspondiente, tiene que haber ms ejemplares disponibles que reservas tiene el libro ms
antiguas que la suya.
Cuando el bibliotecario quiere dar de alta un libro y todos sus ejemplares comunica al sistema el
ISBN, el ttulo, los autores, la editorial, el ao de edicin y el nmero mximo de das que el libro se
puede dejar en prstamo. Adems, para cada ejemplar del libro indica el cdigo del ejemplar.
Finalmente, el sistema muestra el ISBN, el ttulo del libro y el nmero de ejemplares que se han dado
de alta. Haced que la interaccin necesaria para llevar a cabo esta funcionalidad requiera ms de un
evento. Suponemos, para simplificar, que todos los ejemplares de un libro se dan de alta de una vez.
Cuando el bibliotecario quiere un listado de prstamos no devueltos de un libro comunica al sistema el
ISBN del libro. Como respuesta, el sistema muestra, para cada prstamo no devuelto correspondiente
a un ejemplar del libro, el cdigo del ejemplar prestado, el DNI del socio que ha hecho el prstamo y
la fecha de finalizacin del prstamo.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo conceptual de datos, que ha de incluir todas las restricciones textuales y atributos
derivados necesarios (en narrativa, no en OCL) y una instanciacin del modelo que demuestre su
validez.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso del alta del
prstamo de un ejemplar.
x Modelo del comportamiento del sistema: Diagramas de secuencia del alta del prstamo de un
ejemplar, del alta de un libro y todos sus ejemplares y del listado de prstamos no devueltos de un
libro. Contratos de las operaciones correspondientes al alta de un libro y todos sus ejemplares y al
listado de prstamos no devueltos de un libro. Expresad las salidas con la ayuda del lenguaje OCL.
13. Considerad una empresa que est interesada en desarrollar un sistema software para gestionar la
informacin relativa a sus empleados. La empresa tiene diversos departamentos (identificados por
nombre y de los que se registra tambin su direccin) en los que pueden trabajar los empleados
(identificados por cdigo de empleado y de los que se registra tambin su sueldo que, como ya
veremos, depende de los departamentos donde trabaja y de las categoras que ste ocupe).
Un empleado puede trabajar en diversos departamentos, pero en una fecha un empleado slo puede
comenzar a trabajar en un departamento. De cada departamento donde trabaja un empleado, se debe
conocer el sueldo base que percibir el empleado por pertenecer al departamento. No hay que guardar
un histrico de esta informacin porque a la empresa le basta con saber slo en qu departamentos
trabajan actualmente sus empleados.
Mientras trabaja en un departamento, un empleado puede tener diversas categoras (de las que se
registra slo su nombre, que las identifica). De cada categora que el empleado tiene dentro de un
departamento, hay que registrar su fecha de inicio y el plus de sueldo que supone para el empleado.
En una fecha concreta, una categora slo puede ser asignada a cinco empleados de la empresa y un
empleado que trabaja en un departamento no puede tener ms de 3 categoras dentro de aquel
departamento. Si un empleado trabaja en diversos departamentos, entonces puede tener categoras
diferentes en cada departamento. Tampoco es necesario guardar un histrico de asignaciones de
categoras.
Adems, el empleado tiene Gerente o Vendedor como categoras asignadas, el sistema debe
registrar informacin adicional. Un gerente tiene entre una y tres personas que lo pueden sustituir.
Para cada posible sustitucin, hay que registrar el orden de prioridad de la sustitucin. Un sustituto
de un gerente ha de ser un empleado cualquiera que trabaje en el mismo departamento, pero que no
tenga la categora de gerente. Lgicamente, un gerente no se puede tener a l mismo como
sustituto. Para los vendedores hay que registrar tambin su da de descanso semanal (o sea, lunes,
martes, etc.).
167
El sueldo global de un empleado es la suma de sueldos de los departamentos donde trabaja. El sueldo
de un empleado en un departamento es igual al sueldo base de aquel empleado en el departamento
ms la suma de pluses de todas las categoras del empleado dentro del departamento.
Para simplificar, supondremos que la informacin de departamentos, empleados y fechas la mantiene
algn sistema externo y, por tanto, el sistema a desarrollar nicamente la deber consultar. En cambio,
el sistema ha de permitir asignar categoras bsicas a un empleado de un departamento, asignar
sustitutos a un gerente, emitir un listado de empleados de un departamento y conocer los empleados
que son gerentes de ms de un departamento.
Cuando se quieren asignar categoras bsicas a un empleado de un departamento, un administrativo de
la empresa indica al sistema (a peticin del responsable de recursos humanos) el nombre del
departamento, el cdigo del empleado, la fecha de las asignaciones y, para cada asignacin, el nombre
de la categora y el plus de sueldo. Para poder asignar la categora, el empleado ha de trabajar ya en el
departamento y no se pueden asignar categoras a empleados de un departamento si ste tiene ms de
100 empleados. Para simplificar, haced que el resultado de la ejecucin de esta funcionalidad no
permita asignar la categora de gerente ni la de vendedor. La interaccin necesaria para llevar a cabo
esta funcionalidad ha de requerir ms de un evento.
168
Cuando un administrativo, a peticin del director general de la empresa, asigna sustitutos al gerente de
un departamento indica al sistema el nombre del departamento, el cdigo del empleado y, para cada
empleado que lo puede sustituir, su cdigo y el orden de prioridad de la sustitucin.
Cuando un empleado quiere emitir el listado de empleados de un departamento, indica l mismo al
sistema el nombre del departamento. Como resultado recibe un listado donde se indica para cada
empleado del departamento su cdigo y la fecha en que comenz a trabajar ms, para cada categora
del empleado, el nombre de la categora.
En cualquier momento, el director general puede obtener un listado del cdigo de los empleados que
son gerentes de ms de un departamento.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo conceptual de datos, que ha de incluir todas las restricciones textuales y atributos
derivados necesarios (en narrativa, no en OCL) y una instanciacin del modelo que demuestre su
validez.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso de la
asignacin de sustitutos de un gerente.
x Modelo del comportamiento del sistema: Diagramas de secuencia de asignar categoras bsicas,
listado de empleados de un departamento y listado de los gerentes de ms de un departamento.
Contratos de las operaciones correspondientes a estos diagramas de secuencia (que incluyan todas las
comprobaciones a realizar). Expresad las salidas con la ayuda del lenguaje OCL.
14. Como probablemente ya sabis, con motivo del 25 aniversario de la FIB, se ha
celebrado por primera vez la Festibity, que pretende ser la cena anual del sector de las
tecnologas de la informacin. Los organizadores de esta velada (FIB y Cercle Fiber) nos
piden que los ayudemos especificando un sistema que d soporte a algunas de las actividades
relacionadas con la cena.
De la Festibity se harn diversas ediciones. Cada edicin se identifica por el da, mes y ao de su
celebracin. Tambin se quiere conocer el lugar en que se celebra y el precio. En cada edicin se
establecen posibles descuentos. Un descuento se identifica por el concepto dentro de la edicin a la
que pertenece y se registra el tanto por ciento de descuento.
La Festibity tiene un conjunto de empresas que hacen de patrocinador en algunas ediciones. Los
patrocinadores se identifican por su NIF y el sistema tambin quiere conocer su nombre, direccin,
telfono y el nombre de la persona de contacto. Cada vez que una empresa hace de patrocinador de
una edicin de la Festibity hay que registrar el tipo de patrocinio, la aportacin realizada y el nmero
mximo de invitaciones que se le asignan.
El sistema ha de mantener informacin actualizada sobre las personas del sector que han asistido a
alguna Festibity. Las personas se identifican por su nombre y tambin se quiere conocer el nombre de
su empresa, su telfono y el cargo que ocupa.
De todas las ediciones de la Festibity, hay una que ha de tener un tratamiento especial en el sistema: la
edicin en curso (la prxima que se celebrar). Para esta edicin hay que mantener informacin sobre
los asistnetes. Hay dos maneras de asistir a la Festibity: comprando una entrada o bien siendo
invitado. Como es natural, no se puede comprar una entrada si se ha sido invitado. Para las persona
que compran una entrada hay que registrar si se aplica alguno de los descuentos establecidos para esta
edicin. Se puede aplicar un descuento como mximo. Las personas invitadas no se consideran
asistentes hasta que han confirmado su asistencia. Cuando lo hacen, el sistema registra la fecha de
confirmacin. El nmero de asistentes a la edicin en curso se calcula sumando las entradas vendidas
y los invitados que han confirmado.
Por otro lado, por lo que respecta a los invitados, se quiere distinguir entre los que lo son por parte de
la FIB y los que lo son por parte de los patrocinadores. Para los invitados de la FIB se ha de conocer
la fecha en que se les envi la carta de invitacin. Para los invitados de los patrocinadores se quiere
saber cul es el patrocinador que los invita. Naturalmente, slo los pueden invitar los patrocinadores
que lo son de la edicin actual y un patrocinador no puede invitar a ms personas que el nmero
mximo de invitaciones asignado.
El sistema ha de permitir efectuar las funcionalidades siguientes (entre otras): invitar a una persona
y listado de los ms colaboradores. El sistema no ha de dar de alta los patrocinadores, los
descuentos ni las ediciones de la Festibity, porque hay otro sistema que se encarga de ello.
Cuando se quiere invitar a una persona, un administrativo de la FIB indica al sistema cul es la persona
que se quiere invitar. Si la persona ya ha asistido a alguna edicin, slo hay que indicar su nombre. Si no,
habr que indicar tambin el nombre de su empresa, el telfono y el cargo que ocupa, con tal de que el
sistema lo pueda dar de alta. Si es un invitado de la FIB, se considera que la fecha de envo de la carta es
la fecha actual. Si es un invitado de un patrocinador, hay que indicar el nombre del patrocinador. Podis
suponer que el sistema siempre conoce la fecha actual (denotada por fechaActual). Haced que la
interaccin necesaria para llevar a cabo esta funcionalidad requiera ms de un evento.
Cuando el decano de la FIB quiere saber cules son las empresas ms colaboradoras con la
Festibity, l mismo lo solicita al sistema. Como respuesta el sistema muestra el nombre y la
aportacin total de las empresas que han patrocinado la Festibity como patrocinador principal
ms de tres veces.
169
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo conceptual, que ha de incluir todas las restricciones textuales y atributos derivados
necesarios (en narrativa, no en OCL).
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso invitar a una
persona; por motivos de brevedad, basta con que escribis los cursos de eventos (tpico y
alternativos).
x Modelo del comportamiento del sistema: Diagramas de secuencia y contratos de las operaciones
correspondientes a los casos de uso invitar a una persona y listado de los ms colaboradores. Por
lo que respecta a los contratos, basta con que escribis la cabecera de cada operacin, la precondicin,
la postcondicin y la salida. Expresad las salidas con la ayuda del lenguaje OCL.
15. Considerad una cadena hotelera que est interesada en desarrollar un sistema software para
gestionar las reservas de habitaciones que se hacen en sus hoteles. La cadena hotelera identifica sus
hoteles por un nombre y registra tambin su direccin. Un hotel tiene diversas habitaciones. Las
habitaciones de un hotel se identifican por un nmero de habitacin dentro del hotel (obviamente, dos
hoteles diferentes pueden tener dos habitaciones con el mismo nmero) y se registra tambin si son
individuales o dobles.
170
Los clientes (identificados por DNI y de los que se guarda tambin el nombre y la direccin) pueden
hacer reservas en los hoteles. Cuando se hace una reserva se debe conocer el cliente que la hace, en
qu fecha se hace la reserva, qu tipo de habitacin se quiere (individual o doble) y las fechas de
inicio y de fin de la reserva. No se puede hacer una reserva si el hotel no tiene, como mnimo, una
habitacin del tipo especificado que est disponible durante todos los das que se quiere reserar.
Lgicamente, una persona puede hacer diversas reservas en una misma fecha pero, para simplificar,
supondremos que en una fecha determinada un cliente no puede hacer ms de una reserva en un
mismo hotel. Adems, supondremos que dos reservas diferentes de un mismo cliente pueden tener
periodos de reserva (definidos por las fechas de inicio y final de la reserva) que se solapen (incluso en
reservas de un mismo hotel).
Peridicamente, la cadena hotelera asigna las reservas que tiene a las habitaciones de los hoteles.
Cada reserva da lugar a una asignacin. Un asignacin se define por el cliente y la fecha de la reserva
y la habitacin del hotel que se asigna a la reserva. Como es lgico, no puede haber dos asignaciones
de una misma habitacin que se solapen entre s. Adems, el tipo de la habitacin asignada ha de
coincidir con el tipo de habitacin solicitada en la reserva y el hotel de la habitacin ha de ser tambin
el de la reserva.
Para simplificar, supondremos que la informacin de los hoteles y de sus habitaciones la mantiene
algn sistema externo y, por tanto, slo la habremos de consultar. En cambio, el sistema a desarrollar
ha de permitir efectuar las funcionalidades siguientes (entre otras): hacer-reerva, asignar-reservas y
listado-habitaciones-disponibles.
Cuando se quiere hacer una reserva, un empleado de la cadena (a peticin del cliente) comunica al
sistema el cdigo del cliente que hace la reserva, el hotel, la fecha actual, el tipo de habitacin y las
fechas de inicio y de final de la reserva.
Cuando se quieren asignar reservas a los hoteles de la cadena, un empleado de la empresa (a peticin
del director de ocupaciones) indicar al sistema, para cada hotel de la cadena, su nombre y, para cada
habitacin del hotel a la que se le asigna una reserva, el nmero de la habitacin, el cliente y la fecha
en que se ha hecho la reserva. Haced que la interaccin necesaria para llevar a cabo esta funcionalidad
requiera ms de un evento.
Cuando un empleado quiere un listado de las habitaciones disponibles de un hotel en una fecha, l
mismo indica al sistema el nombre del hotel y la fecha y el sistema muestra, para cada habitacin que
no tenga una asignacin en aquella fecha, el nmero de la habitacin y su tipo.
Os pedimos que hagis los modelos siguientes (todos ellos mediante la notacin UML):
x Modelo conceptual, que ha de incluir todas las restricciones textuales y atributos derivados
necesarios (en narrativa, no en OCL) y una instanciacin del modelo que demuestre su validez.
x Modelo de casos de uso: Diagrama de casos de uso. Especificacin del caso de uso de hacerreserva.
x Modelo del comportamiento del sistema: Diagramas de secuencia correspondientes a todos los
casos de uso. Contratos de las operaciones correspondientes a asignar-reservas y listadohabitaciones-disponibles. Expresad las salidas con la ayuda del lenguaje OCL.
171