Un software viene normalmente realizzato utilizzando uno o più linguaggi di programmazione. Se il progetto diventa complesso, è opportuno dividere il programma in uno o più moduli, che possono essere così affidati a diversi programmatori, modificati più semplicemente e riutilizzati in altri progetti.

La fase detta di compilazione, traduce ogni file del codice sorgente, scritto nel o nei linguaggi di programmazione, in un file oggetto contenente il programma in linguaggio macchina adeguato all'architettura hardware di destinazione. In seguito tutti i file oggetto attraversano una fase di linking per giungere al prodotto finale: il file eseguibile.

Alcuni software non vengono compilati in quanto le istruzioni contenute nel codice sorgente vengono eseguite utilizzando un software detto interprete.

La gestione del processo di sviluppo è caratterizzato dalla scelta di un modello di sviluppo del software codificato nell'ambito dell'Ingegneria del Software (Software Engineering), esistono:
- Il modello classico o a cascata (water-fall)
- Il modello a spirale (object oriented)

La realizzazione del software è un'attività complessa articolata in più fasi, per questo motivo spesso il software è associato ad un prodotto ingegneristico, ma se ne differenzia soprattutto per alcune caratteristiche:
- è molto "malleabile";
- è un prodotto human intensive (e cioè un prodotto che richiede un considerevole sforzo in risorse umane perché si concentra soprattutto sulla progettazione e sull'implementazione).

Molte volte i software realizzati vengono rilasciati sotto forma di versioni e release successive, ciascuna identificata da un numero intero progressivo con in aggiunta uno o più numeri decimali che identificano la release: tipicamente l'ordine di rilascio segue un andamento progressivo della numerazione dove versione o release successive rappresentano evoluzioni delle precedenti con miglioramenti in termini di nuove caratteristiche e funzionalità aggiunte e/o bug corretti.

LICENZE D'UTILIZZO E DISTRIBUZIONE

La licenza d'uso è un documento che accompagna il software e specifica i diritti e i doveri di chi lo riceve e di chi lo diffonde.

Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore (il copyright).

Esistono licenze libere, le licenze Open Source e licenze proprietarie. Nasce in seguito anche l'Open content che ha come scopo quello di trasferire le licenze su opere diverse dal software.

Le licenze di utilizzo e distribuzione del software libere ed Open Source sono numerose, ma quelle effettivamente diffuse sono poche. Per l'89% si tratta di GPL, LGPL e BSD (licenza storica di Unix, tornata in uso dall'avvento di Linux).

Alcune licenze libere:
- GNU-GPL (la licenza libera più diffusa)
- GNU-LGPL
- BSD
- Creative Commons

Ogni tipo di licenza differisce dagli altri per vari aspetti

BREVETTABILITA' DEL SOFTWARE

Nell'Unione europea, i software non possono essere oggetto di brevetto, come accade invece negli Stati Uniti. Il 6 luglio 2005, il Parlamento Europeo ha respinto la proposta di direttiva per la "Brevettabilità delle invenzioni attuate per mezzo di elaboratori elettronici", sostenuta dalla Commissione.

La proposta è stata rigettata alla prima votazione con 648 voti contrari, 32 favorevoli, rispetto a 680 schede scrutinate.

Il giorno prima della votazione, la Commissione Europea ha confermato che, in caso di bocciatura, non sarebbe stato presentato un nuovo testo sull'argomento.