Software[1] (pronúncia em inglês: ['sɔftwɛəɹ]) é uma coleção de programas e dados que dizem a um computador como executar tarefas específicas.[2] Isso contrasta com o hardware, a partir do qual o sistema é construído e que realmente executa o trabalho.
Software também é o nome dado a essa sequência de instruções quando executada em um dispositivo informático, computador ou máquina semelhante, um produto desenvolvido pela engenharia de software e inclui não só o programa de computador, propriamente dito, mas, também, manuais e especificações.
Um software, normalmente, é composto por diversas funções, bibliotecas e módulos que geram um programa executável no fim do processo de desenvolvimento e este que, 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 retorna uma saída (output), como resultado deste processamento.
A maioria dos softwares é escrita em linguagens de programação de alto nível, por exemplo, Python, JavaScript, Visual Basic, Delphi, Perl, PHP, ECMAScript, Ruby, C# e Java. Eles são mais fáceis e eficientes para os programadores porque estão mais próximos das linguagens naturais do que das linguagens de máquina. As linguagens de alto nível são traduzidas para a linguagem de máquina usando um compilador, um intérprete ou uma combinação dos dois. O software também pode ser escrito em uma linguagem assembly de baixo nível, por exemplo, C, C++, Assembly e Fortran. As linguagens de montagem têm uma forte correspondência com as instruções de linguagem de máquina do computador e são traduzidas para a linguagem de máquina usando um assembler.[3]
Este produto passa por várias etapas como: análise econômica, análise de requisitos, especificação, codificação, teste, documentação, Treinamento, manutenção e implantação nos ambientes.[4]
Para fins contabilísticos e financeiros, o software é considerado um bem de capital.[5]