Software: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Corretto: "le versioni"
 
(40 versioni intermedie di 24 utenti non mostrate)
Riga 1:
{{Nota disambigua}}
[[File:LibreOffice Writer 4.1.0.4 ITA.png|miniaturathumb|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" />
Riga 8:
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 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/amp/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.
 
=== L'evoluzione e l'applicazione delle leggi di Moore ===
Riga 15:
=== Gli studi di Myhrvold ===
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
 
* 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
 
Riga 22 ⟶ 21:
 
Infatti, anche le altre tecnologie si sono evolute di pari passo:
 
* 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}}.
Riga 30 ⟶ 28:
== Descrizione ==
=== Caratteri generali ===
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 quetteQuette 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:
 
* 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" />
Riga 46 ⟶ 43:
I software possono essere classificati in base a diverse loro caratteristiche:
* 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)]];
Riga 52 ⟶ 49:
* 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:
Riga 64 ⟶ 61:
== Realizzazione ==
{{vedi anche|Sviluppo software}}
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:
 
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:
* è molto «[[malleabilità|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]]).
Riga 74 ⟶ 71:
 
=== Il modello di sviluppo ===
{{Vedivedi anche|modelloModello di sviluppo del software}}
 
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:
 
Riga 82 ⟶ 80:
 
=== Le versioni ===
{{Vedivedi anche|Controllo di versione}}
Molte volte i software realizzati vengono rilasciati sotto forma di versioni e [[release (informatica)|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 (informatica)|patch]]. L'edizione è il principale stadio di una evoluzione, mentre le versioni ne rappresentano i minori cambiamenti.
 
Molte volte i software realizzati vengono rilasciatidistribuiti sotto forma di versioni e [[release (informatica)|release]] successive, ciascuna identificata da un numero intero progressivo con(accompagnata dalla relativa data) in aggiunta uno o più numeri decimali che identificano lail codice di [[release (informatica)|rilascio]]: tipicamente l'ordine di rilascio segue un andamento progressivo della numerazione doveper versionecui ole releaseversioni successive rappresentano evoluzionicambiamenti 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]]).
== Licenze d'utilizzo e distribuzione ==
{{Vedi categoria|Licenze software}}
 
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").
 
== Licenze d'utilizzo e distribuzione ==
{{Vedivedi 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.
 
Riga 102 ⟶ 103:
* [[Licenza BSD|BSD]]
* [[Licenze Creative Commons|Creative Commons]]
 
Ogni tipo di licenza [[comparazione di licenze libere|differisce dagli altri per vari aspetti]].
 
Riga 111 ⟶ 113:
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 ==
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.
Il software, secondo la definizione elaborata dall’[[Organizzazione mondiale per la proprietà intellettuale|Organizzazione Mondiale della Proprietà Intellettuale]] (WIPO), viene definito come:<blockquote>«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».</blockquote>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).
 
È 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.
L'oggetto sottoposto a tutela è 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.
 
Il software, secondo la definizione elaborata dall’[[Organizzazione mondiale per la proprietà intellettuale|Organizzazione Mondiale della Proprietà Intellettuale]] (WIPO), viene definito come:<blockquote>«{{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».</blockquote>}}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).
Restano esclusi dalla tutela le idee e i principi che stanno alla base di qualsiasi elemento del programma, compresi quelli alla base delle sue interfacce.
 
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.
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.
 
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.
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>:
 
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)
Riga 135 ⟶ 142:
 
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 ==
Riga 151 ⟶ 161:
 
== Voci correlate ==
{{Divdiv col|cols=2}}
=== Concetti generali ===
* [[Aggiornamento software]]
Riga 167 ⟶ 177:
* [[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]]
Riga 213 ⟶ 225:
* [[Software house]]
* [[Società di consulenza]]
{{Divdiv col end}}
 
== Altri progetti ==