Software[1] (pronúncia em inglês: ['sɔftwɛəɹ]) é uma coleção de programas 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 é o termo usado para se referir a uma sequência de instruções executadas em um dispositivo informático, como um computador ou máquina semelhante. Ele é um produto da engenharia de software e inclui não apenas o programa em si, mas também quaisquer documentações e especificações.
Um software é geralmente composto por diversas funções, bibliotecas e módulos que, ao final do desenvolvimento, formam um programa executável. Quando executado, esse programa recebe dados de entrada (input), processa as informações por meio de algoritmos ou sequências de instruções lógicas e gera uma saída (output) como resultado deste processamento.
A maioria dos softwares é escrita em linguagens de programação de alto nível, como Python, Java, JavaScript, TypeScript, C#, Go, PHP, Kotlin, Ruby, Dart, R, Swift, entre outras.[3] Essas linguagens são mais fáceis e eficientes para os programadores, pois estão mais próximas das linguagens naturais do que do código de máquina. Elas são traduzidas para a linguagem de máquina por meio de um compilador, um interpretador ou uma combinação dos dois.[4]
Softwares também podem ser escritos em linguagens de nível mais baixo, como Assembly. Além disso, linguagens como C, C++ e Rust, embora geralmente classificadas como de médio ou alto nível, são frequentemente usadas para programação de baixo nível devido ao seu controle direto sobre o hardware e à proximidade com a linguagem de máquina.[5] As linguagens assembly, por sua vez, possuem uma forte correspondência com as instruções da CPU e são traduzidas para a linguagem de máquina usando um assembler.
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.[6]
Para fins contabilísticos e financeiros, o software é considerado um bem de capital.[7]