Modelo 4+1 y Arquitectura de Software Flashcards
¿Qué es la arquitectura de software?
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.
Las decisiones de arquitectura, ¿qué abordan? ¿Qué es importante?
- 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.
Explique qué es el Modelo de Vistas 4+1 de Kruchten
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.
¿Qué tipo de vistas se tienen?
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.
Explicar la Vista Lógica
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.
Explique la Vista de Procesos
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.
Explique la Vista de Desarrollo (o de Componentes)
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.
Explique la Vista Física
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.
Explique la Vista de Escenarios
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.
Patrones: Explique qué hace MVC
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.
MVC: Explique sus componentes
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.
Patrones: Explique Layers
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.
Layers: Explique qué capas se suelen tener
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)
Patrones: Explique Broker
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.
Patrones: Explique Pipe & Filters
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.