Fundamentos de Patrones de Arquitectura de Software: Conceptos y Aplicaciones

Clasificado en Informática

Escrito el en español con un tamaño de 3,9 KB

Patrones de Arquitectura de Software

Los patrones, en general y en particular los de arquitectura, son un intento de formalizar la comunicación y el reuso de la experiencia de diseño:

  • Capturan la experiencia probada de diseño de software.
  • Describen problemas recurrentes que surgen en determinados contextos.
  • Describen esquemas de soluciones probados.
  • Son una herramienta fundamental para los no expertos.
  • Ofrecen un paso más hacia la Ingeniería de Software, permitiendo que desarrolladores menos experimentados realicen tareas que antes requerían un alto nivel de virtuosismo.

Los diseñadores expertos manejan patrones recurrentes de clases y colaboraciones útiles ante problemas específicos. Estos patrones resuelven conflictos concretos y crean diseños más elegantes, flexibles y reutilizables, permitiendo la reutilización de la experiencia en diseño.

¿Qué es un patrón?

"Cada patrón es una regla de tres partes, la cual expresa una relación entre un cierto contexto, un problema y una solución."

Un Patrón de Arquitectura de Software es un esquema genérico probado para solucionar un problema particular que es recurrente dentro de un cierto contexto. Este esquema se especifica describiendo los componentes, sus responsabilidades y sus relaciones.

Características Generales de los Patrones

  • Proporcionan soluciones técnicas y concretas.
  • Se utilizan en situaciones frecuentes.
  • Favorecen la reutilización de código.
  • El uso de un patrón no siempre se refleja directamente en el código (es difícil reutilizar la implementación de un patrón).
  • Atacan problemas recurrentes (como la variabilidad de las interfaces).
  • Documentan experiencias de diseño existentes y bien probadas.
  • Identifican y especifican abstracciones de alto nivel (ej. la tríada MVC).
  • Proveen un vocabulario común y comprensible.
  • Son una forma de documentar la arquitectura del software.
  • Facilitan la construcción de software con propiedades definidas (interfaces intercambiables, modelo reutilizable).
  • Ayudan a construir arquitecturas heterogéneas y complejas.
  • Pueden verse como bloques de construcción mentales para tratar distintos aspectos del diseño.

Existen patrones de arquitectura, de diseño, de procesos, de interfaces e idioms. Aunque no existen paradigmas específicos para implementarlos, algunos lenguajes proveen elementos útiles como la orientación a objetos, el polimorfismo y la herencia.

Estructura de un Patrón

  • Nombre del Patrón
  • Contexto (escenario): Situación de diseño que da lugar al problema.
  • Problema: Conjunto de dificultades que surgen del contexto.
  • Solución: Configuración para balancear las fuerzas:
    • Componentes y relaciones (estructura).
    • Comportamiento dinámico (colaboración).

Relación entre Patrones

“Cada patrón depende de los patrones más pequeños que contiene y de los más grandes donde está contenido.”

  • Distintos aspectos de un sistema se resuelven con distintos patrones.
  • Existen variantes de ciertos patrones para situaciones especiales.

Categorías de Patrones Arquitectónicos

  • Patrones Simples: Layers (Capas), Tubos y Filtros, Pizarrón, Repositorio.
  • Sistemas Distribuidos: Broker, Microkernel, Pipes y Filtros, CAGS, Cliente-Servidor.
  • Sistemas Interactivos: Modelo-Vista-Controlador (MVC), Presentación-Abstracción-Control.
  • Patrones Adaptables: Microkernel, Reflexión.

Entradas relacionadas: