“Quando o tamanho de um programa estende-se para além de milhares de linhas, [...]” um problema prático aparece. “[...] Do ponto de vista do programador, fazer com que esse programa apareça como uma única coleção de subprogramas não impõe um nível de organização adequado ao programa para mantê-lo intelectualmente administrável. Uma solução é organizá-lo em recipientes (containers) sintáticos que incluem grupos de subprogramas e de dados logicamente relacionados.” (SEBESTA, 2003)
Esses recipientes, mencionados no texto acima, são denominados: