TEMA:
Retroalimentación
PRESENTADO POR:
De La Cruz Polanco Javier
GRUPO:
7º A
MATERIA:
Arquitectura De Software
PROFESORA:
Resffa Elizabeth Fierro García
Tijuana, Baja California, 29 de febrero del 2024
1. Identificar los modelos
Modelo-vista-controlador (MVC)
Separación de Responsabilidades:
En el contexto del proyecto del zoológico, el Modelo se encargaría de
manejar los datos relacionados con los boletos de entrada, la información
sobre los animales en exhibición y cualquier otra información relevante
para la operación del zoológico.
La Vista representaría la interfaz de usuario donde los visitantes del sitio
web pueden ver el catálogo de animales, seleccionar y comprar boletos, y
acceder a otra información relacionada con el zoológico.
El Controlador manejaría las interacciones del usuario, como la solicitud
de compra de boletos, la búsqueda de animales en el catálogo y cualquier
otra acción que el usuario pueda realizar en el sitio web.
Escalabilidad:
A medida que el zoológico crece y añade más animales, exhibiciones y
servicios, el MVC permite escalar el proyecto fácilmente. Se pueden
agregar nuevos modelos para representar los datos adicionales, nuevas
vistas para mostrar la información agregada y nuevos controladores para
manejar las interacciones relacionadas con los nuevos datos y vistas, sin
afectar el resto de la aplicación.
Flexibilidad:
El MVC permite que cada componente sea desarrollado y probado de
forma independiente. Por ejemplo, si se desea agregar una nueva función
al sitio web, como la capacidad de reservar visitas guiadas o comprar
alimentos para los animales, se puede hacer sin afectar al resto de la
aplicación. El modelo existente no se verá afectado, solo se necesitarán
cambios en las vistas y controladores relevantes para esta nueva
funcionalidad.
2. Identificar los lenguajes de descripción.
Acme:
Es un lenguaje de descripción arquitectónica que se utiliza para especificar la
arquitectura de sistemas de software. Este lenguaje permite a los diseñadores describir
la estructura, los componentes, las relaciones y las dependencias entre los elementos
de un sistema, así como definir propiedades y restricciones asociadas. Acme se utiliza
comúnmente en ingeniería de software para modelar y analizar sistemas complejos,
facilitando la comprensión y comunicación de la arquitectura del sistema entre los
miembros del equipo y las partes interesadas.
Darwin (ADL):
Es un Lenguaje de Descripción de Arquitectura (ADL) utilizado para especificar y
analizar la arquitectura de sistemas distribuidos y en tiempo real. Este lenguaje
proporciona un conjunto de constructos y abstracciones para representar la estructura,
el comportamiento y las propiedades de sistemas complejos. Darwin permite a los
arquitectos de software modelar componentes, conexiones de red, protocolos de
comunicación, restricciones de tiempo y recursos, entre otros aspectos relevantes de la
arquitectura del sistema. Además, ofrece herramientas para el análisis de rendimiento,
confiabilidad y otros atributos de calidad.
UniCon:
Es un lenguaje de descripción utilizado para modelar sistemas distribuidos y
concurrentes. Este lenguaje proporciona una sintaxis y semántica para especificar la
estructura, el comportamiento y las interacciones entre los componentes de un sistema
distribuido. UniCon se utiliza en el diseño y análisis de sistemas de redes de
computadoras, sistemas de comunicación y sistemas distribuidos en general. Permite a
los ingenieros de software representar topologías de red, protocolos de comunicación,
servicios distribuidos y otros aspectos relevantes de la arquitectura de sistemas
distribuidos.
Wright:
Es un lenguaje de descripción utilizado para modelar sistemas concurrentes y
distribuidos. Este lenguaje proporciona constructos para especificar la estructura, el
comportamiento y las comunicaciones entre los componentes de un sistema distribuido.
Wright se utiliza en el diseño y análisis de sistemas de software que involucran
concurrencia, paralelismo y comunicación entre procesos o componentes. Permite a los
diseñadores de sistemas representar la sincronización de eventos, la comunicación
entre procesos, la concurrencia y otros aspectos relevantes de la arquitectura de
sistemas distribuidos.
Rapide:
Es un lenguaje de descripción utilizado para modelar sistemas distribuidos de tiempo
real. Este lenguaje proporciona una sintaxis y semántica para especificar la estructura,
el comportamiento y las propiedades temporales de sistemas distribuidos que deben
cumplir con requisitos de tiempo real. Rapide se utiliza en el diseño y análisis de
sistemas críticos en tiempo real, como sistemas de control de tráfico aéreo, sistemas
de comunicación de alta velocidad y sistemas de control industrial. Permite a los
ingenieros de software representar eventos temporales, restricciones de tiempo,
garantías de calidad de servicio y otros aspectos críticos de la arquitectura de sistemas
distribuidos en tiempo real.
C2:
Es un lenguaje de descripción utilizado para modelar sistemas concurrentes y
distribuidos. Este lenguaje proporciona constructos para especificar la estructura, el
comportamiento y las comunicaciones entre los componentes de un sistema distribuido.
C2 se utiliza en el diseño y análisis de sistemas de software que involucran
concurrencia, paralelismo y comunicación entre procesos o componentes. Permite a los
diseñadores de sistemas representar la sincronización de eventos, la comunicación
entre procesos, la concurrencia y otros aspectos relevantes de la arquitectura de
sistemas distribuidos.
Jacal:
Es un lenguaje de descripción utilizado para modelar sistemas concurrentes y
distribuidos, especialmente sistemas de control y sistemas embebidos. Este lenguaje
proporciona una sintaxis y semántica para especificar la estructura, el comportamiento
y las interacciones entre los componentes de un sistema distribuido. Jacal se utiliza en
el diseño y análisis de sistemas críticos, como sistemas de control de procesos
industriales, sistemas de control de vehículos autónomos y sistemas embebidos en
dispositivos electrónicos. Permite a los ingenieros de software representar la lógica de
control, la sincronización de eventos, las interacciones de hardware-software y otros
aspectos cruciales de la arquitectura de sistemas distribuidos y embebidos.
LEDA:
Se refiere al Lenguaje de Especificación y Descripción de Algoritmos. Este es un
lenguaje formal utilizado para describir algoritmos en términos precisos y detallados. Es
una herramienta útil en el campo de la informática teórica y la investigación de
algoritmos, ya que permite expresar algoritmos de manera clara y concisa, lo que
facilita su análisis y comprensión. LEDA proporciona una sintaxis precisa y reglas
semánticas para especificar algoritmos, lo que ayuda a los investigadores y
desarrolladores a comunicarse de manera efectiva sobre los detalles de un
algoritmo específico.
3. Comprender las primitivas de los diagramas de arquitectura.
Diagrama de arquitectura de aplicación:
Escalabilidad: El diagrama debe ser capaz de manejar un aumento en el tráfico del
sitio web, especialmente durante períodos de alta demanda, como días festivos o
temporadas turísticas. Una arquitectura escalable permite agregar más recursos según
sea necesario para garantizar un rendimiento óptimo del sitio.
Seguridad: Dado que se manejarán transacciones financieras en línea, la arquitectura
debe priorizar la seguridad de los datos del usuario y la protección contra posibles
amenazas cibernéticas. Esto implica el uso de medidas de seguridad robustas, como
cifrado de datos, autenticación de usuarios y protección contra ataques de inyección
SQL y ataques de denegación de servicio (DDoS).
Fiabilidad: Es crucial que la arquitectura garantice la disponibilidad constante del sitio
web. Los usuarios deben poder acceder y utilizar el sistema de compra de boletos y
explorar el catálogo de animales en todo momento, sin experimentar tiempos de
inactividad significativos. Esto puede lograrse mediante la implementación de
redundancia en los servidores y el uso de servicios en la nube confiables.
Integración con pasarelas de pago: Dado que se aceptarán pagos con tarjeta de
crédito o débito, la arquitectura debe integrarse sin problemas con pasarelas de pago
confiables y seguras. Esto implica asegurarse de que la comunicación entre el sitio web
y las pasarelas de pago esté protegida mediante protocolos de seguridad estándar de
la industria.
Flexibilidad y modularidad: La arquitectura debe ser lo suficientemente flexible como
para permitir la incorporación de nuevas funcionalidades en el futuro, como la
expansión del catálogo de animales o la introducción de opciones de pago adicionales.
Esto se puede lograr mediante una arquitectura modular que permita la fácil integración
de nuevos componentes sin afectar el funcionamiento general del sistema.
4. Explicar el uso de las herramientas de modelado.
Diagramas de casos de uso:
Claridad en los objetivos del usuario: El diagrama de casos de uso debe
identificar claramente los objetivos que los usuarios quieren lograr al interactuar
con el sistema. En este caso, los usuarios desean comprar boletos en línea y
explorar el catálogo de animales. Un buen diagrama de casos de uso debería
representar estos objetivos de manera clara y concisa.
Inclusión de todos los actores relevantes: Los actores del sistema, es decir,
las entidades que interactúan con él, deben estar claramente definidos en el
diagrama de casos de uso. Esto podría incluir a los clientes que compran boletos
en línea, al personal del zoológico que administra el sistema y posiblemente a
los administradores del sistema. Es importante que el diagrama de casos de uso
refleje todos los roles relevantes en el contexto del proyecto.
Flujo de interacción intuitivo: El diagrama de casos de uso debe representar
de manera clara y lógica el flujo de interacción entre los usuarios y el sistema
para lograr sus objetivos. Por ejemplo, debería mostrar cómo un usuario puede
seleccionar boletos, agregarlos al carrito de compras, realizar el pago con tarjeta
de crédito o débito, y finalmente recibir la confirmación de la compra. Del mismo
modo, debería mostrar cómo un usuario puede buscar y explorar el catálogo de
animales de manera eficiente.
Manejo de excepciones: Además de los casos de uso principales, el diagrama
también debe tener en cuenta los casos de uso alternativos y excepcionales. Por
ejemplo, cómo manejar errores durante el proceso de compra, como tarjetas de
crédito rechazadas, o cómo manejar consultas de clientes sobre información
específica de los animales en el catálogo.
Facilidad de comprensión y mantenimiento: El diagrama debe ser fácil de
entender para todos los miembros del equipo de desarrollo y también para los
stakeholders del proyecto. Además, debe ser lo suficientemente flexible como
para permitir futuras actualizaciones y mejoras en el sistema sin necesidad de
una revisión completa del diagrama
5. Relacionar los diagramas de arquitectura con el prototipo funcional
de software.