Está en la página 1de 5

Escuela de Ingeniería

Examen de: Diseño de Aplicaciones 2 (PLAN 2013) Código de materia:


Fecha: 27-Octubre-2020 Hoja 1 de 5

IMPORTANTE
● DURACIÓN 2 HORAS Y MEDIA.
● SIN MATERIAL.
● 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.
● Documente cualquier supuesto que realice al momento de responder las preguntas.
● Responda cada pregunta por separado. No combine respuestas a distintas preguntas ya que esto dificulta
la corrección.
● La ausencia de cualquiera de los puntos anteriores puede implicar la quita de puntos.

Preguntas de Diseño (75 puntos)


1. Patrones y principios de diseño (15 puntos)

Usted se encuentra trabajando para un estudio de arquitectos, dónde se van tomando proyectos de
edificios de apartamentos para diferentes clientes los cuales comienzan con la entrega de una maqueta.
Cada maqueta se va realizando digitalmente utilizando un software que realizó un desarrollador que
trabajó hace unos años para la empresa. En el mismo los arquitectos van armando las maquetas de
forma progresiva, especificando las diferentes partes que aplican a los apartamentos que se van
construyendo.

Luego de examinar exhaustivamente el código de dicha aplicación, usted identifica que hay una
enormidad de código repetido en la UI de la aplicación, dependiendo de qué especificación de
apartamento se esté intentando maquetar. Esto se debe a que un apartamento puede tener N número
de pisos, terraza principal, puede tener cocheras, puede tener subsuelo, puede tener gimnasio, piscina,
jardín, etc. Dependiendo entonces de los parámetros que el cliente haya solicitado, un edificio se puede
ir maquetando con alguna configuración o con otra, omitiendo o pasando parámetros según
corresponda. Y usted encontró que la UI llama enormes constructores donde va asignando estos
parámetros de forma opcional. Así se ve el constructor principal de la clase Apartamento:

public class Apartamento


{
public Apartamento(int cantPisos, bool tieneJardin, bool tieneTerraza, int cantCocheras, bool
gimnasio) { ... } // constructor principal, todos los parámetros
}

PLAN 2013
1
Escuela de Ingeniería
Examen de: Diseño de Aplicaciones 2 (PLAN 2013) Código de materia:
Fecha: 27-Octubre-2020 Hoja 2 de 5

a) (10 puntos) ¿Qué patrón o patrones de diseño podría utilizar para resolver el problema
anteriormente planteado? Justifique y realice un diagrama de clases de su solución.
b) (5 puntos) ¿Qué principios de diseño estaría cumpliendo ahora el sistema al aplicar la solución de
la parte anterior? Justifique.

2. Patrones y principios de diseño (20 puntos)


Usted se encuentra trabajando como desarrollador para PedidosYa, particularmente en un sistema que
se encarga de realizar todas las operaciones que tengan que ver con el empaquetado y envío de los
pedidos a cargo de los deliveries de dicha empresa. Cada Pedido consta de uno o más Productos que
tienen un costo y pueden ser empaquetados diferentes tipos de Cajas contenedoras, como no serlo. Lo
importante es que en función del tipo y cantidad de cajas que se usen, el precio total del envío variará.
Cada caja puede tener diferentes características (como tamaño y precio).
Por ejemplo: un pedido de un desodorante en una farmacia no va en caja y por ende no se incurre en
un costo adicional del producto. Por otro lado, un pedido de un brasero de asado con papas fritas en
un restaurante lleva tres paquetes (o cajas): uno para el brasero, otro para las papas y otro para esos
dos paquetes; en consecuencia el costo del pedido es la suma de los costos de cada paquete más el
costo del brasero y las papas. Puesto de otra forma:
Pedido 1:
- Producto(s): 1 Desodorante Dove ($100)
- Paquete(s): 0
- Costo total: $100
Pedido 2:
- Producto(s): 1 brasero ($800), 1 porción de papas fritas ($200)
- Paquete(s): 3 (1 caja -brasero-, 1 caja -papas fritas- y 1 caja -para las otras dos cajas-).
- Costo envío: $10 + $20 +$35 = $65 (los precios pueden variar por cada caja)
- Costo productos = $800 + $200 = $1000
- Costo total: $1065
En otras palabras, un pedido/orden se puede empaquetar en una caja, que a su vez se puede
empaquetar en otras cajas y así sucesivamente. Como las órdenes pueden estar tanto empaquetadas
como no, ¿cómo se determinaría el precio total de un pedido?
Puede asumir que ya existen las siguientes clases: Producto y Caja. Todas tienen un campo “Costo” que
devuelve el costo asociado a cada uno. También existe la clase Pedido que tiene un método
CalcularCostoTotal().

