Software

Dopo aver analizzato le componenti fisiche del computer (hardware), passiamo allo studio dei programmi che ne consentono il funzionamento: il software. È il software che permette all’hardware di operare; senza software, l’hardware è inutilizzabile.

Convenzionalmente distinguiamo due grandi categorie:

  • software di base (es. BIOS, driver e soprattutto il sistema operativo);
  • software applicativo (programmi per attività specifiche).

Il termine software indica l’insieme dei programmi, ossia sequenze di istruzioni che guidano un elaboratore nei compiti assegnati. In base alle funzioni, si distinguono tre famiglie:

  • sistemi operativi;
  • programmi applicativi;
  • linguaggi/ambienti di sviluppo.
Mappa concettuale delle categorie di software: base, applicativo e strumenti di sviluppo
Tipi di software – parte 1.
Esempi di sistemi operativi, applicativi e linguaggi di programmazione
Tipi di software – parte 2.

Sistemi operativi

Il sistema operativo è il software di base che si pone tra utente e macchina, rileva e predispone le risorse hardware, fornisce servizi e interfacce per eseguire programmi e gestire dati.

Funzioni principali:

  • gestione della CPU (processi, thread, scheduling);
  • gestione della memoria (allocazione, protezione);
  • gestione di input/output e periferiche (driver);
  • gestione dei file su memorie di massa.

Storicamente, sui PC si è passati da sistemi testuali (es. MS-DOS) a sistemi con interfaccia grafica (GUI) e multitasking (es. Windows e distribuzioni Linux).

Dagli anni ’80 i sistemi operativi si sono rapidamente evoluti e migliorati; per i PC IBM compatibili abbiamo inizialmente MS-DOS, puramente testuale, poi Windows 3.1, 95, 98, NT, ME, 2000, XP, 10,11 e le varie distribuzioni di Linux. Anche se su un computer possono essere presenti più sistemi operativi, uno solo può essere attivo alla volta. I primi OS per personal computer eseguivano un solo programma utente alla volta ed erano testuali (es. MS-DOS). Le GUI hanno reso l’uso più accessibile; i sistemi moderni sono multitasking: gestiscono più programmi utente in alternanza, pur eseguendo la CPU una sola istruzione alla volta.

Software applicativi

I software applicativi sono destinati a compiti specifici. Possiamo distinguerli in:

  • professionali (gestionali, industriali, fatturazione, CAD, editing audio/video);
  • domestici (enciclopedie, multimediali, giochi, videoscrittura);
  • di supporto (utility di manutenzione, stampa, backup).

Linguaggi di programmazione e ambienti di sviluppo

I linguaggi consentono di descrivere algoritmi che vengono poi tradotti in linguaggio macchina da compilatori o interpreti. Gli ambienti moderni offrono interfacce grafiche e componenti riutilizzabili. Esempi: C/C++, Java, Visual Basic, Delphi, ecc.

Fasi tipiche di produzione del software:

  1. analisi dei requisiti;
  2. progettazione e programmazione;
  3. implementazione e integrazione;
  4. testing e verifica;
  5. manutenzione ed evoluzione.

L’analisi è forse la fase più importante: dalla sua completezza dipendono quelle successive. Serve a studiare il problema, definire le specifiche e le risorse necessarie. I programmatori, sulla base dell’analisi, svolgono la programmazione. Il software viene quindi implementato (installato e messo in esercizio) e testato in scenari realistici. Infine si procede con la manutenzione (correzioni, miglioramenti, nuove esigenze).

Licenze del software

La licenza (EULA per il software proprietario) definisce diritti e obblighi d’uso. In generale distinguiamo:

  • software proprietario (copyright): uso regolato da EULA;
  • software libero/open source (copyleft): libertà d’uso, studio, modifica e ridistribuzione secondo la specifica licenza.

Esempi di modelli di distribuzione:

  • shareware: uso per periodo di prova limitato;
  • demo: versione ridotta, gratuita;
  • adware: gratuito con pubblicità;
  • donationware: gratuito con eventuale donazione;
  • abandonware: software non più commercializzato (status giuridico non sempre chiaro).

OEM: licenza venduta assieme all’hardware, di norma legata al dispositivo.

Diritto d’autore e tutela legale del software

È utile conoscere le norme che tutelano il software. In Italia gli autori sono protetti dalla legge sul diritto d’autore n. 633 del 22/04/1941. Solo chi detiene il copyright può concedere la diffusione di copie del software; acquistarne una copia significa acquistare una licenza d’uso.

La pirateria digitale è la copia e la redistribuzione illecita di software o altri contenuti digitali, talvolta tramite la rimozione delle protezioni. Le normative e le sanzioni variano per giurisdizione.

Il decreto legislativo n. 518 del 29/12/1992 sancisce che il software è tutelato come le opere d’autore e stabilisce che l’utilizzatore può realizzare copie senza autorizzazione solo quando la 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), abbinate all’hardware: il software (spesso il sistema operativo) è venduto a prezzo agevolato e legato alla macchina con cui è fornito. Alcuni OEM prevedono la creazione di un supporto di installazione; in genere la licenza è valida solo per il PC di acquisto.