Está en la página 1de 11

DISEÑO Y PATRONES DE SOFTWARE (SI424)

EXAMEN FINAL
2022-1

Sección: SW51 / SW52 / SW53 / WS5A / WV51 / WX51


Profesores: Bautista Ubillus, Efraín Ricardo
Delgado Vite, Jorge Luis
Velásquez Núñez, Ángel Augusto

Duración: 170 minutos

Indicaciones:
1. El examen consta de cinco (5) preguntas sobre un caso de estudio, y tendrá 170 minutos para
resolverlas.
2. El enunciado de la pregunta se encuentra en el archivo
upc-pre-202201-si424-examen-final_v1.pdf
3. Utilice el documento de PowerPoint
upc-pre-202201-si424-examen-final-file_v1.pptx
para responder, tanto a nivel de texto para las preguntas de redacción como a nivel de las preguntas
relacionadas con diagramas. Coloque contenido en cada diapositiva de respuesta según el título e
indicaciones.
4. Cada examen cuenta con un equipo académico, el cual estará conectado durante los primeros 15
minutos del examen.
5. El alumno debe dedicar los primeros 15 minutos a revisar las preguntas del examen y de presentarse
alguna duda enviar un correo al(los) profesor(es)
Todas las secciones: Velásquez Núñez, Ángel Augusto, correo pcisavel@upc.edu.pe
6. De no recibir respuesta del equipo académico, o tener algún inconveniente adicional pasado los
primeros 15 minutos, puede comunicarse con el profesor
Sección SW51/SW52/WS5A: Delgado Vite, Jorge Luis, correo pcsijdev@upc.edu.pe
Sección SW53/WX51/WV51: Requejo Chaname, Walter Juan, correo pcsiwreq@upc.edu.pe
7. Los profesores en mención solo recibirán correos provenientes de las cuentas UPC, de ninguna manera
se recibirán correos de cuentas públicas.
8. Ante problemas técnicos, debe de forma obligatoria adjuntar evidencias de este, como capturas de
pantalla, videos, fotos, etc. Siendo requisito fundamental que, en cada evidencia se pueda apreciar
claramente la fecha y hora del sistema operativo del computador donde el alumno está rindiendo el
examen.
9. Los problemas técnicos se recibirán como máximo 15 minutos culminado el examen.

Página 1 de 11
Caso de estudio: Red Cross (Cruz Roja)

Cada año, los desastres y crisis devastan a millones de personas. Como parte de la red humanitaria más
grande del mundo, los equipos de la Media Luna Roja de Red Cross ofrecen consuelo y esperanza en
prácticamente cada rincón del mundo. Los voluntarios con frecuencia provienen de las comunidades en
donde ofrecen sus servicios, lo que los convierte en potentes hacedores del cambio. Juntos, los equipos de la
a Media Luna Roja de Red Cross no solo responden a las emergencias, tales como terremotos, sequías y
epidemias que afectan la salud, sino que también ayudan a los vecindarios a prepararse para futuros
desastres y a asegurar que los niños reciben las vacunas que necesitan para mantenerse saludables.

El cambio climático está provocando los más extremos eventos climáticos. Es por ello que, como parte de su
estrategia de difusión y apoyo, Red Cross ofrece un Emergency App para ayudar a que las personas estén
preparadas. Dicha aplicación, la cual es simple de usar, permite personalizar alrededor de 40 diferentes
alertas con notificaciones rápidas. La aplicación proporciona guías para ayudar a los usuarios a prepararse y
les explica cómo el cambio climático ha impactado cada zona afectada. Se puede encontrar con facilidad los
refugios abiertos de Red Cross con un mapa interactivo. La aplicación permite cambiar entre inglés/español
con un toggle fácil de ubicar, a fin de que las alertas lleguen en el idioma seleccionado. La aplicación es
accesible para que las personas con discapacidades pueda utilizarla. También es compatible con Apple
Watch y dispositivos Wearable con Android.

Abajo algunos screenshots de la aplicación móvil.

Página 2 de 11
La aplicación ofrece a los usuarios diversas características, incluyendo:

• Disponible en inglés, con un toggle para cambiar entre inglés y español.


• Monitorear a las personas y lugares que son importantes para nosotros, con alertas en tiempo real
sobre peligros climáticos y amenazas, incluyendo terremotos (earthquakes), tornados (tornades),
huracanes (hurricanes), inundaciones (flood), sunamis (tsunamis), tormentas de nieve (winter storm),
tormenta eléctrica (thunderstorm), calor extremo (extreme heat), incendio forestal (wildfire), entre
otros.
• Opciones de alertas personalizables y push notifications.
• Quizzes interactivos y badges para compartir (shareable badges).
• Contenido precargado sobre preparación y emergencia crítica, proporcionando acceso instantáneo
incluso sin conectividad móvil.
• Un toolkit con activación rápida de linterna (flashlight), luz estroboscópica (strobe light) y alarma
sonora (audible alarm).
• Mapa con refugios (shelters) de Red Cross y otras capas relacionadas con el clima (weather-related
layers) como Hurricane Tracker, Stallite, Clouds, Rain, Wind Speed, Snow.
• Instrucciones step-by-step de cómo elaborar un plan familiar de emergencia (family emergency plan).
• Recibir alertas en su dispositivo Apple Watch o Android Wearable.

A continuación detalles adicionales sobre las principales características.

Prepare

Hay varias maneras de prepararse para un huracán las cuales han sido compartidas por las personas en sus
comunidades durante años. Es esta educación y entendimiento lo que ha constituido el factor principal para
salvar vidas antes de que la tecnología permita realizar lo mismo a mayor escala.

La aplicación ofrece en la sección Prepare la opción para seleccionar un peligro (hazard), con lo cual brinda
recomendaciones para antes, durante y después del desastre seleccionado. A continuación imágenes
relacionadas con estas características.

Página 3 de 11
Map

Si nos enteramos que un tornado por ejemplo, está por ocurrir, lo primero que preguntamos es ¿qué tan
pronto? Tener la capacidad de realizar un seguimiento de los desastres en tiempo real, significa que podemos
tener una idea más clara de cuándo y dónde va a producirse el desastre.

Esto no solo abarca el “ojo de la tormenta”, pues hay muchos otros efectos que siguen a los desastres, como
inundaciones, cortes de energía. Tener este conocimiento significa que podemos asegurarnos de prepararnos
adecuadamente antes de que el momento de peligro llegue.

Por ello la aplicación permite filtrar el mapa en base a los tipos de amenazas (hazards), ver por ejemplo
dónde está en este momento la tormenta y lo más importante, hacia dónde se dirige. Las siguientes imágenes
ilustran estas características.

Evacuation Plan

En los peores escenarios, podemos vernos en la necesidad de evacuar la ciudad antes de que un desastre
ocurra. Es por ello que en esos momentos, poder verificar nuestra ubicación en un mapa real ayuda a salvar
vidas. De esa manera podemos tener un plan de evacuación para, en caso suceda lo peor, poder ir al refugio
de emergencia más cercano tan rápido y seguro como sea posible.

La opción Make a Plan permite buscar/reunirse con amigos y familiares. También permite encontrar el refugio
de Red Cross más cercano en caso sea necesario evacuar. Abajo tenemos imágenes mostrando el
comportamiento asociado a estas características.

Página 4 de 11
Location monitoring and hazard alerts

Los emergency alerts salvan vidas permitiendo que las personas sepan cuándo necesitan desplazarse a un
área segura, o prepararse para los peligros que experimentará de forma inminente.

La aplicación permite monitorear ubicaciones específicas para el peligro (hazard) seleccionado. Se puede
establecer un radio de alerta y decidir qué tipos de peligro se desea monitorear. Las imágenes siguientes
permiten ver el comportamiento asociado a estas características.

Página 5 de 11
Location sharing and safety notifications

Ante un terremoto, el caos y el miedo pueden apoderarse de nosotros rápidamente. Ser capaces de enviar
mensajes personalizados con el toque de un botón a una lista de contactos, podemos rápidamente brindar
tranquilidad a nuestra familia sabiendo que todos están a salvo y bien.

La aplicación permite editar mensajes personalizados, compartir nuestra ubicación, haciéndolos llegar a las
personas en nuestra lista de contactos. Abajo algunas capturas sobre estas características.

El equipo de Red Cross se encuentra conforme con la interfaz de usuario actual, pero desean que se haga
una actualización a nivel de diseño de software, desde la perspectiva de domain-driven design y aplicando
patrones de diseño.

Luego de un proceso de Eventstorming y strategic-level domain-driven design, se llega a identificar los


siguientes Bounded Contexts:

