Software: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Corretto: "le versioni"
 
(959 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{Nota disambigua}}
Il termine '''software''' (usato in ambito [[informatica|informatico]]) può indicare l'insieme dei programmi (o uno solo di questi) in grado di funzionare su un [[computer]].
[[File:LibreOffice Writer 4.1.0.4 ITA.png|thumb|upright=1.4|[[LibreOffice Writer]], un [[software libero]] di [[videoscrittura]]]]
 
Il '''software''', in [[informatica]] ed [[elettronica]], indica (per un [[sistema informatico]]) l'insieme delle componenti intangibili di [[elaborazione dati|elaborazione]]. Il significato è contrapposto a quello di '' [[hardware]]'', che corrisponde alla parte materiale (strato fisico/tangibile) del detto sistema.<ref name=":0" />
== Classificazione ==
All'interno del software si possono distinguere alcune grandi categorie:
* i [[Sistema operativo|sistemi operativi]]
* i [[driver]]
* i [[Programma (informatica)| programmi applicativi]] (cioè tutti quei software che vengono utilizzati per il lavoro quotidiano: dai programmi per l'ufficio, ai videogiochi)
 
==Origine Storia ==
=== La creazione del concetto ===
Il termine '''software''' prende origine durante la [[seconda Guerra Mondiale|seconda guerra mondiale]]. Gli [[inghilterra|inglesi]] erano impegnati nella decrittazione dei codici di [[Enigma]], di cui già conoscevano la meccanica interna (detta ''hardware'', nel senso di ferraglia) grazie ai servizi segreti polacchi. La prima versione aveva tre rotori per mescolare le lettere. Dopo il [[1941]], all'Enigma della Marina tedesca venne aggiunto un rotore, e il team di [[criptanalisi|criptanalisti]] 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]]. Poiché queste istruzioni erano scritte su pagine solubili nell'acqua, per poter essere più facilmente distrutte, da ciò, e per contrasto con hardware, furono chiamate software.
Il termine sarebbe stato creato durante la [[seconda guerra mondiale]]; tecnici del [[Royal Army]] britannico erano impegnati nella [[Crittoanalisi|decrittazione]] dei codici tedeschi di ''[[Enigma (crittografia)|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 [[Rotore (matematica)|rotori]] per mescolare le lettere. Dopo il [[1941]], ad ''Enigma'' venne aggiunto un rotore, e il team di [[Crittoanalisi#Crittanalisti storici|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 (crittografia)|Enigma]]. Dato che queste istruzioni erano scritte su pagine [[solubilità|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 dalla traslazione del senso alle istruzioni date ai [[computer]] ed è stata utilizzata per la prima volta in questo senso nel 1957 da John W. Tukey, noto statistico della Princeton University.
 
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 [[Stati Uniti d'America|statunitense]]<ref>{{Cita news |url=https://www.focus.it/tecnologia/digital-life/perche-il-software-si-chiama-cosi |autore=Fabrizia Sacchetti |titolo=Perché il software si chiama così? |rivista=Focus |data=6 giugno 2022}}</ref>. 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 [[tecnologia|tecnologico]] sarebbe riuscito a creare, entro il 2000, delle macchine intelligenti (in grado cioè di «pensare» autonomamente) atte alla risoluzione dei problemi.
Nella storia dell'evoluzione del software bisogna analizzare lo sviluppo dell'hardware. Come evidenziato dalla seconda [[legge di Moore]], oltre ai costi, una minaccia più seria alla velocità di elaborazione, viene probabilmente dall'area software. Infatti ciò che conta per un'utente non è tanto la velocità di elaborazione del processore, quanto la velocità effettiva di processazione, calcolata in base al tempo che occorre alla CPU per eseguire le diverse operazioni, come la videoscrittura di un testo o l'output di un foglio elettronico.
 
=== L'evoluzione e l'applicazione delle leggi di Moore ===
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:
A partire dal [[secondo dopoguerra]], con lo sviluppo dell'[[hardware]] sono aumentate le possibilità per gli sviluppatori; ai sensi della [[legge di Moore#Seconda legge di Moore|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).
 
=== Gli studi di Myhrvold ===
Basic: 4.000 linee di codice nel 1975 a 500.000 nel 1995
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 (informatica)|release]] dello stesso software:
* Basic: da {{formatnum:4000}} [[linee di codice]] nel 1975 a {{formatnum:500000}} nel 1995
* Word: da {{formatnum:27000}} linee di codice nel 1982 a {{formatnum:2000000}} nel 2002
 
La continua aggiunta di nuove funzionalità al software esistente giustifica la costante richiesta di [[processore|processori]] più veloci, [[memoria (informatica)|memorie]] sempre più grandi e più ampie capacità di [[Input/output|I/O]] (Input/Output).
Word: 27.000 linee di codice nel 1982 a 2.000.000 nel 2002
 
Infatti, anche le altre tecnologie si sono evolute di pari passo:
Myhrvold traccia un parallelismo con la legge di Moore: "dunque abbiamo aumentato la dimensione e la complessità del software ancora più rapidamente di quanto non prevedeva la legge di Moore". In effetti, è proprio per questo motivo che esiste un mercato per i processori più veloci; "gli utenti del software hanno sempre consumato la nuova capacità di elaborazione ad una velocità uguale o superiore a quella con cui i produttori di chip la mettevano a disposizione" ([[Stewart Brand]], [[1995]]).
* i dischi rigidi da {{M|10|ul=MB}} (1982) a {{M|1|ul=TB}} (2007);
* i [[modem]] analogici da {{M|110|ul=bit/s}} a {{M|56|ul=kbit/s}}.
 
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).
In ogni caso, sia l'osservazione di Brand, sia il ragionamento di Myhrvold, non tengono conto delle caratteristiche aggiuntive consentite dalle linee di codifica addizionali e quindi enfatizzano l'impatto negativo del boom del software.
 
=== CicloDescrizione Wintel ===
=== Caratteri generali ===
"La maggior potenza di ogni generazione di chip Intel, viene da una nuova generazione di applicazioni basate su Windows, dando origine a una rinnovata domanda di chip ancora più potenti, necessari per far girare nuovi software a loro volta ancora più esigenti in termini di potenza"
In particolare in informatica si intendono tali il semplice [[dato]] o [[informazione]]<ref>{{Cita web|https://github.com/danielskatz/software-vs-data/blob/master/README.md|Software and data|lingua=en|citazione=software, while similar to data in terms of not traditionally having been cited in publications, is also different than data|30 settembre 2018}}</ref> oppure più propriamente le [[Istruzione (informatica)|istruzioni]] di un [[programma (informatica)|programma]] codificate in [[linguaggio macchina]] o in [[linguaggio di programmazione]] ([[codice sorgente]]), memorizzate su uno o più [[supporti informatici|supporti fisici]], sotto forma di [[codice eseguibile]]. Riguardo all'invenzione del termine, lo statunitense Paul Ni Quette sostiene di averlo coniato nel [[1953]],<ref>Paul Niquette, ''[http://niquette.com/books/softword/part0.htm Introduction: the software age]'', «Sophisticated: The Magazine», 1995.</ref> tuttavia è invece ritenuta certa la prima apparizione in una [[pubblicazione scientifica]] del [[1958]] dell'American Mathematical Monthly da parte dello [[statistico]] [[John Wilder Tukey]].<ref>David Leonhardt, ''[https://www.nytimes.com/2000/07/28/us/john-tukey-85-statistician-coined-the-word-software.html John Tukey, 85, statistician; coined the word 'software']'', «[[New York Times]]», 28 luglio [[2000]].</ref>
 
Genericamente si intende l’insieme dei [[Programma (informatica)|programmi]] impiegati in un [[sistema di elaborazione dati]]<ref name=":0">{{Cita web|url=http://www.treccani.it/vocabolario/software/|titolo=software in Vocabolario - Treccani|lingua=it-IT|accesso=2018-12-03}}</ref> che gestisce il funzionamento di un elaboratore<ref name=":1">{{Cita web|url=http://dizionari.corriere.it/dizionario_italiano/S/software.shtml|titolo=Software: Definizione e significato di Software – Dizionario italiano – Corriere.it|sito=dizionari.corriere.it|lingua=it|accesso=2018-12-03}}</ref>; si distingue fra:
Il "Ciclo WINTEL", che prende il nome dai colossi di riferimento, (processori Intel e sistemi operativi Windows - Microsoft), sta a indicare per l'appunto che la complessità di nuovi software (in grado di funzionare in ambiente Windows) esaurisce tutta la capacità computazionale messa a disposizione dai nuovi processori (la cui casa produttrice di spicco è Intel). Schaller nel 1996 disse a proposito del ciclo Wintel: "every time Andy Grove makes a faster chip, Bill uses all of it".
* software di sistema: quello relativo al [[sistema operativo]] dell’[[Computer|elaboratore elettronico]];<ref name=":0" /><ref name=":1" />
* software di base: insieme dei programmi e delle procedure di utilità generale impiegabili da altri programmi;<ref name=":0" />
* software [[applicazione (informatica)|applicativo]]: relativo ai programmi applicativi progettati per particolari funzioni che possono essere ad esempio la [[videoscrittura|scrittura]], l'[[elaborazione digitale delle immagini|elaborazione di immagini]], la [[database|gestione dei dati]] e altro.<ref name=":0" /><ref>{{cita libro|url=https://books.google.it/books?id=2-hiBAAAQBAJ&pg=PA270&dq=software+applicativo+di+sistema+programmazione&hl=it&sa=X&ved=2ahUKEwid5LyqxMXtAhXK26QKHZSWAowQ6AEwAXoECAIQAg#v=onepage&q&f=false|pagina=270|titolo= I contratti di somministrazione e di distribuzione|autore=Roberto Bocchini|autore2=Alberto Maria Gambino|editore=UTET Giuridica|anno=2011|isbn=978-88-59-80718-6}}</ref>
 
Il termine si contrappone tradizionalmente ad [[hardware]] (la componente fisica di un sistema di calcolo),<ref name=":0" /> che rende possibile l'[[Esecuzione (informatica)|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 (informatica)|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).
=== Osservazione di Nathan Myhrvold ===
 
[[File:Python_add5_syntax.svg|thumb|[[Codice sorgente]] in [[Python]]]]
[[Nathan Myhrvold]], ex Top executive di [[Microsoft]], disse: "il software è come un gas che si espande per riempire il contenitore che lo contiene". In effetti l'evoluzione tecnologica del software ha seguito questa sua legge:
[[File:Operating_system_placement-it.svg|thumb|Livelli di astrazione tra utente ed [[hardware]].]]
 
=== Classificazione ===
* Anni '80: elaborazione di testi eseguita da programmi di poche decine di kilobyte di memoria (e.g. troff);
I software possono essere classificati in base a diverse loro caratteristiche:
* Oggi: word processor decine di megabyte (e.g. word) .
* grado di permissività della [[Licenza (informatica)|licenza]] ([[software libero]] o [[software proprietario]]);
* [[Installazione (informatica)|da installare]] o [[Applicazione portabile|portabile]] (ovvero sotto forma di prodotto) o fruibile come servizio ([[SaaS]]);
* [[sistema operativo]] su cui possono essere utilizzati (OS ecc.);
* tipo di [[interfaccia utente]] visiva<ref group="N">Visiva in quanto esiste anche il riconoscimento vocale come interfaccia con l'utente.</ref> ([[Interfaccia a riga di comando|testuale]] o [[Interfaccia grafica|grafica]], modalità [[touch screen]]; vi sono tipologie di software in cui l'interfaccia utente è nascosta ovvero sostituita dall'ambiente di programmazione, come succede, ad esempio, nei [[System-on-a-chip|SoC)]];
* 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]], [[Computer grafica|grafica]], [[sistema operativo]], [[browser]], [[lettore multimediale]], [[posta elettronica]] e altre decine di migliaia, considerando la variabilità in termini di soluzioni applicative, piattaforme ed edizioni/versioni;
* 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 [[Enterprise resource planning|ERP]]);
* ''stand alone'' (ovvero che possono girare completamente autonomi su sistemi isolati) oppure ''network'' (ovvero che funzionano in un ambito di [[Rete di calcolatori|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<ref group="N">Specie nella configurazione nella quale sul client è installato solo l'agent.</ref>), oppure in modalità ''terminal-server'' oppure [[Cloud computing|cloud]] (applicazioni [[web]]) anche in modalità [[Software as a service|SaaS]]<ref group="N">Esempio semplice: Facebook è un'applicazione software web (''full web application'' in quanto non necessita di alcun agent installato a differenza, ad esempio, di Skype (inteso come app).</ref>. Esempi classici di programma di rete, in ambito aziendale, è il [[Enterprise resource planning|sistema gestionale]], la [[posta elettronica]] centralizzata (spesso associata ai moduli di pianificazione attività e risorse), il [[firewall]] della [[LAN]].
 
Dal punto di vista gerarchico<ref group="N">La distinzione è relativa al grado di «utilizzabilità» e «prossimità» rispetto all'utente.</ref> i software possono essere divisi in quattro<ref group="N">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</ref> categorie principali:
La continua aggiunta di nuove funzionalità al software esistente giustifica la costante richiesta di processori più veloci, memorie più grandi e più ampie capacità di I/O.
* [[firmware]];
* [[software di base]] (che a sua volta si divide in [[Sistema operativo|sistemi operativi]], [[Compilatore|compilatori]] e [[Interprete (informatica)|interpreti]], [[Libreria software|librerie]]);
* [[driver]];
* [[Programma (informatica)|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 [[Lettore multimediale|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 [[Controllore logico programmabile|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 (software)|AVG]] AntiVirus o [[SAP ERP]] sono esempi di suite software.
Infatti, anche le altre tecnologie si sono evolute di pari passo:
 
== Realizzazione ==
* i dischi rigidi da 10 MB (1982) a 60 GB (2003);
{{vedi anche|Sviluppo software}}
* i modem analogici da 300 bit/sec a 56 kbit/sec.
 
Un software viene normalmente realizzato attraverso un processo di [[programmazione (informatica)|programmazione]] utilizzando uno o più [[Linguaggio di programmazione|linguaggi di programmazione]] ad opera di un [[programmatore]]. Se il progetto diventa complesso, è opportuno dividere il programma in uno o più [[modulo (programmazione)|moduli]], che possono essere così affidati a diversi [[programmatore|programmatori]], modificati più semplicemente e riutilizzati in altri progetti. 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:
==Organizzazione interna==
* è molto «[[malleabilità|malleabile]]»;
Un software viene normalmente realizzato utilizzando uno o più [[Linguaggio di programmazione|linguaggi di programmazione]]. Se il progetto diventa complesso, è opportuno dividere il programma in uno o più [[moduli software|moduli]], che possono essere così affidati a diversi programmatori, manutenuti più semplicemente e riusati in altri progetti.
* è 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]]).
 
UnaLa fase detta di [[compilazione]], traduce ogni file didel [[codice sorgente]], scritto nel o nei linguaggi di programmazione, in un [[file oggetto]] contenente il [[Programma (informatica)|programma]] in [[linguaggio macchina]] adeguato all'[[Architettura (computer)#Architettura hardware|architettura hardware]] di destinazione. InfineIn seguito tutti i [[file oggetto]] attraversano una fase di [[linking]] per realizzaregiungere ilal prodotto finale: il [[file eseguibile]].
 
Alcuni [[software]] non vengono compilati in quanto le istruzioni contenute nel [[codice sorgente]] vengono subito eseguite dautilizzando un [[software]] detto [[interprete (informatica)|interprete]].
 
=== Il modello di sviluppo ===
La gestione del processo di sviluppo è caratterizzato da un [[Ciclo di vita del software|ciclo di vita]] codificato nell'ambito dell'[[Ingegneria del Software]] (''Software Engineering'', nella dizione anglosassone) quali
{{vedi anche|Modello di sviluppo del software}}
* [[Ciclo di vita classico]] o [[Ciclo di vita classico|water-fall]] ([[Ciclo di vita classico|cascata]])
* [[Ciclo di vita object oriented]] o a [[Ciclo di vita object oriented|spirale]]
 
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:
==Qualità del software==
La realizzazione del software è un'attività complessa che richiede molte fasi.
Per questo motivo può essere associato ad un prodotto ingegneristico ma se ne differenzia soprattutto per alcune caratteristiche:
* è molto malleabile, tale caratteristica porta a pensare che modificare il software sia banale, ma non è proprio così;
* è un prodotto human intensive, cioè, richiede un grosso sforzo in risorse umane perché si concentra soprattutto sulla progettazione e sull'implementazione.
 
* il modello classico o a [[Modello a cascata|cascata]] (''water-fall''),
Esistono molte qualità che si richiede al software che sono descritte più approfonditamente nella [[qualità del software|sezione corrispondente]].
* il [[modello a spirale]] (''object oriented''),
* [[metodologia agile]] (''agile software development'', ASD). I metodi agili si contrappongono al modello a cascata (''waterfall model'') e altri [[Modello di sviluppo del software|modelli di sviluppo]] tradizionali, proponendo un approccio meno strutturato e focalizzato sull'obiettivo di consegnare al cliente, in tempi brevi e frequentemente (''early delivery''/''frequent delivery''), software funzionante e di qualità.
 
==Licenza= diLe distribuzioneversioni ===
{{vedi anche|Controllo di versione}}
 
Molte volte i software realizzati vengono distribuiti sotto forma di versioni successive, ciascuna identificata da un numero intero progressivo (accompagnata dalla relativa data) in aggiunta uno o più numeri decimali che identificano il codice di [[release (informatica)|rilascio]]: tipicamente l'ordine di rilascio segue un andamento progressivo della numerazione per cui le versioni successive rappresentano cambiamenti delle precedenti con modifiche o miglioramenti in termini di nuove caratteristiche e funzionalità aggiunte e/o [[bug]] corretti con opportune [[patch (informatica)|patch]] oppure ottimizzazioni prestazionali. L''''edizione''' è il principale stadio di una evoluzione del prodotto nel tempo (una sorta di grande revisione o ristrutturazione), mentre le versioni ne rappresentano i minori cambiamenti. La cosiddetta '''[[build (informatica)|build]]''' a volte accompagna un numero di versione. Alcuni produttori (ad esempio [[Microsoft]] nel caso di [[Windows 10]] e successivi) aggiungono, oltre a versione e/o build, anche il numero di '''esperienza''', strato legato principalmente alle caratteristiche dell'interfaccia utente ([[user experience]]).
Le licenze di distribuzione del software oggi sono tante e non solo per ambito software (54 circa), però quelle effettivamente usate sono poche. Per l’ 89%, per esempio, si trattano di [[GPL]], [[LGPL]] o [[BSD]] vecchia licenza storia di [[Unix]] che pone come unica condizione una nota nel copyright che si riferisca all’Università della [[California]], tornata in uso dall’avvento di [[Linux]].
 
Molto spesso la versione e le altre informazioni pertinenti sono consultabili nel menù impostazioni\informazioni su...(nome prodotto) oppure, nei sistemi operativi, anche con un comando specifico (ad esempio in Windows è "winver").
Il più grande difetto nei sistemi operativi liberi non è nel software, è la mancanza di buoni manuali liberi da poter includere in questi sistemi. Molti dei programmi più importanti non hanno un manuale completo. La documentazione è una parte essenziale di qualunque pacchetto di software; quando un pacchetto importante di software libero è fornito senza un manuale libero si ha una grossa lacuna. A tutt'oggi abbiamo molte di queste lacune.
 
== Licenze d'utilizzo e distribuzione ==
Nasce in seguito anche l’[[OPEN CONTENT]] che ha come idea quella di trasferire le licenze su opere diverse dal software, a partire dalla documentazione dello stesso, opere come l’arte, la musica, i videogiochi. Esiste anche una licenza specifica per la documentazione accademica e universitaria.
{{vedi categoria|Licenze software}}
[[File:Categorie software.png|thumb|upright=1.5|Le differenti categorie del software]]
 
La [[Licenza (informatica)|licenza d'uso]] è un [[documento]] che accompagna il ''software'' e specifica i [[diritto|diritti]] e i [[dovere|doveri]] di chi lo riceve e di chi lo diffonde.
===Creative commons===
 
Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore (il ''[[copyright]]'').
[[Lawrence Lessig]], avvocato e insegnante, ha cercato una soluzione legale alla crisi del sistema di copyright negli [[Stati Uniti]] e dice che la propensione all’acquisto sia più simile, per gli artefatti digitali, al modello del telefono che a quello dell’editoria musicale. Lessig fonda la ''[[non-profit]]'' [[CREATIVE COMMONS]], in cui l’intento è permettere agli autori il campionamento ai fruitori. Ottenere una licenza è semplice: i diritti che vengono concessi sono scelti in maniera modulare, tramite un modulo del sito Web. Sorge una critica: il successo di i-Tunes Store mostra che il sistema classico del copyright può funzionare anche con gli artefatti digitali.
 
Esistono [[licenza libera|licenze libere]], le [[Licenza open source|licenze Open Source]] e [[licenza proprietaria|licenze proprietarie]]. Nasce in seguito anche l'[[Open content]] che ha come scopo quello di trasferire le licenze su opere diverse dal software.
===Licenza d'uso===
 
Le [[Licenza (informatica)|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 [[GNU General Public License|GPL]], [[GNU Lesser General Public License|LGPL]] e [[BSD]] (licenza storica di [[Unix]], tornata in uso dall'avvento di [[Linux]]).
Un documento che accompagna la maggior parte del software, e specifica i diritti e i doveri di chi lo riceve. Esistono licenze libere e licenze proprietarie. Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore (copyright in inglese).
software libero (free software, in inglese)
 
Alcune licenze libere:
Ogni tipo di software la cui licenza d'uso consenta la libera copia, modifica e redistribuzione gratuita o a pagamento del programma. Il termine è stato definito da Richard Stallman della FSF nel 1985, e pone l'accento sulla libertà dell'utente.
* [[GNU General Public License|GNU-GPL]] (la licenza libera più diffusa)
open source software
* [[GNU Lesser General Public License|GNU-LGPL]]
* [[Licenza BSD|BSD]]
* [[Licenze Creative Commons|Creative Commons]]
 
Ogni tipo di licenza [[comparazione di licenze libere|differisce dagli altri per vari aspetti]].
Dal punto di vista pratico è la stessa cosa di software libero. Il termine è stato definito nel 1998 dalla OSI per rendere il concetto più accettabile al mondo degli affari, ponendo l'accento sui vantaggi pratici ed eliminando tutti i riferimenti alla parola libertà.
 
=== Brevettabilità del software ===
===GNU GPL===
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 dell'Unione europea|direttiva]] per la ''Brevettabilità delle invenzioni attuate per mezzo di elaboratori elettronici'', sostenuta dalla [[Commissione europea|Commissione]]<ref>{{collegamento interrotto|1=[http://64.233.183.104/search?q=cache:SQehO9LJHPQJ:www.europarl.europa.eu/pv2/pv2%3FPRG%3DCALDOC%26TPV%3DDEF%26FILE%3D20030924%26SDOCTA%3D2%26TXTLST%3D2%26POS%3D1%26LASTCHAP%3D3%26Type_Doc%3DFIRST%26LANGUE%3DIT+proposta+di+direttiva+del+Parlamento+europeo+e+del+Consiglio+relativa+alla+brevettabilit%C3%A0+delle+invenzioni+attuate+per+mezzo+di+elaboratori+elettronici+N+A5-0238/2003&hl=it&ct=clnk&cd=2&gl=it/ Testo della proposta di Direttiva per la brevettabilità del software] |data=aprile 2018 |bot=InternetArchiveBot }}</ref><ref>[https://web.archive.org/web/20120927144046/http://www.europarl.europa.eu/hearings/20021107/juri/wd_directive_it.pdf Argomenti della Commissione Europea a sostegno della brevettabilità]</ref>.
 
La proposta è stata rigettata alla prima votazione con 648 voti contrari, 32 favorevoli, rispetto a 680 schede scrutinate.
La licenza d'uso libera più diffusa, quella normalmente usata per i programmi del progetto GNU. I programmi che la usano sono riconosciuti sia software libero dalla FSF che open source software dalla OSI. È persistente, cioè impone che la licenza per le copie modificate sia la GPL stessa o compatibile.
 
Il giorno prima della votazione, la Commissione Europea ha confermato che, in caso di bocciatura, non sarebbe stato presentato un nuovo testo sull'argomento.
===BSD===
 
La licenza d'uso resa famosa dai sistemi operativi BSD, con cui nacque lo stack TCP/IP. I programmi che la usano sono riconosciuti sia software libero dalla FSF che open source software dalla OSI. È non persistente, cioè consente l'uso di qualunque altra licenza per distribuire copie modificate.
=== Menù aiuto ===
permesso d'autore (copyleft, in inglese)
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 ('''?''').
È il diritto d'autore (in inglese copyright) alla rovescia. Uno slogan che suggerisce come si possano sfruttare le leggi sul diritto d'autore per dare libertà agli utenti di un programma, piuttosto che toglierla. Si dicono soggette a copyleft le licenze libere persistenti, come la GNU GPL
 
== Diritto d'autore ==
Fin dall'inizio degli anni Ottanta, c'erano state sentenze che avevano riconosciuto i programmi per elaboratori come opere letterarie e quindi meritevoli di essere protette dal diritto di autore.
 
È con il [[decreto legislativo]] 518/1992 in attuazione della direttiva 91/250 che si adotta in Italia la tutela del diritto d'autore anche per i programmi per elaboratore.
 
Il software, secondo la definizione elaborata dall’[[Organizzazione mondiale per la proprietà intellettuale|Organizzazione Mondiale della Proprietà Intellettuale]] (WIPO), viene definito come:{{Citazione|espressione di un insieme organizzato e strutturato di istruzioni in qualsiasi forma o su qualunque supporto capace, direttamente o indirettamente, di far eseguire o far ottenere una funzione o un compito o far ottenere un risultato particolare per mezzo di un sistema di elaborazione elettronica dell’informazione}}Da queste definizioni si deduce ed interpreta l’appartenenza del software ai beni giuridici immateriali e in particolare alla categoria delle creazioni intellettuali; pertanto è tutelato dagli artt. 1 e 2 della [[Diritto d'autore|Legge sul Diritto d'Autore]] (L. 633/41).
 
L'oggetto sottoposto a tutela (art.1, comma 2, LDA) è il programma per elaboratore, in qualsiasi forma espresso purché originale, quale risultato di creazione intellettuale dell'autore. È compreso inoltre nella tutela il materiale preparatorio per la progettazione del programma stesso.
 
Restano esclusi dalla tutela (art. 2, comma 8, LDA) le idee e i principi che stanno alla base di qualsiasi elemento del programma, compresi quelli alla base delle sue interfacce. La non tutela delle interfacce dal diritto d'autore è stata stabilita dalla Sentenza C-406/10 del 2 maggio 2012 della [[Corte di giustizia dell'Unione europea|Corte di Giustizia dell'Unione Europea]]. Questo risultato è stato determinato al fine di conseguire l'interoperabilità tra programmi per elaboratori diversi.
 
Inoltre l'art.12-bis della legge sopracitata specifica che, salvo patto contrario, il datore di lavoro è titolare del diritto esclusivo di utilizzazione economica del programma per elaboratore creato dal lavoratore dipendente nell'esecuzione delle sue mansioni o su istruzioni impartite dallo stesso datore di lavoro. All'autore è riconosciuto il diritto morale ovvero il diritto di essere menzionato come autore o coautore nelle forme d'uso e nelle interfacce del programma.
 
Così come per altre opere di ingegno anche i diritti di utilizzazione economica per i programmi per elaboratore decadono al compimento del settantesimo anno dopo la morte dell'autore (art. 25, LDA).
 
I Diritti patrimoniali esclusivi sono<ref>{{Cita web|url=https://www.altalex.com/documents/codici-altalex/2014/06/26/legge-sul-diritto-d-autore|titolo=Legge sul diritto d'autore 2020}}</ref>:
* Pubblicazione e utilizzazione economica (art. 12, LDA)
* Riproduzione (artt. 13 e 64-bis lett. A, LDA)
* Modificazione (artt. 18 e 64-bis lett. B, LDA)
* Distribuzione (artt. 17 e 64-bis lett. C, LDA)
* Noleggio e prestito (art. 18-bis LDA)
* Esecuzione e rappresentazione in forma pubblica (art. 15 LDA)
* Comunicazione al pubblico (art. 16 LDA)
* Pubblicazione in raccolta (art. 18.2 LDA)
 
Restano esclusi da tali diritti:
* Uso e correzione di errori (art. 64-ter.1 LDA)
* Copia di backup (64-ter.2 LDA)
* Studio del funzionamento (art. 64-ter.3 LDA)
* [[Interoperabilità]] (art. 64-quater)
 
== Fabbrica software ==
{{vedi anche|Casa di sviluppo}}
Una '''fabbrica software''' (''software factory''), a volte ''software house'', è un’organizzazione (reparto o unità di affari di un’azienda, oppure impresa, ente pubblico o associazione nella loro interezza) che produce software (proprio e/o per altri soggetti). È strutturata secondo una gerarchia di ruoli, presenza di competenze specifiche, impiego di risorse informatiche di sviluppo e di gestione del progetto, processi ben definiti. Solitamente riceve gli elementi in ingresso dal marketing e/o vendite e rilascia i prodotti all’assistenza per l’avvio della manutenzione. Tipicamente non ha solo personale interno ma ricorre a risorse specializzate esterne o a veri e propri fornitori (altre organizzazioni).
 
== Note ==
;Annotazioni
<references group="N"/>
;Fonti
<references/>
 
== Bibliografia ==
* G. Guglielmetti, ''L'invenzione di software. Brevetto e diritto d'autore'', 2ª ed., Milano, Giuffrè, 1997.
 
== Voci correlate ==
{{div col|cols=2}}
{{commons|Category:Software}}
=== Concetti generali ===
* [[Firmware]]
* [[HardwareAggiornamento software]]
* [[Changelog]]
* [[Ciclo di vita del software]]
* [[Collaudo del software]]
* [[Distribuzione (software)]]
* [[Documentazione del software]]
* [[Ingegneria del software]]
* [[Ispezione del software]]
* [[Manutenzione (software)]]
* [[Middleware]]
* [[Metodologia di sviluppo del software]]
* [[Metrica software]]
* [[Modello di sviluppo del software]]
* [[Open source]]
* [[Product key]]
* [[Progettazione (ingegneria del software)]]
* [[Release candidate]]
* [[Release to Manufacturing]]
* [[Sviluppo del software]]
* [[Software as a service]]
* [[Software-in-the-loop]]
* [[Software libero]]
* [[Vaporware]]
 
=== Strumenti ===
* [[Compilatore]]
* [[Computer-aided software engineering]]
* [[Linker]]
* [[Libreria (software)]]
* [[Software development kit]]
* [[Toolchain]]
 
=== Procedure ===
* [[Configurazione (informatica)]]
* [[Installazione (informatica)]]
* [[Localizzazione software]]
 
=== Tipi di software in relazione alla licenza d'uso ===
* [[Freeware]]
* [[Shareware]]
* [[Software proprietario]]
* [[Software libero]]
* [[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 ===
== Collegamenti esterni ==
* [[:Categoria:Software per genere|Elenco di tipi di software]]
* [http://www.sic.org/2004nominees.asp Shareware Industry Conference]
* [[Software di produttività personale]]
* [[Utility]]
 
=== Professioni correlate ===
* [[Sviluppatore software]]
* [[Programmatore]]
* [[Webmaster]]
 
=== Fondazioni e organizzazioni ===
* [[Creative Commons]]
* [[Free Software Foundation]]
* [[Software house]]
* [[Società di consulenza]]
{{div col end}}
 
== Altri progetti ==
{{interprogetto|commons_preposizione=sul|wikt=software|wikt_etichetta=software}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
 
{{Controllo di autorità}}
[[categoria:Software| Software]]
{{portale|informatica|software libero}}
[[categoria:Innovazione tecnologica]]
 
[[Categoria:Software| Software]]
[[af:Sagteware]]
[[Categoria:Terminologia informatica]]
[[bg:Софтуер]]
[[ca:Programari]]
[[cs:Software]]
[[da:Computerprogram]]
[[de:Software]]
[[en:Computer software]]
[[eo:Programaro]]
[[es:Software]]
[[et:Tarkvara]]
[[fa:نرم‌افزار]]
[[fr:Logiciel]]
[[hi:सोफ्टवेर]]
[[hr:Softver]]
[[hu:Szoftver]]
[[ja:ソフトウェア]]
[[ko:컴퓨터 소프트웨어]]
[[ku:Nivîsbarî]]
[[lt:Programinė įranga]]
[[lv:Programmatūra]]
[[nds:Software]]
[[nl:Software]]
[[no:Dataprogram]]
[[pl:Oprogramowanie]]
[[pt:Software]]
[[ro:Software]]
[[ru:Программное обеспечение]]
[[simple:Software]]
[[sl:Programska oprema]]
[[sv:Programvara]]
[[th:ซอฟต์แวร์]]
[[tt:Sanaq programı]]
[[vi:Phần mềm]]
[[zh:软件]]