Estilos de arquitectura de software
Los estilos de arquitectura de software son esquemas organizativos con nombre y reutilizables que definen los tipos de componentes y conectores que utiliza un sistema y las restricciones sobre cómo se pueden combinar.
Definition
Un estilo arquitectónico es una familia de arquitecturas caracterizada por un vocabulario de tipos de componentes y conectores y un conjunto de restricciones sobre cómo se pueden configurar las instancias de esos tipos.
Scope
Este tema abarca estilos clásicos como el de capas, cliente-servidor, tubería y filtro, repositorio (centrado en datos), basado en eventos y publicación-suscripción, microkernel, y arquitecturas orientadas a servicios y de microservicios; el estilo arquitectónico REST para sistemas en red; y las compensaciones de atributos de calidad que motivan la selección de un estilo sobre otro.
Core questions
- ¿Qué vocabulario de componentes y conectores define cada estilo?
- ¿Qué atributos de calidad promueve o inhibe un estilo dado?
- ¿Cómo se combinan los estilos dentro de un mismo sistema?
- ¿En qué se diferencian los estilos en red y distribuidos, como REST y los microservicios, de los clásicos?
Key theories
- Estilos como vocabularios de componentes-conectores
- Shaw y Garlan caracterizaron las arquitecturas mediante patrones recurrentes de componentes y conectores con restricciones asociadas, proporcionando al campo un vocabulario de estilos como tubería y filtro, capas y repositorio.
- Estilo arquitectónico REST
- Fielding derivó REST como un conjunto de restricciones —ausencia de estado, interfaz uniforme, capacidad de caché, sistema en capas— que explican la escalabilidad y la capacidad de evolución de la web y guían el diseño de servicios basados en la red.
Clinical relevance
Elegir un estilo apropiado en una etapa temprana alinea la estructura del sistema con sus requisitos de calidad dominantes; una mala adecuación entre el estilo y las necesidades es difícil y costosa de corregir una vez que el desarrollo está en marcha.
Evidence & guidelines
ISO/IEC/IEEE 42010 enmarca la descripción de la arquitectura en términos de puntos de vista y vistas, dentro de los cuales se documentan y analizan los estilos.
History
La catalogación de estilos arquitectónicos comenzó con Shaw y Garlan a mediados de la década de 1990, a medida que la arquitectura de software se convertía en una disciplina reconocida; la tesis doctoral de Fielding de 2000 formalizó REST, y la década de 2010 vio el auge de los estilos de microservicios y basados en eventos para sistemas a escala de la nube.
Key figures
- Mary Shaw
- David Garlan
- Roy Fielding
- Len Bass
Related topics
Seminal works
- shaw1996
- fielding2000
- bass2012
Frequently asked questions
- ¿Cuál es la diferencia entre un estilo arquitectónico y un patrón de diseño?
- Un estilo arquitectónico describe la organización de todo el sistema —los tipos de componentes y conectores y las reglas para combinarlos—, mientras que un patrón de diseño resuelve un problema de diseño más localizado dentro de los componentes; los estilos operan a un nivel de granularidad superior.
- ¿Puede un sistema utilizar más de un estilo?
- Sí. Los sistemas reales suelen ser heterogéneos, combinando estilos —por ejemplo, una arquitectura en capas cuya capa de presentación está basada en eventos y cuyos servicios se comunican a través de REST—, aplicando cada estilo donde sus compensaciones se ajustan mejor.