Cos’è un framework?

Ho cercato la definizione di framework in + siti.
Quella di wikipedia non mi è sembrata molto chiara. quindi ho deciso di postare quella di Mokabyte

E’ molto frequente imbattersi nel termine ‘framework’ nella letteratura riguardante lo sviluppo di applicazioni. Molto spesso però non si ha un’idea chiara di cosa si intenda con questo termine.
Un framework è una architettura generica che costituisce l’infrastruttura per lo sviluppo di applicazioni in una determinata area tecnologica. Detto in maniera molto semplice è un insieme di classi ed interfacce di base, che costituiscono l’infrastruttura di una applicazione.



In base a questa definizione è facile pensare erroneamente che utilizzare un framework equivalga ad usare una libreria di classi, mentre in realtà vi è una sostanziale differenza tra le due cose.
Una libreria di classi, quali ad esempio le classi di base del linguaggio Java, viene utilizzata dallo sviluppatore per svolgere determinate funzionalità; in questo caso il codice che noi scriviamo invoca il codice esistente per svolgere una certa funzione, ma il controllo del flusso applicativo rimane a nostro carico.
Adottare un framework significa invece attenersi ad un specifica architettura ovvero nella pratica estendere le classi del framerwork e/o implementarne le interfacce. In tal caso sono i componenti del framework che hanno la responsabilità di controllare il flusso elaborativo.
Nel mondo dell’architettura del software un framework è considerato come una parte di software esistente nel quale inserire il proprio, in base al noto principio Hollywood “don’t call us we call you”. Il nostro codice applicativo non è direttamente invocato dall’intervento dell’utente sul sistema ma il flusso elaborativo passa attraverso il codice del framework: sono le classi del framework che invocano il nostro codice applicativo e non viceversa come nel caso delle librerie di classi.