Software

Il software
Dopo aver analizzato l’insieme delle componenti fisiche del computer (hardware), passiamo ora allo studio dei programmi che ne consentono il funzionamento, cioè il software. E infatti il software che permette all’hardware di funzionare, e senza di esso l’hardware è assolutamente inutile. Possiamo suddividere il software in due categorie:
I software di base;
I software applicativo.


II software di base è rappresentato principalmente dal sistema operativo, un programma che permette al computer di accendersi e di svolgere operazioni di fondamentale importanza, strettamente collegate all’hardware, dal BIOS e dai driver.
Il termine software indica l’insieme dei programmi per computer, vale a dire le sequenze di istruzioni che guidano i circuiti di un elaboratore a compiere il lavoro cui è destinato. A seconda delle funzioni e delle applicazioni, si possono distinguere diverse categorie di software. Le tre categorie fondamentali sono:

  • i sistemi operativi;
  • i programmi applicativi, destinati a gestire le svariate applicazioni per cui esso può essere impiegato;
  • i linguaggi di programmazione o ambienti di sviluppo.

Sistemi operativi
Il sistema operativo è il software di base (quindi fondamentale, non accessorio per il funzionamento della macchina) che si pone tra l’utente e la macchina, permettendo al primo di accedere alle risorse della seconda e di interagire con essa.
Il sistema operativo è il software che viene caricato ed eseguito dalla macchina nella sua fase di accensione; individua le risorse hardware presenti e le predispone per un utilizzo possibilmente facile ed intuitivo da parte dell’utente. Inoltre fornisce un set di istruzioni per accedere alle risorse del PC e per manipolarle vicino al linguaggio umano e si occupa di tradurre queste istruzioni nel linguaggio macchina e viceversa, cioè rende facilmente comprensibili le risposte del sistema.
Le principali funzioni di un sistema operativo sono:

  • la gestione dell’unità centrale
  • la gestione della distribuzione della memoria centrale fra più programmi
  • la gestione delle unità di input/output
  • la gestione delle operazioni di lettura/scrittura dei dati sulle memorie di massa

Dagli anni ’80 i sistemi operativi si sono rapidamente evoluti e migliorati; ricordiamo alcune tappe fondamentali: per i PC IBM compatibili abbiamo inizialmente il sistema operativo MS-DOS, puramente testuale, per passare poi a Windows 3.1, Windows 95, Windows 98, Windows NT, Windows ME, Windows 2000, Windows XP, Windows 10 e a tutte le differenti distribuzioni di Linux.
È bene chiarire che, anche se su un computer possono essere presenti più sistemi operativi, uno solo può essere attivo, cioè non è possi­bile usarne due contemporaneamente perché la gestione diversa delle risorse provocherebbe dei conflitti. I primi sistemi operativi di personal computer erano in grado di eseguire un solo programma utente alla volta ed erano di tipo testuale come, per esempio, MS-DOS.
Si tenga presente che l’unicità è riferibile al programma utente.
Infatti, nella memoria centrale, sono presenti il programma utente e i programmi del sistema operativo che consentono la sua esecuzione.
Un sistema operativo è a interfaccia testuale quando l’utente deve digitare tramite la tastiera brevi nomi mnemonici, chiamati comandi, per attivare i programmi.
La necessità di dover conoscere la sintassi dei comandi ha ostacolato la diffusione di massa dell’utilizzo di personal computer.
Con lo scopo di rendere l’uso del calcolatore sempre più facile e, quindi, alla portata di un maggior numero di persone, sono stati realizzati sistemi operativi a interfaccia grafica, detta GUI (Graphic User Interface) che consentono all’utente di attivare i programmi e utilizzare le risorse in modo intuitivo mediante comandi predisposti in menu o in finestre o mediante icone.
I sistemi operativi per personal computer più recenti come, per esempio, Windows sono multitasking.

Questa caratteristica consente al sistema operativo di gestire più programmi utente contemporaneamente, offrendo così la possibilità all’utente di interrompere un lavoro, passare a un altro e da questo ritornare al precedente per continuare il lavoro interrotto e così via.
Si tenga presente che anche in questo caso l’unità centrale esegue un solo programma utente alla volta. 

Software applicativi
I software applicativi sono i software più diffusi e vengono solitamente suddivisi in diverse categorie, a seconda dell’utenza a cui sono rivolti o della funzione che svolgono.
Abbiamo software applicativi professionali, dedicati ad aziende e professionisti, in grado di gestire un determinato compito (ad esempio software di gestione di impianti industriali, di fatturazione, ecc.), software gestionali, software per l’office automation (che permettono l’automazione di tutte le funzioni svolte in un ufficio, dalla creazione di documenti, all’archiviazione dei dati, alla gestione dei fax), software per la grafica, per la manipolazione di audio e video.
Abbiamo poi software dedicati al mercato domestico: troviamo in questa categoria enciclopedie e software multimediali, pacchetti per la trattazione dei testi e per la gestione del budget domestico, giochi, prodotti per la grafica.
Infine abbiamo software applicativi generici, sostanzialmente d’appoggio alla normale manutenzione del PC, software per la gestione delle stampanti, per la manutenzione dei dischi, ecc. 

Linguaggi di programmazione
La terza categoria di software è costituita dai linguaggi di programmazione; si tratta di programmi (o meglio di veri e propri ambienti di sviluppo) che permettono la creazione di altri programmi, con un preciso compito da svolgere.
Tutti i programmi sono costituiti da più o meno lunghe sequenze di istruzioni: un linguaggio di programmazione permette appunto la scrittura di queste sequenze di istruzioni, che vengono poi tradotte in linguaggio macchina da appositi programmi e successivamente eseguiti.
Gli ambienti di sviluppo presentano oggi facili interfacce grafiche, che consentono la semplice creazione di software utilizzando componenti visuali già pronti.
Ricordiamo tra gli altri C/C+ +, Java, Visual Basic, Delphi, Kylix, ecc.
Anche nel campo dei linguaggi di programmazione si assiste ad una frenetica corsa alla semplificazione, al «pronto da utilizzare»; alcuni grossi nomi sono i padroni del mercato, ma anche qui la filosofia dell’open source, del software gratuito sta iniziando ad affermarsi.
La produzione del software avviene attraverso le seguenti fasi:

  • analisi
  • programmazione
  • implementazione
  • testing
  • manutenzione

L’analisi è forse la fase più importante perché dalla sua completezza di informazioni sul problema dipendono quelle successive. Questa fase serve per studiare il problema che si vuole informatizzare in modo da individuare le specifiche delle varie attività da svolgere che, insieme alle risorse che si rendono necessarie, consentano di conseguire i risultati richiesti da chi utilizzerà o farà utilizzare il software. L’analisi, una volta terminata, viene comunicata ai programmatori che, seguendo le informazioni in essa contenute, svolgono la programmazione, cioè producono il software mediante un linguaggio di programmazione. Successivamente il software prodotto va implementato, cioè installato e messo in esercizio, sul computer dell’utente e testato per verificare il corretto funzionamento in tutti i casi che, nella situazione reale, possono verificarsi.
Infine è necessario svolgere quasi sempre un’attività di manutenzione: infatti la maggior parte dei programmi deve essere aggiornata periodicamente sia per migliorare una versione precedente o per correggere eventuali errori sia per soddisfare nuove esigenze richieste dall’utente.

Le licenze del software
I programmi applicativi sono numerosissimi, sono stati creati per il grande pubblico e tradotti in tutte le lingue conosciute: prendono il nome di software generici (general purpose). Quando il programmatore che lo ha creato richiede i diritti d’autore, il software prende il nome di software proprietario, quando invece il software viene rilasciato a titolo gratuito prende il nome di free software (software libero). Vengono chiamate software houses le aziende che creano il software, come ad esempio Adobe, Microsoft, FreeCell ecc.
II software proprietario viene creato per un pubblico molto vasto e spesso non è in grado di risolvere tutti i problemi degli utenti che lo utilizzano. Esiste tuttavia una categoria di software che viene chiamata software ad hoc, oppure software on demand. Si tratta di programmi creati espressamente per risolvere singoli problemi, richiesti da un utente specifico.
freesoftware è un software che fornisce a chiunque il permesso di utilizzarlo, copiarlo e distribuirlo, in forma originale o dopo averlo modificato. Tuttavia anche questo tipo di software è sog­getto a una licenza d'uso che permette di eseguire il programma per qualsiasi scopo, di accedere al codice sorgente, di studiarlo ed eventualmente modificarlo e infine di ridistribuirlo in un nu­mero di copie illimitato. Questi vincoli vengono anche chiamati copyleft, con lo scopo di divulgare e condividere il sapere.

Le licenze del software EULA sono uno strumento legale che accompagna un programma e ne specifica le modalità con cui l’utente può utilizzare e ridistribuire tale prodotto, garantendo diritti e imponendo obblighi. La licenza è imposta da chi detiene il diritto d’autore (copyright) sul software.  Le licenze possono essere suddivise in:

  • licenze per il software proprietario (copyright); 
  • licenze per il software libero (copyleft).

La licenza chiamata EULA (End User License Agreement), rappresenta il contratto tra il fornitore del software e lutente finale che ne usufruisce.
Creative Commons è una licenza che garantisce solo alcuni diritti riservati (Some Rights Reserved) in contrapposizione alle licenze che invece garantiscono tutti i diritti (All Rights Reserved). È nata recentemente a seguito della diffusione di contenuti multimediali nella rete. La licenza CC (Creative Commons) permette la copia e la distribuzione di videogiochi, software, filmati e dischi purché ciò non avvenga a scopo di lucro. Se i contenuti vengono rielaborati deve essere sempre citato lautore originale.

Diritto d’autore e tutela legale del software
Recentemente il fenomeno della pirateria digitale è diventato ormai molto diffuso, pertanto è bene conoscere le norme che tutelano il software. 
Gli autori di programmi software sono garantiti dalla stessa legge che tutela gli autori di opere letterarie (n.633 del 22/04/1941). Solo coloro ai quali è attribuito il diritto d’autore (copyright) possono accordare e concedere la diffusione di copie del software. Le attività di acquisto, vendita e redistribuzione di copie non autorizzate di software è un reato. Quando si acquista un software si acquista in realtà una licenza d’uso.
La pirateria digitale è un fenomeno che non viene perseguito nello stesso modo in tutti i paesi del mondo. Si tratta di una pratica illecita che, utilizzando strumenti informatici, copia e redistribuisce illegalmente software o altro materiale digitale  senza rispettare il diritto d autore. I responsabili che si occupano di superare o rimuovere le protezioni dei sistemi informatici, chiamati cracker, diffondono il materiale ottenuto illegalmente ad altri pirati passivi che lo accettano,
Il software proprietario viene venduto nella classica licenza d’uso che prevede un pagamento. Tuttavia esistono anche altre forme di licenza, vediamone alcune:

  • shareware: software gratuitamente utilizzabile solo per un breve periodo di tempo. Viene anche chiamato software di valutazione, in quanto per poter essere usato, al termine del periodo di valutazione (normalmente 30 o 60 giorni), è necessario acquistarlo.
  • demo: software promozionale in versione ridotta e completamente gratuito. Nei videogiochi ad esempio, è consuetudine rilasciare la versione demo alcuni mesi prima dell’uscita sul mercato del programma completo.
  • adware: software distribuito come freeware. Richiede tuttavia all’utente la visione di messaggi pubblicitari per il suo utilizzo.
  • donationware: software distribuito gratuitamente come freeware. L’autore, tuttavia chiede agli utenti del proprio software di fare una donazione facoltativa.
  • abandonware: software obsoleto che non viene più commercializzato da lungo tempo, ed è quindi considerato “abbandonato”. La licenza è pertanto di tipo freeware anche se originariamente era proibita la ridistribuzione.

Nel decreto legislativo n. 518 del 29/12/1992 viene definitivamente sancito che anche i software prodotti da un autore possiedono la medesima tutela riconosciuta alle altre opere d’autore, stabilendo che l’utilizzatore del programma può realizzare copia dell’opera anche in assenza dell’autorizzazione del titolare del programma solo quando tale copia:

  • sia necessaria all’uso del programma;
  • sia effettuata per lo studio del programma;
  • costituisca una copia di riserva.

Esistono anche le licenze OEM (Original Equipment Manufacturer), utilizzate nella vendita di hardware al quale è stato abbinato il software. In questo caso il programma, generalmente rappresentato dal sistema operativo, viene venduto a un prezzo più conveniente, anche se non viene fornito il DVD o il CD per poterlo reinstallare in caso di malfunzionamento del sistema. Alcuni software OEM prevedono una procedura di creazione del DVD necessario alla installazione. Molti produttori, come ad esempio Microsoft, abbinano la licenza OEM solo su un PC, non è pertanto possibile installare tale software su unaltra macchina.