PLAN 2013
2
Escuela de Ingeniería
Examen de: Diseño de Aplicaciones 2 (PLAN 2013) Código de materia:
Fecha: 27-Octubre-2020 Hoja 3 de 5

a) (10 puntos) Plantee algún patrón de diseño que permita calcular el costo total de un pedido de
forma sencilla, sin distinguir entre los tipos de productos y/o paquetes. Justifique y realice un
diagrama de clases para la solución planteada.
b) (7 puntos) Realice un diagrama de secuencia que muestre el cálculo total de un pedido
aplicando el o los patrones de diseño utilizados en la parte anterior.
c) (3 puntos) ¿Qué principios SOLID está haciendo que su solución cumpla gracias a lo planteado
en la parte (a)?

3. Arquitectura y REST (15 puntos)


a) (5 puntos) Si fuera un diseñador de software de una empresa dedicada al desarrollo, ¿qué
argumentos manejaría para justificar el desarrollo de una Arquitectura en capas?
b) (5 puntos) ¿Cuál es la finalidad de contar con las diferentes vistas de Arquitectura?
c) (5 puntos) ¿Cómo relaciona el concepto de REST con el de Arquitectura en capas?

4. Frameworks (10 puntos)


Explique detalladamente cómo relaciona el concepto de Framework con cada uno de los siguientes
conceptos:
i) Herencia
ii) Composición/Delegación
iii) Patrones de diseño
iv) Testing
v) Refactoring

5. Métricas de diseño (15 puntos)


a) (5 puntos) ¿Qué finalidad tiene realizar mediciones sobre el diseño?
b) (10 puntos) ¿Qué tipo de métricas realizaría de su diseño y qué acciones tomaría a partir de los
resultados de dichas métricas? Justifique su respuesta realizando comparativos entre diseños
que presentan diferentes valores.

PLAN 2013
3
Escuela de Ingeniería
Examen de: Diseño de Aplicaciones 2 (PLAN 2013) Código de materia:
Fecha: 27-Octubre-2020 Hoja 4 de 5

Preguntas de Tecnología (25 puntos)


(RESPONDER EN HOJA APARTE)

6. WebApi (20 puntos)


Dada el siguiente código:

PLAN 2013
4
Escuela de Ingeniería
Examen de: Diseño de Aplicaciones 2 (PLAN 2013) Código de materia:
Fecha: 27-Octubre-2020 Hoja 5 de 5

Se pide que:
I. (4 puntos) Enumere cuales son los endpoints junto con el verbo HTTP y una descripción.
Suponga que la api esta hosteada en vidly.com
II. (3 puntos) ¿Qué errores encuentra en los diferentes endpoints?
III. (5 puntos) Escriba nuevamente el controller sin errores
IV. (3 puntos) Menciona los bounds principales que conoce y el objetivo de los mismos
V. (2 puntos) ¿Qué sucede si no uso el bound FromRoute?
VI. (3 puntos) ¿Qué es y cual es el objetivo de la característica respuesta parcial de REST?

7. Inyección de dependencia (5 puntos)


I. (2.5 puntos) Explique los diferentes ciclos de vida que se le pueden dar a los servicios en la
WebApi.
II. (2.5 puntos) De ejemplos de escenarios de cada uno.

PLAN 2013
5

También podría gustarte