You are on page 1of 7

Ingeniería del Software

PEC 2: Análisis UML

Presentación
Esta PEC se centra en el uso de UML para modelar diversos aspectos de un sistema de software.
La actividad cubre los contenidos estudiados en el módulo 4 de la asignatura.

Enunciado

Pregunta 1 (20%)
Modela en UML la solución ​oficial​ de la pregunta 6 de la PEC1.

Clases:
● Candidato​ (concreta): nombre, apellidos, fecha de nacimiento.
● Currículum​ (concreta): título, fecha de creación, fecha de modificación, contenido.
● Oferta​ (abstracta): título, descripción, fecha de publicación, fecha de inicio.
● Temporal​ (concreta, subclase de Oferta): salario, fecha de finalización
● Indefinido (concreta, subclase de Oferta): salario (multivaluado, 2 valores máximo).También
puede indicar que el rango de salario sean dos atributos, ​salarioMinimo y ​salariMaximo,
ambos como opcionales.

Asociaciones y clases asociativas:


● tiene: ​Asocia una instancia de ​Candidato con entre 1 y 3 instancias de ​Curriculum, ​y cada
instancia de ​Curriculum​ con una y sólo una instancia de C
​ andidato​.
● inscribe: ​Asocia cada instancia de ​Oferta con cualquier número de instancias de ​Candidato,
y cada instancia de ​Candidato con cualquier número de instancias de ​Oferta. ​Esta
asociación genera una clase asociativa ​Inscripción​ que contiene el atributo fecha.
● incluye: ​Asocia una instancia de ​Inscripción con una y sólo una instancia de ​Curriculum, ​y
cada instancia de ​Curriculum​ con cualquier número de instancias de ​Inscripción​.

Ingeniería del Software · PAC 2 Primavera 2019 ​p 1


Estudios de Informática, Multimedia y Telecomunicación
Solución

Pregunta 2 (35%)
Supon que queremos modelar, usando orientación a objetos, un sistema para la gestión de los
clientes de cooperativas que realizan canastas de productos a domicilio.

Una cooperativa, que tiene un nombre y un número de identificación fiscal, tiene clientes. De cada
cliente sabemos el nombre, apellidos, mail (que nos sirve para identificar de manera única) y el
teléfono de contacto. Cada cliente pertenece a una única cooperativa y tiene una suscripción, que
empieza en una fecha concreta y tiene una referencia única. La suscripción es válida por un año, y
a lo largo de este periodo el suscriptor recibe un boletín semanal de noticias y recetas que cada
cooperativa gestiona. Cuando la suscripción finaliza se puede renovar, por lo que se genera una
nueva suscripción con un nueva referencia pero que mantiene la información de la suscripción
anterior.

Ingeniería del Software · PAC 2 Primavera 2019 ​p 2


Estudios de Informática, Multimedia y Telecomunicación
El cliente puede también escoger el tipo de suscripción de cesta, que además le proporciona la
posibilidad de que la cooperativa le presente cestas de productos que le serán llevadas a casa
directamente. En caso de que un cliente tenga una suscripción de este tipo debe indicar la franja
horaria de entrega que prefiere: mañana o tarde.

Un cliente debe tener direcciones donde poder entregar las cestas. Una dirección tiene una calle y
un complemento (el número, piso, puerta, etc ...), un código postal y una población. De todas las
direcciones que tenga un cliente, hay una que es la dirección por defecto.

La cooperativa cada semana propone una cesta a los clientes que tienen la suscripción de cesta
(esto es la misma cesta a todos los clientes). Por semana entendemos el año y el número de
semana dentro del año. Para las cestas, por ahora, sólo nos interesa saber que la cesta tiene un
título, una descripción y un estado: abierta o cerrada (que sirve para controlar si una cesta se puede
pedir o no). Cada cliente puede aceptarla o no. Podemos asumir que una cesta que no se acepta
significa que no se enviará. En caso de que un cliente la acepte puede sobrescribir, sólo por aquella
cesta, la franja horaria de entrega (mañana o tarde) y la dirección donde se enviará. También puede
adjuntar algunas notas o comentarios a la cesta si lo estima oportuno.

La cooperativa, cada semana, organiza un máximo de dos trayectos de entregas. Cada trayecto de
entrega tiene un conjunto de cestas a entregar. Evidentemente, en un trayecto de entrega, todas las
cestas a entregar deben corresponder a la misma franja horaria de entrega (mañana o tarde).
Cuando el trayecto ha terminado, es necesario anotar los kilómetros realizados. En caso de que
una cesta no se haya podido entregar se anota el motivo de la no entrega para que luego se
puedan hacer las acciones oportunas.

Se pide:

a) (25%) Haz el diagrama de clases UML.


b) (10%) Documenta, de manera textual, las restricciones de clave y otras restricciones de
integridad que pueda haber.

Solución

a) Diagrama de clases UML

Ingeniería del Software · PAC 2 Primavera 2019 ​p 3


Estudios de Informática, Multimedia y Telecomunicación
b) Restricciones de clave y de integridad

Claves
- Subscription: reference
- Client: mail
- CooperativeSociety: vat
- Week: number + year
- Address: street + complement + zipCode + city

Restricciones de integridad
- Las cestas asociadas a un cliente solo lo puede ser si este tiene una subscripción de
modalidad cesta.
- Todas las cestas aceptadas asociadas a un trayecto de entrega tienen que tener la misma
franja horaria.
- La dirección escogida por una aceptación tiene que ser una de las direcciones del cliente
que ha aceptado.

Ingeniería del Software · PAC 2 Primavera 2019 ​p 4


Estudios de Informática, Multimedia y Telecomunicación
Pregunta 3 (30%)
Seguimos en el caso de la pregunta 2. En este caso queremos centrarnos en todo el proceso que
se inicia con la propuesta de una cesta por parte de la cooperativa hasta la preparación de las
cestas por parte los encargados de logística.

El proceso se inicia cuando la cooperativa diseña una cesta. Posteriormente, esta propuesta se
envía a los clientes. Cada cliente recibe la propuesta. Si el cliente no se interesa, simplemente no
es necesario que haga nada más. Si se interesa, el sistema comprueba si la cesta todavía está
abierta (es decir, si un cliente todavía la puede pedir). Si ya no está abierta, el sistema notifica que
la cesta ya no está disponible y por lo tanto no es necesario que haga nada más. En cambio, si está
abierta, el cliente puede, por este orden, añadir comentarios (si quiere), cambiar la dirección de
envío (si quiere) y cambiar la franja horaria (si quiere). Una vez hechos los cambios o no, ya puede
enviar su aceptación a la cooperativa.

La cooperativa espera las aceptaciones de las cestas hasta un día y hora concretos. Cuando llega
este plazo, se producen dos acciones a la vez. Por un lado se cierra la cesta para que ningún
cliente pueda aceptarla, y por la otra se recogen las aceptaciones recibidas. Una vez las dos tareas
han terminado, logística ya recibe la petición de preparar las cestas. El proceso, pues, termina aquí.

Se pide:

● Realizar un diagrama de actividades para representar el caso de uso que se ha descrito,


que muestre claramente las diferentes actividades y quien las hace.

Solución

Ingeniería del Software · PAC 2 Primavera 2019 ​p 5


Estudios de Informática, Multimedia y Telecomunicación
Nota:

● En esta propuesta de solución hay dos diagramas de actividad (si veis, hay dos grandes
swimlanes, uno que aglutina las acciones de la cooperativa y los servicios logísticos y otro
por el cliente). Hemos optado por esta solución porque las actividades que realiza la
cooperativa NO se pueden sincronizar de ninguna manera con las actividades que realiza el
cliente. Desde el punto de vista de la evaluación de otras soluciones, cada una será
valorada individualmente.
● Hay elementos que pueden formar parte de un diagrama de actividades que permiten
ilustrar eventos de tiempo (time events) o finales de flujo (flow final). Si se han usado estos
elementos de manera correcta, el ejercicio será también válido. Nosotros hemos ilustrado el
diagrama usando los mecanismos que se comentan en los apuntes.

Ingeniería del Software · PAC 2 Primavera 2019 ​p 6


Estudios de Informática, Multimedia y Telecomunicación
Pregunta 4 (15%)
Los responsables de las cooperativas se han encontrado en que los transportistas no están
anotando correctamente los kilómetros que hacen en cada trayecto de entrega. Es por este motivo
que quieren tener algún sistema que les proporcione algún dato sobre los kilómetros que se harán
sin tener que pedirlo a los transportistas.

Han pensado lo siguiente. Cada trayecto de entrega tendrá las direcciones que corresponden a las
entregas a realizar. Estas direcciones estarán ordenadas, y se calculará el número de kilómetros
que hay que recorrer entre cada dirección. De esta manera al final se podrá anotar el total de
kilómetros sumando las distancias entre cada dirección.

Se pide:
● Haz el diagrama de clases UML que permite representar esta necesidad (representa sólo lo
que cambia respecto a la solución propuesta a la pregunta 2). Si tienes que crear nuevas
restricciones, escríbelas. Y si tienes que hacer cambios sobre alguna de las clases
existentes, coméntalo.

Solución

El modelo UML:

Aparecen nuevas restricciones de integridad:


- Las direcciones que forman parte de un trayecto de entrega son las direcciones de las
cestas que forman parte del trayecto de entrega.
- La relación entre las diversas Route siguen el orden establecido entre Ride y Address.

El número de kilómetros de la clase Ride ha pasado a ser un atributo derivado ya que ahora se
calcula a partir de las distancias entre las direcciones de entrega.

El resto de elementos son todos nuevos.

Ingeniería del Software · PAC 2 Primavera 2019 ​p 7


Estudios de Informática, Multimedia y Telecomunicación

You might also like