# Front-end e back-end

I termini inglesi front-end (in sigla FE) e back-end (in sigla BE) in informatica denotano, rispettivamente, la parte visibile all'utente di un programma e con cui egli può interagire — tipicamente un'interfaccia utente — e la parte che permette l'effettivo funzionamento di queste interazioni. Il front end, nella sua accezione più generale, è responsabile dell'acquisizione dei dati di ingresso e della loro elaborazione con modalità conformi a specifiche predefinite e invarianti, tali da renderli utilizzabili dal back end. Il collegamento del front end al back end è un caso particolare di interfaccia.

## Uso

I termini acquistano diversi e precisi significati se applicati ad ambiti più specifici:
* Nel campo della progettazione software e sviluppo software il front end è la parte di un sistema software che gestisce l'interazione con l'utente o con sistemi esterni che producono dati di ingresso (es. interfaccia utente con un form), il back end è invece la parte che elabora i dati generati dal front end. Nei sistemi più complessi non è raro che i dati subiscano elaborazioni intermedie prima di passare al back end (ad es. su un middleware come un application server in una tipica architettura three-tier). La distinzione di una parte di ingresso e di una parte terminale nei sistemi software è un genere di astrazione che aiuta a mantenere le diverse parti di un sistema complesso logicamente separate e quindi più semplici.
* Nella programmazione e sviluppo dei siti web viene definito front end la parte visibile da chiunque e raggiungibile all'indirizzo web del sito e viene definita back end la parte di amministrazione di un sito (modifica contenuti, creazione pagine) accessibile solo da amministratori del sito web. Front end e back end si utilizzano solamente quando il sito web è dinamico.
* Molti programmi per calcolatore sono concettualmente suddivisi in front end e back end. Generalmente nascosto all'utente, il back end è talvolta un programma completo e indipendente che può essere controllato attraverso un altro programma, detto front end. Spesso il front end è un'interfaccia grafica (GUI) che genera comandi per una più semplice interfaccia a riga di comando. Tutte le attività richieste attraverso l'interazione con gli elementi dell'interfaccia grafica vengono tradotte in linee di comando e indirizzate al sottostante programma di back end. Questo tipo di programmi front end è comune in ambiente Unix, dove spesso gli applicativi sono sviluppati sulla base di molti programmi piccoli, ben collaudati e potenti, ma al tempo stesso dotati di funzionalità limitate a un preciso e unico scopo. Il desktop environment è l'esempio più generale di front end grafico, mentre Ncurses offre un esempio di front end semi-grafico generico.
* Nei compilatori, il front end traduce il codice sorgente, di solito espresso in un linguaggio di programmazione ad alto livello, in una rappresentazione intermedia, mentre il back end trasforma la rappresentazione intermedia del programma in codice del linguaggio di output (spesso, un linguaggio assemblatore).
* In ambito networking, sono considerate di front end le interfacce di rete sulle quali viene erogato un servizio e sulle quali si attestano gli accessi degli utenti, mentre per back end si intendono le interfacce utilizzate per l'amministrazione o manutenzione dell'apparato che lo eroga.
* Alcuni modi di organizzare l'interazione uomo-calcolatore possono essere concettualmente schematizzati in termini di front end e back end. Per esempio, un file manager (programma per la gestione di file) grafico, tipo Windows Explorer o Nautilus possono essere considerati front end al file system del computer.
* Nel campo della sintesi vocale, il front end denota la parte del sistema di sintesi che converte il testo in ingresso in una rappresentazione fonetica simbolica, mentre il back end converte la rappresentazione simbolica ottenuta in suoni.
* Nel campo dell'Electronic Design Automation (EDA) e in generale nell'industria dei semiconduttori si intende con front end la fase di progettazione relativa alla costruzione fisica dei wafer di silicio. Si intende invece per back end la fase di assemblaggio e packaging dei wafer stessi.
* Nel campo dell'outsourcing si trovano sullo stesso livello nonostante abbiano obiettivi di integrazione differenti. Ne sono un esempio le applicazioni web-based.
* In radioastronomia il front end di un radiotelescopio consiste in un modulo contenente l'antenna a tromba corrugata (o feed horn), la guida d'onda e le antenne necessarie a ricevere il segnale. Il termine back end è usato per riferirsi ai sistemi di amplificazione e filtraggio del segnale che ripuliscono e modificano il segnale prima di presentarlo all'utilizzatore.
* Nell'organizzazione aziendale invece si parla più comunemente di back office e front office.
* Nel campo dell'analisi dei dati, il back end definisce il processo di estrazione ed elaborazione dei dati dalle fonti originarie, mentre il front end definisce le modalità di rappresentazione e visualizzazione dei dati agli utenti finali
* nel campo della Diagnostica clinica il front-end si riferisce a soluzioni automatizzate in cui la stazione di preanalitica è separata dai moduli analitici successivi e l'operatore carica i supporti con i tubi dei campioni. Questo permette di gestire carichi di lavoro molto elevati in ingresso e l'utilizzo di stazioni analitiche di marche e necessità molto diverse