Modelo 4+1 y Arquitectura de Software Flashcards

1
Q

¿Qué es la arquitectura de software?

A

La arquitectura de software:

  • Se puede definir como conceptos o propiedades fundamentales de un sistema en su entorno encarnado en sus elementos, relaciones y en los principios de su diseño y evolución.
  • La arquitectura de software representa la estructura o las estructuras del sistema, que consta de componentes de software, las propiedades visibles externamente y las relaciones entre ellas.
  • La arquitectura de software son aquellas decisiones que son importantes y difíciles de cambiar.

En resumen, las arquitecturas de software:
1. dan forma al sistema
2. son decisiones de diseño importantes
3. son medidos por el costo del cambio
4. es la división del sistema en compontentes
5. y la comunicación entre esos componentes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Las decisiones de arquitectura, ¿qué abordan? ¿Qué es importante?

A
  • Abordan requisitos significativos desde el punto de vista arquitectónico, se perciben como difíciles de hacer y/o costosos de cambiar.
  • Son importantes de guardarlas y conocerlas. Conocer el motivo por el cual se tomó dicha decisión en la arquitectura o diseño.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Explique qué es el Modelo de Vistas 4+1 de Kruchten

A

Es un único documento o diagrama que explica la arquitectura propuesta para resolver cierto problema, incluyendo a los múltiples involucrados junto con sus distintos intereses y conocimientos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué tipo de vistas se tienen?

A

Se tienen 4 vistas en las esquinas y una en el centro:

LV  ▹  DV
▿    e    ▿
PrV ▹ PhV

LV: Logical View (End-user functionality)
DV: Development View (Programmers and software management)
PrV: Process View (Integrators, Performance, Scalability)
PhV: Physical View (System Engineers, Topology, Communications).

Y en el centro, los escenarios.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explicar la Vista Lógica

A

Es la descomposición orientada a objetos.

  • La vista lógica apoya principalmente los requisitos funcionales (lo que el sistema debe brindar en términos de servicios a sus usuarios)
  • También sirve para identificar mecanismos y elementos de diseño comunes a diversas partes del sistema.
  • El sistema se descompone en un conjunto de abstracciones clave en forma de objetos o clases de objetos.

Se pueden usar diagramas UML.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explique la Vista de Procesos

A

Es la descomposición del proceso.

  • Tiene los requisitos no funcionales: rendimiento y disponibilidad.
  • Aborda cuestiones de concurrencia, distribución, integridad del sistema, tolerancia de fallas.
  • Un procesos es una agrupación de tareas que forman una unidad ejecutable.

Se pueden usar diagramas de secuencias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Explique la Vista de Desarrollo (o de Componentes)

A

Es la descomposición del subsistema.

  • Se centra en la organización real de los módulo de software en el ambiente de desarrollo del software.
  • El software se empaqueta en partes pequeñas (bibliotecas o subsistemas) que pueden ser desarrollados por uno o un grupo pequeño de desarrolladores.
  • Tiene en cuenta los requisitos internos relativos a la facilidad de desarrollo, administración del software, reutilización y elementos comunes, restricciones, etc.
  • Se tienen 3 reglas: Partitioning, Grouping y Visibility.

Se puede usar un diagrama de referencias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Explique la Vista Física

A

Es la asignación del software al hardware

  • Toma en cuenta primeramente los requisitos no funcionales del sistema, tales como la disponibilidad, confiabilidad (tolerancia a fallas), rendimiento (throughput) y escalabilidad.
  • El software se ejecuta sobre una red de computadoras o nodos de procesamiento. Se identifican elementos variados (redes, procesos, tareas, objetos) y se mapean sobre los nodos.
  • Se busca que la relación del software en los nodos debe ser altamente flexible y tener un impacto mínimo sobre el código fuente.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Explique la Vista de Escenarios

A

La vista de escenarios es poner todo junto:

  • Los elementos de las cuatro vistas trabajand conjuntamente en forma natural mediante el uso de un conjunto pequeño de escenarios relevantes.
  • Los escenarios son de alguna manera una abstracción de los requisitos más importantes.
  • Sirve a dos propósitos principales:
    - Como una guía para descubrir elementos arquitectónicos durante el diseño de arquitectura
    - Como un rol de validación e ilustración después de completar el diseño de arquitectura; y como punto de partida de las pruebas de un prototipo de la arquitectura.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Patrones: Explique qué hace MVC

A

Desarrollo de interfaces de usuario:
- divide las responsabilidades de la lógica de la aplicación, de las responsabilidades de la vista.
- separa el dominio lógico de las vistas, desacoplándolas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

MVC: Explique sus componentes

A

Tiene 3 componentes: Modelo, Vista, Controlador.

Modelo:
Es el componente central, maneja los datos y la lógica de la aplicación.

Vista
Representa la información que contiene el modelo.

Controlador
Controla las operaciones e interacciones entre el usuario y la información, y modifica el controlador para que sea leído por la vista.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Patrones: Explique Layers

A

En Layers, los componentes están organizados en capas horizontales, donde una sólo habla con la de abajo (si tiene). Los componentes principales están modularizados y desacoplados entre sí. La interacción entre las capas está estandarizada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Layers: Explique qué capas se suelen tener

A

Se suele tener:
1. Presentación
2. Servicios (más de una)
3. Dominio (más de una)
4. Persistencia
5. Base de datos (mismo nivel que persistencia)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Patrones: Explique Broker

A

Broker es el intermediario entre dos piezas diferentes de software que necesitan comunicarse entre sí, pero sin el conocimiento exacto de su existencia mutua. Facilita el cambio de módulos sin afectar los componentes que hablan con él.

Adicionalmente, añade los gastos generales (overhead) del intermediario.

Por ejemplo, entre un servidor y un cliente, puede existir un Broker.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Patrones: Explique Pipe & Filters

A

Patrón de arquitectura de datos.
Es útil cuando existe la necesidad de transformar y analizar datos en múltiples niveles. Los niveles de procesamiento de datos se pueden agregar o eliminar con relativa facilidad.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Patrones: Explique Arquitectura Hexagonal

A

La arquitectura hexagonal también se conoce como arquitectura de puertos y adaptadores. Es un patrón de diseño de software que busca separar las preocupaciones y mejorar la modularidad de un sistema.

Se basa en la idea de que el núcleo de la aplicación debe ser independiente de las tecnologías específicas utilizadas para interactuar con el entorno externo, lo que mejora la mantenibilidad, la testeabilidad y la escalabilidad de los sistemas de software.

17
Q

Arquitectura Hexagonal: ¿Qué tres divisiones se tienen? Explíquelas

A

Se tienen 3 divisiones:
1. La capa de dominio
2. La capa de aplicación
3. La capa de infraestructura

La capa de dominio es el núcleo de la aplicación. Tiene la lógica del negocio, las reglas del dominio y las entidades del sistema. Este componente no depende de detalles de implementación externos, como bases de datos o interfaces de usuario.

La capa de aplicación está entre la capa de dominio y la infraestructura externa. Contiene la lógica que coordina las accinoes del dominio en respuesta a las peticiones del exterior. Acá se definen los casos de uso de la aplicación (escenarios específicos de ineeracción entre el usuario y el sistema, por ejemplo “enviar mensaje”, “hacer compra”, etc).

La capa de infraestructura se encarga de la implementación concreta de la comunicación entre el sistema y sus entornos externos (puertos). Acá se encuentran los adaptadores que conectan el sistema con recursos externos, como bases de datos, servicios web, sistemas de archivos, etc. Esta capa incluye componentes como repositorios, servicios de persistencia, clientes HTTP, entre otros.

18
Q

Patrones: Explique Microservicios

A

Los microservicios son un enfoque para diseñar aplicaciones como conjuntos de servicios pequeños e independientes.
Cada microservicio se centra en una única funcionalidad o tarea del negocio, lo que permite escalar y mantener partes específicas de la aplicación de forma más eficiente.

Los microservicios se comunican entre sí, a través de protocolos ligeros como HTTP/REST o mensajes, y cada uno puede ser desarrollado, desplegado y escalado de forma independiente.

Este enfoque favorece la modularidad, la flexibilidad y la escalabilidad de las aplicaciones, pero también implica desafíos en cuanto a la gestión de la complejidad de la infraestructura y la coordinación entre servicios.

19
Q

Patrones: Explique Micro Frontends

A

Los microfrontends son una forma de aplicar el concepto de microservicios al frontend de una aplicación. En lugar de tener un monolito frontend, se divide la interfaz de usuario en partes más pequeñas e independientes, cada una desarrollada y desplegada de forma separada.

Cada micro frontend puede ser desarrollado con diferentes tecnologías o frameworks, lo que permite a los equipos trabajar de manera más autónoma y especializada en áreas específicas de la interfaz de usuario.

Los microfrontends ayudan a escalar equipos de desarrollo, mejorar la reutilización de componentes y simplificar la evolución y mantenimiento de la interfaz de usuario en aplicaciones grandes y complejas.