Diseño de Arquitectura Software

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes afirmaciones describe con mayor precisión cómo se deben utilizar los casos de uso en la identificación de drivers funcionales para la arquitectura de software?

  • Los casos de uso facilitan la identificación de los requisitos funcionales al describir escenarios en los que los usuarios interactúan con los sistemas para lograr un objetivo. (correct)
  • Los casos de uso se aplican exclusivamente para identificar los roles de los administradores de la base de datos.
  • Los casos de uso se emplean para determinar la infraestructura de hardware necesaria.
  • Los casos de uso definen las métricas de rendimiento del sistema, como la latencia y el rendimiento, sin considerar las interacciones del usuario.

En el contexto del diseño de arquitecturas de software, considere una tienda en línea que requiere alta disponibilidad y baja latencia. ¿Cuál de las siguientes estrategias representa un trade-off adecuado y bien justificado entre estos atributos de calidad?

  • Aumentar la latencia en las búsquedas de productos mediante la indexación en tiempo real para garantizar la consistencia de los datos en todo momento.
  • Priorizar la réplica síncrona de datos en múltiples centros de datos con alta consistencia, a expensas del tiempo de respuesta en las operaciones de escritura.
  • Optimizar la disponibilidad mediante el almacenamiento en caché agresivo de datos estáticos y permitir eventual consistencia en actualizaciones poco frecuentes de inventario. (correct)
  • Implementar una autenticación multifactorial compleja que aumente la seguridad pero también la latencia en el inicio de sesión.

En la arquitectura de software, ¿cuál es la implicación más crítica de identificar los drivers de restricciones, en comparación con los drivers funcionales y de atributos de calidad?

  • Las restricciones son maleables y pueden ser ignoradas si entran en conflicto con los objetivos de rendimiento.
  • Las restricciones son siempre menos importantes que los drivers funcionales y de calidad.
  • Todas las restricciones, a diferencia de los drivers funcionales y de calidad, deben ser consideradas drivers de la arquitectura sin excepción. (correct)
  • Las restricciones deben ser negociadas con los _stakeholders_ para mitigar su impacto restrictivo.

¿Cuál de las siguientes opciones describe con mayor precisión el impacto de los atributos de calidad no factibles identificados durante la fase inicial de diseño de la arquitectura de software?

<p>Mitigar promesas irrealizables al cliente y gestionar expectativas de manera efectiva. (D)</p> Signup and view all the answers

Considere el diseño de una API RESTful para un sistema de gestión de inventario. ¿Cuál de las siguientes URIs se adhiere mejor a las convenciones de REST para representar una operación que actualiza parcialmente el stock de un producto específico identificado por su ID?

<p><code>PATCH /productos/{producto-id}</code> (B)</p> Signup and view all the answers

En el contexto de la arquitectura de software, ¿cuál es la principal ventaja de utilizar modelos en las primeras etapas del ciclo de vida del desarrollo?

<p>Facilitar la detección temprana de errores y omisiones en el diseño. (C)</p> Signup and view all the answers

¿Qué criterio fundamental debe aplicarse al definir los atributos de calidad en la arquitectura de software para asegurar su correcta implementación y verificación?

<p>Deben ser medibles y 'testeables' para poder verificar su cumplimiento. (D)</p> Signup and view all the answers

¿En qué consiste la encapsulación en APIs y cómo beneficia el mantenimiento y evolución del sistema?

<p>Permite ocultar los detalles de la implementación interna de un sistema, de tal manera que los cambios internos no afecten a las APIs. (C)</p> Signup and view all the answers

¿Qué rol desempeñan los diagramas de secuencia en el contexto del diseño de APIs y cómo ayudan a definir una arquitectura de software robusta?

<p>Representan gráficamente las interacciones paso a paso entre el sistema y los usuarios, facilitando el diseño de las APIs. (A)</p> Signup and view all the answers

En el contexto de las APIs RESTful, ¿cuál es la diferencia fundamental entre los métodos PUT y POST, y en qué escenarios se debe utilizar cada uno?

<p><code>PUT</code> reemplaza un recurso completo, mientras que <code>POST</code> se utiliza para crear un nuevo recurso o realizar acciones. (C)</p> Signup and view all the answers

¿Cuál es la importancia de la idempotencia en las operaciones de una API y qué implicaciones tiene para la arquitectura del sistema en términos de fiabilidad y gestión de errores?

<p>La idempotencia garantiza que una operación puede ser repetida sin efectos secundarios, mejorando la fiabilidad y simplificando la gestión de errores. (D)</p> Signup and view all the answers

¿Qué consideraciones clave deberían guiar la elección entre una API pública, privada o de socios, y cómo afecta esta decisión a la arquitectura general del software y la estrategia de negocio?

<p>El nivel de control requerido sobre el acceso a la API y la alineación con la estrategia de negocio. (A)</p> Signup and view all the answers

¿Cuál de las siguientes representa una definición precisa de 'modelo' en el contexto del diseño de arquitectura de software?

<p>Una representación simplificada de un sistema que se enfoca en aspectos específicos. (C)</p> Signup and view all the answers

Si una organización está optimizando su arquitectura basada en microservicios para mejorar la resiliencia, ¿qué estrategia de diseño de API podría mitigar mejor los fallos en cascada cuando un servicio experimenta una interrupción?

<p>Adoptar un patrón de 'circuit breaker' en las APIs para detener el envío de peticiones a servicios no disponibles. (A)</p> Signup and view all the answers

¿Qué rol juega la 'Especificación de Requisitos de Software' (SRS) en el proceso de identificación de los 'drivers' de la arquitectura?

<p>El SRS describe la funcionalidad, atributos de calidad y restricciones que guían la construcción del sistema. (D)</p> Signup and view all the answers

Al desarrollar la arquitectura de software para una plataforma de comercio electrónico con alta demanda durante eventos especiales (por ejemplo, Black Friday), ¿qué atributo de calidad debe recibir la máxima prioridad y cómo debería influir en las decisiones arquitectónicas?

<p>La escalabilidad, diseñando una arquitectura que pueda manejar aumentos masivos en el tráfico. (C)</p> Signup and view all the answers

¿Qué impacto tiene la granularidad de los modelos en la arquitectura de software y cómo influye en la comunicación entre los stakeholders?

<p>La granularidad debe ser adaptada al <em>stakeholder</em>, proporcionando detalles relevantes sin abrumar con información innecesaria. (A)</p> Signup and view all the answers

¿Cuál de las siguientes describe con mayor precisión la relación entre la arquitectura de software y los modelos utilizados en su desarrollo?

<p>La arquitectura de <em>software</em> es un conjunto de modelos relacionados que representan diferentes niveles de abstracción. (A)</p> Signup and view all the answers

¿Qué implicaciones tiene el diseño asíncrono de APIs para la experiencia del usuario y la arquitectura del sistema en aplicaciones que requieren procesamiento intensivo?

<p>Mejora la capacidad de respuesta del cliente y gestiona la carga del servidor de manera eficiente. (B)</p> Signup and view all the answers

En el contexto de la definición de APIs, ¿qué significa que un sistema sea visto como un 'proveedor de recursos' en una arquitectura RESTful y cómo influye esto en el diseño de las URIs?

<p>El sistema expone datos y funcionalidades como entidades a través de URIs bien definidas. (A)</p> Signup and view all the answers

Durante la fase de diseño de la arquitectura de una tienda en línea, se identifican varios atributos de calidad conflictivos. ¿Cuál de los siguientes escenarios ejemplifica mejor un 'trade-off' y cómo debería gestionarse?

<p>Aceptar que no se pueden cumplir todos los atributos y buscar un equilibrio que maximice el valor general del sistema. (C)</p> Signup and view all the answers

