Os programadores e usuários tendem a se concentrar em um único programa. O programador vê um trabalho específico a ser realizado, enquanto o usuário vê um problema específico a ser resolvido. Obtendo uma visão um pouco mais ampla desse programa, fazem-se algumas perguntas: Por que esse programa foi feito? Os programas não surgem por acaso.
Obviamente alguém o desejava, senão ele não teria sido feito; mas, por que esse programa? E por que o programa foi projetado do jeito que foi? Por exemplo, alguns programas são interativos, enquanto ouros exigem qe usuário prepare um conjunto completo de comandos e dados e os apresente ao computador. Por quê? Finalmente, e quanto aos elementos de apoio - hardware, software, procedimentos e operadores, por exemplo - que cercam o programa? Como todos esses elementos se reúnem para assisti-lo na elaboração ou execução do seu programa?