La programmazione basata sull'interfaccia è un concetto che ha una stretta relazione con la programmazione modulare e la programmazione orientata agli oggetti.
La programmazione modulare definisce l'applicazione come un insieme di moduli interdipendenti. Ciò aumenta la modularità dell'applicazione e quindi la sua manutenibilità. La complessità totale del sistema viene notevolmente ridotta. La programmazione basata sull'interfaccia aggiunge di più alla programmazione modulare in quanto sostiene che le interfacce debbano essere aggiunte a questi moduli. L'intero sistema è quindi visto come componenti e le interfacce che li aiutano ad agire insieme.
Ciò è particolarmente utile quando terzi sviluppano componenti aggiuntivi per il sistema stabilito. Devono solo sviluppare componenti che soddisfano l'interfaccia specificata dal fornitore dell'applicazione principale. Ciò è un po' come un produttore di telefonia mobile che specifica un'interfaccia per un caricatore di cellulare e altri costruiscono i propri caricatori di cellulare, aderendo a tali standard/interfacce (disposizione dei pin, conversione di tensione AC-DC ecc.).
Un altro esempio è IEEE 1394 (Firewire) che è accettato da entrambi i produttori del tuo computer portatile e della tua fotocamera digitale.
Conseguentemente chi pubblica le interfacce assicura che non cambierà l'interfaccia e il sottoscrittore si impegna a implementare l'interfaccia nel suo insieme, senza alcuna variazione. Si dice dunque che un'interfaccia è un accordo contrattuale e il paradigma di programmazione basato su ciò è definito come "programmazione basata sull'interfaccia".