¿Cuál es la principal razón por la que los principales drivers funcionales son los mismos tanto para una tienda de barrio como para Amazon?

<p>Porque ambas tiendas tienen el mismo propósito: permitir comprar y vender productos por internet. (B)</p> Signup and view all the answers

¿Cuál de los siguientes NO es considerado un tipo de API?

<p>API de pago. (C)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor cómo los modelos de arquitectura de software contribuyen a la comunicación y el entendimiento entre los stakeholders con diferentes niveles de experiencia técnica?

<p>Los modelos facilitan una representación visual y simplificada del sistema, permitiendo a los <em>stakeholders</em> comprender aspectos clave sin necesidad de conocimientos técnicos profundos. (A)</p> Signup and view all the answers

En relación con el desarrollo de arquitecturas de software, ¿cuál de las siguientes situaciones describe un escenario donde la aplicación de un modelo basado en la jerarquía de utilidad (Utility Tree) sería más beneficiosa?

<p>Para priorizar y balancear atributos de calidad conflictivos, como seguridad y usabilidad. (B)</p> Signup and view all the answers

Cuando se evalúan los atributos de calidad de una arquitectura de software, ¿qué distinción fundamental existe entre 'latencia' y 'throughput', y cómo impactan estas métricas en la experiencia del usuario?

<p>La latencia se refiere al tiempo de respuesta, mientras que el throughput mide la cantidad de trabajo realizado en un período. (B)</p> Signup and view all the answers

¿Qué implicaciones tiene la elección de un protocolo de comunicación (por ejemplo, HTTP/3 vs. HTTP/2) en el diseño de una API RESTful, considerando atributos de calidad como la latencia y la eficiencia?

<p>HTTP/3, con su multiplexación y QUIC, puede reducir la latencia y mejorar la eficiencia en comparación con HTTP/2. (A)</p> Signup and view all the answers

En el contexto de la arquitectura de software para una plataforma de análisis de datos en tiempo real, ¿cómo se relaciona el concepto de 'Aprovechabilidad/Reutilización' con la eficiencia del desarrollo y el costo total de propiedad?

<p>La aprovechabilidad/reutilización permite reducir costos y tiempos de desarrollo al utilizar componentes comunes en varios productos. (A)</p> Signup and view all the answers

¿Cómo influye la elección de una arquitectura monolítica versus una arquitectura de microservicios en la estrategia de pruebas y despliegue continuo (CI/CD) de una aplicación web compleja?

<p>La arquitectura de microservicios requiere una estrategia de pruebas y despliegue más sofisticada, pero permite una mayor flexibilidad y velocidad. (B)</p> Signup and view all the answers

En el contexto del diseño de APIs, ¿qué mecanismos se pueden implementar para garantizar la 'seguridad' al permitir solo a usuarios autorizados acceder a ciertas funciones, y cómo afectan estos mecanismos a la 'usabilidad'?

<p>Se deben utilizar mecanismos como autenticación y autorización, pero estos pueden complicar la usabilidad si no se diseñan cuidadosamente. (C)</p> Signup and view all the answers

¿Cuál es un ejemplo de requisito NO realista de escalabilidad?

<p>Almacenar datos ilimitados. (A)</p> Signup and view all the answers

Considerando los atributos de calidad, ¿Cuál es un ejemplo de trade-off rendimiento vs seguridad?

<p>Añadir certificados SSL para cifrar la información y hacer el login más lento. (A)</p> Signup and view all the answers

¿Qué tipo de API se debe implementar para que diferentes empresas utilicen datos internos para crear un producto nuevo?

<p>API de socios. (C)</p> Signup and view all the answers

¿Qué método de los mostrados se debería utilizar para obtener información de un comerciante?

<p>GET. (C)</p> Signup and view all the answers

¿En qué paso del proceso para diseñar una API REST se definen las URIs?

<p>En el segundo paso: definir URIs para identificar recursos. (C)</p> Signup and view all the answers

