Patrones de Diseño en Arquitectura de Software: #1The Layers architectural pattern

The Layers

El patrón de arquitectura de software conocido como "Capas o Layers" se enfoca en proveer un conjunto de lineamientos para que la aplicación pueda ser descompuesta  dentro de un grupo de subtareas en la cual cada uno de estos grupos sea un nivel particular de abstracción. 

Un ejemplo común de aplicación de este patrón lo podemos encontrar en el modelo conceptual OSI de 7 Capas, es un modelo muy famoso en el mundo de los telemáticos o personas involucradas con las redes y el internet, consiste en dividir la pila de protocolos que utilizan nuestras computadoras para comunicarse (El modelo TCP-IP sigue el mismo concepto con menos capas).  La idea es simple descomponer cada parte del problema en capas y proveer a las capas inferior o superior con una API adecuada para su comunicación.

Contexto:

Es común encontrarse con este patrón de arquitectura en sistemas con un campo problema-solución muy grande que requieren descomposición del mismo en diferentes sub niveles. Es muy importante resaltar que este patrón es muy escalable, ya que  agregar o eliminar capas no implica la modificación de toda la pila. Aquí resumo algunas de las reglas comunes que una arquitectura por capas debería seguir, como son:

  • Los cambios tardíos en el código fuente no deberían afectar al sistema. Deben limitarse a un componente y no afectar a otros.
  • Las API deben ser estables, incluso debían tener reglas prescritas siguiendo los lineamientos  de normalización de la empresa o entidad.

  • Las partes del sistema deben ser intercambiables. Los componentes deben poder ser reemplazado por implementaciones alternativas sin afectar al resto del sistema. 
  • La reconfiguración del sistema también se puede realizar en tiempo de ejecución utilizando una interfaz de administración.
  • La imagen siguiente representa un resumen de las responsabilidades y colaboradores de una capa J. Como pueden ver la capa J+1(superior) recibe los servicios de la capa J, mientras la capa J-1(inferior) provee servicios a la capa J. 


En particular este patrón me parece muy útil para el desarrollo de aplicaciones en el marco del Internet de las cosas, en donde sea necesario implementar una capa de gestión de  sensores y que la información producida por estos sea de una manera u otra manejada por capas superiores más abstractas como una interfaz web  para el usuario.  El uso de este patrón tiene un sin fin de aplicaciones y su estudio a detalle puede servir de guía para el desarrollo  de aplicaciones robustas y escalables.

Pueden encontrar información detallada sobre este padrón de diseño  en el libro 'Pattern-Oriented Software Architecture and System of Patterns' por Fank Buschmann y compañeros, es un excelente libro  de consulta. 


Comentarios

Entradas populares de este blog

Entorno de desarrollo VHDL (Low Cost)🤑💰

Técnicas para Algoritmos: Sliding Windows #2