1. Separazione delle preoccupazioni: separare l'applicazione in sezioni distinte, ciascuna con il proprio scopo specifico. 2. Design modulare: suddivisione delle applicazioni in moduli autonomi e indipendenti. 3. Astrazione: nascondere i dettagli non necessari e concentrarsi sui compiti essenziali a portata di mano.
Fornire tre importanti principi di ingegneria del software.