Programación por capas

miniatura|dereita
A **programación por capas** é un estilo de programación na que o obxectivo primordial é a separación da lóxica de negocios da lóxica de deseño, un exemplo básico disto é separar a capa de datos da capa de presentación ao usuario.

## Características 
A vantaxe principal deste estilo, é que o desenvolvemento pódese levar a cabo en varios niveis e en caso dalgún cambio só atácase ao nivel requirido sen ter que revisar entre código mesturado. Un bo exemplo deste método de programación sería: Modelo de interconexión de sistemas abertos

Ademais permite distribuír o traballo de creación dunha aplicación por niveis, deste xeito, cada grupo de traballo está totalmente abstraído do resto de niveis; simplemente é necesario coñecer a API que existe entre niveis.

No deseño de sistemas informáticos actual adóitase usar as arquitecturas multinivel ou Programación por capas. En devanditas arquitecturas a cada nivel confíaselle unha misión simple, o que permite o deseño de arquitecturas escalables (que poden ampliarse con facilidade no caso de que as necesidades aumenten).

O deseño máis en voga actualmente é o deseño en tres niveis (ou en tres capas).

## Capas ou niveis
*1.- Capa de presentación:* é a que ve o usuario (hai quen a denomina "capa de usuario"), presenta o sistema ao usuario, comunícalle a información e captura a información do usuario dando un mínimo de proceso (realiza un filtrado previo para comprobar que non hai erros de formato). Esta capa comunícase unicamente coa capa de negocio.

*2.- Capa de negocio:* é onde residen os programas que se executan, recíbense as peticións do usuario e envíanse  as respostas tras o proceso. Denomínase capa de negocio (e ata de lóxica do negocio) pois é aquí onde se establecen todas as regras que deben cumprirse. Esta capa comunícase coa capa de presentación, para recibir as solicitudes e presentar os resultados, e coa capa de datos, para solicitar ao xestor de base de datos para almacenar ou recuperar datos del.

*3.- Capa de datos:* é onde residen os datos e é a encargada de acceder aos datos. Está formada por un ou máis xestores de bases de datos que realizan todo o almacenamento de datos, reciben solicitudes de almacenamento ou recuperación de información desde a capa de negocio.

Todas estas capas poden residir nun único ordenador (non é o típico), aínda que o máis usual é que haxa unha multitude de computadores onde reside a capa de presentación (son os clientes da arquitectura cliente/servidor). As capas de negocio e de datos poden residir no mesmo ordenador, e se o crecemento das necesidades o aconsella pódense separar en dous ou máis ordenadores. Así, se o tamaño ou complexidade da base de datos aumenta, pódese separar en varios computadores os cales recibirán as peticións do computador en que resida a capa de negocio.

Se pola contra fose a complexidade na capa de negocio o que obrigase á separación, esta capa de negocio podería residir nun ou máis ordenadores que realizarían solicitudes a unha única base de datos. En sistemas moi complexos chégase a ter unha serie de computadores sobre os cales corre a capa de datos, e outra serie de computadores sobre os cales corre a base de datos.

Nunha arquitectura de tres niveis, os termos "capas" e "niveis" non significan o mesmo nin son similares.

O termo "capa" fai referencia á forma como unha solución é segmentada desde o punto de vista lóxico:

Presentación/
Lóxica de Negocio/
Datos.

En cambio, o termo "nivel", corresponde á forma en que as capas lóxicas se atopan distribuídas de forma física. Por exemplo:

:* Unha solución de tres capas (presentación, lóxica, datos) que residen nun só ordenador (Presentación+lóxica+datos). Dise, que a arquitectura da solución é de tres capas e *un nivel*.

:* Unha solución de tres capas (presentación, lóxica, datos) que residen en dous computadores (presentación+lóxica, lóxica+datos). Dise que a arquitectura da solución é de tres capas e *dous niveis*.
 
:* Unha solución de tres capas (presentación, lóxica, datos) que residen en tres computadores (presentación, lóxica, datos). A arquitectura que a define é: solución de tres capas e *tres niveis*.

## Véxase tamén
### Outros artigos 
*Arquitectura software
*Enxeñería do software

### Ligazóns externas 
*Multi Capas