Está en la página 1de 5

Escuela de Ingeniería

Parcial de: Diseño de Aplicaciones 2 Código de materia:


Fecha: 12-Dic-2019 Hoja 1 de 5

Importante:
- Escribir con letra clara.
- Todos los diagramas deben ser completos, prolijos y claros, incluyendo todos aquellos
adornos UML, para asegurar la correctitud y no ambigüedad.
- La ausencia de cualquiera de los puntos anteriores puede implicar la quita de puntos.

Preguntas de Diseño (30 puntos)


1. Diagramas (10 puntos)

Usted se encuentra construyendo una aplicación que se basa en la información de mascotas


domésticas. La idea es que en función de sensores y algoritmos de inteligencia artificial se pueda
brindar a los dueños datos de las mismas, tales como su ubicación física, temperatura corporal,
cuántas veces fue al baño o incluso su estado de ánimo en función de sus expresiones corporales.

Teniendo en cuenta este dominio, se le plantea la construcción de diferentes módulos útiles para la
aplicación. Cada uno de ellos plantea complejidades diferentes.

a) ​(2 puntos) ​Se encuentra construyendo el


módulo que analiza las expresiones corporales
de un gato. Para ello se le pide construir un
diagrama de clases que modele un gato con
sus correspondientes partes, considerando las
siguientes: ​cabeza (que contiene pupilas, nariz,
bigotes y orejas), ​patas (que contiene
almohadillas y garras) y ​cola​.

Su arquitecto le comentó que debe


representar que las almohadillas están
relacionadas con las garras y que siempre
desea que las almohadillas de un gato se
relacionen con las garras del mismo gato. Lo
mismo sucede con los bigotes y nariz.

No se deben considerar todas las partes que están en el dibujo de arriba (solo las mencionadas en la
letra), pero sí las cardinalidades allí presentes (la cabeza tiene ​dos pupilas, ​una nariz, ​una
almohadilla por pata, etc).

b) ​(2 puntos) En base al diagrama de clases construido en la parte anterior, construya un posible
diagrama de estructura-compuesta​.

PLAN 2013
1
Escuela de Ingeniería
Parcial de: Diseño de Aplicaciones 2 Código de materia:
Fecha: 12-Dic-2019 Hoja 2 de 5

c) ​(4 puntos) La aplicación también podrá realizar realizar el “trackeo” de las actividades diarias de
un gato, pudiendo interpretar y notificar al dueño su estado en cada momento. Por ello, se le pide
modelar un diagrama de estados para el comportamiento habitual de un gato:
I. El gato siempre comienza su día ​durmiendo​. Una vez se despierta, pasa a estar ​activo​.

II. Mientras el gato está activo puede realizar diferentes comportamientos tales como: ​ir al
baño​ (si decide) y ​comer​ (si tiene hambre).

III. Además, mientras está activo puede decidir ​explorar​. Mientras explora, el gato puede
encontrarse con su dueño o con algún objeto extraño.

- Si se encuentra con su dueño, puede ​refregarse contra él durante el tiempo que desee. Si el
gato está de mal humor, lo ignora y sigue explorando.
- Si se encuentra con un objeto, entonces pasa a ​jugar​ con él.
IV. Bajo cualquier circunstancia en la que el gato esté explorando, si su dueño le realiza
demasiadas caricias entonces este pasará al modo de ​enojo​. Durante el modo de enojo el
gato morderá y tirará patadas.

V. Si el gato explora por más de 2hs, sin importar lo que esté haciendo, querrá descansar e ir a
dormir nuevamente.

VI. Si antes de dormir estaba explorando, querrá retomar la actividad de exploración que estaba
haciendo. El gato nunca olvida lo que estaba haciendo.

d) ​(2 puntos) Si tuviera que modelar el diagrama de estados de la parte anterior utilizando el Patrón
State, ¿cómo resolvería la creación de los estados? Discuta las alternativas asociadas al patrón.

2. Patrones de diseño (10 puntos)

Siguiendo con el mismo dominio de la parte anterior, usted se encuentra ahora diseñando el módulo
para poder manejar la ubicación en tiempo real de la mascota. Para ello, usted sabe que deberá
interactuar con una API interna del dispositivo que le permitirá obtener la ubicación mediante GPS.
Si bien tiene un profundo conocimiento de esta API, también sabe que la tecnología no es lo
suficientemente madura como para poder afirmar que la API es estable, por lo que es probable que
su interfaz cambie con frecuencia y no sea siempre la que usted espera.
Por ejemplo, usted hoy en día para obtener a la posición llama a los métodos ​GetLatitude(): float y
un ​GetLongitude(): floa​ t, pero internamente en su solución requiere un comportamiento
GetPosition(): Point​ que sustituye a los dos anteriores.
a) (3 puntos) ¿Qué patrón o patrones de diseño utilizaría para lidiar con la API del GPS?
Justifique y realice un diagrama de interacción explicando su solución.

PLAN 2013
2
Escuela de Ingeniería
Parcial de: Diseño de Aplicaciones 2 Código de materia:
Fecha: 12-Dic-2019 Hoja 3 de 5

Además, usted sabe que la API del dispositivo que usa la mascota permite obtener la ubicación cada
10 segundos, queriendo usar esa información para poder notificar en tiempo real a los dispositivos
de los dueños. Para enviar una notificación al dueño, se debe llamar a una API REST existente donde
se pasa el id del dueño y la mascota y se envían los datos de posición, pudiendo así cada dueño
recibir la información de su mascota. Esto permite que los dispositivos de los dueños puedan
refrescar la ubicación en un mapa y mantener la posición de su mascota actualizada.
Además, el arquitecto del proyecto le aconsejó que esconda lo más posible la complejidad asociada a
interactuar con la API REST de los dueños, evitando tener que realizar las requests HTTP
reiteradamente y manejar la complejidad del protocolo en cada interacción con la API. Para ello, le
aconsejó que creará una clase ​PetRestClient que permite acceder a todas las operaciones de la API a
través de métodos que dicha clase brinda. Debe entonces usar esta clase cada vez que quiera
notificar a un dueño llamando a su REST API.

b) (7 puntos) ¿Qué patrón o patrones de diseño utilizaría para permitir que el módulo tenga
esas capacidades? Justifique y realice un diagrama de clases explicando su solución.

3. Principios y métricas de diseño (10 puntos)


Dado el siguiente diagrama de paquetes y la siguiente tabla

PLAN 2013
3
Escuela de Ingeniería
Parcial de: Diseño de Aplicaciones 2 Código de materia:
Fecha: 12-Dic-2019 Hoja 4 de 5

Paquete R N H Ca Ce I Na Nc A D’

UICtrlCalidad 8,00 6,00 1,50 0,00 13,00 XX 0,00 7,00 0,00 0,00

Utilitarios 6,00 6,00 1,17 11,00 0,00 0,00 2,00 6,00 0,33 XX

ServiciosIU 14,00 10,00 1,50 4,00 3,00 0,43 1,00 10,00 XX 0,47

Persistencia 2,00 3,00 XX 2,00 1,00 0,33 1,00 3,00 0,33 0,33

Tenga en cuenta que los números en las dependencias entre paquetes indican la cantidad de
relaciones entre clases de un paquete hacia a otro.

Se pide:

a) (1 punto) Calcular los valores de las métricas indicadas en la tabla con XX. Detalle la fórmula
utilizada.

b) (9 puntos) Teniendo en cuenta los valores de la tabla:


1) ¿Qué paquetes tienen una ​cohesión relacional​ aceptable? Justifique.
2) Ordene los paquetes de acuerdo a su ​inestabilidad​, poniendo primero los más inestables.
Analice este ordenamiento y el valor de la métrica para cada paquete, justificando en base al
cumplimiento de los principios de diseño que le parezca relevante.
3) Ordene los paquetes teniendo en cuenta aquellos que tengan mejor relación entre
inestabilidad​ y ​abstracción​. Explique el criterio o principio que utilizó para su ordenamiento.
4) ¿Qué elementos identificó como problemáticos y qué haría para mejorar el diseño? Básese
en la relación de Abstracción vs Inestabilidad. Justifique.
5) En base a su conocimiento sobre principios y buenas prácticas de diseño mencione tres
cambios que podría aplicar a la solución dada indicando los elementos a agregar o quitar.

PLAN 2013
4
Escuela de Ingeniería
Parcial de: Diseño de Aplicaciones 2 Código de materia:
Fecha: 12-Dic-2019 Hoja 5 de 5

Preguntas de Tecnología (10 puntos)


(​RESPONDER EN HOJA APARTE​)

4. (10 puntos)

a) (5 puntos) Dado el endpoint ​GET ​api/v1/users que retorna una lista de usuarios, se requiere
poder filtrar a estos usuarios por nombre.

i) (2 puntos) Plantee 2 maneras de solucionar este problema una desde el backend


(web api .net core) y otra desde el frontend (angular).

ii) (3 puntos) ​Plante motivos a favor y en contra de cada una de estas.

b) Se encuentra diseñando una API REST para una ​Herrería​. Se le pidió implementar las
siguientes operaciones:
Para los usuarios no registrados:
I. Listar todos los herreros disponibles para realizar un trabajo, pudiendo filtrarlos por
nombre y ordenarlos de manera ascendiente o descendiente.
II. Dado un herrero mostrar todos los trabajos previos de este.
III. Como usuario quiero poder enviar consultas a un herrero para saber si es posible
realizar un trabajo personalizado y su coste.
Para los usuarios registrados:
IV. Como administrador quiero modificar herreros.
V. Como administrador quiero borrar herreros.
Elabore una breve discusión sobre el diseño de la API y las consideraciones a tener en cuenta. Defina
para cada endpoint que diseñe los recursos, verbos, modelos, rutas, códigos, headers y response que
estos realicen.

PLAN 2013
5

También podría gustarte