YOOtheme

Venerdì, 20 Ottobre 2006 09:43

Caratteristiche economiche del bene software.

Alan Turing Memorial Alan Turing Memorial

Il termine software compare per la prima volta durante la seconda guerra mondiale, quando gli analisti criptografi guidati da Turing lo utilizzarono per denominare le pagine solubili in acqua utilizzate dalla macchina Enigma per essere facilmente distrutte.

Questo veniva usato in contrasto al termine hardware, che era riferito ai rotori ed alla struttura meccanica della stessa macchina.

In senso moderno se ne parla dal 1957, quando John W. Tukey lo riferì alle istruzioni per elaboratori.

A Turing si deve la paternità del concetto di software. Nel 1936 pubblicò un saggio intitolato On Computable Numbers, with an application to the Entscheidungsproblem dove venne formulato il modello teorico del calcolatore a istruzioni memorizzate, la cosiddetta “macchina di Turing” o “macchina astratta” che poteva, in teoria, risolvere qualsiasi problema rappresentabile matematicamente.

L'evoluzione del software è indissolubilmente legata allo sviluppo delle attrezzature hardware.

Come implicato dalla seconda legge di Moore, a quaranta anni dalla sua enunciazione, oltre ai costi, la minaccia all'aumento della potenza di calcolo viene da software che non sarebbero in grado di sfruttare la crescita di prestazioni dei processori. La complementarietà tra questi due beni è ulteriormente ribadita dal “paradigma hardware-software” di Michael Katz e Carl Shapiro, con riferimento a due componenti che sono funzionali solo quando costituiscono un unico sistema informatico.

La complementarietà dei due beni è rappresentata dai due autori ponendo fortemente l'accento sulle esternalità di rete. Scrivono Katz e Shapiro: “un soggetto che acquista un personal computer è interessato al numero di altri utenti che hanno già acquistato o hanno intenzione di acquistare uno stesso tipo di hardware in quanto l'ammontare e la varietà del software che verrà fornito per quel tipo di computer è una funzione crescente del numero di unità hardaware vendute”.
M.Katz, C.Shapiro (1985) Network Externalities, Competition and Compatibility, in “American Economic Review” vol.75, n°3, pp.424 - 444.

Inoltre i vari softwares, necessari ad un elaboratore funzionale, mostrano un forte complementarietà, a tal punto da poter essere definiti da soli un  sottoinsieme del mercato IT anch'esso soggetto a significativi effetti di rete diretti e indiretti. Questi effetti rendono più complesso il lavoro dei regolatori e delle commissioni antitrust poiché influiscono sulla determinazione del mercato rilevante.

Oggi la norma ISO/IEC 912630 definisce un prodotto software come “l'insieme di programmi, procedure, regole, documenti, pertinenti all'utilizzo di un sistema informatico”.

Page e Lepatka definiscono un sistema come “ogni combinazione di beni durevoli e beni o servizi associati che ottengono il funzionamento desiderato”. W.H.Page e J.E. Lopatka, Network Externalities, in The history and Methodology of Law and Economics, vol.1 di Encyclopedia of Law and Economics, pp.952 – 980

Nella realtà economica è opportuno definire le caratteristiche che lo rendono peculiare rispetto ad altri prodotti fisici:

  • E' un bene numerico, costituito da un insieme coordinato e strutturato di istruzioni digitali, frutto di creatività e intelletto. E' un bene immateriale che per essere prodotto e scambiato deve essere incorporato in un supporto, in modo analogo al bene “informazione”.
    Prodotto e supporto sono strettamente integrati ma vanno tenuti logicamente distinti sia per la comprensione dei problemi tecnici legati alla sua produzione sia per quelli che sorgono per la sua tutela giuridica. Porre infatti il software tra i beni immateriali, impedisce che venga definito un diritto di proprietà specifico, quindi si parla di diritti sul suo sfruttamento economico o di diritti di utilizzo.
  • Non è deteriorabile né soggetto a logorìo. Non ha scadenza, quindi ha una vita potenzialmente infinita, tuttavia diventa obsoleto con l'inserimento di nuove funzionalità o se una nuova versione svolge gli stessi compiti in modo più performante.
  • E' un bene globale, sia dal punto di vista della produzione, nel senso che sia gli sviluppatori che i distributori possono essere sparsi su tutta la terra, sia dal punto di vista del consumo, infatti solitamente è possibile vendere il bene su scala globale attraverso dei ritocchi linguistici alla struttura del programma.
  • Costi di sviluppo molto elevati, attribuibili ai costi irrecuperabili della fase di sviluppo e pre-lancio del prodotto che crescono esponenzialmente in base alla complessità del progetto. Per tale nozione si usa la terminologia anglosassone “first copy costs”.
  • Costo marginale di produzione trascurabile. Un prodotto in forma digitale può essere copiato un numero infinito di volte al solo costo di produzione del supporto. Il costo di ogni copia, e quindi il costo marginale di produzione, è basso a tal punto da essere definito trascurabile. Questa è tra le ragioni per cui l'industria del software è caratterizzata da costi medi che tendono a decrescere.
  • Le economie di scala svolgono un ruolo importante nella produzione, non per una riduzione dei costi di man mano che la scala cresce, ma per il risparmio che deriva dal cumulo di know-how, poiché una volta scritto, gli elementi del programma, quali algoritmi, linee di codice, operatori logici, possono essere utilizzati in altri progetti.
  • Effetti di rete, che si manifestano sia dal lato dell'offerta, con un feedback positivo per il produttore, sia dal lato della domanda con vantaggi per l'utente man mano che cresce la dimensione della rete. Distinguiamo inoltre gli effetti di rete diretti, che derivano dall'uso diffuso di un determinato standard, dagli effetti indiretti, che derivano dalla disponibilità di prodotti e servizi complementari. L'intensità di questi effetti di rete genera a sua volta un effetto lock-in che si manifesta particolarmente nei casi di informazione incompleta e preferenze asimmetriche, oltre che naturalmente nei casi di costi di switch molto elevati. Ciò potrebbe comportare l'impossibilità per molti utenti di cambiare rete anche nel caso in cui questa sia tecnologicamente obsoleta, in questi casi la compatibilità di un software con il resto del sistema è essenziale. Diversamente dalle economie di scala, gli effetti di rete non rimangono confinati all'interno di una sola impresa.
  • E' inoltre un bene complesso, la cui produzione necessita in alcuni casi, di ampi teams di programmatori, detti “surgical teams”, per centinaia di “uomo-mese”, l'unità di misura del lavoro in un progetto software.
    Tale unità di misura risulta però fuorviante a causa della natura sequenziale di molte fasi di sviluppo, come la correzione degli errori (debugging). Molte correzioni e adattamenti vengono infatti eseguiti in corso d'opera ed il progetto iniziale viene così modularizzato e gerarchizzato. Come riferito da Frederick P. Brooks Jr. in The mythical man-month, la complessità del software è una proprietà essenziale e non una caratteristica accidentale, essa aumenta in modo più che lineare alla dimensione del progetto.
    La comunicazione nel team risulta un dato fondamentale per ottenere prodotti di qualità, ossia con un basso numero di errori di programma (bugs).
    E' chiaramente un bene “brain intensive”, dove il know-how tecnico e le risorse umane hanno molta piu rilevanza del capitale utilizzato.
  • E' un bene non-rivale nel consumo e solo parzialmente escludibile. E' un prodotto simile al bene “club”, dove gli autorizzati e non al consumo, possono essere distinti da termini legali che esplicitamente definiscono i trasferimenti dei diritti di utilizzo, ossia la licenza d'uso. Si è portati a ritenere che mercato potrebbe avere numerose difficoltà nello svilupparsi qualora non fosse possibile escludere alcuni utenti dal consumo del bene.
    Con una certa capacità tecnica, una copia di un software può essere teoricamente utilizzata da tutti gli utenti di computer, visti i bassi costi di duplicazione, a meno che il possessore originario non decida di escludere volontariamente l'utilizzo da parte di una terza persona.
    Di fatto, i nuovi utenti, legali o meno, saranno investiti dagli stessi effetti di rete che coinvolgono l'intero mercato. In questo contesto la pirateria (o più esattamente copia non autorizzata) si configura come uno strumento in grado di aiutare alcune imprese nella standardizzazione dei propri prodotti. In pratica, sfruttando i forti effetti di rete presenti, la copia non autorizzata può essere usata come uno strumento atto a svolgere dumping tecnologico.
  • E' un bene-esperienza. La qualità e la convenienza di un determinato software si manifestano solo dopo un considerevole utilizzo e un necessario periodo di familiarizzazione, quindi si è spesso riluttanti nel cambiarlo. Tale “costo di competenza” risulta elevato ed è in grossa parte responsabile dell'effetto lock-in che si manifesta all'interno di questo settore. Si decide di cambiare software solo quando l'utilità che né deriva supera il costo di competenza necessario.

La produttività del lavoro in questo settore appare un parametro particolarmente volatile così come la probabilità di successo di un progetto.

Risulta inoltre complesso sia la valutazione di qualità che la comparazione tra prodotti.

Il suo valore è stabilito da criteri finanziari e tecnici, ma non può essere derivato da riferimenti tipici dei beni materiali rendendo difficoltosa l'espressione in termini monetari dei progressi ottenuti dallo sviluppo di un software.

A causa dei costi marginali trascurabili non può essere usato un sistema di prezzi legato ai costi. Nell'economia dell'informazione i prezzi vengono fissati in base al valore che il consumatore assegna ad una determinata informazione e questo può variare molto da un consumatore ad un altro.

 

Differenze rispetto agli altri beni

Circa la natura del prodotto, oltre a specificare le sue peculiarità pare opportuno evidenziare i principali fattori di differenziazione rispetto alle caratteristiche degli altri beni industriali.

  • Una prima differenza sta nel fatto che i parametri e le tecniche usate per descrivere un prodotto industriale sono consolidate, affidabili ed efficaci, mentre la descrizione delle caratteristiche funzionali e di qualità del prodotto software, nonostante le indicazioni di valutazione ISO/IEC 9126, rimane in parte un problema aperto.
  • Inoltre, una volta definito il progetto e il processo di produzione di un prodotto industriale, si può delegare la produzione a strutture esterne senza influenzarne il risultato (outsourcing), mentre nel caso del software la realizzazione affidata a diversi soggetti può portare alla realizzazione di prodotti totalmente diversi da quelli desiderati all'origine, quindi la modularizzazione in questo settore necessita delle stesse attenzioni utilizzate per i progetti di ricerca e sviluppo.
  • Una terza differenza nota che per i prodotti industriali sono possibili economie di scala e processi di produzione e distribuzione molto diversificati in funzione delle dimensioni del mercato a cui il singolo prodotto si rivolge, mentre per i prodotti software, la produzione su piccola scala o su larga scala presenta minori differenze.
  • Infine per i prodotti software esiste una attività di revisione e aggiornamento dinamica a tal punto da non essere comparabile con quella dei prodotti tradizionali.
 

Differenze nel processo produttivo

Per quanto concerne il processo di produzione, le differenze rispetto ai processi tradizionali sembrano evidenziare degli aspetti problematici.

  • In primo luogo, il software, soprattutto quello di natura applicativa, viene sviluppato prevalentemente su commessa e per le specifiche esigenze del committente.
  • La seconda differenza sta nel fatto che la produzione del software è un'attività fortemente creativa in cui la conoscenza dei requisiti viene acquisita, sperimentata ed applicata in maniera incrementale. Quindi il processo stesso di produzione genera la conoscenza necessaria a portarlo a termine. Il know-how viene acquisito in corso d'opera, come spesso accade nelle attività di ricerca e sviluppo. Appare evidente in una logica di sviluppo incrementale, che la riutilizzabilità conterrebbe le risorse utilizzate per ogni singolo progetto, ridurrebbe i tempi di progettazione, sviluppo e test (ossia il “time-to-market”) ed ottimizzerebbe gli investimenti, che potrebbero così essere ripartiti su diversi progetti.
  • Una terza differenza si può riconoscere nel fatto che i clienti del prodotto software, almeno nelle soluzioni individuali, hanno un ruolo attivo nel processo produttivo, come nella specificare i requisiti, dove è usuale la collaborazione tra utente e progettista. Nelle soluzioni standardizzate gli utenti spesso svolgono il ruolo di tester di versioni pre-lancio, dette versioni beta, di programmi che ambiranno ad una larga diffusione.

 

Peculiarità tecniche

Tecnicamente esso è costituito da un “codice sorgente” realizzato attraverso uno o più linguaggi di programmazione che viene tradotto in un “codice macchina” o “codice binario”, il linguaggio che i computer sono in grado di interpretare,  attraverso una fase detta  “compilazione”. Il compito della compilazione è di adeguare le istruzioni contenute nel sorgente all'architettura dell'elaboratore di destinazione.

Successivamente il listato in codice macchina viene trasformato in un “file eseguibile” attraverso una fase detta “link” che permette all'hardware di svolgere le funzioni desiderate.

Il file eseguibile è il risultato di una complessa traduzione, la compilazione, del sorgente che può essere ritenuta un vero e proprio criptaggio.
Il processo di compilazione rappresentato con la logica insiemistica

Risulta infatti impresa titanica il reverse engineering, rendendo di fatto impossibile il processo inverso, ossia ricavare il sorgente dal codice macchina. In termini matematici la relazione esistente tra l'insieme del codice sorgente e l'insieme del codice macchina è di tipo suriettivo e non iniettivo. Il codice sorgente è lo strumento che rende il software interpretabile agli occhi degli umani, infatti i linguaggi di programmazione attraverso cui si realizza hanno costrutti simili alla lingua inglese e rendono enormemente più agevole, per i programmatori, esprimere algoritmi rispetto alla scrittura diretta in linguaggio macchina. Un file in codice eseguibile o in codice macchina rappresenta un “oggetto oscuro” che di fatto non può essere letto, modificato o studiato da alcun programmatore.

Quando acquistiamo un software solitamente lo riceviamo in formato eseguibile, ossia adattato al funzionamento sul nostro elaboratore ma senza la possibilità di conoscere o modificare in alcun modo le sue parti costitutive.

Una importante distinzione tra i vari tipi di softwares è quella visibile attraverso criteri tecnici e di utilizzo. Distinguiamo infatti tra sistemi operativi e applicazioni. I primi sono responsabili della gestione dell'hardware e delle operazioni di base mentre i secondi si occupano della soluzione di problemi specifici. Inoltre distingueremo queste due aree del software dal contesto di mercato in cui sono inserite separando il mercato dell'utenza avanzata e professionale per la gestione di sistemi complessi (detti server) dall'utenza standard per i sistemi tipici (detti desktop o client), come indicato dalla seguente matrice:

I segmenti principali del mercato ITApprofondiremo successivamente le dinamiche di mercato e la sua segmentazione, che coinvolgono questo le cui caratteristiche si sono dimostrate molto peculiari.

Articoli correlati (da tag)