É uma sequência de instruções a serem seguidas e/ou executadas, na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento. Podemos dizer que é o nome dado ao comportamento exibido por essa sequência de instruções quando executada em um computador ou máquina semelhante.
Tecnicamente software também é o nome dado ao conjunto de produtos desenvolvidos durante o Processo de Software, o que inclui não só o programa de computador propriamente dito, mas também manuais, especificações, planos de teste, etc.
Quando um software está representado como instrução que podem ser executadas diretamente por um processador diz que está escrito em linguagem de máquina. A execução de um software também pode ser intermediada por um programa interpretador, responsável por interpretar e executar cada uma de suas instruções. Uma categoria especial e notável de interpretadores são as máquinas virtuais, como a JVM (Máquina Virtual Java), que simulam um computador inteiro, real ou imaginado.