relacionados para hashtags con arquitectura architecture architectural-patterns

architecture - hashtags - hashtag para arquitectura instagram



¿Cuál es la diferencia entre los patrones arquitectónicos y los estilos arquitectónicos? (9)

En Arquitectura de software - Fundamentos, teoría y práctica , puedo encontrar definiciones para ambos. El problema es que no entiendo lo que cada uno de ellos significa en inglés simple:

Patrón arquitectónico

Un patrón arquitectónico es una colección de decisiones de diseño arquitectónico que se aplica a un problema de diseño recurrente parametrizado para tener en cuenta los diferentes contextos de desarrollo de software en los que aparece ese problema.

Estilo arquitectónico

Un estilo arquitectónico es una colección nombrada de decisiones de diseño arquitectónico que (1) son aplicables en un contexto de desarrollo dado, (2) restringen las decisiones de diseño arquitectónico que son específicas de un sistema particular dentro de ese contexto, y (3) obtienen cualidades beneficiosas en cada sistema resultante

¿Qué significa cada uno y cuáles son las diferencias entre ellos?


En mi opinión, los patrones y estilos arquitectónicos son mecanismos complementarios para encapsular la experiencia en diseño. Un estilo arquitectónico proporciona una colección de elementos de diseño de bloques de construcción, reglas y restricciones para componer los bloques de construcción y herramientas para analizar y manipular diseños creados en el estilo. Los estilos generalmente proporcionan orientación y análisis para construir una clase amplia de arquitecturas en un dominio específico mientras que los patrones se centran en resolver problemas más pequeños y más específicos dentro de un estilo dado (o tal vez en varios estilos).


En palabras muy simples:

  • Un estilo arquitectónico

    Es un concepto, teoría (y cómo se implementa, depende de usted). También se puede aplicar a fuera del mundo del software.

    En el ejemplo: REST ( Representational State Transfer ) es un estilo arquitectónico basado en ciertos principios que utilizan los fundamentos "web" actuales.

  • Un patrón arquitectónico

    Describe una solución en el nivel del sistema de software (o módulo). En otras palabras, cómo interactúa entre sí, por ejemplo, ver con modelo y modelo con controlador.

  • Un diseño de patrones

    Es una solución en el nivel central, habla sobre clases, funciones y cómo en realidad fluye la lógica.


Francamente, siempre he considerado que estos dos términos son sinónimos. Y la literatura profana (hablando relativamente) definitivamente los trata como tal. Referir a MSDN o Wikipedia

Sin embargo, su pregunta me intrigó un poco así que profundicé un poco más y francamente ... no pude encontrar mucho, excepto una referencia a Una guía práctica de arquitectura empresarial (The Coad Series) , de la que cito:

An architectural style (Base et al. 1997) and an architectural pattern (Buschmann et al. 1996) are essentially synonymous.

Basado en un poco más de googling , esto es lo que creo que podría ser una forma posible de diferenciar los dos

  • Un estilo arquitectónico es una forma conceptual de cómo se creará / funcionará el sistema
  • Un patrón arquitectónico describe una solución para implementar un estilo a nivel de subsistemas o módulos y sus relaciones.

Cómo un patrón arquitectónico diferirá de un patrón de Diseño, es decir, un Adaptador, el observador es básicamente por el nivel de Granularidad al que se aplican (sé que esto no es parte de la pregunta, pero está relacionado, creo)


Los patrones de diseño arquitectónico son más específicos de un dominio donde los estilos arquitectónicos son más genéricos y utilizables en una amplia gama de aplicaciones. Debido a esto, los patrones arquitectónicos requieren más conocimiento de dominio.


Para Patrones arquitectónicos, piense en formas específicas de estilo de su código tal como lo describe el GoF ; Adaptador, Estrategia, Constructor, Mediador, etc.

Para Architectural Style piensa en el sistema general; IE, usando MVC para presentación, DDD para modelar la capa de negocios, WCF (si está en .NET) para Interop, SOA para integración, etc.


Patrones arquitectónicos: define un conjunto general de tipos de elementos y sus interacciones. Los ejemplos de patrones arquitectónicos incluyen tuberías y filtros, Model-View-Controller y Reflection.

Estilo arquitectónico: el término fue acuñado por Garlan y Shaw, es un patrón idiomático de organización del sistema. Por ejemplo, un sistema cliente-servidor es un estilo arquitectónico.

PD: Muchos de los estilos arquitectónicos originales han sido reformulados como patrones.


Un patrón arquitectónico es una forma de resolver un problema arquitectónico recurrente. MVC, por ejemplo, resuelve el problema de separar la IU del modelo. Sensor-Controlador-Actuador, es un patrón que le ayudará con el problema de actuar frente a varios sentidos de entrada.

Un estilo arquitectónico, por otro lado, es solo un nombre dado a un diseño arquitectónico recurrente. Al contrario de un patrón, no existe para "resolver" un problema.

Pipe & Filter no resuelve ningún problema específico, es solo una forma de organizar tu código. Cliente / servidor, programa principal y subrutina y tipos de datos abstractos / OO, lo mismo.

Además, una arquitectura única puede contener varios estilos arquitectónicos, y cada estilo arquitectónico puede hacer uso de varios patrones arquitectónicos.


El estilo arquitectónico es abstracto, es decir, conceptual.

+---------------+--------------------------------------------------------+ | Category | Architecture styles | +---------------+--------------------------------------------------------+ | Communication | SOA, ROA, Message Bus | | Deployment | Client/Server | | Domain | Domain Driven Design,Monolithic application | | Structure | Component-Based, Object-Oriented, Layered, Plug-ins | +---------------+--------------------------------------------------------+

Un patrón arquitectónico es concreto, es decir, la implementación de un estilo arquitectónico.

  • Por ejemplo: 3 niveles, N niveles, MVC, RESTO

Un patrón de diseño es una solución general reutilizable a un problema común en el diseño de software a nivel arquitectónico.

  • Por ejemplo: Factory, Singleton, Prototype.

Analogía: estilo de arquitectura de templos para diferentes religiones:


Patrón de arquitectura: contexto + problema -> solución

Estilo de arquitectura: parte de la solución del patrón de arquitectura

Entonces, el estilo de arquitectura es análogo a la parte de solución del patrón de arquitectura. A menudo se usa en libros que tratan con documentación de arquitectura donde el foco está en la solución y no en cómo surgió el contexto y el problema.