|
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.
Viene detto
Software applicativo (o semplicemente "applicativi") l'insieme
dei programmi che non sono compresi nel sistema operativo, ma
che vengono invece installati dall'utente per svolgere compiti
specifici. Per esempio sotto Windows il programma di
videoscrittura Microsoft Word è forse l'applicativo più diffuso.
Word non fa parte di Windows ma deve essere acquistato a parte e
installato sulla macchina dopo che questa contiene già il
sistema operativo. Sono ugualmente degli applicativi i programmi
antivirus (Norton, McAffee, Panda, ...), i programmi per la
compressione dei file (Winzip, ZipCentral, ...), la posta
elettronica (Eudora, Outlook Express, ...), il ritocco
fotografico (Photoshop, PaintShop Pro, ...), la composizione
multimediale (Dreamweaver, FrontPage, Flash, Director, ...), i
lettori audio/video (Quick Time Player, Real Player, ...), ecc.
A rigore fanno parte degli applicativi anche alcune utilità che
si installano assieme a Windows stesso, come il Blocco note, la
Calcolatrice, Paint, WordPad; si tratta infatti di semplici
programmi che non sono essenziali per il funzionamento della
macchina (potrebbero anche essere rimossi senza comprometterne
in alcun modo il funzionamento), ma vengono installati assieme
al sistema operativo soltanto per offrire all'utente alcune
semplici applicazioni di base. Infatti, se per assurdo su un
computer si trovasse esclusivamente il sistema operativo senza
nessun'altra applicazione, la macchina funzionerebbe
perfettamente, ma l'utente non sarebbe messo nelle condizioni di
poterla usare.
Possiamo
tentare una classificazione degli applicativi in 5 categorie:
-
Utilità
di Sistema - si tratta di programmi che servono per
migliorare la gestione e la sicurezza della macchina, come
ad esempio gli stessi antivirus, oppure programmi per
l'ottimizzazione delle risorse, per il controllo dello stato
del sistema, la ripulitura dell'hard disk, ecc.
-
Office
Automation - programmi di ausilio nei normali lavori
d'ufficio, quindi creazione e elaborazione di testi (word
processor), gestione di basi di dati (database), fogli di
calcolo, posta elettronica, navigazione in Internet, ecc.
-
Applicazioni aziendali - progammi creati per le necessità
specifiche delle aziende, come ad esempio i programmi per la
fatturazione o per la gestione del personale, dei magazzini,
dei macchinari industriali. Spesso si tratta di programmi
creati ad hoc da aziende di produzione software.
-
Strumenti di sviluppo - programmi per la creazione di
oggetti multimediali (pagine Web, animazioni e CD
interattivi), elaborazione audio/video/immagini, programmi
che servono per la creazione di nuovi applicativi (authoring
tools).
-
Giochi
e svago - giochi, emulatori, lettori audio e video
All'interno
del software si possono distinguere alcune grandi categorie:
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.
"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:
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:
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
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.
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.
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 no-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.
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à.
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.
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. |