Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Aplicación ATAM
Arquitectura de Software y Sistemas
Contenido
Aplicación ATAM...............................................................................................................1
Introducción.....................................................................................................................3
Árbol de Utilidades..........................................................................................................9
Diagrama Arquitectónico...............................................................................................15
Arquitectura Propuesta..................................................................................................18
Presupuesto....................................................................................................................19
Estilo Arquitectónico:....................................................................................................20
Introducción
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 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.
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, 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.
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.
Arquitectura Híbrida:
Árbol de Utilidades
En el contexto de un árbol de atributos de utilidad, los atributos de utilidad se refieren a
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:
Diagrama Arquitectónico
Para la implementación del siguiente modelo arquitectónico se utilizó AWS, para lo cual fueron
considerados los siguientes componentes:
Este componente es esencial ya que representa la red virtual privada que alberga
todo el sistema. En un entorno como la nube, se utiliza una VPC para aislar y proteger los
recursos y datos del sistema de acceso no autorizado desde Internet. Los servidores
(Server 1 y Server 2) operan dentro de esta VPC, lo que garantiza un nivel adicional de
seguridad y control.
Estas instancias EC2 ejecutan la aplicación del servidor, proporcionando una API
para el cliente y gestionan la lógica de la aplicación para que los estudiantes se
comuniquen. Además de gestionar aspectos clave, como el procesamiento y el
reconocimiento de voz, la interacción con los estudiantes, etc.
5. S3 (Storage)
6. API Gateway
El API Gateway sirve como una interfaz que permite a las instancias EC2 acceder a
servicios en la nube, como el reconocimiento de voz y el almacenamiento en S3. Actúa como
un punto de entrada para solicitudes externas y redirige estas solicitudes a los servicios
correspondientes.
7. Speech-to-Text Service
Este componente utiliza un servicio de reconocimiento de voz en la nube para validar las
pronunciaciones de los estudiantes. Esto implica convertir el habla en texto y compararlo con las
pronunciaciones esperadas para proporcionar retroalimentación precisa.
Se considera además al final del diagrama una instancia de replicación de datos para la
generación de información sin afectar instancias de producción
Arquitectura Propuesta
Presupuesto
Estilo Arquitectónico:
Para el desarrollo de esta aplicación nos basaremos en el estilo de capas por los siguientes
motivos:
2. Modularidad: Cada capa se puede desarrollar y mantener por separado. Esto facilita la
adición de nuevas características con mayores o menores complejidades o bien la mejora
de partes específicas de la aplicación sin afectar a otras áreas o módulos de la aplicación.
Por ejemplo, podrías mejorar el algoritmo de reconocimiento de voz sin tocar la lógica
del juego, o bien incluir una mejora que consideré un nuevo lenguaje no sólo el inglés.
Por ejemplo, el servicio de reconocimiento de voz o los votos, podrían ser útiles en otras
aplicaciones de aprendizaje de idiomas.
8. Pruebas: Cada capa se puede probar por separado, lo que simplifica las pruebas unitarias
y de integración. Puedes garantizar que cada componente funcione correctamente antes
de integrarlo en la aplicación completa.
Trazabilidad
La trazabilidad de los atributos de calidad en el contexto de ATAM es un proceso
fundamental para evaluar cómo la arquitectura propuesta aborda y cumple con estos atributos. A
continuación, se analizarán los atributos de calidad levantados anteriormente:
El sistema debe reconocer con una precisión del 95% o superior la pronunciación en
inglés de los estudiantes, esto se puede abordar con un servicio de reconocimiento de voz
de alta precisión en una de las capas de la arquitectura.
Latencia de Respuesta:
Rendimiento
o Tiempo de Respuesta:
1. Definición: El tiempo que tarda la aplicación en responder a las solicitudes
del usuario.
2. Cálculo: Mide el tiempo transcurrido desde que se envía una solicitud
hasta que se recibe una respuesta. Calcula el tiempo promedio de respuesta
en milisegundos.
o Tasa de Transacciones por Segundo:
1. Definición: Cuantifica la cantidad de transacciones que la aplicación
puede procesar en un segundo.
2. Cálculo: Registra la cantidad de transacciones completadas en un período
específico, generalmente un segundo.
Disponibilidad:
o Tiempo de Inactividad:
1. Definición: El tiempo total durante el cual la aplicación no está disponible.
2. Cálculo: Registra el tiempo en que la aplicación no está en funcionamiento
debido a fallos o mantenimiento programado.
o Porcentaje de Disponibilidad:
1. Definición: El porcentaje de tiempo en el que la aplicación está disponible
en comparación con el tiempo total.
2. Cálculo: Divide el tiempo de disponibilidad entre el tiempo total y
multiplica por 100.
Seguridad:
o Vulnerabilidades Detectadas:
1. Definición: El número de vulnerabilidades de seguridad identificadas y
corregidas en la aplicación.
2. Cálculo: Lleva un registro de las vulnerabilidades identificadas y su estado
(corregidas o no corregidas).
o Tasa de Incidencias de Seguridad:
1. Definición: La cantidad de incidentes de seguridad reportados o
detectados en la aplicación.
2. Cálculo: Registra la cantidad de incidentes de seguridad y su gravedad.
Confiabilidad:
o Tasa de Fallos:
1. Definición: La proporción de veces que la aplicación experimenta fallos
en relación con el número total de operaciones.
2. Cálculo: Divide el número de fallos por el número total de operaciones.
o Tiempo Promedio entre Fallos:
1. Definición: El tiempo promedio que transcurre entre fallos importantes del
sistema.
2. Cálculo: Suma el tiempo entre fallos y divide por el número de fallos.
Es importante realizar un seguimiento continuo y medir estas métricas para garantizar que
la aplicación cumpla con los estándares de calidad y para identificar áreas que requieran mejoras.