Bounded Context Descripción


Accounts Manejo de información básica de cuentas de usuario (accounts), soportando
autenticación por correo electrónico o cuentas de redes sociales. Dado que es una
aplicación gratuita, los conceptos de planes y suscripciones no son aplicables.
People Gestión de información de contacto del usuario e información de sus relaciones con
otros usuarios, así como información de contactos relevantes (a partir de selecciones
sobre la lista de contactos del dispositivo) para envío de mensajes o monitoreo.
Shared Incluye el manejo de información de peligros (hazards).
Preparing Manejo de información y tips a tener en cuenta antes, durante y después de un
hazard. Incluye quizzes de comprobación de conocimiento y asignación de badges al
usuario al aprobar quizzes.
Monitoring & Alerts Abarca la gestión de ubicaciones (locations) para monitoreo y presentación en
mapas, junto con los peligros (hazards) seleccionados para recibir alertas. También
incluye el manejo de relación de contactos con ubicaciones (poder indicar qué
personas relacionadas se encuentras en dicha ubicación).
Toolkit Soporte a los procesos asociados a la opción Make a Plan, incluyendo edición y
envío de mensajes a contactos configurados (opción I’m Safe) así como la
integración con el dispositivo para las opciones de emición de flashlight, stobe light o
audible alarm.

Página 6 de 11
Preguntas
(20 p.) Sobre el caso expuesto se pide realizar lo siguiente:

Pregunta 1 (7 p.).
Seleccione uno de los Bounded Context y elabore un diagrama de clases de UML para el Aggregate de dicho
bounded context, incluyendo el Aggregate Root, Entities y Value Objects que lo conforman. Especifique en el
diagrama los atributos y métodos representativos para cada clase, así como los métodos representativos para
cada interfaz, así como las relaciones entre estas. Para el diagrama de clases, aplique convenciones de
nomenclatura en inglés, así como las convenciones de Upper-Camel-Case o Lower-Camel-Case según sea
apropiado.

Pregunta 2 (4.5 p.).


Identifique dentro del caso la necesidad de aplicación de un patrón de diseño de tipo Structural Design
Pattern. Elabore el diagrama de clases que ilustre su propuesta, especificando atributos y relaciones entre las
clases. Para el diagrama de clases, aplique convenciones de nomenclatura en inglés, así como las
convenciones de Upper-Camel-Case o Lower-Camel-Case según sea apropiado. Puede considerar clases de
las capas de domain, interface, application services o infrastructure para cualquiera de los bounded contexts.