Si queremos obtener una lista de comerciantes, ¿Cuál de las siguientes URIs sería la correcta?

<p>/comerciantes. (B)</p> Signup and view all the answers

¿Por qué es tan importante la fase de diseño de APIs a la hora de desarrollar la arquitectura de software de cualquier sistema?

<p>Porque permite profundizar en el diseño del sistema (herramientas como casos de uso). (D)</p> Signup and view all the answers

¿Los tipos de APIs REST son simples o colecciones de recursos?

<p>Pueden ser tanto simples como colección de recursos. (A)</p> Signup and view all the answers

¿Cuál de las siguientes opciones no es una buena práctica en el diseño de las APIs?

<p>Encriptar al máximo la información para exponerla a los usuarios. (D)</p> Signup and view all the answers

¿Qué tipo de datos se suelen enviar en una API REST?

<p>En formato JSON. (A)</p> Signup and view all the answers

Flashcards

¿Qué es un modelo de software?

Vista simplificada de un sistema que se enfoca en un aspecto particular.

¿Qué es la arquitectura de software?

Un conjunto de modelos relacionados que definen la estructura, los componentes y su comportamiento.

¿Por qué usar modelos en el diseño?

Permite valorar la viabilidad de los diseños y detectar errores tempranos.

¿Qué es la SRS?

Documento llamado Especificación de Requisitos de Software que describe funcionalidad, calidad y restricciones.

Signup and view all the flashcards

¿Qué son requisitos funcionales?

Lo que el sistema debe hacer. Describen la funcionalidad del sistema.

Signup and view all the flashcards

¿Qué son los casos de uso?

Herramienta para identificar requisitos funcionales a través de usuarios y escenarios.

Signup and view all the flashcards

¿Qué son drivers de atributos de calidad?

Las propiedades o cualidades que debe tener el sistema (ej. rendimiento, seguridad).

Signup and view all the flashcards

¿Cómo definir atributos de calidad?

Definir atributos de calidad de manera medible y verificable (ej. la página carga en menos de 1 segundo).

Signup and view all the flashcards

¿Qué es un 'trade-off' en arquitectura?

Mejorar un atributo puede empeorar otro (ej. usabilidad vs. seguridad).

Signup and view all the flashcards

¿Qué son restricciones en arquitectura?

Factores que limitan las opciones del arquitecto (ej. presupuesto, tecnología).

Signup and view all the flashcards

¿Qué es el paso 2 en arquitectura?

Diseñar las APIs para interactuar con otras aplicaciones.

Signup and view all the flashcards

¿Qué tiene un sistema como 'caja negra'?

Un comportamiento y una interface con su entorno.

Signup and view all the flashcards

¿Qué es un diagrama de secuencia?

Representación gráfica de interacciones paso a paso entre el sistema y el usuario.

Signup and view all the flashcards

¿Qué son APIs REST?

Conjunto de restricciones para APIs que usa recursos y métodos HTTP.

Signup and view all the flashcards

¿Proceso para diseñar una API REST?

Identificar recursos, URIs, información y métodos.

Signup and view all the flashcards

APIs REST: ¿Qué es un recurso?

Recurso identificado a través de una URI (Uniform Resource Identifier).

Signup and view all the flashcards

APIs REST: ¿Tipos de recursos?

Simples o colección de recursos.

Signup and view all the flashcards

APIs REST: ¿Métodos comunes?

HTTP (GET, POST, PUT, DELETE).

Signup and view all the flashcards

¿Qué tipo de API es la más usada?

REST (Representational State Transfer).

Signup and view all the flashcards

¿Tipos de APIs según acceso?

Pública, privada o de socios.

Signup and view all the flashcards

Buenas prácticas en APIs: ¿Qué es encapsulación?

Los desarrolladores no necesitan conocer los detalles internos

Signup and view all the flashcards

Buenas prácticas en APIs: ¿Qué es idempotencia?

Operación da el mismo resultado si se hace una o varias veces.

Signup and view all the flashcards

Buenas prácticas en APIs: ¿Qué es paginación?

Permitir que la aplicación cliente solicite solo un subconjunto de datos.

Signup and view all the flashcards

Buenas prácticas en APIs: ¿Qué son Operaciones Asíncronas?

En lugar de la respuesta final, se envía una notificación con un identificador.

Signup and view all the flashcards

¿Cuál es el primer paso para desarrollar una arquitectura?

El primer paso es identificar los drivers de la arquitectura.

Signup and view all the flashcards

¿Quién expresa lo que quiere del sistema?

El cliente debe expresar sus deseos del sistema software.

Signup and view all the flashcards

¿Qué tipos de drivers hay que identificar?

Funcionales, Atributos de Calidad y Restricciones.

Signup and view all the flashcards

Study Notes

Diseño de Arquitectura Software

  • Se toman decisiones para transformar los drivers arquitectónicos en estructuras tangibles.
  • Diferentes organizaciones pueden producir arquitecturas distintas aunque tengan los mismos requisitos.

Modelos

  • Un modelo es una vista simplificada del sistema enfocada en un aspecto específico.
  • Los modelos suprimen los detalles de los componentes que no influyen en el comportamiento o la comunicación.
  • Los modelos detallan cómo el sistema cumple con los drivers arquitectónicos.
  • Se producen varios modelos interdependientes para estudiar aspectos diferentes.
  • Los modelos se crean con distintos niveles de abstracción y detalle.

Arquitectura de Software

  • Es un conjunto de modelos relacionados en diferentes niveles de abstracción.
  • Los modelos definen:
  • La estructura del sistema, incluyendo el sistema como un todo.
  • Componentes y las conexiones entre ellos. El comportamiento del sistema y cómo los componentes interactúan.

Ventajas de usar modelos

  • Permiten valorar la viabilidad de los diseños y comparar diferentes soluciones.
  • Ayudan a detectar errores y omisiones en las primeras etapas del ciclo de vida.
  • Facilitan la comprensión del impacto de los cambios.
  • Asisten a los jefes de proyecto en la planificación y asignación de recursos.
  • Ayudan a convencer a los stakeholders de que sus necesidades serán satisfechas.

Desarrollando una arquitectura

  • Paso 1: Identificar los drivers de la arquitectura
  • Paso 2: Definir las interfaces del sistema (APIs).
  • Paso 3: Crear la estructura de la arquitectura.
    • Estructura para drivers funcionales
    • Estructura que satisfagan los drivers atributos de calidad

Paso 1: Identificar los Drivers de la Arquitectura

  • El cliente expresa sus necesidades iniciales para el sistema software
  • Esto es algo informal a través de entrevistas y documentos no técnicos
  • La información se analiza y estructura en el proceso de Ingeniería de Requisitos.
  • El resultado es la Especificación de Requisitos de Software (SRS).
    • La SRS detalla la funcionalidad, atributos de calidad y restricciones del sistema.
    • Incluye requisitos precisos y técnicos.

Identificando drivers

  • Drivers Funcionales
  • Drivers de Atributos de Calidad
  • Drivers de Restricciones.

1. 1 Identificar los drivers funcionales

  • Los requisitos funcionales describen qué debe hacer el sistema.
  • No todos los requisitos funcionales son drivers arquitectónicos
  • Se eligen según su importancia:   - Relevancia para los objetivos del negocio.   - Complejidad de implementación.   - Representación de un escenario relevante para la arquitectura.

Casos de Uso

  • Son una herramienta para identificar requisitos funcionales.
  • Representan situaciones/escenarios en los que el sistema sirve para alcanzar un objetivo del usuario.
  • Pasos:   - Identificar a todos los actores/usuarios del sistema.   - Identificar y describir todos los casos de uso/escenarios posibles para cada actor.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser