Um software normalmente é composto por diversas funções, bibliotecas e módulos que gera um programa executável ao final do processo de desenvolvimento e este, quando executado, recebe algum tipo de ?entrada? de dados (input), processa as informações segundo uma série de algoritmos ou sequências de instruções lógicas e libera uma saída (output) como resultado deste processamento.