top of page

Software

Il software, in informatica, è l'informazione o le informazioni utilizzate da uno o più sistemi informatici e memorizzate su uno o più supporti informatici. Tali informazioni possono essere quindi rappresentate da uno o più programmi, da uno o più dati, oppure da una combinazione delle due.

Il termine si contrappone tradizionalmente a hardware (la componente fisica di un sistema di calcolo) che rende possibile l'esecuzione del software. Nel tempo sono entrati nell'uso altri termini che descrivono elementi di un computer, come il firmware. Il suffisso -ware (il cui significato è "componente") viene usato anche in altri termini che indicano particolari tipi di programmi: in funzione del ruolo che hanno in un sistema di calcolo (per esempiomiddleware); del tipo di licenza con cui sono distribuiti (freeware, shareware); dell'edizione; e altro.

Sebbene popolarmente l'opinione diffusa sia che il software sia solo quello che si può trovare su un PC o al più su di uno smartphone, tipologie specifiche di software si trovano su i più disparati dispositivi (un televisore, un'automobile, un cronotermostato, una lavatrice, ecc. per non parlare di applicazioni produttive).
Il termine «software» è un prestito dell'inglese. Nella lingua inglese software nasce per imitazione del termine hardware e dalla composizione delle parole soft (initaliano «morbido», «tenero», «leggero») e ware («merci», «articoli», «prodotti», «mercanzie»).

La paternità della coniazione del termine software non è certa. L'americano Paul Niquette la rivendica sostenendo di aver coniato il termine software nel 1953. Certa invece è la prima apparizione del termine software in una pubblicazione scritta: un articolo dell'American Mathematical Monthly scritto nel 1958 dallo statisticoamericano John Wilder Tukey.

Il termine software ha origine durante la seconda guerra mondiale. I tecnici dell'esercito inglese erano impegnati nella decrittazione dei codici tedeschi di Enigma, di cui già conoscevano la meccanica interna (detta hardware, componente dura, nel senso di ferraglia) grazie ai servizi segreti polacchi. La prima versione di Enigma sfruttava tre rotori per mescolare le lettere.

Dopo il 1941, ad Enigma venne aggiunto un rotore, e il team di criptoanalisti inglesi, capitanati da Alan Turing, si dovette interessare non più alla sua struttura fisica, ma alle posizioni in cui venivano utilizzati i rotori della nuova Enigma.

Dato che queste istruzioni erano scritte su pagine solubili nell'acqua (per poter essere più facilmente distrutte, evitando in tal modo che cadessero nelle mani del nemico) furono chiamate software (componente tenera), in contrapposizione all'hardware.

Il senso moderno del termine deriva dalle istruzioni date ai computer, ed è stato utilizzato per la prima volta nel 1957 da John Wilder Tukey, noto statistico statunitense.

Dal 1950 l'analogia tra l'hardware ed il corpo umano e quella tra il software e la mente umana si è fatta molto forte, dal momento che Turing ha sostenuto che il progresso tecnologico sarebbe riuscito a creare, entro il 2000, delle macchine intelligenti (in grado cioè di "pensare" autonomamente) atte alla risoluzione dei problemi.

 

 

 

 

 

I software possono essere classificati in base a diverse loro caratteristiche:

  • modalità di esecuzione, batch quando i lavori sono impostati in modo che possano essere eseguiti fino al completamento senza l'intervento umano, online (o programmi interattivi) che invece richiedono l'intervento umano per l'immissione dati ed il controllo del lavoro;

  • funzione (videoscrittura, foglio elettronico, database management system, grafica, sistema operativo, browser, lettore multimediale, posta elettronica e altre migliaia-considerando la variabilità in termini di versioni applicative);

  • campo di applicazione: utilizzo casalingo (home) o professionale (business). In alcuni casi un prodotto vale per ambo le categorie in molte altre un prodotto ha versioni specifiche (esempio un sistema operativo o una suite di produttività), in tantissime esiste solo per una delle due, spesso quella aziendale (ad esempio un sistema ERP);

  • grado di apertura della licenza (software libero o software proprietario);

  • sistema operativo su cui possono essere utilizzati (Windows, Mac OS, Android, Linux, Unix, DOS, ecc.);

  • da installare o portabile;

  • tipo di interfaccia utente visiva[5] (testuale o grafica, modalità touchscreen);

  • stand alone (ovvero che possono girare completamente autonomi su sistemi isolati) oppure network (ovvero che funzionano in un ambito di rete). Il secondo caso può essere a sua volta diviso in software in versione client-server (sul client può essere installato magari solo un agent oppure l'intero software che però si appoggia ad un database installato su di un server), oppure in modalità terminal-server oppure cloud (applicazioni web)[6]. Esempi classici di programma di rete, in ambito aziendale, è il sistema gestionale, la posta elettronica centralizzata (spesso associata ai moduli di pianificazione attività e risorse), il firewall della LAN.

Dal punto di vista gerarchico i software possono essere divisi in quattro categorie principali:

  • firmware;

  • software di base (che a sua volta si divide in sistemi operativi, compilatori e interpreti, librerie);

  • driver;

  • programmi applicativi cioè tutti quei software che vengono utilizzati nel quotidiano (home), dai programmi per l'ufficio, ai videogiochi, ai browser per navigare ininternet, ai client di posta, ai player audio-video, alle applicazioni chat nonché i numerosissimi prodotti specifici in ambito professionale/industriale (business) per le più disparate esigenze/attività. Anche un sistema anti malware è un'applicazione, così come un software di diagnostica (hardware o software), oppure uno strumento per gestire gli aggiornamenti. In ambiti professionali, il programma utente per gestire una macchina o un impianto è anch'esso un software così come, in applicazioni industriali (o, banalmente, nel quadro comandi di un comune ascensore), un PLC.

Con il termine suite si designa un software strutturato in diversi programmi/moduli, solitamente configurabili (nel senso di installabili, attivabili) separatamente ma facenti parte di un'unica soluzione. Microsoft Office o AVG AntiVirus o SAP ERP sono esempi di suite software.

Un software viene normalmente realizzato attraverso un processo di programmazione utilizzando uno o più linguaggi di programmazione ad opera di unprogrammatore. 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 inlinguaggio 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.

Inizio Pagina
Vai a Didattica
bottom of page