Layered Architecture

31 05 2008

Layered Architecture o Arquitectura por capas es un estilo de programación en el que el objetivo primordial es la separación de la lógica, la presentación, los datos, la comunicación… etc. De esta forma se consigue que cada capa sea independiente de las demás: dentro de una capa, sólo sería necesario conocer la Interface que implementan las capas externas necesarias.

Gracias a esta forma de diseñar el software, se consigue una mejor distribución del programa, dando la posibilidad de dividir el trabajo más efectivamente, ya que cada grupo puede abstraerse completamente con sólo conocer las APIs (interfaces) de las capas externas necesarias.

Un ejemplo sencillo es el siguiente, pero pensando que las tres capas se encuentran en distintos ordenadores. (sacado de la Wikipedia):

Free Image Hosting at www.ImageShack.us

QuickPost

Es muy sencillo dividir nuestros programas ‘Terminal’ y ‘Tornos’ en capas, ya que estas son muy diferenciables, y sin darnos cuenta, definimos las interfaces necesarias para cada capa. Aún así, al reestructurar estos programas, surgió algún que otro conflicto: es importante saber que se debe respetar la jerarquía de las capas, es decir, no se debe acceder a una capa dos niveles de profundidad por debajo de la capa en la que estemos. Por ejemplo, la capa ‘visor’ no debe acceder a la capa ‘bd’. Esto es lo que se quiere evitar con este diseño: el caos de dependencias. El siguiente es un ejemplo más completo:

Free Image Hosting at www.ImageShack.us

QuickPost

Capas como ‘visor’ pueden dividirse en subcapas, al igual que todas las demás. En Java, las capas se traducen en Packages. Cuando importamos por ejemplo javax.comm.* estamos accediendo al subpaquete o subcapa comm dentro del paquete o capa javax.

La división del programa ‘Terminal’ por ejemplo, se traduce así (no se muestran las posibles subcapas):

Además, tal y como montamos nuestro sistema para la simulación, se trata de un sistema de ‘tres capas y dos niveles’ (presentación+lógica en mi portátil -terminal-, y lógica+datos en otro -servidor BD y GestiónTornos en el portátil de ordóñez)

Resumiendo, aquí tenéis links de interés que explican mejor el tema:

A Strategy for Layering Software Applications

Java 101: Layered Architecture

Programación por capas


Acciones

Information

One response

5 06 2008

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: