Software

insieme delle componenti immateriali di un sistema elettronico di elaborazione
Versione del 26 dic 2005 alle 23:16 di Snowdog (discussione | contributi) (Riportata alla revisione precedente di Carlo.milanesi)

Il termine software (usato in ambito informatico) può indicare l'insieme dei programmi (o uno solo di questi) in grado di funzionare su un computer.

Classificazione

All'interno del software si possono distinguere alcune grandi categorie:

Origine

Il termine software prende origine durante la seconda guerra mondiale. Gli 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 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 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.

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.

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

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).

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.

Ciclo Wintel

"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"

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".

Osservazione di Nathan Myhrvold

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:

  • Anni '80: elaborazione di testi eseguita da programmi di poche decine di kilobyte di memoria (e.g. troff);
  • Oggi: word processor decine di megabyte (e.g. word) .

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.

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.

Organizzazione interna

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, manutenuti più semplicemente e riusati in altri progetti.

Una fase detta di compilazione traduce ogni file di codice sorgente in un file oggetto contenente il programma in linguaggio macchina adeguato all'architettura hardware di destinazione. Infine tutti i file oggetto attraversano una fase di linking per realizzare il 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 da un ciclo di vita codificato nell'ambito dell'Ingegneria del Software (Software Engineering, nella dizione anglosassone) quali

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.

Esistono molte qualità che si richiede al software che sono descritte più approfonditamente nella sezione corrispondente.

Licenza di distribuzione

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.

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.

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.

Creative commons

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.

Licenza d'uso

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)

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. open source software

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à.

GNU GPL

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.

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. permesso d'autore (copyleft, in inglese) È 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

Voci correlate

Collegamenti esterni