Un patrón arquitectónico es una solución general reutilizable para un problema que ocurre comúnmente en la arquitectura de software dentro de un contexto dado. [1] Los patrones arquitectónicos abordan varios problemas en la ingeniería de software , como las limitaciones de rendimiento del hardware de la computadora , la alta disponibilidad y la minimización de un riesgo comercial . Algunos patrones arquitectónicos se han implementado dentro de los marcos de software .
El uso de la palabra "patrón" en la industria del software fue influenciado por conceptos similares expresados en la arquitectura tradicional , como A Pattern Language (1977) de Christopher Alexander , que discutió la práctica en términos de establecer un léxico de patrones , lo que incitó a los practicantes de la informática para contemplar su propio léxico de diseño.
El uso de esta metáfora dentro de la profesión de la ingeniería de software se convirtió en algo común después de la publicación de Design Patterns (1994) por Erich Gamma , Richard Helm , Ralph Johnson y John Vlissides, ahora comúnmente conocido como "La banda de los cuatro", coincidiendo con los primeros años. de la Internet pública , marcando el inicio de complejos sistemas de software que "devoran el mundo" [2] y la correspondiente necesidad de codificar el mundo del desarrollo de software en rápida expansión 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 se definen a menudo como "descritos estrictamente y comúnmente disponibles". [3] [4]
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 restricciones sobre cómo se pueden combinar. [5]
Un estilo arquitectónico es una colección con nombre 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 para un sistema particular dentro de ese contexto, y (3) obtienen cualidades beneficiosas en cada uno de ellos. sistema resultante. [1]
Algunos tratan los patrones arquitectónicos y los estilos arquitectónicos como lo mismo, [6] algunos tratan los estilos como especializaciones de patrones. Lo que tienen en común es que tanto los patrones como los estilos son modismos para que los usen los arquitectos, "proporcionan un lenguaje común" [6] o "vocabulario" [5] 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 un problema para resolver por su apariencia.
Ejemplos de
A continuación, se muestra una lista de patrones de arquitectura y los patrones de diseño de software y los patrones de solución correspondientes .
Área 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 |
|
|
| |
Analítica e inteligencia empresarial |
|
|
|
|
Gestión de datos maestros |
|
|
| |
Modelado de datos |
|
| ||
Inteligencia artificial |
|
Algunos ejemplos adicionales de patrones arquitectónicos:
- Sistema de pizarra
- Patrón de corredor
- Arquitectura impulsada por eventos
- Invocación implícita
- Capas
- Arquitectura hexagonal
- Microservicios
- Acción-dominio-responder , Modelo-vista-controlador , -abstracción-control de la presentación , Modelo-Vista-presentador , y Modelo-Vista-viewmodel
- Sistema de componentes de la entidad
- Límite de control de entidad
- Arquitectura de varios niveles (a menudo de tres niveles o n niveles)
- Objetos desnudos
- Almacén de datos operativos (ODS)
- De igual a igual
- Arquitectura de tuberías y filtros
- Arquitectura orientada a Servicios
- Arquitectura basada en el espacio
- Tabla hash distribuida
Ver también
- Lista de patrones y estilos de arquitectura de software
- Servicio de mensajería basado en procesos
- Arquitectura empresarial
- Capas comunes en la arquitectura lógica de un sistema de información
Referencias
- ^ a b R. N. Taylor, N. Medvidović y EM Dashofy, Arquitectura de software: fundamentos, teoría y práctica. Wiley, 2009.
- ^ Andreessen, Marc (20 de agosto de 2011). "Por qué el software se está comiendo el mundo" . El Wall Street Journal . Consultado el 25 de abril de 2020 .
- ^ Chang, Chih-Hung; Lu, Chih-Wei; Lin, Chih-Hao; Yang, Ming-Feng; Tsai, Ching-Fu (junio de 2008). "Una experiencia de aplicación de marco de software basado en patrones para mejorar la calidad del desarrollo de software: 4. El diseño e implementación de OS2F" . Revista de estudios de ingeniería de software, vol. 2, N ° 6 . la Tercera Conferencia de Taiwán sobre Ingeniería de Software (TCSE07). págs. 185-194. Archivado desde el original el 22 de septiembre de 2011 . Consultado el 16 de mayo de 2012 .
Además, los patrones a menudo se definen como algo "estrictamente descrito y comúnmente disponible". Por ejemplo, la arquitectura en capas es un estilo de llamada y devolución, cuando define un estilo general para interactuar.
- ^ "Patrones arquitectónicos: definición" . AAHN INFOTECH (INDIA) PVT. LIMITADO. Archivado desde el original el 23 de junio de 2012 . Consultado el 16 de mayo de 2012 .
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 diferentes pueden implementar el mismo patrón y, por lo tanto, compartir las características relacionadas. Además, los patrones a menudo se definen como algo "estrictamente descrito y comúnmente disponible".
- ^ a b M. Shaw y D. Garlan, Arquitectura de software: perspectivas sobre una disciplina emergente. Prentice Hall, 1996.
- ^ a b "Capítulo 3: Patrones y estilos arquitectónicos" .
Bibliografía
- Avgeriou, París; Uwe Zdun (2005). "Patrones arquitectónicos revisitados: un lenguaje de patrones". X Conferencia europea sobre lenguajes de patrones de programas (EuroPlop 2005), Irsee, Alemania, julio .
- Buschmann F .; Meunier R .; Rohnert H .; Sommerlad P .; Stal M. (1996). Arquitectura de software orientada a patrones: un sistema de patrones . John Wiley e hijos .
- Bass L .; Clements P .; Kazman R. (2005). Arquitectura de software en la práctica: segunda edición . Addison-Wesley .