back

Occorre perciò introdurre uno strumento in grado di semplificare il sistema rendendolo "umanamente trattabile". Si analizza approfonditamente il problema e si elabora un modello in grado di automatizzare gran parte delle procedure interne, dopodichè si restitiusce all'utente una interfaccia semplificata che gli consenta il controllo dell'intero sistema.
Per tornare all'esempio dell'automobile, l'automazione delle procedure è affidata ad una centralina elettronica mentre l'interfaccia è l'insieme a noi ben noto: frizione, freno, accelleratore, volante e leva del cambio.

I vantaggi di questo approccio sono molteplici.
Innanzitutto al guidatore non è necessario conoscere bene il motore del proprio veicolo per poterlo controllare, questo svincola l'utente da molte complicazioni semplificandogli la vita e permettendogli di concentrarsi esclusivamente sul proprio compito. La conseguenza è l'introduzione di un approccio modulare il quale permette agli sviluppatori di concentrarsi solamente nel proprio ambito; otterremo così piloti eccellenti e ottimi meccanici.
Diviene possibile introdurre meccanismi di protezione e mascheramento che impediscano all'utente di accedere direttamente alle variabili del sistema causando gravi danni (immaginate di aprire una valvola nel cilindro al momento sbagliato).
Infine l'evoluzione di una tecnologia non costringe necessariamente l'utenza ad un aggiornamento, i motori cambiano ma le automobili si guidano sempre nello stesso modo, lo sviluppo dell'interfaccia è del tutto svincolato dallo sviluppo del sistema.

Questo metodo noto come astrazione o modello è applicabile infinite volte. Si può quindi strutturare un problema molto complesso come la gestione di un computer in un insieme di strati o moduli i quali sfruttano questo strumento per trarne il massimo vantaggio. Ogni strato utilizzerà l'interfaccia sottostante per produrre servizi utili allo strato superiore sempre tramite una apposita interfaccia.
Vi sarà quindi uno strato 0, composto da software a basso livello (generalmente linguaggio assembly) che si appoggerà direttamente sull'hardware della macchina e lo strato N composto dai software applicativi di cui facciamo uso tutti i giorni; gli strati intermedi sono costituiti da software e librerie atte a semplificare via via l'architettura del calcolatore.

Il principale svantaggio di questa strategia è l'introduzione di un notevole overhead nel caso in cui ci si trovi ad un certo livello della stratificazione e si voglia utilizzare un servizio offerto da uno strato molto più in basso; se un applicativo che risiede nel livello N richiede un servizio a livello 0 dovrà accedere al livello N-1 tramite l'apposita interfaccia, il livello N-1 farà lo stesso con lo strato inferiore e così via. Ciò implica che, qualora ci occorra usufruire di un servizio residente in M strati più in basso, sarà necessario passare per tutti gli M strati intermedi.

La seconda problematica risiede nella definizione dei moduli stessi e nella loro collocazione logica.

back