El diseño de software no es una tarea sencilla, requiere de trabajo metódico paso por paso para crear los esquemas y las estructuras del mismo. Pero aun así, todos los softwares fallan, por lo que se crean patrones de arquitectura de software para dar de manera rápida con las soluciones.
Estas soluciones son esquematizadas, lo que permite una programación que responda de manera óptima; de alguna manera puede verse como la respuesta que da un sistema ante una falla esperada.
Patrones arquitectónicos
Los patrones son estructuras teóricas, no diseños en sí mismos. Son un esquema de interacción de partes que se aplica a diversos estilos de arquitectura. Esto hace que diversos estilos de arquitectura puedan compartir las características de una solución, pero conservando su estilo.
Estilos de programación
Los principales son:
- Programación por capas
- Arquitectura en pizarra
- Peer-to-peer
- Pipeline
- Arquitectura orientada a servicios
Cada estilo tiene su propia y particular manera de presentar la interfaz, por lo que cada uno ofrece diferentes calidades de sistema, pero hay soluciones “genéricas” aplicables para todos, como por ejemplo el control de accesos.
Estos ejemplos de patrones arquitectonicos sirven para notar lo universal de las soluciones en forma de patrones.
El diseño de patrones y la arquitectura de diseño
Antes de iniciar este punto conviene aclarar un tanto los conceptos, para esclarecer mejor la relación de su significado, que parece similar pero ciertas diferencias los separan.
Un patrón de diseño es básicamente un bosquejo, un esqueleto de una solución, la cual ha sido probada y se ha demostrado su funcionalidad. Por otro lado, el diseño es la manera de idear el funcionamiento del software.
Otro punto que vale aclarar es que los patrones pueden ser tanto de arquitectura como de diseño, es decir, los errores pueden hallarse en el software en sí mismo o en uno de sus componentes. Según esta lógica, el primero de estos patrones abarca soluciones macro, mientras que el patrón de diseño brinda soluciones a un componente de la arquitectura.
Conocer la diferencia entre patron y diseño resulta vital al momento de explorar la concepción de un software.
Los patrones de arquitectura de software están al alcance de los ingenieros como soluciones ya probadas, pero sólo tendrán solución si se aplican en un diseño correcto.