Loading AI tools
insieme delle componenti immateriali di un sistema elettronico di elaborazione Da Wikipedia, l'enciclopedia libera
Il software, in informatica ed elettronica, indica (per un sistema informatico) l'insieme delle componenti intangibili di elaborazione. Il significato è contrapposto a quello di hardware, che corrisponde alla parte materiale (strato fisico/tangibile) del detto sistema.[1]
Il termine sarebbe stato creato durante la seconda guerra mondiale; tecnici del Royal Army britannico 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[2]. 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.
A partire dal secondo dopoguerra, con lo sviluppo dell'hardware sono aumentate le possibilità per gli sviluppatori; ai sensi della 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).
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:
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).
In particolare in informatica si intendono tali il semplice dato o informazione[3] oppure più propriamente le istruzioni di un programma codificate in linguaggio macchina o in linguaggio di programmazione (codice sorgente), memorizzate su uno o più supporti fisici, sotto forma di codice eseguibile. Riguardo all'invenzione del termine, lo statunitense Paul Ni quette sostiene di averlo coniato nel 1953,[4] tuttavia è invece ritenuta certa la prima apparizione in una pubblicazione scientifica del 1958 dell'American Mathematical Monthly da parte dello statistico John Wilder Tukey.[5]
Genericamente si intende l’insieme dei programmi impiegati in un sistema di elaborazione dati[1] che gestisce il funzionamento di un elaboratore[6]; si distingue fra:
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).
I software possono essere classificati in base a diverse loro caratteristiche:
Dal punto di vista gerarchico[N 4] i software possono essere divisi in quattro[N 5] categorie principali:
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 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 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:
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:
Molte volte i software realizzati vengono distribuiti sotto forma di versioni successive, ciascuna identificata da un numero intero progressivo con in aggiunta uno o più numeri decimali che identificano il codice di rilascio: tipicamente l'ordine di rilascio segue un andamento progressivo della numerazione per cui le versione successive rappresentano cambiamenti delle precedenti con modifiche o miglioramenti in termini di nuove caratteristiche e funzionalità aggiunte e/o bug corretti con opportune 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 a volte accompagna un numero di versione. Alcuni produttori (ad esempio Microsoft nel caso di Windows 10 e successsivi) aggiungono, oltre a versione e/o build, anche il numero di esperienza, strato legato principalmente alle caratteristiche dell'interfaccia utente (user experience).
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:
Ogni tipo di licenza differisce dagli altri per vari aspetti.
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[8][9].
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.
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 (?).
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 della Proprietà Intellettuale (WIPO), viene definito come:
«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 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. 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[10]:
Restano esclusi da tali diritti:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.