Il software per computer, chiamato anche software, è un insieme di istruzioni e la sua documentazione che dice ad un computer cosa fare o come eseguire un compito. Il software comprende tutti i diversi programmi software presenti in un computer, come le applicazioni e il sistema operativo. Le applicazioni sono programmi che sono progettati per eseguire un'operazione specifica, come un gioco o un elaboratore di testi. Il sistema operativo (ad esempio Mac OS, Microsoft Windows, Android e varie distribuzioni Linux) è un livello di software che viene utilizzato come piattaforma per l'esecuzione delle applicazioni e controlla tutti gli strumenti di interfaccia utente, compresi il display e la tastiera.

La parola software è stata utilizzata per la prima volta alla fine degli anni '60 per sottolineare la sua differenza rispetto all'hardware del computer, che può essere fisicamente osservato dall'utente. Il software è un insieme di istruzioni che il computer segue. Prima dei compact disc (CD) o dello sviluppo dell'era di Internet, il software veniva utilizzato su vari strumenti di memorizzazione dei dati del computer come schede perforate, dischi magnetici o nastri magnetici.

La parola firmware è a volte usata per descrivere uno stile di software che è fatto specificamente per un particolare tipo di computer o un dispositivo elettronico e di solito è memorizzato su una memoria Flash o su un chip ROM nel computer. Il termine firmware si riferisce di solito a un software che controlla direttamente un pezzo di hardware. Il firmware per un lettore CD o il firmware per un modem sono esempi di implementazione del firmware.

Oggi il software è diventato una parte importante della nostra vita. Senza software gli esseri umani non possono essere sviluppati. Gli ingegneri del software sono responsabili della produzione di software senza difetti che è letteralmente diventato una parte essenziale della nostra vita quotidiana. La mutevolezza e la conformità sono due delle principali proprietà della progettazione del software. Ci sono anche diversi modelli di elaborazione per la progettazione di software, tra cui Build and Fix, Waterfall e Agile software processing design methods.