Software
Da Wikipedia, l'enciclopedia libera.
Il termine software (usato in ambito informatico) indica un programma o l'insieme di essi in grado di funzionare su un elaboratore.
Indice |
[modifica] Classificazione
All'interno del software si possono distinguere tre grandi categorie:
- i sistemi operativi
- i driver
- i firmware (cioè i software contenuti direttamente nell'hardware e che ne regolano le funzioni interne.
- i programmi applicativi (cioè tutti quei software che vengono utilizzati per il lavoro quotidiano: dai programmi per l'ufficio, ai videogiochi)
- le librerie
[modifica] Storia del software
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, roba 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 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. Dato che queste istruzioni erano scritte su pagine solubili nell'acqua per poter essere più facilmente distrutte, e per contrasto con hardware, furono chiamate software.
Il senso moderno del termine deriva dalle istruzioni date ai computer, ed è stata utilizzata per la prima volta nel 1957 da John W. 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 di pensare autonomamente per la risoluzione dei problemi.
[modifica] 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, oltre ai costi, una minaccia alla velocità di elaborazione viene dal software. Infatti ciò che conta per un'utente non è tanto la velocità di elaborazione del processore, quanto la velocità effettiva di processazione 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: 4.000 linee di codice nel 1975 a 500.000 nel 1995
- Word: 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 più grandi e più ampie capacità di I/O (Input/Output).
Infatti, anche le altre tecnologie si sono evolute di pari passo:
- i dischi rigidi da 10 MB (1982) a 60 GB (2003);
- i modem analogici da 300 bit/sec a 56 kbit/sec.
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 chip le mettevano a disposizione" (Stewart Brand, 1995).
[modifica] Ciclo Windows-Intel (WINTEL)
La maggior potenza di ogni nuovo chip Intel, deriva da una nuova generazione di applicazioni basate sul sistema operativo Windows (noto per la pesantezza del codice), che dà 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.
Questo ciclo "vizioso" ha preso il nome nome di "Ciclo WINTEL", dal nome dai colossi di riferimento (processori Intel e sistemi Windows).
Schaller nel 1996 disse a proposito del ciclo Wintel: "every time Andy Grove makes a faster chip, Bill uses all of it" (ogni volta che Andy Grove crea un chip più veloce, Bill Gates lo usa tutto quanto). --Lucasilvia 12:48, 11 ott 2006 (CEST)
[modifica] Realizzazione del software
Per approfondire, vedi la voce Processo software. |
Un software viene normalmente realizzato utilizzando uno o più linguaggi di programmazione. 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 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 subito eseguite da 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)
[modifica] Qualità del software
Per approfondire, vedi la voce Qualità del software. |
La realizzazione del software è un'attività complessa articolata in più fasi. Per questo motivo può essere 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).
[modifica] Licenze d'utilizzo e distribuzione
Per approfondire, vedi la voce Licenza (informatica). |
Le licenze d'utilizzo e distribuzione sul software sono numerose (54 circa), ma quelle effettivamente diffuse sono poche. Per l’89% si tratta di GPL, LGPL o BSD (licenza storica di Unix, tornata in uso dall’avvento di Linux).
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. Esistono licenze liberali (come la licenza Open Source) e licenze proprietarie. Tutte le licenze d'uso traggono il loro valore legale dalle norme sul diritto d'autore (il copyright). Nasce in seguito anche l’Open content che ha come scopo quello di trasferire le licenze su opere diverse dal software.
Alcune licenze:
- Creative Commons
- GNU-GPL (la licenza libera d'uso più diffusa)
- GNU-LGPL
- BSD
Le varie licenze analizzano sommariamente i seguenti aspetti:
- Il permesso d'autore (copyleft)
- Il diritto d'autore (copyright).
- Il software proprietario
- Il software libero (free software)
- Il software Open Source
[modifica] Voci correlate
- Sviluppo del software
- Tipi di software in relazione alla licenza d'uso
- Tipi di software
- Elenco di tipi di software
- Software per l'office automation
- Elenco di tipi di software
- Professioni correlate
- Fondazioni e aziende
[modifica] Altri progetti
[modifica] Collegamenti esterni
- Sito della Shareware Industry Conference
- Facsimile di contratto per la vendita di software e siti web
- Sito di risorse gratuite
Informatica | |||||
---|---|---|---|---|---|
Progetto Informatica | Portale Informatica | BarCode | |||
Categorie
|