¿Qué es la arquitectura software?
La arquitectura del software es el diseño de más alto nivel de la estructura de un sistema. Consiste en un conjunto de abstracciones que forman el “marco” del software. La arquitectura se diseña en la fase posterior a la de requisitos, la llamada fase de diseño.
¿Qué es la Arquitectura por capas?
La arquitectura en capas es un patrón de arquitectura software usada en la gran mayoría de sistemas.
Se centra en una distribución jerárquica de las roles y responsabilidades proporcionando una separación efectiva de las preocupaciones (cada cual se encarga de lo que le cooresponde).
Al pensar en un sistema en términos de capas, se imaginan los principales subsistemas de software ubicados de la misma forma que las capas de un pastel, donde cada capa descansa sobre la inferior.
Por ejemplo, el diseño de una típica aplicación Web comprende:
Capa de presentación (funcionalidad relacionada con la User Interfase)
Capa de negocio (procesamiento de reglas de negocio).También denominada Lógica de Dominio, esta capa contiene la funcionalidad que implementa la aplicación. Involucra cálculos basados en la información dada por el usuario y datos almacenados y validaciones. Controla la ejecución de la capa de acceso a datos y servicios externos. Se puede diseñar la lógica de la capa de negocios para uso directo por parte de componentes de presentación o su encapsulamiento como servicio y llamada a través de una interfaz de servicios que coordina la conversación con los clientes del servicio o invoca cualquier flujo o componente de negocio.
Capa de datos (funcionalidad relacionada con el accesos a datos). Es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio.
Beneficios:
Abstracción, encapsulamiento, capas de funcionalidad muy bien definidas, alta cohesión, reusabilidad (las capas inferiores de la pirámide no tienen dependencias de las superiores por lo que es fácil reutilizarlas) y débil acoplamiento (comunicación basada en abstracciones)
La separación, reduce el riesgo y el impacto de los cambios tecnológicos. Por ejemplo al cambiar el mecanismo de persistencia de la aplicación las capas que lo consumen no tienen porque realizar cambios. Además aumenta el rendimiento (a partir de cierta carga de trabajo) al distribuir las capas sobre múltiples capas físicas. También aumenta la escalabilidad y la tolerancia a fallos.
Este escenario es propicio para implementar una buena política de pruebas, permitiendo conmutar entre diferentes implementaciones de los interfaces (mock, servicios reales…)
Niveles y capas
¿Niveles y capas con lo mismo?, los niveles corresponde a la forma en que las capas lógicas se encuentran distribuidas de forma física.
Ejemplos de esto último:
Una solución de 3 capas (presentación, lógica del negocio, datos) que residen en un solo ordenador (Presentación+lógica+datos). Se dice que la arquitectura de la solución es de tres capas y un nivel.
Una solución de 3 capas (presentación, lógica del negocio, datos) que residen en dos ordenadores (Presentación+lógica por un lado; lógica+datos por el otro lado). Se dice que la arquitectura de la solución es de tres capas y dos niveles.
Referencias:
Wikipedia:https://es.wikipedia.org/wiki/Programación_por_capas
Juan Peláez en Geeks.ms: https://geeks.ms/jkpelaez/2009/05/30/arquitectura-basada-en-capas/
Maria Eugenia Arevalo Lizardo https://arevalomaria.wordpress.com/2010/12/02/introduccion-al-patron-de-arquitectura-por-capas/
https://instintobinario.com/arquitectura-en-tres-capas/
Muchas gracias por el aporte