Estilos de Arquitectura de Software — Parte I
Panorama general de los Estilos de Arquitectura de Estructura
Como ya hemos visto, un estilo de arquitectura: Nos dice, a grandes rasgos como organizar nuestro código. Es el nivel más alto de granularidad y especifica capas, módulos de alto nivel de la aplicación y cómo esos módulos y capas interactúan entre sí, es decir las relaciones entre ellos. De modo que definimos un estilo de arquitectura como la distribución general de una solución. Veamos a detalle los diferentes estilos de estructura:
Estilos de Arquitectura de Estructura
- Basado en Componentes: Cuando hablamos de módulos de software, nos referimos a ellos como una colección de código relacionado. Sin embargo en arquitectura típicamente pensamos en términos de componentes que son la manifestación física de un módulo. En general, hablando de arquitectura de software, se piensa en la separación de preocupaciones con respecto a la amplia funcionalidad disponible en un sistema de software dado. Es decir, se basa en la reutilización para definir, implementar y componentes independientes débilmente acoplados en sistemas, buscando generar beneficios tanto para el software como para las organizaciones que patrocinan dicho software. La arquitectura de software en este sentido considera los componentes como parte de la arquitectura como la base inicial para la orientación al servicio. En este sentido, en Arquitecturas Orientadas al Servicio, un servicio Web utiliza un componente para llevarlo hacia el servicio y que posteriormente heredará características adicionales más allá de las de un componente ordinario.
- Aplicación Monolítica: Hablando de arquitectura, una aplicación monolítica describe una aplicación de software de un solo nivel en la que la interfaz de usuario y el código de acceso a datos se combinan en un solo programa desde una sola plataforma. En ingeniería de software, una aplicación monolítica describe una aplicación de software que está diseñada sin modularidad. La modularidad es deseable, en general, ya que admite la reutilización de partes de la lógica de la aplicación y también facilita el mantenimiento al permitir la reparación o reemplazo de partes de la aplicación sin requerir un reemplazo al por mayor.
- Capas: La arquitectura en capas, también conocida como estilo de arquitectura de n niveles, es uno de los estilos de arquitectura más comunes. Este estilo de arquitectura es el estándar de facto para la mayoría de las aplicaciones, principalmente debido a su simplicidad, familiaridad y bajo costo. También es una forma muy natural de desarrollar aplicaciones debido a la ley de Conway, que establece que las organizaciones que diseñan sistemas están obligadas a producir diseños que son copias de las estructuras de comunicación de estas organizaciones. En la mayoría de las organizaciones hay desarrolladores de interfaces de usuario (UI), desarrolladores de backend, desarrolladores de reglas y expertos en bases de datos (DBA). Estas capas organizativas encajan perfectamente en los niveles de una arquitectura en capas tradicional, lo que la convierte en una opción natural para muchas aplicaciones comerciales. El estilo de la arquitectura en capas también cae en varios antipatrones arquitectónicos, incluida la arquitectura por implicación antipatrón y la arquitectura accidental antipatrón. Si un desarrollador o arquitecto no está seguro de qué estilo de arquitectura que están usando, o si un equipo de desarrollo ágil “simplemente comienza a codificar”, es muy probable que sea el estilo de arquitectura en capas que están implementando.
- Tuberías y Filtros (Pipes and Filters): En arquitectura, una tubería consiste en una cadena de elementos de procesamiento (procesos, subprocesos, corrutinas, funciones, etc.), dispuestos de manera que la salida de cada elemento sea la entrada del siguiente; el nombre es por analogía a una tubería física. Por lo general, se proporciona cierta cantidad de almacenamiento en búfer entre elementos consecutivos. La información que fluye en estas canalizaciones es a menudo un flujo de registros, bytes o bits, y los elementos de una canalización pueden denominarse filtros; esto también se denomina patrón de diseño de tuberías y filtros. Conectar elementos en una tubería es análogo a la composición de funciones. Hablando en términos estrictos, una tubería es lineal y unidireccional, aunque a veces el término se aplica a flujos más generales. Por ejemplo, una canalización principalmente unidireccional puede tener alguna comunicación en la otra dirección, conocida como canal de retorno o canal de retorno, como en el hack de lexer, o una canalización puede ser completamente bidireccional. Flujos con topologías de gráficos acíclicos dirigidos y árbol unidireccional se comportan de manera similar a las tuberías (lineales) (la falta de ciclos las hace simples) y, por lo tanto, pueden denominarse vagamente “tuberías”.
En la siguiente publicación, hablaremos de los Estilos de Arquitectura de Memoria Compartida, ¡Continuad atentos!