2
CAPITOLO 1:
IL SOFTWARE COME BUSINESS
IL SOFTWARE E LE SUE CARATTERISTICHE
Per poter parlare di software, non è possibile non citare o riferirsi a concetti e stru-
menti quali la tecnologia, l‘hardware, i sistemi informativi e in generale tutto quanto è
fortemente connesso da un legame di interdipendenza con il software. Talvolta questo
legame di interdipendenza arriva ad essere così sfumato da risultare difficile, perfino
per un esperto, tracciare i confini di cosa è software e di cosa non lo è più. L‘industria
stessa del software è complessa come poche altre, e comunque in modo diverso da
qualsiasi altra. La motivazione principale riguarda la presenza, nel mercato, di prodotti
complementari necessari per formare una soluzione sistemica. Complesse alleanze e
processi di standardizzazione sono poi necessari per raggiungere l‘obiettivo di soddi-
sfare i numerosi bisogni degli utenti e le sempre più alte aspettative degli stakeholders.
Ma cos‘è il software? E in cosa si distingue dagli altri prodotti? E in che modo que-
ste differenze impattano sul business, gli utenti e la società? A queste e ad altre do-
mande risponderò in questo capitolo.
Anzitutto, il software è una raccolta di istruzioni che eseguono azioni attraverso un
processore (Messerschmitt e Szyperski, 2003). Il software può essere rappresentato
dal suo codice sorgente (adatto ad essere scritto e letto dalle persone) o direttamente
come codice macchina (adatto ad essere direttamente eseguito su processore). Un
programma, o applicazione software, deve venire incontro alle esigenze specifiche di
utenti, gruppi e organizzazioni nei loro domini di interesse e attività, mentre
l‘infrastruttura software ha il compito di mettere a disposizioni e gestire i servizi più
comuni utilizzati dalle applicazioni.
Il software è sicuramente diverso da qualsiasi altro bene, sia esso un‘informazione,
un bene fisico o un servizio. Pur condividendo molte cose in comune con altri beni, il
software è unico. Esso appartiene al dominio della tecnologia, intesa come insieme
concettuale ed applicativo di conoscenze, skills e artefatti che vengono impiegati tanto
per sviluppare e lanciare prodotti e servizi, quanto per sviluppare i sistemi di produzio-
ne e commercializzazione degli stessi (Verona, 2006).
Il software è praticamente ovunque: molti di noi lo usano ogni giorno, magari senza
accorgersene, traendo, in qualche modo, beneficio. Di fatto, molti dei prodotti che ma-
nifestano un comportamento, cioè che eseguono delle azioni, hanno un software che
3
lavora al loro interno. Le attività della maggior parte delle organizzazioni dipendono dal
software così come dalle persone, oltre che dalla relazione che si instaura tra software
e lavoratori. La nostra è sempre più una società e un mondo, anche quello del lavoro,
in cui l’informazione riveste un ruolo essenziale e centrale. In questo senso, il softwa-
re è diventato veicolo primario attraverso il quale l‘informazione viene creata, acquisita,
organizzata, manipolata e gestita, insieme con le decisioni e le azioni delle persone.
Sempre più spesso si sente parlare di Information Technology, parole che fanno riferi-
mento ai sistemi informativi e alle relative tecnologie sottostanti.
Figura 1: Spesa totale in tecnologie per l'informazione e la comunicazione negli Stati Uniti negli
anni 2000-2006. (Fonte: World Development Indicators)
Un sistema informativo può essere definito tecnicamente come un insieme di ele-
menti interconnessi che raccolgono, elaborano, memorizzano e distribuiscono informa-
zioni per supportare, ad esempio, le attività decisionali e di controllo di un‘azienda
(Laudon, 2006). Questi sistemi sono diventati sempre più importanti per la nostra vita
professionale e non solo.
Ovviamente, il software, così come i sistemi informativi, la tecnologia
dell‘informazione e l‘informazione stessa, possono essere migliori. Questi, a differenza
di moltissimi altri beni e servizi, possono essere costruiti e gestiti in una varietà quasi
infinita di modi. L‘unico limite è di tipo concettuale-immaginativo ed economico. Secon-
do Messerschmitt e Szyperski, abbiamo l‘opportunità di intraprendere scelte e azioni
migliori nel futuro se prendiamo nella massima considerazione i bisogni e i desideri de-
gli utenti, delle organizzazioni e della società. Ma anche l‘industria del software è unica:
ci sono pochi altri esempi di industrie soggette a cambiamenti così rapidi e talvolta per-
fino radicali. Questo permette di considerare differenti modelli industriali e di business,
così come le relative minacce e opportunità.
4
La caratteristica principale del software è quindi la sua sofisticazione. Tuttavia, pa-
ragonato a tutti gli altri beni economici, esclusa l‘informazione, lo sviluppo del software
non è minacciato da alcun limite fisico (Messerschmitt e Szyperski, 2003). In più, es-
sendo il software un bene digitale, una volta creato può essere prodotto in una copia o
in un milione di copie a circa lo stesso costo (Cusumano, 2004). C‘è quindi un‘elevata
potenzialità del business del software di fruire di notevoli e rapide economie di scala,
crescendo in modo profittevole. A questo riguardo è utile citare una famosa legge che
prende il nome dal suo autore, Gordon Moore, il quale affermò (Moore, 1965) che la
performance per costo unitario dei componenti hardware cresce esponenzialmente col
tempo. La legge si applica ai circuiti integrati come ad altri beni dell‘Information techno-
logy. In ogni caso le metriche di performance per l‘hardware influenzano il mondo del
software e quello degli utenti finali in molti modi, a volte stabilendo quello che è possibi-
le e quello che non lo è. Uno degli effetti più importanti della legge di Moore è stato
quello di liberare gli sviluppatori dai vincoli di performance legati all‘hardware, permet-
tendo ad essi di concentrarsi maggiormente su funzioni e usabilità. La realizzazione
della legge di Moore ha consentito inoltre notevoli miglioramenti nell‘interfaccia utente,
potendosi incorporare nelle applicazioni nuovi media come video e audio. Ma la sfida
più grande che l‘industria del software sta da parecchio tempo affrontando è il suo co-
ordinamento. Le infrastrutture software realizzate da molte compagnie devono poter
lavorare insieme; devono poter supportare applicazioni sempre più complesse e diver-
se. Per fare ciò, il processo di sviluppo del software si è evoluto focalizzandosi su rifi-
nimento iterativo, agilità nel rispondere ai cambiamenti della domanda, coinvolgimento
più diretto dell‘esperienza dell‘utente (Messerschmitt e Szyperski, 2003).
Per quanto concerne la creazione di software, sono stati determinati da diversi auto-
ri (qui Messerschmitt e Szyperski, 2003) alcuni elementi di successo:
Tenere in considerazione l‘utente. Un software che offre maggior valore
all‘utente finale ottimizza il ritorno economico per il fornitore, oltre i benefici verso gli
utenti e la società.
Tenere in considerazione quello che già esiste. Nella pratica, il progresso viene
alla luce, in larga misura, aggiungendo, invece che rimpiazzando, tecnologie, appli-
cazioni o moduli. Il cambiamento è infatti spesso incrementale, in modo da spingersi
in avanti senza eccessivi e rischiosi investimenti di capitale.
Tenere in considerazione le attività del marketplace. Le operazioni che avven-
gono nel marketplace del software e dei prodotti complementari, come materiali e
networks, influenzano in varia misura i propri risultati.
5
Prestare attenzione al welfare collettivo. Gli sviluppatori dovrebbero saper rico-
noscere i possibili effetti negativi e positivi sulla salute di tutta la società, e lavorare
per accentuare quelli positivi e mitigare quelli negativi. Si tratta di atteggiamenti e
comportamenti etici, ma è anche buon business. Una mancanza di interesse verso
questi problemi può avere conseguenze negative dirette per l‘azienda, così come
può influenzare negativamente l‘opinione pubblica con riguardo all‘industria del sof-
tware.
Così come molte altre industrie, anche quella del software è stratificata (Messer-
schmitt e Szyperski, 2003). La stratificazione, o layering, è un naturale risultato della
configurazione degli attori presenti nel mercato (Airoldi, Brunetti e Coda, 1994). La
stratificazione può essere intesa in due modi: sia a livello tecnico-architetturale sia a
livello organizzativo-industriale. Nel primo caso il layering è definito da un‘architettura
di moduli ordinati che interagiscono primariamente od esclusivamente con i moduli a-
diacenti. Nella seconda interpretazione, abbiamo un‘organizzazione industriale dove
ogni azienda fornisce uno strato della piramide, in relazione alla complementarietà de-
gli elementi forniti dagli altri attori. Questa è definita dagli economisti una ―struttura o-
rizzontale‖, in cui l‘obiettivo è quello di arrivare, strato su strato, ad una soluzione tota-
le. L‘idea centrale è quella di realizzare nuove funzionalità non partendo da zero, bensì
attraverso l‘aggiunta di un nuovo strato che estende o specifica le funzionalità degli
strati sottostanti senza modificarli.
Figura 2: Strati di supporto complementare al software, (Messerschmitt e Szyperski, 2003).
Lo strato alla base dell‘information technology è formato dai semiconduttori e dagli
oggetti fotonici. Questi oggetti possono essere singoli dispositivi come lasers e tran-
sistors, oppure possono essere oggetti integrati. In quest‘ultimo caso vi è una combi-