Che cos’è un framework?

I framework in informatica, le loro caratteristiche ed il loro utilizzo nelle web app

In informatica, quando si decide come sviluppare il software di un progetto si incontra spesso il termine framework, discutendo quali scegliere e che vantaggi e limitazioni portano con sé. Ma forse è utile fare un passo indietro.

Che cos’è un framework?

«[…] nello sviluppo software, [un framework] è un’architettura logica di supporto […] sul quale un software può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del programmatore.»

Wikipedia l’enciclopedia libera, Articolo “Framework”

Proviamo a illustrare la definizione appena data.
Un framework, parola inglese traducibile con il termine struttura, ha lo scopo di fornire strumenti per facilitare e velocizzare il lavoro di programmazione di chi lo adotta.

È bene notare che la definizione è volutamente generale.
Facciamo qualche esempio di framework per chiarire questo concetto.
Vue.js semplifica l’interazione tra le più usate tecnologie del web: HTML, CSS e JS. NativeScript invece parte da codice scritto usando Vue.js (o altri framework simili) e vi applica strumenti appositi che permettono di tradurre il tutto in app mobile native Android e iOS.

Un framework dunque semplifica l’utilizzo di uno o più linguaggi di programmazione e può gestire strumenti informatici diversi, come altri framework o software.

I framework adottano ed implementano uno schema architetturale (design pattern) per definire in che modo vogliono risolvere i problemi per i quali sono stati progettati. Stabilita l’architettura, da essa derivano altri principi e regole logiche per un corretto utilizzo del framework stesso: come organizzare e nominare i file che compongono il software, quali tecnologie sono obbligatorie, consigliate o sconsigliate, come strutturare il contenuto di un file, quali sono le best practices da seguire, etc.

Una struttura portante di un prefabbricato in legno

Un framework è paragonabile alla struttura portante di un edificio: fornisce il sostegno necessario alla costruzione di un’applicazione e ne definisce l’organizzazione.

Se chi utilizza il framework è fortemente invitato o costretto a seguire queste regole, a causa delle scelte di progettazione, si dice che quel framework è opinionated (prescrittivo). Al contrario, se definisce delle linee guida ma lascia all’utilizzatore una certa libertà nell’adottare o meno tali regole, si dice che è poco o per niente opinionated.
Avendo una struttura ben definita, un framework opinionated può far risparmiare tempo e sforzi ai programmatori nello scegliere il software e linee guida aggiuntive da utilizzare, oltre ad assicurare il rispetto delle regole. Tuttavia, questa rigidità può diventare problematica nella gestione di casi particolari non previsti.

Un framework quindi svolge i compiti più comuni ma necessari al funzionamento delle applicazioni, rendendo gli sviluppatori liberi di concentrarsi sullo sviluppo delle funzionalità più importanti del prodotto.

Che framework esistono?

Fin qui abbiamo parlato delle caratteristiche tecniche di un framework, ma di nomi ne sono stati fatti pochi.

Questo perché di frameworks ne esistono di tutti i tipi: possono adottare paradigmi di programmazione diversi, essere sviluppati da aziende o da fondazioni e progettati per uno o più linguaggi di programmazione. Come ogni progetto informatico, un framework può essere sviluppato e successivamente abbandonato, e molti di essi vengono progettati per rispondere ad una stessa esigenza utilizzando strumenti e tecnologie differenti.

Elencare tutti i frameworks esistenti è impossibile, oltre che inutile. Basti considerare che un’azienda può creare un proprio framework e decidere di non renderlo pubblico, utilizzandolo esclusivamente per i propri progetti interni.
Si può solamente, di volta in volta, cercare se ne esiste uno che si adatta alle proprie esigenze.

Qualche esempio. .NET è un famoso framework di Microsoft, pensato principalmente per il linguaggio C#, ma ne supporta anche altri. Django e Ruby on Rails sono i due frameworks web più utilizzati rispettivamente per i linguaggi Python e Ruby, così come Spring è uno tra i migliori per Java.
Ma esistono frameworks dedicati interamente ad un aspetto, come Bulma per il CSS, oppure permettono di sviluppare applicazioni per una piattaforma tramite tecnologie non progettate per essa, come ad esempio Weex.

Logo di Bulma (framework) con a fianco Bulma (Dragon Ball)

Anche voi avete pensato fosse un omaggio all’omonimo personaggio di Dragon Ball?

Molti tra i frameworks elencati finora sono pensati per lavorare con le tecnologie del web. Facciamo chiarezza in merito. Un framework non necessariamente serve per lavorare con il web: la loro abbondanza è dovuta alla tendenza, nell’ultima decina (per non dire quindicina) d’anni, di rendere le applicazioni fruibili online evitandone l’installazione all’utente (web app).
Ma esistono molti frameworks che forniscono strumenti per costruire applicazioni non basate sul web ed installabili sul dispositivo che le esegue.

Concentrandoci prevalentemente sullo sviluppo web ed il suo ecosistema, noi di Dreamonkey abbiamo come riferimento i frameworks frontend Quasar, Vue.js e Angular, mentre per lo sviluppo backend utilizziamo Laravel. Per lavorare con le piattaforme native stiamo utilizzando NativeScript e collaboriamo in un progetto per la creazione web component basato su Stencil. Data la velocità di evoluzione del settore informatico, siamo sempre aperti all’innovazione e allo studio di nuove tecnologie.

Loghi dei quattro main frameworks utilizzati in Dreamonkey

I nostri frameworks di punta: Quasar, Vue, Angular e Laravel.

Se dovete sviluppare dei progetti web e siete indecisi su quale framework utilizzare, se state utilizzando uno dei frameworks che abbiamo adottato e necessitate di una consulenza in merito, oppure semplicemente se volete discutere con noi sulle nostre scelte tecnologiche, non esitate a contattarci.