Interfacciamento
I vari moduli comunicano tra loro, scambiandosi le informazioni che elaborano.

Possiamo avere varie forme di interfacciamento tra i moduli: con dei parametri, per controllo, per dati in aree comuni, per variabili globali.
Anche in questo caso è uno spettro di possibilità, che possono coesistere in uno stesso modulo, con un diverso grado di sicurezza, migliore è il passaggio dei parametri, peggiore il sistema di variabili globali in comune.
Il sistema più sicuro di interfacciamento tra i moduli è via passaggio di parametri. In questo modo i moduli sono in contatto attraverso un ben definito e preciso canale di comunicazione.
I parametri possono essere passati in due modi: per valore e per indirizzo.
Un parametro per valore è una variabile locale del modulo chiamato che viene inizializzata dallesterno.
Un parametro per indirizzo permette al modulo chiamato di modificare una variabile del modulo chiamante, poichè questo passa lindirizzo del dato su cui operare.
In ogni progetto software di una certa dimensione vengono create delle librerie, cioè dei moduli che svolgono dei compiti ben definiti e che sono usati da tutti gli altri moduli con lunico meccanismo di scambio dei parametri.
Le librerie arricchiscono il set di primitive del linguaggio di programmazione scelto, con una serie di funzioni specifiche per il problema in esame.
Un secondo modo di interfacciamento è sempre attraverso i parametri, ma anzichè scambiare dei dati, i moduli scambiano delle strutture che svolgono compiti di controllo (flag).
Questo meccanismo è meno sicuro del precedente: il modulo chiamante "entra" nella logica del modulo chiamato, forzandone la logica di comportamento.
Il peggior modo di legare due moduli è attraverso dei dati globali in comune, sia con aree di COMMON, che con variabili dichiarate globali.
In questo caso linterfacciamento non è più esplicito, e tutto avviene attraverso "side effect" che cambiano valori di dati comuni.
Questo meccanismo risulta pericoloso perchè una modifica ad un dato globale o a come un modulo cambia un dato comune si riflette su tutti i moduli interfacciati in questo modo, senza però che esista un esplicito collegamento che possa essere controllato dal compilatore o da altri sistemi automatici.