Front end y back end

Front end y back end son términos que se refieren a la separación de intereses entre una capa de presentación y una capa de acceso a datos, respectivamente. Según el contexto, para referirse a front end se usan otros términos como frontal o interfaz de usuario, mientras que a back end se le llama servidor, motor  o modo administrador.

Informática 

En diseño de software el front end es la parte del software que interactúa con los usuarios y el back end es la parte que procesa la entrada desde el front end. La separación del sistema en front ends y back ends es un tipo de abstracción que ayuda a mantener las diferentes partes del sistema separadas. La idea general es que el front end sea el responsable de recolectar los datos de entrada del usuario, que pueden ser de muchas y variadas formas, y los transforma ajustándolos a las especificaciones que demanda el back end para poder procesarlos, devolviendo generalmente una respuesta que el front end recibe y expone al usuario de una forma entendible para este.
La conexión del front end con el back end es un tipo de interfaz.

En diseño web hace referencia a la visualización del usuario navegante por un lado (front end), y del administrador del sitio con sus respectivos sistemas por el otro (back end).

Muchos métodos conocidos para interactuar con ordenadores pueden ser conceptualizados en términos de front end y back end. 
Por ejemplo, un administrador de archivos gráfico como Windows Explorer,  Dolphin, Nautilus y Finder puede ser considerado como un front end para el sistema de archivos de la computadora.  Otro ejemplo consiste en considerar al Shell como front end que sirve como interfaz para interactuar con el núcleo del sistema operativo que cumple el rol back end. 

En un compilador el front end traslada el lenguaje del código fuente a una representación intermedia que a su vez funciona con el back end para producir en la salida el código.

En sintetizadores del habla, el front end se refiere a la parte del sistema que convierte la entrada del texto en una representación simbólico-fonética y el back end convierte la representación fonética y simbólica en el sonido.

Muchos programas tienen su concepto de diseño dividido en front ends y back ends, pero en la mayoría de los casos, el back end está oculto del usuario final y solo pueden utilizarlo el cliente intermedio o el administrador que se encargará de gestionar el sistema de información. Sin embargo, muchos programas están escritos para servir de simple front end para otros que ya existen, como es el caso de las interfaces gráficas construidas sobre una interfaz de línea de órdenes. Este tipo de front end es común en entornos de escritorio Unix (como los GUI), donde los programas son desarrollados siguiendo la filosofía de diseño de muchos programas pequeños capaces de ejecutarse independientemente o combinados.

Tecnología 

En radiotelescopios y antenas parabólicas, el frontal consiste en un paquete que contiene a la antena de bocina y a la guía de ondas, como un requisito para que las antenas detecten la señal de radio. El motor sería el amplificador y el filtro que refina y modifica la señal antes de presentarla al usuario.

En la automatización de diseño electrónico, el ciclo del diseño, que es el frontal, equivale al diseño lógico y eléctrico (p. ej. captura esquemática, síntesis lógica). A veces el diseño preliminar es considerado como un frontal. El emplazamiento y ruteo preliminar o un diseño personalizado de la capa de verificación física, o una disposición frente a esquemática son considerados como el motor.

En diseño de circuitos integrados de radiofrecuencia el frontal hace referencia a los bloques de la cadena de recepción que se encargan de filtrar, amplificar y trasladar la señal de radiofrecuencia a banda base. Generalmente los bloques comprendidos son un amplificador de bajo ruido (LNA), filtros y mezcladores de señal. Por otro lado, actualmente las tecnologías de radio definidas por software y radio cognitiva, entre otras, implementan frontales que no necesariamente integran todos los bloques anteriormente citados.

Véase también 
 Arquitectura de software
 Cliente-servidor
 Programación por capas

Referencias 

Programación
Arquitectura de software