Está en la página 1de 19

1

Aplicación ATAM
Arquitectura de Software y Sistemas

Curso Arquitectura de Software y Sistemas


MSI604 
Profesor Investigador Dr. Juan Felipe Calderón
Estudiantes Matías Rojas Cabrera
Isaac Daroch Ormeño

Wednesday, 6 de September de 2023


2

Contenido
Aplicación ATAM..................................................................................................................1

Introducción.....................................................................................................................3

Identificación de aproximaciones arquitecturales..........................................................4

Árbol de Utilidades........................................................................................................13

Análisis - Riesgos / No Riesgos.......................................................................................14

Análisis - Puntos Sensibilidad.........................................................................................16

Análisis - Trade Offs.......................................................................................................18

Introducción

En la era digital, la educación se ha transformado y globalizado, especialmente en el


aprendizaje de idiomas como el inglés. Este informe se enfoca en analizar la arquitectura de
software para un sistema colaborativo de aprendizaje de pronunciación en inglés. Exploraremos
diversos enfoques arquitectónicos, como cliente-servidor, microservicios, serverless, P2P y nube,

Wednesday, 6 de September de 2023


3

teniendo en cuenta atributos de calidad cruciales como precisión, latencia, escalabilidad,


privacidad y disponibilidad utilizando la metodología ATAM.

El aprendizaje de idiomas se ha vuelto más interactivo y colaborativo, permitiendo a


estudiantes de diferentes lugares trabajar juntos en el perfeccionamiento de sus habilidades
lingüísticas. Cada enfoque arquitectónico ofrece ventajas y desventajas únicas. Por ejemplo, la
arquitectura cliente-servidor permite una centralización eficaz de funciones críticas, mientras que
los microservicios brindan flexibilidad y escalabilidad individual de componentes.

La elección de la arquitectura adecuada dependerá de factores como los requisitos del


proyecto, las capacidades tecnológicas y las prioridades específicas. En este contexto, los trade-
offs son fundamentales, como el equilibrio entre precisión y latencia en el reconocimiento de voz
o entre escalabilidad y privacidad de datos.

Este informe también aborda posibles riesgos, como la dependencia del reconocimiento
de voz, la latencia en arquitecturas distribuidas, la conectividad y la seguridad de los datos. Por
otro lado, destacamos aspectos positivos como la adaptabilidad, disponibilidad, escalabilidad y
rapidez de implementación que pueden beneficiar este sistema educativo.

Identificación de aproximaciones arquitecturales


 Arquitectura Cliente-Servidor:

Utiliza una arquitectura cliente-servidor donde los dispositivos móviles de los estudiantes
actúan como clientes y se comunican con un servidor central, el cual se encarga del
procesamiento de reconocimiento de voz y almacena las secuencias de números (Correctos e

Wednesday, 6 de September de 2023


4

incorrectos), permite una distribución eficiente de recursos disponibles y actualizaciones en el


servidor de manera ágil.

Un aspecto destacado de esta arquitectura es que permite que los dispositivos móviles
de los estudiantes sean más ligeros en términos de recursos, lo que facilita la interacción del
usuario. Mientras los usuarios se concentran en la parte interactiva de la aplicación. Esto
permite que pueden utilizar dispositivos móviles más simples sin sacrificar la calidad del
aprendizaje.

Ventajas:

1. Centralización de Funcionalidades: Al utilizar un servidor centralizado, es posible


controlar y gestionar de manera efectiva funciones críticas como el reconocimiento de
voz y el almacenamiento de secuencias de números.
2. Escalabilidad: entrega la posibilidad escalar verticalmente el servidor para manejar un
mayor número de peticiones y recursos necesarios para el correcto funcionamiento del
sistema.
3. Coordinación Fácil: La centralización facilita la coordinación entre estudiantes,
almacenamiento de secuencias correctas y facilita la presentación de opciones de
secuencias para votación.
4. Actualizaciones Simplificadas: Las actualizaciones de la lógica de reconocimiento de voz
o de otras características se pueden implementar en el servidor central, desplegándose
automáticamente para usuario (cliente) que accede al sistema.

Desventajas:

1. Dependencia del Servidor: Si el servidor experimenta fallas o está inaccesible, la


funcionalidad y disponibilidad podría verse afectada.

Wednesday, 6 de September de 2023


5

2. Latencia: La latencia puede ser un problema si las comunicaciones entre el cliente y el


servidor no son óptimas.

 Arquitectura Basada en Microservicios:

Divide la aplicación en componentes autónomos llamados microservicios, cada


microservicio maneja una función específica, como reconocimiento de voz, almacenamiento de
secuencias, gestión de interacciones, etc. Esto facilita la escalabilidad y el mantenimiento
independiente de los componentes permitiendo implementar tecnologías específicas para cada
microservicio de forma independiente.

Ventajas:

1. Desacoplamiento y Mantenibilidad: Los microservicios están separados y desacoplados,


lo que facilita la modificación y el mantenimiento de partes específicas sin afectar a todo
el sistema.
2. Escalabilidad Individual: Los microservicios se pueden escalar independientemente
según las demandas de cada componente, lo que optimiza el uso de recursos y mejora
la escalabilidad horizontal.
3. Tecnologías y Lenguajes Diversos: Cada microservicio puede estar diseñado utilizando
tecnologías y lenguajes apropiados para su función, permitiendo utilizar lo mejor de
cada tecnología.
4. Desarrollo Ágil: Los equipos pequeños pueden trabajar en paralelo en diferentes
microservicios, lo que acelera el desarrollo y permite la entrega continua.
5. Facilita la Innovación: La separación en microservicios permite la adopción de
tecnologías emergentes sin afectar el sistema en su conjunto.
6. Actualizaciones Sin Interrupciones: Se pueden actualizar y desplegar microservicios
individuales sin necesidad de apagar todo el sistema, minimizando el tiempo de
inactividad.
7. Escalabilidad y Disponibilidad: La resiliencia se logra al poder distribuir y replicar
microservicios en diferentes nodos, lo que mejora la disponibilidad.

Wednesday, 6 de September de 2023


6

Desventajas:

1. Complejidad en la Gestión: Coordinar múltiples microservicios puede ser complejo,


especialmente a medida que el sistema crece. Requiere una sólida gestión y
orquestación.
2. Comunicación Entre Microservicios: La comunicación entre microservicios a través de
redes puede tener latencia y debe ser cuidadosamente diseñada para evitar cuellos de
botella.
3. Testing y Depuración: Probar e identificar errores en un entorno distribuido puede ser
más complicado, ya que las interacciones entre microservicios deben ser consideradas.
4. Costos Iniciales: La implementación inicial de la arquitectura puede requerir más
esfuerzo debido a la necesidad de diseñar interfaces claras y gestionar la comunicación.
5. Posible Exceso de Fragmentación: Si se crea un microservicio para cada pequeña
funcionalidad, puede haber una proliferación excesiva de microservicios que dificulta la
gestión.
6. Latencia en Comunicación: La latencia de la red entre microservicios puede afectar el
rendimiento en comparación con un sistema monolítico.

 Arquitectura Serverless:

Utiliza servicios en la nube para realizar tareas específicas sin administrar servidores, los
microservicios pueden ejecutarse como funciones en respuesta a eventos (por ejemplo,

Wednesday, 6 de September de 2023


7

grabación de audio, reconocimiento de voz, etc.), escala automáticamente según la demanda y


optimiza el consumo de recursos.

Ventajas:

1. Escalabilidad Automática: Los proveedores de servicios en la nube manejan la


escalabilidad automáticamente, aumentando o disminuyendo los recursos según la
demanda.
2. Costos Eficientes: Pagas solo por el tiempo que se ejecutan tus funciones, lo que puede
resultar en costos más bajos en comparación con mantener servidores continuamente.
3. Gestión Simplificada: No es necesario administrar la infraestructura subyacente, lo que
reduce la carga de mantenimiento y permite a los equipos centrarse en el desarrollo.
4. Rápida Implementación: Puedes implementar y desplegar funciones rápidamente, lo
que agiliza el ciclo de desarrollo.
5. Enfoque en la Lógica del Negocio: Los desarrolladores pueden concentrarse en la lógica
del negocio en lugar de preocuparse por la administración del servidor.

Desventajas:

1. Limitaciones de Tiempo de Ejecución: Las funciones serverless tienen un tiempo máximo


de ejecución, lo que puede ser una limitación para tareas intensivas en tiempo o
procesamiento.
2. Latencia: La activación de una función serverless puede generar una breve latencia en
comparación con un servidor en funcionamiento constante.
3. Complejidad de Pruebas: Las pruebas pueden ser más desafiantes debido a la naturaleza
distribuida y efímera de las funciones.
4. Dependencia del Proveedor: La arquitectura serverless está vinculada al proveedor de la
nube elegido, lo que puede dificultar la portabilidad entre plataformas.
5. Costo: En escenarios donde parte del código no está optimizado puede ocurrir una
sobreutilización de los recursos disponibles generando costos excesivos para el
proyecto.

Wednesday, 6 de September de 2023


8

 Arquitectura Peer-to-Peer (P2P):

Permite que los dispositivos de los estudiantes se comuniquen directamente entre sí, sin un
servidor central, cada dispositivo realiza tareas como reconocimiento de voz y almacenamiento
de secuencias, sin embargo requiere una sincronización efectiva y manejo de conflictos entre
los dispositivos, su escenario optimo se da en casos donde la conectividad puede ser
intermitente.

Ventajas:

1. Descentralización: No hay un punto único de falla, ya que cada nodo puede funcionar de
manera independiente y proporcionar recursos o servicios.
2. Escalabilidad Natural: A medida que se agregan más nodos a la red, la capacidad general
y la escalabilidad aumentan sin la necesidad de una infraestructura centralizada.
3. Menor Costo de Infraestructura: No se requieren servidores dedicados, lo que puede
reducir los costos operativos y de mantenimiento.
4. Autonomía de Nodos: Cada nodo puede tomar decisiones autónomamente y contribuir
al sistema sin depender de un servidor central.
5. Distribución Eficiente de Contenido: La arquitectura P2P es efectiva para compartir
contenido en situaciones de alta demanda, ya que cada nodo contribuye al tráfico.

Desventajas:

1. Gestión de Red Complicada: Coordinar y mantener la red P2P puede ser complejo,
especialmente a medida que crece en tamaño y complejidad.
2. Calidad Variable del Servicio: La disponibilidad y calidad del servicio pueden depender
de la capacidad y la cooperación de los nodos individuales.
3. Seguridad y Privacidad: La seguridad puede ser un desafío ya que los nodos pueden no
ser de confianza y compartir información sensible podría ser riesgoso.
4. Requerimientos de Ancho de Banda: En algunos casos, los nodos pueden requerir un
alto ancho de banda para compartir y recibir contenido, lo que puede afectar la red.
5. Desafíos de Enrutamiento: En redes P2P grandes, el enrutamiento eficiente puede ser
complicado debido a la falta de una autoridad central.

Wednesday, 6 de September de 2023


9

 Arquitectura Distribuida en la Nube:

Utiliza servicios en la nube para proporcionar la infraestructura necesaria, los componentes


pueden ser distribuidos en múltiples regiones geográficas para mejorar la latencia.

Aprovecha los servicios gestionados para reconocimiento de voz y almacenamiento de datos,


requiere una fuerte planificación de la arquitectura y una conectividad confiable a la nube.

En algunos casos puede ser considerablemente más costoso en comparación con otras
arquitecturas.

Ventajas:

1. Elasticidad y Escalabilidad: Puedes escalar recursos y capacidad de manera dinámica


según la demanda, lo que optimiza el rendimiento y ahorra costos.
2. Disponibilidad Mejorada: Los servicios en la nube generalmente ofrecen acuerdos de
nivel de servicio (SLA) para garantizar alta disponibilidad y redundancia.
3. Facilidad de Implementación: La infraestructura y servicios en la nube pueden
implementarse rápidamente, reduciendo el tiempo de comercialización.
4. Flexibilidad Tecnológica: Permite acceder a una variedad de servicios y tecnologías que
se adapten a las necesidades del proyecto.
5. Gestión Simplificada: La nube se encarga de tareas de gestión, como actualizaciones,
parches y mantenimiento, liberando a los equipos para enfocarse en el desarrollo.

Desventajas:

1. Latencia: La comunicación entre componentes distribuidos en la nube puede generar


latencia, lo que podría afectar la velocidad de respuesta.

Wednesday, 6 de September de 2023


10

2. Dependencia del Proveedor: Las decisiones arquitectónicas pueden estar influenciadas


por las limitaciones y características específicas del proveedor de la nube.
3. Costos Potenciales: Aunque la nube puede ser eficiente en términos de costos, si no se
gestionan adecuadamente, los costos pueden aumentar (poca optimización, mal diseño
de la solución).
4. Seguridad y Privacidad: El almacenamiento y procesamiento de datos en la nube
plantean preocupaciones de seguridad y privacidad que deben ser abordadas.
5. Desafíos de Integración: Integrar sistemas en la nube con sistemas locales o heredados
puede requerir esfuerzo adicional.
6. Complejidad de Facturación: Entender y controlar los costos de los servicios en la nube
puede ser complicado debido a las múltiples variables involucradas.

 Arquitectura Híbrida:

Wednesday, 6 de September de 2023


11

Combina características de varias aproximaciones arquitecturales según las necesidades, puede


utilizar la nube para el procesamiento intensivo, mientras que los dispositivos móviles
gestionan la interacción del usuario.

Permite maximizar la eficiencia y flexibilidad según los recursos disponibles.

Ventajas:

1. Flexibilidad: La arquitectura híbrida permite elegir la mejor solución para cada


componente de acuerdo a los requerimientos, en lugar de depender de un solo
enfoque.

2. Optimización de Recursos: se utiliza la escalabilidad de la nube para componentes que


tienen fluctuaciones de demanda, mientras que mantienes el control local en otros.

3. Mitigación de Riesgos: Reducción del riesgo de depender de un único punto de falla o


proveedor.

4. Adaptabilidad: la arquitectura se adapta a medida que las necesidades y condiciones


cambian, manteniendo un equilibrio entre costos y rendimiento.

5. Uso de Tecnologías Específicas: es posible utilizar tecnologías emergentes o


especializadas en áreas específicas sin sacrificar la estabilidad en otras partes.

Desventajas:

1. Complejidad: La integración de diferentes componentes y tecnologías puede aumentar


la complejidad de la arquitectura y su gestión.

2. Desafíos de Coordinación: Coordinar y sincronizar los diferentes elementos de la


arquitectura puede ser complicado y requerir una planificación sólida.

3. Mayor Costo de Gestión: Mantener una infraestructura híbrida puede resultar en un


mayor costo de administración y operación.

4. Dependencia de Conectividad: La arquitectura híbrida depende de la conectividad entre


diferentes componentes, lo que puede generar problemas si la conexión falla.

Wednesday, 6 de September de 2023


12

5. Mayor Requisito de Expertise: Puede ser necesario contar con especialistas en


diferentes tecnologías y en la integración de sistemas híbridos.

En resumen, cada una de las arquitecturas mencionadas (Cliente-Servidor, Microservicios,


Serverless, P2P y Distribuida en la Nube) presenta ventajas y desventajas específicas. La
elección de la arquitectura adecuada dependerá de factores como los requisitos del proyecto,
las capacidades tecnológicas disponibles, las prioridades establecidas y, en algunos casos,
consideraciones económicas.

Por ejemplo, la arquitectura Cliente-Servidor destaca por su capacidad de control y


coordinación centralizados, mientras que los Microservicios se destacan por ofrecer flexibilidad
y escalabilidad. El enfoque Serverless simplifica la administración, el P2P promueve la
descentralización y la arquitectura Distribuida en la Nube brinda elasticidad.

La elección de la arquitectura óptima debe basarse en una evaluación cuidadosa de los


beneficios y desafíos inherentes a cada enfoque, con el objetivo de diseñar una solución
arquitectónica sólida que se alinee con los objetivos y necesidades específicas del proyecto.

Árbol de Utilidades
En el
contexto de
un árbol de
atributos
de utilidad,

los
atributos
de utilidad
se refieren
a

Wednesday, 6 de September de 2023


13

características o cualidades deseables de un sistema o solución que contribuyen a su utilidad o


valor para los usuarios y partes interesadas. A continuación, se presentan una lista de posibles
atributos de utilidad que pueden ser relevantes para el presente escenario. aprendizaje
colaborativo de pronunciación en inglés:

Análisis - Riesgos / No Riesgos


Riesgos:

1. Dependencia de Reconocimiento de Voz:

Wednesday, 6 de September de 2023


14

Si el sistema de reconocimiento de voz falla o no es preciso, podría afectar la


retroalimentación y la evaluación de pronunciación, comprometiendo la efectividad del
aprendizaje.
2. Latencia en Arquitecturas: En arquitecturas P2P o distribuidas en la nube, la latencia en
la comunicación entre nodos podría afectar la respuesta en tiempo real del sistema,
disminuyendo la calidad de la experiencia de los usuarios, por ejemplo, en el
reconocimiento o en los votos.
En el caso de arquitecturas distribuidas, la gestión y coordinación de múltiples nodos,
como P2P, puede llevar a problemas de sincronización, errores de comunicación y
dificultades en la gestión.
3. Dependencia de la Conectividad: En arquitecturas distribuidas, la dependencia de la
conectividad a internet puede ser un riesgo si los dispositivos no tienen acceso confiable
y continuado, o bien si la conectividad es intermitente puede provocar errores en la
aplicación.
4. Privacidad y Seguridad: Al utilizar sistemas remotos y compartir datos entre dispositivos
o servicios, existe el riesgo de comprometer la privacidad y seguridad de los datos de los
usuarios.

No Riesgos:

Wednesday, 6 de September de 2023


15

1. Adaptabilidad en Arquitecturas Distribuidas: Las arquitecturas distribuidas, como la P2P


o distribuida en la nube, pueden brindar mayor adaptabilidad para escenarios en los que
la conectividad puede ser intermitente o para satisfacer demandas cambiantes.
2. Disponibilidad Mejorada: La arquitectura Cliente-Servidor puede proporcionar alta
disponibilidad y estabilidad, lo que es beneficioso para actividades como interactivas
como las que requieren una aplicación de este tipo.
3. Escalabilidad en Microservicios y Serverless: Las arquitecturas de microservicios y
serverless permiten escalar individualmente componentes específicos según la
demanda, lo que mejora el rendimiento y evita recursos infrautilizados.
4. Rápida Implementación: Las arquitecturas cloud, serverless y distribuida en la nube,
pueden facilitar la implementación y reducir los tiempos.
Por su parte la arquitectura P2P promueve la colaboración efectiva entre estudiantes,
incluso en ubicaciones físicas diferentes, lo que puede mejorar la experiencia de
aprendizaje.

Wednesday, 6 de September de 2023


16

Análisis - Puntos Sensibilidad


1. Reconocimiento de Voz Preciso: La sensibilidad del sistema al rendimiento del
reconocimiento de voz es un punto crítico. Si el reconocimiento es inexacto, la calidad
de la retroalimentación de pronunciación se verá afectada. Un atributo de calidad
relevante aquí sería la precisión del reconocimiento de voz.

2. Latencia de Respuesta: En un sistema de aprendizaje en tiempo real, la latencia en la


respuesta a las pronunciaciones de los estudiantes puede ser crítica para una
experiencia efectiva. La latencia sería un atributo de calidad a evaluar.

3. Disponibilidad del Sistema: Dado que el sistema implica interacciones de múltiples


usuarios, la disponibilidad del sistema es importante. Si el sistema no está disponible,
los estudiantes no podrán practicar ni recibir retroalimentación. La disponibilidad es un
atributo clave a considerar.

4. Escalabilidad: La capacidad del sistema para manejar múltiples usuarios y realizar tareas
de reconocimiento de voz y procesamiento en tiempo real es importante. Evaluar cómo
el sistema escala a medida que más usuarios lo utilizan sería crucial.

5. Privacidad de los Datos: Dado que el sistema implica grabación de pronunciaciones y


posiblemente almacenamiento en la nube, la privacidad de los datos es sensible. Evaluar
cómo se manejan y protegen los datos personales y las grabaciones de los estudiantes
sería relevante.

6. Sincronización en Arquitectura P2P: Si se utiliza una arquitectura P2P, la sincronización


y coordinación de las actividades entre los estudiantes podría ser un punto de
sensibilidad. Evaluar cómo se garantiza la coherencia y la colaboración en este entorno
es importante.

7. Evaluación y Abordaje de la estabilidad del servicio: Si se utiliza una arquitectura


distribuida en la nube, evaluar cómo se abordan la latencia y la escalabilidad en la
comunicación entre dispositivos y servidores remotos sería relevante.

Wednesday, 6 de September de 2023


17

8. Interoperabilidad y Mantenibilidad: Dado que el sistema podría expandirse con otras


actividades, evaluar la facilidad de integrar nuevas funcionalidades y mantener el
sistema a largo plazo es importante.

9. Calidad de Sonido: La calidad de los micrófonos y altavoces de los dispositivos de los


estudiantes podría afectar la precisión del reconocimiento de voz y la experiencia de
aprendizaje. Evaluar la calidad del sonido y su impacto en la funcionalidad.

10. Rendimiento en Condiciones de Conectividad Baja: Si el sistema se utiliza en lugares


con conectividad intermitente o baja, evaluar cómo se garantiza la funcionalidad y la
retroalimentación en estas condiciones es relevante.

Wednesday, 6 de September de 2023


18

Análisis - Trade Offs


El análisis de trade-offs en el contexto de la metodología ATAM implica la identificación y
evaluación de compensaciones o intercambios entre atributos de calidad en una arquitectura.

A continuación, se presenta un análisis de trade-offs basado en los atributos de calidad:

1. Reconocimiento de Voz Preciso vs. Latencia de Respuesta:

 Trade-off: Mejorar la precisión del reconocimiento de voz puede aumentar la


latencia de respuesta, ya que el sistema podría requerir más tiempo para
procesar y analizar las pronunciaciones.

 Decisión: El equilibrio entre precisión y latencia depende de las prioridades del


sistema. Si la retroalimentación precisa es crucial, se podría aceptar una latencia
ligeramente mayor.

2. Escalabilidad vs. Privacidad de Datos:

 Trade-off: Almacenar y procesar datos en la nube para escalabilidad puede


plantear preocupaciones sobre la privacidad y seguridad de los datos de los
estudiantes.

 Decisión: Se debe encontrar un equilibrio entre escalabilidad y privacidad.


Implementar medidas sólidas de seguridad y cifrado podría mitigar los riesgos.

3. Latencia en la Nube vs. Latencia en Dispositivos Locales:

 Trade-off: La arquitectura en la nube puede introducir latencia en la


comunicación entre dispositivos y servidores remotos, mientras que una
arquitectura local puede minimizar la latencia pero podría sacrificar
escalabilidad.

 Decisión: La elección depende de si la latencia o la escalabilidad es más crítica.


Un enfoque híbrido podría minimizar estos trade-offs.

Wednesday, 6 de September de 2023


19

4. Disponibilidad vs. Complejidad de Mantenimiento:

 Trade-off: Lograr alta disponibilidad puede requerir redundancia y replicación, lo


que aumenta la complejidad de mantenimiento.

 Decisión: La complejidad puede justificarse si la disponibilidad es esencial. Sin


embargo, se debe gestionar adecuadamente para no sobrecargar el
mantenimiento.

5. Calidad de Sonido vs. Costo de Dispositivos:

 Trade-off: Utilizar dispositivos con mayor calidad de sonido podría aumentar los
costos de los dispositivos para los estudiantes.

 Decisión: El equilibrio entre calidad de sonido y costo depende de cuánto afecta


la calidad de la pronunciación y si los estudiantes pueden afrontar costos
adicionales.

6. Privacidad de Datos vs. Interoperabilidad:

 Trade-off: Implementar medidas sólidas de privacidad puede afectar la


interoperabilidad con otros sistemas y servicios.

 Decisión: La privacidad es crucial, pero se debe encontrar una forma de


mantener la interoperabilidad sin comprometer la seguridad.

El análisis de trade-offs ayuda a tomar decisiones informadas al evaluar las compensaciones


entre atributos de calidad y a encontrar soluciones que equilibren estas compensaciones de
manera óptima. Cada trade-off debe ser evaluado en el contexto del proyecto y los objetivos
buscados.

Wednesday, 6 de September de 2023

También podría gustarte