Uno stack di software generalmente si riferisce a un insieme di tecnologie che collaborano per supportare lo sviluppo, la manutenzione e il funzionamento del software. Lo stack in questo contesto è un po 'colloquiale e non ha una definizione ufficiale, ma spesso include il tutto software richiesto per la tua soluzione (incluso il server web, il sistema operativo, eventuali estensioni speciali come memcache ecc., nonché strumenti di sviluppo come una piattaforma / lingua / IDE strettamente accoppiata. A volte, la definizione potrebbe anche estendersi a uno stack hardware come i servizi di cloud computing di Amazon.
Un framework ha una definizione più tecnica, e sebbene il termine sia talvolta usato in modo intercambiabile con la libreria, un framework è solitamente distinto da una proprietà chiamata Inversion of Control. Contrariamente a una libreria, in cui i metodi vengono richiamati dal programmatore dove necessario, l'uso di un framework di solito significa che gran parte della funzionalità dell'applicazione viene rimandata al framework, consentendo al programmatore di evitare di scrivere codice boilerplate e semplicemente di "riempire gli spazi vuoti", lasciando il framework per decidere quando è appropriato eseguire la core business logic.
Middleware è un po 'più esoterico, ma spesso si riferisce al software o all'interfaccia di un'applicazione creata per facilitare la comunicazione standard tra sistemi complessi. È possibile aspettarsi che il middleware esegua attività come l'analisi, l'autenticazione o solo un modo standard per comunicare i dati tra i sistemi. Contrariamente a una libreria o un framework, il middleware non è generalmente considerato uno "strumento di sviluppo" per dire e tende ad essere piuttosto strettamente integrato nei sistemi che facilita.