Progettazione: l’insieme delle attività relative al concepimento della soluzione informatica di un problema (architettura, dati da manipolare, tecniche algoritmiche)
Modularizzazione: dividere per gestire la complessità (unità di programma)
Un modulo è una unità di programma che mette a disposizione risorse e servizi computazionali (dati, funzioni, ..)
Fondamentale nella realizzazione dei concetti di astrazione e information hiding
Riuso di componenti già costruite e verificate (funzioni per sottoproblemi di utilità generale)
Costituita da una interfaccia visibile ai clienti che definisce le risorse ed i servizi (astrazioni) messi a disposizione dei clienti (programma o altri moduli) e una sezione implementativa (body) completamente occultata che implementa le risorse ed i servizi esportati
Procedimento mentale che consente da una parte di evidenziare le caratteristiche pregnanti di un problema e dall’altra di offuscare gli aspetti che si ritengono secondari rispetto a un determinato obiettivo
La realizzazione di alti livelli di astrazione passa attraverso la definizione di strutture capaci di mettere a disposizione (esportare) risorse e servizi occultando, ovvero rendendo inaccessibili, i dettagli implementativi
In C non esiste un apposito costrutto per realizzare un modulo, di solito un modulo coincide con un file
Per esportare le risorse definite in un file (modulo), il C fornisce un particolare tipo di file, chiamato header file (estentione .h); un header file rappresenta l’interfaccia di un modulo verso gli altri moduli