Martin Fowler che dimostra chiaramente:
La stratificazione è una delle tecniche più comuni utilizzate dai progettisti di software per spezzare un sistema software complicato. Lo si vede nelle architetture delle macchine, in cui i livelli discendono da un linguaggio di programmazione con chiamate del sistema operativo in driver di dispositivo e set di istruzioni della CPU e in porte logiche all'interno dei chip. Il networking ha il livello FTP su TCP, che è su IP, su Ethernet.
Quando si pensa a un sistema in termini di livelli, si immaginano i principali sottosistemi nel software disposti in una forma di torta a strati, in cui ogni strato poggia su un livello inferiore. In questo schema il livello superiore utilizza vari servizi definiti dal livello inferiore, ma il livello inferiore non è a conoscenza del livello superiore. Inoltre, ogni strato di solito nasconde i suoi strati inferiori dagli strati sopra, quindi il livello 4 utilizza i servizi del livello 3, che utilizza i servizi del livello 2, ma il livello 4 non è a conoscenza del livello 2. (Non tutte le architetture di stratificazione sono opache come questa , ma la maggior parte è — o meglio la maggior parte è per lo più opaca.)
La scomposizione di un sistema in livelli presenta numerosi vantaggi importanti.
• È possibile comprendere un singolo livello come un insieme coerente senza sapere molto sugli altri livelli. Puoi capire come costruire un servizio FTP su TCP senza conoscere i dettagli di come funziona Ethernet.
• È possibile sostituire i livelli con implementazioni alternative degli stessi servizi di base. Un servizio FTP può essere eseguito senza modifiche su Ethernet, PPP o qualunque altra società via cavo.
• Riducete al minimo le dipendenze tra i livelli. Se la società via cavo cambia il suo sistema di trasmissione fisica, a condizione che faccia funzionare l'IP, non è necessario modificare il nostro servizio FTP.
• I livelli sono buoni posti per la standardizzazione. TCP e IP sono standard perché definiscono come dovrebbero funzionare i loro layer.
• Una volta creato un livello, è possibile utilizzarlo per molti servizi di livello superiore. Pertanto, TCP / IP viene utilizzato da FTP, telnet, SSH e HTTP. Altrimenti, tutti questi protocolli di livello superiore dovrebbero scrivere i propri protocolli di livello inferiore. Dalla biblioteca di Kyle Geoffrey Passarelli
La stratificazione è una tecnica importante, ma ci sono aspetti negativi.
• I livelli racchiudono bene alcune cose, ma non tutte. Di conseguenza, a volte si ottengono modifiche a cascata. L'esempio classico di ciò in un'applicazione enterprise a più livelli è l'aggiunta di un campo che deve essere visualizzato sull'interfaccia utente, deve essere nel database e quindi deve essere aggiunto a ogni livello intermedio.
• Livelli aggiuntivi possono danneggiare le prestazioni. Ad ogni livello le cose in genere devono essere trasformate da una rappresentazione all'altra. Tuttavia, l'incapsulamento di una funzione sottostante spesso fornisce guadagni di efficienza che più che compensano. Un livello che controlla le transazioni può essere ottimizzato e quindi renderà tutto più veloce. Ma la parte più difficile di un'architettura a strati è decidere quali strati avere e quale dovrebbe essere la responsabilità di ogni strato.