Clase 3 - Arquitectura del Software Flashcards

1
Q

¿Qué es la arquitectura del software?

A

La arquitectura del software de un sistema es la estructura del sistema que comprende los elementos del software, las propiedades externamente visibles de esos elementos junto con las relaciones que existen entre ellos.

  • Por cada elemento sólo interesan las propiedades externas necesarias para especificar las relaciones.
  • Para la arquitectura no son importantes los detalles de cómo se aseguran dichas propiedades.
  • La definición no habla de la bondad de la arquitectura; para ello es necesario analizarla.

Es decir, representa el diseño del sistema al más alto nivel a través de las partes lógicas que lo componen.

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

¿Qué es la vista de módulo?

A
  • Es una vista basada en el código.
  • Un sistema es visto como una colección de unidades de código (módulos), donde cada una, implementa alguna parte de la funcionalidad del sistema.
    • Algunos ejemplos de módulos pueden ser funciones, una clase, un método, un proceso, una colección de funciones, una colección de clases.
  • Las relaciones que se representan dependen de como el código de un módulo interactúa con otro.
    • Algunos ejemplos de relaciones son “es parte de, “su uso depende de”, llamadas y generalización-especialización.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué es la vista de C&C?

A
  • ¿Qué es la vista de C&C?La vista de componentes y conectores posee dos elementos principales
Los ***componentes*** representan elementos computacionales o de almacenamiento de datos que tienen presencia durante la **ejecución** del sistema. Cada uno posee

- Un **nombre único** que lo identifica y que hace referencia al rol o la función que este componente realiza.
- Un **tipo** como puede ser *cliente, servidor, base de datos y aplicación.*
    - Dos *componentes* de diferentes tipos se representan distinto en los diagramas C&C.
    - No existe un estándar para representar tipos en un diagrama pero **comúnmente** se usan estos.
        
        ![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1a0c52f5-2387-4d4f-91a2-abb2d01738b1/Untitled.png)
        
- **Puertos**, que son las interfaces por las cuales un componente se comunica con otro.
    - Un componente debe especificar claramente sus puertos.
Es probable que los diferentes componentes de un sistema interactúen mientras el sistema está en funcionamiento para proporcionar los servicios del sistema. Dado que las componentes existen para proveer parte de los servicios o características de un sistema y deben ser combinados para lograr la funcionalidad deseada.

Los **conectores** es el medio por el cual las componentes se comunican. Un conector puede ser un medio simple y proveerse por medio del entorno de ejecución (llamada a procedimiento o a función) o ser algo más complejo (puertos TCP/IP, HTTP, etc.) que necesiten más infraestructura en tiempo de ejecución. Por lo que es importante identificar y representarlos explícitamente.

Un conector tiene 

- Un **nombre** que describe la naturaleza de la conexión que admite.
- Un **tipo** que es una descripción genérica de la interacción con propiedades (tipo de conexión, interfaces que soporta, etc.).
    - A veces la interacción admitida por un conector se representa mejor como un protocolo, por lo que necesitan seguir algunas convenciones cuando se use el conector.
    - En los *diagramas C&C* diferentes tipos de conectores se representan distinto. Mayormente se usan los siguientes
        
        ![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/03f03cc7-7d43-4a51-85c7-3012e9c7f348/Untitled.png)
        

<aside>
💡 La vista C&C describe una estructura en tiempo de ejecución del sistema: determinando que componentes existen y cómo interactúan entre ellos.

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

¿Qué es la vista de asignación de recursos?

A
  • Especifica una relación entre los elementos del software y los elementos del entorno donde este se ejecuta (que no forman parte del software).
  • Se centra en como las diferentes unidades de software asignan recursos como el hardware, file systems y personas.
  • Exponen propiedades estructurales como que procesos se asignan a que procesador o que archivo se guarda en que sistema de archivos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es el estilo de tubos y filtros?

A

Divide una tarea de procesamiento más grande, en una secuencia de pequeños pasos independientes (filtros) conectados por tubos.

Es usado para sistemas que son de transformación de datos, en donde un input es recibido y la meta del sistema es producir un output, **transformando de forma adecuada el input otorgado.

<aside>
💡 Un sistema que usa este estilo utiliza una red de transformadores para que lograr el resultado deseado.

</aside>

El estilo pipe and filter posee un solo tipo de componente (filtro) y un sólo tipo de conector (tubo)

  • Filtro
    • Es el encargado de realizar las transformaciones a los datos que ingresan por los tubos de entrada definidos, y pasa la salida a través de los tubos de salida definidos.
    • Es una entidad independiente y asíncrona (se limita a consumir y a producir datos).
  • Tubo
    • Un tubo es un canal de una sola dirección, que transporta streams de datos desde un filtro a otro.
    • No cambia los datos de ninguna manera, simplemente transporta datos al extremo receptor en el orden en el que se reciben.
    • Los tubos deben hacer buffering y sincronización para asegurar el correcto funcionamiento de la relación productor - consumidor, ya que los filtros solo producen y consumen datos.
    • Un tubo solo conecta dos filtros.

Las restricciones presentes para este estilo son

  1. Los tubos deben trabajar sin saber la identidad del filtro consumidor y del filtro productor.
  2. Un tubo debe conectar una puerto de salida de un filtro con un puerto de entrada de otro.
  3. Un pipe and filter puro debe tener su propio hilo de control para cada filtro.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué es el estilo de datos compartidos?

A

Es un estilo de arquitectura muy utilizado en las aplicaciones de bases de datos y entornos de programación.

El estilo de datos compartidos posee dos componentes

  • Repositorio de datos
    • Donde el sistema guarda los datos compartidos.
  • Usuarios de datos
    • Son elementos computacionales que acceden a los datos que están dentro de los repositorios, hacen un cómputo y colocan el resultado dentro del repositorio.

Las ******restricciones******** presentes en este estilo son

  • El repositorio de datos provee un almacenamiento ****confiable**** y ****permanente****.
  • La comunicación entre los usuarios solo se hace a través de los repositorios.
  • En este estilo sólo hay un tipo de conector que es de lectura y escritura.

Además, dentro de este estilo hay dos variaciones posibles

Estilo Pizarra

  • Si algún dato nuevo llega al repositorio de datos, todos los usuarios deben ser informados.
  • La fuente de datos compartida es un agente activo, que informa a los componentes la llegada de datos o inicia la ejecución de componentes que necesitan actuar sobre esos datos.

Estilo Repositorio

  • El repositorio de datos es un repositorio pasivo que provee almacenamiento permanente y control de acceso a los datos.
  • Los componentes acceden al repositorio como y cuando quieren.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es el estilo cliente - servidor?

A

El estilo cliente - servidor posee dos tipos de componentes

  • Cliente
    • Es el componente que inicia la comunicación mandando una solicitud de un servicio que el servidor provee.
  • Servidor
    • Un servidor recibe las solicitudes provenientes de clientes, realiza el servicio y devuelve el resultado al cliente que lo solicitó.

Y una solo conector

  • Solicitud/respuesta
    • El conector es asimétrico, **dado que un cliente solo puede enviar solicitudes y recibir respuestas, mientras que un servidor solo puede mandar respuestas en base a solicitudes que recibe.
    • La comunicación es sincrónica, porque el cliente a que el servidor le de los resultados antes de continuar. **

Este estilo de arquitectura generalmente tiene una estructura con $n$ niveles, debido a que un servidor también puede actuar como cliente para el próximo nivel, es decir, un cliente puede mandar una solicitud a un servidor y ese servidor mandar una solicitud a otro servidor para proveer el servicio). Otro dato es que los componentes clientes y los componentes servidores suelen estar en máquinas distintas, lo que implica que el conector debe ser capaz de enviar solicitudes/respuestas entre diferentes máquinas, como consecuencia de esto los conectores son bastante complicados.

Algunas restricciones sobre este estilo de arquitectura son

  1. Un cliente solo puede comunicarse con un servidor y no con otros clientes.
  2. La comunicación siempre debe ser iniciada por el cliente quien le envía una solicitud al servidor y espera su respuesta.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué es el estilo de publicación - subscripción?

A

El estilo de publicación-suscripción es muy usado en user interface frameworks. En este estilo, hay dos tipos de componentes

  • Suscripciones
    • Son componentes que se suscriben a un conjunto de eventos definidos.
    • Cuando el evento es generado, se invocan estos componentes para procesarlo.
  • Publicaciones
    • Generan o publican eventos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué es el estilo peer to peer?

A

Los componentes son los peers y cualquier componente puede solicitar un servicio a cualquier otro.

<aside>
💡 Es como un *estilo de arquitectura cliente-servidor* pero todos los clientes pueden ser también un servidor, cambiando dinámicamente con el tiempo.

</aside>

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

¿Qué es el estilo de procesos que se comunican?

A

El estilo de procesos que se comunican es usado en sistemas complejos o con muchos hilos. En este estilos, los componentes son procesos o hilos, los cuales pueden comunicarse mediante pasaje de mensajes o memoria compartida.

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

¿Qué es el método ATAM y para que sirve?

A

El método ATAM (o Architectural Trade-off Analysis Method) es una metodología rigurosa que detrás de analizar la arquitectura para un conjunto de propiedades, también ayuda a identificar las dependencias que existen entre las propiedades competidoras y desarrolla un análisis de compensación.

ATAM posee 5 pasos

  1. Recolectar escenarios.
    • Los escenarios describen la interacción con el sistema. Para el análisis de la arquitectura, los escenarios listan las situaciones en las que podría estar el sistema y para las cuales nos gustaría evaluar la arquitectura para los diferentes atributos.
    • Escenarios excepcionales de interés también deben ser nombrados.
  2. Recolectar requerimientos o restricciones
    • Especifica el comportamiento esperado del sistema en los escenarios seleccionados.
    • Estos requerimientos especifican los niveles deseados (preferentemente cuantificables) para los atributos de calidad que están siendo evaluados.
  3. Describe las vistas arquitectónicas
    • Se recolectan las diferentes vistas de las arquitecturas que serán evaluadas.
    • Las vistas que se necesitan para describir una arquitectura propuesta dependen del análisis que se debe realizar, que se basa en los requisitos o restricciones.
  4. Análisis específicos a cada atributo
    • Cada atributo es analizado de forma individual.
    • Se determina los niveles que la arquitectura puede proveer en cada atributo, los cuales luego serán comparados con los requeridos.
    • El resultado de este análisis puede determinar la elección de una arquitectura sobre la otra o la modificación de la estructura propuesta para cumplir lo requerido.
      • Si una arquitectura es cambiada se debe volver a hacer el análisis ATAM sobre la misma, haciendo al método un proceso espiral.
  5. Identificar puntos sensitivos y de compromisos
    • Análisis de sensibilidad
      • Identificar el impacto que tiene un elemento sobre el valor atributo de calidad.
      • Los elementos con mayor impacto se consideran puntos de sensibilidad.
    • Análisis de compromiso
      • Los puntos de compromiso son los elementos que son puntos de sensibilidad para varios atributos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly