Software
Il software, in informatica e in elettronica, è l'insieme delle componenti immateriali (strato logico/intangibile) di un sistema elettronico, in contrapposizione all'hardware, cioè la parte materiale (strato fisico/tangibile) dello stesso sistema;[1] in informatica si intendono le istruzioni memorizzate su uno o più supporti fisici che possono essere rappresentate da uno o più programmi, o più impropriamente al semplice dato o informazione.[2] Genericamente si intende l’insieme dei programmi impiegati in un sistema di elaborazione dati[1] che gestisce il funzionamento di un elaboratore[3]; si distingue fra:
- software di sistema: quello relativo al sistema operativo dell’elaboratore elettronico;[1][3]
- software di base: insieme dei programmi e delle procedure di utilità generale impiegabili da altri programmi;[1]
- software applicativo: relativo ai programmi applicativi progettati per particolari funzioni che possono essere a esempio la scrittura, l'elaborazione di immagini, la gestione dei dati e altro.[1]

Il termine si contrappone tradizionalmente ad hardware (la componente fisica di un sistema di calcolo),[1] che rende possibile l'esecuzione del software (la componente logica dello stesso). 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 esempio middleware), del tipo di licenza con cui sono distribuiti (freeware, shareware), dell'edizione e altro ancora.
Software di tipo speciale si trovano sui più disparati dispositivi (p.es. un televisore, un'automobile, un cronotermostato, una lavatrice ma anche applicazioni produttive).
Etimologia
Il termine «software» è un prestito dell'inglese. Nella lingua inglese software nasce per imitazione del termine hardware e dalla composizione delle parole soft (in italiano «morbido», «tenero», «leggero»)[4] e ware («merci», «articoli», «prodotti», «mercanzie»).[5]
La paternità della coniazione del termine software non è certa. L'americano Paul Niquette la rivendica sostenendo di aver coniato il termine software nel 1953.[6] Certa invece è la prima apparizione del termine software in una pubblicazione scritta: un articolo dell'American Mathematical Monthly scritto nel 1958 dallo statistico americano John Wilder Tukey.[7]
Storia
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.
Aumento del codice e potenziamento dell'hardware
Alla storia dell'evoluzione del software è legato lo sviluppo dell'hardware. Come evidenziato dalla seconda legge di Moore, una minaccia alla velocità di elaborazione, oltre ai costi, proviene dal software. Infatti ciò che conta per un utente non è tanto la velocità di elaborazione del processore, quanto la velocità effettiva di elaborazione del codice, calcolata in base al tempo che occorre alla CPU per eseguire un'operazione (come la scrittura di un testo, la creazione di una cartella, ecc.).
Nathan Myhrvold, direttore dell'Advanced Technology Group della Microsoft, ha effettuato uno studio sui prodotti Microsoft calcolando le linee di codifica per le successive release dello stesso software:
- Basic: da 4.000 linee di codice nel 1975 a 500.000 nel 1995
- Word: da 27.000 linee di codice nel 1982 a 2.000.000 nel 2002
La continua aggiunta di nuove funzionalità al software esistente giustifica la costante richiesta di processori più veloci, memorie sempre più grandi e più ampie capacità di I/O (Input/Output).
Infatti, anche le altre tecnologie si sono evolute di pari passo:
Myhrvold traccia un parallelismo con la legge di Moore: «abbiamo aumentato la dimensione e la complessità del software ancora più rapidamente di quanto non prevedeva la legge di Moore», «gli utenti del software hanno sempre consumato le maggiori capacità di elaborazione ad una velocità uguale o superiore a quella con cui i produttori di circuito integrato le mettevano a disposizione» (Stewart Brand, 1995).
Classificazione
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 soluzioni 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 permissività 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[8] (testuale o grafica, modalità touch screen);
- 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 una base di dati installato su un server oppure ad un servizio server[9]), oppure in modalità terminal-server oppure cloud (applicazioni web)[10]. 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[11] i software possono essere divisi in quattro[12] 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 in internet, ai client di posta, ai lettori 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.
Realizzazione del software
Un software viene normalmente realizzato attraverso un processo di programmazione utilizzando uno o più linguaggi di programmazione ad opera di un programmatore. 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).
Versione
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 con opportune patch. L'edizione è il principale stadio di una evoluzione, mentre le versioni ne rappresentano i minori cambiamenti.
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.
Brevettabilità 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[13][14].
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.
Menù aiuto
Questo menù (presente praticamente in ogni programma applicativo che preveda l'interazione visiva con utente umano), tipicamente inserito nella barra principale, è quello che fornisce le informazioni nominalistiche sul relativo programma («Informazioni su ...»: nome, produttore, versione, disclaimer), la guida in linea, il supporto, ecc. Spesso il menù è etichettato con un punto di domanda (?).
Diritto d'autore
Come espresso negli articoli 1 e 2 n. 8 della Legge sul Diritto d'Autore (L.633/41) anche i programmi per elaboratore sono protetti da diritto d'autore in qualsiasi forma espressi purché siano originali. Viene altresì tutelato il materiale preparatorio a differenza delle idee e dei principi che stanno alla base di qualsiasi elemento di un programma (compresi quelli alla base delle sue interfacce) i quali non vengono tutelati.
Secondo l'articolo 12 bis della legge sopracitata, in caso di lavoro su commissione il titolare del diritto esclusivo di utilizzazione economica è il datore di lavoro. Questo però non fa venire meno i diritti morali di chi ha creato il codice, ovvero il lavoratore dipendente.
Diritti patrimoniali esclusivi:
- Pubblicazione (articolo 12 LDA)
- Riproduzione permanente o temporanea, totale o parziale, del programma per elaboratore con qualsiasi mezzo o in qualsiasi forma (articolo 64-bis lettera a, articolo 13 LDA)
- Modificazione (articolo 64-bis lettera b, articolo 18 LDA)
- Distribuzione (articolo 64-bis lettera c, articolo 17 LDA)
- Noleggio e prestito (articolo 18-bis)
- Esecuzione e rappresentazione in forma pubblica (articolo 15 LDA)
- Comunicazione al pubblico (articolo 16 LDA)
- Pubblicazione in raccolta (articolo 18.2 LDA)
Note
- ^ a b c d e f software in Vocabolario - Treccani, su www.treccani.it. URL consultato il 3 dicembre 2018.
- ^ (EN) Software and data, su github.com. URL consultato il 30 settembre 2018.«software, while similar to data in terms of not traditionally having been cited in publications, is also different than data»
- ^ a b Software: Definizione e significato di Software – Dizionario italiano – Corriere.it, su dizionari.corriere.it. URL consultato il 3 dicembre 2018.
- ^ Confronta il lemma "soft" su «Il Sansoni - Inglese».
- ^ Confronta il lemma "ware1" su «Il Sansoni - Inglese».
- ^ Paul Niquette, Introduction: the software age, «Sophisticated: The Magazine», 1995.
- ^ David Leonhardt, John Tukey, 85, statistician; coined the word 'software', «New York Times», 28 luglio 2000.
- ^ Visiva in quanto esiste anche il riconoscimento vocale come interfaccia con l'utente.
- ^ Specie nella configurazione nella quale sul client è installato solo l'agent.
- ^ Esempio semplice: Facebook è un'applicazione software web (full web application in quanto non necessita di alcun agent installato a differenza, ad esempio, di Skype)
- ^ La distinzione è relativa al grado di «utilizzabilità» e «prossimità» rispetto all'utente.
- ^ Si potrebbe anche considerare una quinta categoria di software: gli «strumenti» (tool nel linguaggio informatico). Si tratta di programmi di gestione di una periferica (device), ad esempio il pannello di controllo della stampante, della scheda video, di un disco esterno, ecc. Si tratta di software di interconnessione tra il sistema operativo e periferica (e quindi dei driver relativi) che consentono di regolare (setup) la periferica e il suo funzionamento nei confronti del sistema operativo o di altri programmi. Esistono anche tool di gestione di software applicativi, ad esempio il pannello di controllo di un anti-malware oppure quello di supervisione delle applicazioni specifiche del produttore del computer (OEM). Infine, esistono tool per la gestione (installazione, modifica-sviluppo, aggiornamento, manutenzione, ecc) di firmware o sistemi operativi
- ^ Testo della proposta di Direttiva per la brevettabilità del software[collegamento interrotto]
- ^ Argomenti della Commissione Europea a sostegno della brevettabilità
Bibliografia
- G. Guglielmetti, L'invenzione di software. Brevetto e diritto d'autore, 2ª ed., Milano, Giuffrè, 1997.
Voci correlate
Sviluppo del software
- Aggiornamento software
- Ingegneria del software
- Progettazione (ingegneria del software)
- Sviluppo del software
- Metodologia di sviluppo del software
- Ciclo di vita del software
- Modello di sviluppo del software
- Localizzazione
- Manutenzione
- Release candidate
- Collaudo
- Changelog
- Software-in-the-loop
- Ispezione del software
Strumenti
Procedure su software
Tipi di software in relazione alla licenza d'uso
- Freeware
- Shareware
- Software proprietario
- Software libero
- Software libero/draft
- Software Free/Libero/Open-Source (FLOSS)
- Free Software Users Group (FSUG)
- Free and Open Source Software (FOSS)
- Differenza tra Software Libero e Open Source
Tipi di software
- Elenco di tipi di software
- Software per l'office automation
Professioni correlate
Fondazioni e organizzazioni
Altri progetti
- Wikizionario contiene il lemma di dizionario «software»
- Wikimedia Commons contiene immagini o altri file sul software
Collegamenti esterni
- Software, in Treccani.it – Enciclopedie on line, Roma, Istituto dell'Enciclopedia Italiana.
Controllo di autorità | LCCN (EN) sh85029534 · GND (DE) 4055382-6 · BNE (ES) XX530960 (data) · BNF (FR) cb133183707 (data) · J9U (EN, HE) 987007545619305171 · NDL (EN, JA) 00684642 |
---|