# Applicazione (informatica)

Il termine applicazione in informatica individua un software installato o una serie di software in fase di esecuzione su un computer con lo scopo e il risultato di rendere possibile una o più funzionalità, servizi o strumenti utili e selezionabili su richiesta dall'utente tramite interfaccia utente, spesso attraverso un'elaborazione a partire da un input fornito dall'utente interagendo con esso. Risultato a livello utente dalla combinazione di risorse software e rispettive risorse hardware di processamento per la loro esecuzione, l'installazione delle applicazioni avviene tramite store ufficiali o alternativi.
Nel caso di un dispositivo mobile il termine applicazione è sostituito più comunemente con il termine app.

## Descrizione

Soltanto i sistemi operativi e i loro componenti interni non sono considerati applicazioni, in quanto necessari al funzionamento intrinseco degli strumenti di base della piattaforma informatica. La componente hardware nei tempi moderni ha perso la sua rilevanza, tanto che un sinonimo di applicazione è programma. L'assunto di partenza può quindi anche essere espresso in termini di programma applicativo, ossia programmi non necessari al funzionamento del computer (come la suite Microsoft Office), in contrapposizione al software di base, cioè tutte le istruzioni di base di cui un computer ha bisogno (ad esempio il sistema operativo Microsoft Windows).
L'applicazione può anche essere interpretata, progettata e realizzata come un sistema composto costituito da 3 sottosistemi funzionali principali secondo la filosofia del divide et impera:
* il sottosistema di interfaccia utente (o detto anche user interface o UI), scritta in un certo linguaggio di programmazione o in linguaggio di markup.
* il sottosistema di logica applicativa o di elaborazione (o anche LA), scritta in un certo linguaggio di programmazione.
* il sottosistema di gestione dei dati (detta anche data layer o GD), ovvero salvataggio/recupero su/da supporto di memorizzazione come ad es. disco rigido o database.

### Classificazione

I criteri di classificazione del software applicativo possono essere diversi, ad esempio a seconda del tipo di licenza concessa dall'autore verso il fruitore, oppure a seconda dell'uso a cui è destinato. Nel primo caso si tratta di software libero o software proprietario, con tutte le sfumature intermedie.
* Desktop. Anche definito software di produttività personale (o di office automation). Rientrano in questa categoria: elaborazione di testi, fogli di calcolo, presentazioni, grafica tecnica, grafica artistica, fotoritocco, musica, agenda, PIM, ecc.
* Games. Giochi, nel senso più ampio del termine.
* Education. Applicazioni utili alle scuole di tutti i gradi, ad esempio per l'autoapprendimento
* Science. Applicazioni utili nei vari campi della scienza applicata, quali, ad esempio Intelligenza Artificiale, Astronomia, Biologia, Chimica, ecc. È corretto notare che oggi qualsiasi disciplina scientifica dispone di applicazioni dedicate.
* Software development. Sviluppo di applicazioni (ma anche di software di base), ad es. IDE.
* Client-server. Sono applicazioni distribuite in rete dove un client si connette ad un server per poter usufruire dei servizi associati (es. database, applicazioni web, ecc...)
* Business o Enterprise. Grandi categorie che comprendono le cosiddette applicazioni "aziendali", suddivise in subcategorie del tipo: Financial o software gestionale, CRM, ERP, OLAP, Project management, E-Commerce, soluzioni di tipo office, Product Data Management, Product Lifecycle Management, Configuratori di Prodotto, CPQ, CRM, ecc. Sotto la categoria ERP possiamo trovare le classiche: contabilità, bilancio, controllo di gestione, magazzino, fornitori, clienti, produzione, vendite, marketing, personale, ecc. ossia tutti gli ambiti di gestione di una struttura operativa. Stesso discorso vale per sistemi e prodotti utilizzati dagli enti pubblici per erogare servizi ai cittadini o imprese. Rientrano in questa categoria anche le cosiddette applicazioni web.
* Industrial. Estesissima famiglia che comprende applicazioni software presenti in impianti, macchine, apparecchiature, attrezzature, dispositivi, equipaggiamenti di fabbrica, edili, agricoli, logistici o commerciali (distribuzione) e tante altre categorie industriali, professionali o domestici. Esempio banale: l'applicazione utente touchscreen di un comune ascensore ma pure il relativo PLC, o anche le applicazioni che attuano il controllo di processo in ambienti ed impianti industriali.
* Di Sistema. Le app cosiddette "di sistema" sono strumenti utilizzati dai sistemi operativi o da taluni software applicativi complessi che forniscono funzioni essenziali al dispositivo o agiscono sulle prestazioni. Sono spesso non dotate di interfaccia utente (UI), agiscono in background, non sono rintracciabili nel menù delle applicazioni e sovente nascoste nel percorso radice delle cartelle. Vengono anche denominate servizi (specialmente in ambiente Windows) o daemons (in ambiente Unix e GNU/Linux).

#### La nuova generazione di applicazioni per dispositivi mobili

Recentemente è iniziata a diffondersi una nuova generazione di applicazioni, quelle per dispositivi mobili. Caratterizzate da una netta semplificazione rispetto a quelle per i tradizionali dispositivi informatici, queste nuove applicazioni vengono identificate semplicemente come app. Da rilevare che da Windows 8 e successivi, Microsoft chiama "app" i programmi e applicazioni installati tramite Windows Store, anche quando si tratta di dispositivi non mobili (come un ordinario PC).

### Interfaccia grafica

Tipicamente le applicazioni espongono i loro servizi all'utente attraverso un'interfaccia grafica dedicata composta tipicamente da un panel principale dell'applicazione e relative finestre ad interattività con l'utente tramite mouse e tastiera, pulsanti compresi in barre degli strumenti, barra dei menù, barra di scorrimento ecc. variamente disposte e spesso anche personalizzabili.
Nei vecchi sistemi e per applicazioni semplici si usava invece direttamente la shell testuale a riga di comando dove a determinati dati di input venivano restituiti determinati dati in output (es. programmi di calcolo matematico, manipolazioni sui file system a livello di sistema operativo, lancio di programmi di utilità, ecc.).

### Installazione

Il download e l'installazione di applicazioni avviene tramite dei negozi virtuali, dei software di distribuzione digitale che permettono lo scaricamento, l'installazione e l'esecuzione di files eseguibili o di pacchetti software gestiti da appositi sistemi (ad es. su Android le applicazioni possono essere installate a partire da un pacchetto distribuito in formato apk). Questa procedura può avvenire grazie a store alternativi e ufficiali (ad es. Google Play store, Microsoft Store, App Store).
Le applicazioni si distinguono anche tra quelle che non richiedono il riavvio della macchina, al termine dell'operazione, e quelle (solitamente quelle che caricano dei processi in avvio) che richiedono il riavvio per completare l'installazione. Le app per dispositivi mobili solitamente sono disponibili immediatamente senza riavvio.
Nel caso di web app o applicazioni fruite tramite un browser ovviamente non c'è nulla da installare: al più si tratta di configurare l'esperienza utente desiderata o impostare un profilo.

### Console di amministrazione

Le applicazioni complesse come ad esempio le suite (pacchetti) sono dotate di un programma specifico denominato Console di amministrazione (Administration console) o, per quelle infrastrutturali usate dai sistemisti, appliance. Questo ambiente (distinto dalla suite oppure facente parte) è lo strumento con il quale l'applicazione software (ad esempio le soluzioni gestionali per aziende) è distribuita, impostata, configurata e manutenuta. A volte esiste una versione della console denominata appliance che è rivolta alla configurazione (dominio, funzioni, gruppi, risorse, utenti, permessi e altre regolazioni fini).
Soprattutto i sistemi software fruiti in ambiente client/server hanno una procedura di installazione e configurazione specialistica (deployment), articolata e che deve seguire una predeterminata sequenza (back end, database, front end, pacchetti di aggiornamento, sicurezza, profilazione, ecc.).

## Ambiti di applicazione

Lo sviluppo di applicazione era inizialmente destinato esclusivamente alla produttività individuale e aziendale: CRM, ERP, OLAP, Gestione delle risorse umane, project management, commercio elettronico, posta elettronica, calendario e contatti banche dati. Successivamente, complice la crescente domanda pubblica dovuta alla rapida diffusione dei moderni dispositivi mobili, è stata registrata la rapida espansione in altre aree, come ad esempio giochi, scienza applicata, automazione industriale, GPS e acquisti di biglietti.
Oggi esistono centinaia di migliaia di applicazioni: giochi e widget di varia natura, OCR, consultare riviste e quotidiani online, ascoltare la radio, fotografare e modificare le foto con particolari effetti grafici, trovare indirizzi e ottenere indicazioni stradali, ricevere informazioni turistiche, prenotare e acquistare biglietti del treno e dell'aereo o direttamente alberghi, seguire ricette e corsi di varia natura, condividere e scambiare informazioni, foto con i propri amici con le applicazioni dei principali social network.

## Distribuzione e commercializzazione delle app

Un'applicazione può essere sviluppata per diversi tipi di sistemi operativi e non tutte sono compatibili con ogni tipo di sistema operativo; per evitare problemi di incompatibilità un'applicazione, disponibile per diversi tipi di sistemi, differisce nella propria estensione, come ogni altro programma o file. Al fine di semplificare la ricerca e l'utilizzo delle applicazioni da parte di utenti anche inesperti, alcuni sistemi operativi mettono a disposizione degli appositi distributori digitali (conosciuti perlopiù con i termini anglosassoni store o market), traducibili in italiano con il termine "negozio", ma sono disponibili anche altri canali, quali negozi fisici dove vengono venduti tramite supporti di varia natura o tramite Internet.

### Riscattare un codice o un buono

Da quando si sono diffuse le licenze software di tipo ESD (cioè in formato digitale) o il software è utilizzato in modalità SaaS, esiste la possibilità di riscattare un codice (prodotto) o un buono regalo. In pratica, in questo caso, tramite la procedura di riscatto si può legittimamente usufruire o riutilizzare un'istanza dell'applicazione (ad esempio quando si cambia dispositivo o intestazione dell'acquisto) già pagata (stessa cosa se si parla di abbonamento sotto forma di servizio) o ottenere un buono con cui spendere del credito.
Solitamente, si deve abbinare il codice (appena acquistato o già in uso ma comunque legittimo, come nel caso di quelli aziendali) o il buono al proprio account (utilizzando una specifica funzione) e, in questo modo, il codice o il buono comparirà tra i prodotti o servizi dell'account così che possa essere agevolmente utilizzato, ad esempio per scaricare e/o attivare il software oppure per consumare il credito in un servizio o in un acquisto.
Un altro esempio dell'utilizzo del concetto di riscatto, nel mondo informatico, è quello di ottenere premi a seguito della partecipazione ad un programma punti (ad esempio Microsoft Rewards).