Patrón arquitectónico
Un patrón arquitectónico es una solución general y reutilizable para un problema común en la arquitectura de software dentro de un contexto determinado. Los patrones arquitectónicos abordan diversos problemas de la ingeniería de software, como las limitaciones de rendimiento del hardware informático, la alta disponibilidad y la minimización de un riesgo empresarial. Algunos patrones arquitectónicos se han implementado dentro de los marcos de software. Existen dos categorías principales de patrones arquitectónicos: monolíticos y distribuidos.
El uso de la palabra "patrón" en la industria del software estuvo influenciado por conceptos similares expresados en la arquitectura tradicional, como en A Pattern Language (1977) de Christopher Alexander, que analizó la práctica en términos de establecer un léxico de patrones, lo que impulsó a los profesionales de la informática a contemplar su propio léxico de diseño.
El uso de esta metáfora en la profesión de ingeniería de software se volvió común después de la publicación de Design Patterns (1994) de Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, ahora conocidos como la "Banda de los Cuatro", coincidiendo con los primeros años de la Internet pública, lo que marcó el inicio de los sistemas de software complejos que "se devoraban el mundo" y la correspondiente necesidad de codificar el mundo del desarrollo de software, que se expandía rápidamente, al nivel más profundo posible, sin dejar de ser flexible y adaptable.
Los patrones arquitectónicos son similares a los patrones de diseño de software, pero tienen un alcance más amplio.Definición
Aunque un patrón arquitectónico transmite una imagen de un sistema, no es una arquitectura. Un patrón arquitectónico es un concepto que resuelve y delinea algunos elementos cohesivos esenciales de una arquitectura de software. Innumerables arquitecturas diferentes pueden implementar el mismo patrón y compartir las características relacionadas. Los patrones suelen definirse como "estrictamente descritos y comúnmente disponibles".
Estilo arquitectónico
Siguiendo la arquitectura de construcción tradicional, un estilo arquitectónico de software es un método específico de construcción, caracterizado por las características que lo hacen notable.
Un estilo arquitectónico define: una familia de sistemas en términos de un patrón de organización estructural; un vocabulario de componentes y conectores, con limitaciones en cómo se pueden combinar.
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) limitar decisiones de diseño arquitectónico que son específicas a un sistema particular dentro de ese contexto, y (3) obtener cualidades beneficiosas en cada sistema resultante.
Algunos tratan los patrones arquitectónicos y los estilos arquitectónicos como si fueran lo mismo, otros tratan los estilos como especializaciones de los patrones. Lo que tienen en común es que tanto los patrones como los estilos son expresiones idiomáticas que utilizan los arquitectos, que "ofrecen un lenguaje común" o "vocabulario" con el que describir clases de sistemas.
La principal diferencia es que un patrón puede verse como una solución a un problema, mientras que un estilo es más general y no requiere de un problema a resolver para su aparición.
Análisis
El software se gestiona en función de su espacio de problemas en el que se pueden aplicar soluciones. La siguiente tabla muestra cómo se considera el software en varios espacios de problemas, definidos por un subdominio y abordados con los patrones de diseño de software y patrones de solución correspondientes. Los subdominios se pueden incorporar al análisis de otros subdominios; por ejemplo, la solución de un problema de inteligencia artificial se aborda primero como un problema de arquitectura de datos.
Zona de subdominio | Patrón de arquitectura | Patrones de diseño de software | Patrones de solución | Patrones relacionados |
---|---|---|---|---|
Integración de datos/SOA |
|
|
|
|
| ||||
|
|
|
| |
Arquitectura de datos |
|
|
|
|
Análisis e inteligencia empresarial |
|
|
|
|
Gestión de datos |
|
|
| |
Modelado de datos |
|
| ||
Inteligencia artificial |
|
Ejemplos
Algunos ejemplos de patrones arquitectónicos:
- Arquitectura basada en células
- Sistema de pizarra
- Patrón de rotor
- Arquitectura impulsada por el evento
- Patrón de Saga
- Patrón monolítico
- Patrón distribuido
- Monolito modular
- Invocación implícita
- Capas
- Arquitectura hexagonal
- Microservicios
- Acción-dominio-responder,
- Modelo – vista–controlador
- Presentación–abstracción–control
- Modelo – vista–presentador
- Modelo – vista – modelo
- Modelo–view–adapter
- Sistema de componentes de la Entidad
- Intity-control-boundary
- Arquitectura multitier (a menudo de tres niveles o n- Más alto)
- Programación orientada hacia los objetos
- Objetos desnudos
- Almacenamiento de datos operacionales (ODS)
- Peer-to-peer
- Arquitectura de tuberías y filtros
- Arquitectura orientada al servicio
- Arquitectura basada en el espacio
- Tabla de hash distribuida
- Publish-subscribe patrón
- Corredor de mensajes
- Modelo jerárquico – vista–controlador
Véase también
- Lista de estilos y patrones de arquitectura de software
- Servicio de mensajería de procesamiento
- Arquitectura empresarial
- capas comunes en un sistema de información arquitectura lógica
Referencias
- ^ a b Taylor, R.N.; Medvidović, N.; Dashofy, E.M. (2009). Arquitectura de software: Fundaciones, Teoría y Práctica. Wiley. ISBN 9780470167748.
- ^ a b c d e Fundamentos de Arquitectura de Software: Un enfoque de ingeniería. O'Reilly Media. 2020. ISBN 978-1492043454.
- ^ Andreessen, Marc (20 de agosto de 2011). "Por qué el software está comiendo el mundo". The Wall Street Journal. Retrieved 25 de abril 2020.
- ^ Chang, Chih-Hung; Lu, Chih-Wei; Lin, Chih-Hao; Yang, Ming-Feng; Tsai, Ching-Fu (junio de 2008). "Una experiencia de aplicación del marco de software basado en patrones para mejorar la calidad del desarrollo del software: 4. Diseño e implementación de OS2F". Journal of Software Engineering Studies, Vol. 2, No. 6. the Third Taiwan Conference on Software Engineering (TCSE07). pp. 185–194. Archivado desde el original el 2011-09-22. Retrieved 2012-05-16.
Además, los patrones se definen a menudo como algo "descrito y comúnmente disponible". Por ejemplo, la arquitectura capa es un estilo de llamada y retorno, cuando define un estilo general para interactuar.
- ^ "Patrones arquitectónicos: definición". AAHN INFOTECH (INDIA) PVT. LTD. Archivado desde el original el 2012-06-23. Retrieved 2012-05-16.
Aunque un patrón arquitectónico transmite una imagen de un sistema, no es una arquitectura como tal. Un patrón arquitectónico es más bien un concepto que resuelve y delinea algunos elementos cohesivos esenciales de una arquitectura de software. Innumerables arquitecturas pueden implementar el mismo patrón y así compartir las características relacionadas. Además, los patrones se definen a menudo como algo "descrito y comúnmente disponible".
- ^ a b Shaw, M.; Garlan, D. (1996). Arquitectura de software: perspectivas sobre una disciplina emergente. Prentice Hall. ISBN 9780131829572.
- ^ a b "Ch. 3: Patrones arquitectónicos y estilos". Microsoft Application Architecture Guide (2a edición). Microsoft Press. Octubre de 2009. ISBN 9780735627109.
Bibliografía
- Avgeriou, París; Zdun, Uwe (2005). "Los patrones arquitectónicos revisitados: un lenguaje de patrón" (PDF). 10a Conferencia Europea sobre Lenguas Patentes de Programas (EuroPlop 2005), Irsee, Alemania, julio. UVK Verlagsgesellschaft. pp. 1–39. CiteSeerX 10.1.1.141.7444. ISBN 9783879408054.
- Buschmann F.; Meunier R.; Rohnert H.; Sommerlad P.; Stal M. (1996). Arquitectura de software orientada al patrón: un sistema de patrones. Wiley. ISBN 9781118725269.
- Bass L.; Clements P.; Kazman R. (2003). Arquitectura de software en la práctica. Addison-Wesley. ISBN 9780321154958.