Pregunta 3 (2 p.).
Para el Structural Design Pattern aplicado, redacte el sustento de su solución (¿Qué lo motivó a seleccionar
ese patrón? ¿Había otras opciones? ¿Cuál es el beneficio de esta solución en términos de principios de
diseño?

Pregunta 4 (4.5 p.).


En el contexto del caso, identifique la necesidad de aplicación de un patrón de diseño de tipo Behavioral
Design Pattern. Elabore el diagrama de clases que ilustre su propuesta, especificando atributos y relaciones
entre las clases. Para el diagrama de clases, aplique convenciones de nomenclatura en inglés, así como las
convenciones de Upper-Camel-Case o Lower-Camel-Case según sea apropiado. Puede considerar clases de
las capas de domain, interface, application services o infrastructure para cualquiera de los bounded contexts.

Pregunta 5 (2 p.).
Para el Behavioral Design Pattern aplicado, redacte el sustento de su solución (¿Qué lo motivó a seleccionar
ese patrón? ¿Había otras opciones? ¿Cuál es el beneficio de esta solución en términos de principios de
diseño?

Nota:
• Los diagramas solicitados pueden ser realizados mediante LucidChart u otra herramienta que soporte la
notación de UML.
• Las imágenes de diagramas que capture y coloque en el archivo de respuesta deben tener la suficiente
nitidez para visualizar y leer con claridad toda la información que contengan.

Página 7 de 11
Rúbrica de calificación

Criterio de Excelente Promedio Deficiente Calificación


Calificación

C01. Bounded Elabora de forma correcta el UML Elabora de forma parcial el UML Diagram El UML Diagram no está presente o no
Context Diagram dentro del dominio de la solución dentro del contexto de la solución para tiene relación con el caso.
Domain para representar el Aggregate de un representar el Aggregate de un Bounded
Aggregate Bounded Context. Hace un uso adecuado Context. Hace un uso adecuado de los
UML Class de los elementos del lenguaje UML, elementos del lenguaje UML, aplicando
Diagram aplicando además convenciones de además convenciones de nomenclatura
nomenclatura en inglés. Incluye en el en inglés. Incluye en el diagrama las
diagrama todas las clases e interfaces clases e interfaces más representativas,
representativas, juntos con los atributos y junto con la mayoría de los atributos y
métodos relevantes, así como las métodos relevantes. Se cumple que la
adecuadas relaciones entre los mayoría de relaciones entre los
elementos del diagrama. Especifica el elementos del diagrama son correctas.
Bounded Context seleccionado, explica y Especifica el Bounded Context
sustenta de forma correcta decisiones seleccionado, pero explica o sustenta de
sobre el diagrama. forma parcialmente correcta decisiones
sobre el diagrama.

7.0 puntos 4 puntos 0 puntos

C02. GoF Elabora de forma correcta el UML Elabora de forma parcialmente correcta el El UML Diagram que evidencia aplicación
Structural Diagram que ilustra dentro del contexto UML Diagram que ilustra dentro del del GoF Structural Design Pattern no está
Design de la solución propuesta para la contexto de la solución propuesta para presente o no tiene relación con la
Pattern aplicación de un GoF Structural Design aplicación de un GoF Structural Design solución planteada para el caso.
Pattern. Hace un uso adecuado de los Pattern, no en todos los casos se cumple
elementos del lenguaje UML, aplicando que hace un uso adecuado de los
además convenciones de nomenclatura elementos del lenguaje UML, o no en
en inglés. Incluye en el diagrama los todos los elementos se aplica
elementos suficientes para ilustrar la convenciones de nomenclatura en inglés,
aplicación del patrón. o no incluye en el diagrama los elementos
suficientes para ilustrar la aplicación del
patrón, o la redacción no evidencia de
forma clara y completa los criterios
suficientes que sustentan la decisión de
aplicar el patrón seleccionado.

4.5 puntos 2.75 puntos 0 puntos

C03. Sustento Realiza una redacción clara de los La redacción no evidencia de forma clara La redacción no existe o no tiene relación
GoF Structural criterios suficientes que sustentan la y completa los criterios suficientes que con el patrón seleccionado.
Design decisión de aplicar el GoF Structural sustentan la decisión de aplicar el GoF
Pattern Design Pattern seleccionado. Structural Design Pattern seleccionado.

2.0 puntos 1.25 punto 0 puntos

C04. GoF Elabora de forma correcta el UML Elabora de forma parcialmente correcta el El UML Diagram que evidencia aplicación
Behavioral Diagram que ilustra dentro del contexto UML Diagram que ilustra dentro del del GoF Behavioral Design Pattern no
Design de la solución propuesta para la contexto de la solución propuesta para está presente o no tiene relación con la
Pattern aplicación de un GoF Behavioral Design aplicación de un GoF Behavioral Design solución planteada para el caso.
Pattern. Hace un uso adecuado de los Pattern, no en todos los casos se cumple
elementos del lenguaje UML, aplicando que hace un uso adecuado de los
además convenciones de nomenclatura elementos del lenguaje UML, o no en
en inglés. Incluye en el diagrama los todos los elementos se aplica
elementos suficientes para ilustrar la convenciones de nomenclatura en inglés,
aplicación del patrón. o no incluye en el diagrama los elementos
suficientes para ilustrar la aplicación del
patrón.

4.5 puntos 2.75 puntos 0 puntos

C05. Sustento Realiza una redacción clara de los La redacción no evidencia de forma clara La redacción no existe o no tiene relación
GoF criterios suficientes que sustentan la y completa los criterios suficientes que con el patrón seleccionado.
Behavioral decisión de aplicar el patrón sustentan la decisión de aplicar el patrón
Design seleccionado. seleccionado.
Pattern

2.0 puntos 1.25 punto 0 puntos

Total 20.0 puntos 12.0 puntos 0 puntos

Página 8 de 11
Anexo A: GoF Patterns Cheatsheet

Página 9 de 11
Página 10 de 11
Anexo B. Referencias adicionales

https://refactoring.guru/design-patterns

https://martinfowler.com/bliki/DomainDrivenDesign.html

https://martinfowler.com/bliki/DDD_Aggregate.html

Página 11 de 11

También podría gustarte