Estilos de Arquitectura Software.
Un estilo de arquitectura se define como como una familia de sistemas con patrones
comunes de una organización estructurada.(Garlan & Shaw, 1994a) Los estilos
arquitectónicos determinan las clases de arquitectura de software teniendo en cuenta los
tipos de elementos de la arquitectura y su topología, y los patrones de datos y control entre
los elementos.(Rapanotti et al., 2004)
Los estilos arquitectónicos, definen importantes decisiones sobre los elementos
arquitectónicos y su relación. Estos estilos se pueden usar para restringir la arquitectura
como para coordinar a los arquitectos que interactúan en su desarrollo.(Perry et al., 1992).
Son útiles durante el análisis y diseño de un sistema, porque el arquitecto puede determinar
el estilo que más se acople en la construcción del software y el que cumpla con los objetivos
deseados.(Klein et al., 2008)
Están compuesto por: Un conjunto de tipos de elementos (como ejemplo, un repositorio de
datos), una topología, un conjunto de restricciones semánticas y un conjunto de mecanismos
de interacción que determinan cómo los elementos coordinan a través de la topología
establecida.(Bash, 2015)
El uso de estilos puede mejorar algunos atributos de calidad definidos para un sistema, pero
disminuir otros, un ejemplo es el uso de un estilo en capas, aumenta la flexibilidad del
software pero generalmente disminuye el rendimiento, por eso es importante implementar y
adecuar un estilo que se adapte con las necesidades del sistema.(Science, 1999)
Los estilos arquitectónicos, definen importantes decisiones sobre los elementos
arquitectónicos y su relación. Estos estilos se pueden usar para restringir la arquitectura
como para coordinar a los arquitectos que interactúan en su desarrollo.(Perry et al., 1992)
Seguidamente se describirán algunos estilos de arquitectura de software:
** Tuberías y Filtros.**
En este estilo de arquitectura cada componente del sistema maneja de manera
independiente un flujo de entrada de datos y un flujo de salida de datos el cual es de forma
incremental. La forma como funciona este estilo de arquitectura es el siguiente:
Meta Análisis de los Estilos de Arquitectura de Software Orientados a la Web
Los datos ingresan por las tuberías y llegan a los filtros (componentes) los cuales se
encargan de manipular y realizar el proceso de transformación de los datos que ingresan y
les da salida por otras tuberías las cuales están conectadas con otros filtros los cuales irán
realizando la misma operación hasta que se finalice el flujo de entrada de datos.(Garlan &
Shaw, 1994a). Los ejemplos más comunes de este estilo de arquitectura son el Shell de
Unix, sistemas distribuidos y compiladores (Garlan & Shaw, 1994a).
Una topología importante en la arquitectura basada en este estilo, es la Tubería lineal en la
que cada filtro tiene precisamente un tubo de entrada (su fuente) y un tubo de salida (su
sumidero). Permitiendo transformar algo de entrada en alguna salida de un formato
particular, aplicando ciertas reglas en el proceso.(Rapanotti et al., 2004)
** Abstractos de Datos y POO.**
En estos estilos de arquitecturas los componentes son tomados como objetos abstractos
cuyos conectores son llamados invocaciones de métodos. Su función es ocultar las
características de los objetos y obviarlas puesto que necesariamente se debe conocer que
es lo que hace el objeto o que funciones tiene (Garlan & Shaw, 1994a).
Sistemas en Capas.
Este estilo de arquitectura se basa en jerarquías donde las capas superiores son servidas
por las inferiores y las inferiores proveen servicios a las superiores. Los componentes son
llamados capas y los conectores son llamados protocolos los cuales interactúan entre las
capas. Dos ejemplos de este estilo de arquitectura son los Sistemas Operativos y los
protocolos de comunicación en capas (Garlan & Shaw, 1994a).
Cliente – Servidor.
Este estilo de arquitectura se basa en que un proceso provee servicios (Servidor) por medio
de una o varias peticiones de otros procesos (Clientes), los cuales consumen dichos
servicios y son los encargados de enviar las peticiones al servidor. Un ejemplo son los sitios
Web. La acción de visitar un sitio Web requiere una arquitectura cliente-servidor, ya que el
servidor Web sirve las páginas Web al navegador (al cliente) (Garlan & Shaw, 1994a).
Este estilo siempre se debe ejecutar en una máquina que hará la tarea de cliente y por lo
menos un servidor que se ejecutara en una segunda máquina. El cliente y el servidor son
procesos computacionales que se ejecutan desde la memoria de sus respectivas máquinas,
estos son procesos independientes y pueden ser ejecutados en cualquier plataforma,
haciendo uso de sistemas de gestión cliente-servidor proporcionan una nueva capacidad
para crear elementos habilitados, como por ejemplo un sistema informático que ejecuta un
sistema conectado a la red o un usuario pueda editar un gestor.(View, Lu, Carlton, & Carlos,
2003)
Meta Análisis de los Estilos de Arquitectura de Software Orientados a la Web
Arquitectura Orientada a Servicios (SOA).
Este estilo de arquitectura se basa en la comunicación de varios sistemas de información
independientes desarrollados en diferentes lenguajes, desplegados en diferentes servidores
de aplicaciones tales como IIS, tomcat, glassfish, JBoss, WebLogic, ejecutados en diferentes
Sistemas Operativos como lo son Windows, Mac, Linux, y con motores de base de datos
diferentes como SQL Server, MySql, Oracle, Postgress, los cuales se pueden comunicar por
la red para ofrecer sus funcionalidades por medio de publicación de servicios. Esta
arquitectura de software se puede realizar mediante servicios Web. Un ejemplo claro de
Arquitectura Orientada a Servicios son los servicios REST (J & Sc, 2009).
Esta arquitectura comprende múltiples funciones, dentro de su propio nombre y espacio de
direcciones, interactuando remotamente a través de una red utilizando algún protocolo (No
requiere que los protocolos estén libres de contexto). En la mayoría de los casos, SOA de
basa en aplicaciones distribuidas, estas se distinguen de otros sistemas distribuidos, porque
los servicios pueden ser implementados en diferentes idiomas y pueden ejecutarse en varias
máquinas, cada petición realizada se aloja en espacios de direcciones separadas en
máquinas separadas.(Taylor, 2009)
** Peer to Peer**
Conjunto de recursos distribuidos heterogéneos que se conectan entre sí por medio de una
red. Una de sus principales características es, que puede funcionar al mismo tiempo como
cliente así como servidor, que a diferencia de la arquitectura Cliente – Servidor, esta puede
actuar como un servidor o como un cliente, pero no puede operar ambas
capacidades.(Schollmeier, Networks, & Universität, 2002)
Conjunto de recursos distribuidos heterogéneos que se conectan entre sí por medio de una
red. Una de sus principales características es, que puede funcionar al mismo tiempo como
cliente así como servidor, que a diferencia de la arquitectura Cliente – Servidor, esta puede
actuar como un servidor o como un cliente, pero no puede operar ambas
capacidades.(Schollmeier, Networks, & Universität, 2002). Este estilo contiene sistemas
distribuidos en donde el software que corre en cada nodo proporciona funciones
equivalentes y no se tiene control centralizado.(Fernando et al., 2006)
Fuente de información -->