Patrones de arquitectura de software: tipos y características

Cuando escuchamos el término arquitectura, pensamos inmediatamente en construir un edificio o diseñar un plano gigantesco para una gran obra.

Sin embargo, en Saasradar te contamos que también existe, y es muy usada en el mundo del desarrollo de software, precisamente para determinar qué debe tener un sistema para ser construido y de qué manera se construirá.

La experiencia, como siempre ganada con el tiempo, permitió crear comportamientos comunes que debía tener un software para poder desarrollarse más organizado y favorecer la interacción entre las partes, sin que perdieran su independencia.

Así llegaron los Patrones de Arquitectura de Software.

Te comparto algunos de ellos.

Programación en capas

Como dice su nombre, este patrón de arquitectura de software divide la estructura del software en diferentes capas, que comúnmente se conocen como:

  • Capa de presentación
  • Capa Lógica
  • Capa de Datos

En cada una de ellas, el programador organiza un tipo de código específico, por ejemplo, todas las vistas del software en una capa, toda la interactividad en otra, el desarrollo de las funcionalidades en una tercera y la base de datos en una capa final.

Así cada una se dedica a una parte del software, sin dejar de estar relacionadas.

***IMPORTANTE*** Pueden ser tantas capas como sean necesarias, y solo se pueden comunicar con la siguiente o la anterior. O sea, la lógica con los datos, o la presentación con la lógica.

La idea de este patrón surgió para evitar el acoplamiento, o sea, que un cambio en una línea de código implicara cambiar todo lo demás.

Utilizando la programación en capas o n-capas, como se le conoce también, podemos modificar solo una parte del software, y el resto continuará funcionando correctamente.

Una variante de este patrón es el Tres capa, que en síntesis es lo mismo, pero tiene exactamente 3 capas:

  • Presentación (vistas)
  • Negocio(funcionalidades)
  • Datos (modelos de base de datos)

Y se ve de esta manera:  

capas 1 Patrones de arquitectura de software: tipos y características

Tres niveles

Aunque les parezca que leyeron sobre esto en el patrón anterior, no es así.

La diferencia entre estos patrones es poca y se encuentra en que las capas de un software pueden almacenarse todas en un mismo ordenador, pero si utiliza el patrón tres niveles significa que cada capa, o grupo de estas, se guardará en un lugar diferente a la otra.

La cantidad de niveles no es una camisa de fuerza, puede variar, de acuerdo con cómo se desee organizar el código fuente. Algunas opciones son:

  • Vistas, Lógica + Datos
  • Vistas +Lógica, Lógica+ Datos

Gráficamente este patrón sería similar a la siguiente imagen:

patron de arquitectura de software tres niveles

La ventaja de utilizar tres niveles radica esencialmente en la autonomía de los recursos donde se encuentran el software, dedicando lo necesario para que cada parte pueda ejecutarse con la mayor eficiencia posible.

Además, si el software crece en cuanto a código fuente durante el desarrollo, no habrá problemas, el espacio ya estará organizado para ello.

Arquitectura de microservicios y Arquitectura orientada a servicios

En el mundo del software, el desarrollo basado en servicios tiene dos patrones arquitectónicos:

  • Arquitectura de microservicios
  • Arquitectura orientada a servicios

Te presento ambos a la vez porque ambos se basan en el desarrollo de un software mediante servicios que se ejecutan de manera individual, comunicándose entre ellos utilizando código que se programa para que se ‘’llamen’’ unos a otros.

La diferencia está en que el primero de ellos solo se enfoca en determinar que se desarrolle una aplicación donde cada proceso o funcionalidad se represente por un servicio, mientras que el segundo es un concepto más grande y abarcador. 

La arquitectura orientada a servicios no solo desarrolla la aplicación siguiendo este método, sino que piensa el software desde este enfoque, por lo que si la tecnología evoluciona, será fácil mantener el sistema funcionando y actualizado.

arquitectura de microservicio

Modelo vista controlador

La arquitectura de software basada en el patrón Modelo-Vista-Controlador (MVC), divide el desarrollo del sistema en conceptos.

Su objetivo es separar la lógica del negocio de la presentación.

Pudiera parecer similar al N-Capas, pero a diferencia de este la lógica puede estar presente en todos los componentes y cada componente puede comunicarse con los demás indistintamente, sin tener que pasar por alguno de ellos de manera obligatoria.

modelo vista controlador arquitectura de software

El MVC es muy popular debido que es la arquitectura base de varios marcos de trabajo (framework):

SpringASP.NET
Ruby on RailsGrails
ExtJS 4Angular JS
LaravelZend Framework
SymfonyCondeIgniter
DjangoDelphi

Arquitectura de microkernel

Pasando de lo general a los especifico, un kernel o núcleo, es el nombre que recibe la parte del sistema operativo que se encarga de manejar los procesos que se ejecutan en la una computadora y planificar cómo usar los recursos de esta.

Un ejemplo claro sería cuando ponemos a copiar varios archivos, el núcleo ajusta la velocidad a la que se copian para que terminen casi al mismo tiempo.

Este tipo de patrón de arquitectura de software se utiliza en los sistemas para manejar errores de software o del hardware de manera independiente, y dividendo los sistemas en secciones de forma tal que si ocurre un fallo no se propague al resto del software.

Sus principales ventajas son:

  • La reducción de complejidad.
  • La descentralización.
  • Acción depuradora para el trabajo con los controladores de los sistemas operativos.

Esto a su vez provoca que al utilizar este tipo de patrón, se sobrecargue la memoria del equipo o que no funciones bien la integración entre las aplicaciones.

Así se ve este patrón, que utilizan algunos sistemas como los que le mostramos a continuación:

AmigaOSChorusOSMinix
SO3ZirconAmayaOS
NeXTSTEPAmoebaAIX
Sistemas operativos que implementan el patrón Microkernel
image Patrones de arquitectura de software: tipos y características
Representación gráfica del patrón Microkernel

Arquitectura en pizarra

Este patrón sigue el esquema de pizarra de la vida real.

La pizarra en cuestión tiene un estado inicial, relacionado con un problema; y un estado final que se alcanza cuando se encuentra la solución.

Para lograr el objetivo, la pizarra maneja agentes que se encargan de trabajar de manera independiente.

Cómo funciona:

  1. La pizarra escribe un conjunto de tareas para los agentes, dirigidas a diferentes áreas dentro del software.
  2. Cada agente lee en la pizarra la tarea, la ejecuta y escribe el resultado en ella.
  3. Otros agentes pueden utilizar respuestas encontradas para poder resolver su tarea.
  4. Al final, la pizarra alcanza la solución basada en los resultados de cada tarea

Es importante destacar que las tareas de los agentes, y los agentes en sí, no tienen que poseer ninguna relación. 

Sin embargo, la forma de trabajar debe ser una misma lógica y los resultados deben ser escritos de una forma común definida en el software.

¿Cuándo se utiliza? Es incorporado a software donde el problema a resolver es demasiado complejo cognitivamente hablando, o si no se conoce bien cómo enfrentarlo.

Aplicar este tipo de patrón, sin embargo, puede tener consecuencias negativas:

  • No existe garantía de que se alcanzará una solución.
  • No se conoce que tiempo de cómputo es necesario para resolver el problema.
  • No ofrece traza de los pasos que se ejecutaron para encontrar la solución.

Homologando con la vida real, un patrón de arquitectura en pizarra funcionaría como algo así:

image 1 Patrones de arquitectura de software: tipos y características
Representación gráfica del patrón Arquitectura en pizarra

Arquitectura dirigida por eventos

En un software, cualquier cambio, llamada o comportamiento puede ser considerado como un evento.

De esta forma pueden manejarse de manera especializada cada uno de ellos.

Y también es posible mantener vigilancia sobre procesos o acciones que deben ser detectados y gestionados de manera eficiente.

La utilización del patrón basado en evento se utiliza para generar acciones que son desencadenadas por un cambio de comportamiento o del estado de un objeto de in software. Un ejemplo clásico es el manejo de notificaciones.

Si un hacker intenta atravesar la seguridad de un software y el estado de una funcionalidad vital para el funcionamiento de un sistema era Activo, y cambia a Desactiva, se puede generar de manera automática la generación de medidas para reforzar la búsqueda de posibles ataques de ciber seguridad.

Esto ocurre porque existen agentes emisores que cuando ocurre el evento lo detectan y envían, mientras que los consumidores de eventos se encuentran escuchando constantemente si se emite algún evento.

Cuando este último encuentra un evento nuevo, tiene la misión de ejecutar un conjunto de acciones relacionadas con el evento ocurrido.

Este patrón se relaciona a menudo con el patrón orientado a servicios, teniendo en cuenta que un servicio se activa por eventos, a los que se le conoce con el nombre de disparadores.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.