La arquitectura de tres capas: Introducción
En el post de hoy quisiera entrar a un tema que nos queda cerca a aquellas personas que curramos a diario con aplicaciones web y programamos día a día en esa dirección.
En concreto, la programación por capas es una forma de programar bajo un objetivo principal: que las distintas lógicas presentes en la aplicación se separen y posean estructuras bien planteadas.
En general, suele plantearse esta visión sobre tres niveles o capas:
1.-La capa de presentación: Esta capa se encarga de proveer una interfaz entre el sistema y el usuario. Basicamente, se responsabiliza de que se le comunique información al usuario por parte del sistema y viceversa, manteniendo una comunicación exclusiva con la capa de negocio que veremos a continuación. Además dentro de esta capa entraría aquello que el usuario “ve” cuando se conecta a la aplicación.
2.-La capa de negocio: Es la capa que contiene los procesos a realizar con la información recibida desde la capa de presentación, las peticiones que el usuario ha realizado, y responsabilizadose de que se le envíen las respuestas adecuadas a la capa de presentación.
Podríamos verla como una capa intermedia, a medio camino entre la capa de presentación y la capa de datos, puesto que se relaciona con ambas y por supesto, procesa también la información devuelta por la capa de datos.
3.-La capa de datos: Por último, la capa donde se almacenan los datos. Mediante la capa de negocio, se puede encargar de ofrecer, modificar, almacenar, borrar y recuperar datos, mediante el gestor (o los gestores) de bases de datos que la aplicación requiera.
La técnica de programación en tres capas es óptima de cara a conseguir la mejor calidad acoplamiento-cohesión. ¿Que establece esta relación?
La cohesión es el parámetro que valora la facilidad con la que en una aplicación es posible reunir componentes o subsistemas en un sistema software mayor.
El acoplamiento es el parámetro responsable de evaluar las relaciones que se establecen entre partes, componentes o subsistemas de un sistema software mayor, de tal forma que un nivel bajo de acoplamiento permitiría la reutilización de código existente en otro contexto, o reaprovechar funcionalidades ya definidas o modificadas, siendo negativo en caso contrario.
Como resumen de lo anterior, podemos asumir que ambos parámetros van encaminados a estructurar una relación ordenada entre las distintas capas y asegurarnos que se implementan con la mejor autonomía posible entre ellas. Podriamos asumir también que lo ideal es plantear un sistema donde se produzca un bajo acoplamiento y una alta cohesión entre sus partes.
