L’INFORMATICA GIURIDICA E LE TECNOLOGIE DELL’INFORMAZIONE INTRODUZIONE INTRODUZ IONE L’informatica giuridica è la disciplina che studia gli aspetti giuridici della rivoluzione tecnologica , economica e sociale prodotta dall’informatica dall’informatica (l’ (l’informazione automatica), cioè studia quella che si dice informatizzazione. Possiamo notare che tale rivoluzione ha un doppio impatto sul diritto: - determina nuove opportunità ma anche nuovi rischi per l’economia, la politica e politica e la vita individuale-sociale, aspetti che richiedono un intervento giuridico. - modifica il lavoro del giurista, che sempre di più si avvale di strumenti informatici. L’informatica giuridica presenta due facce: - l’informatica del diritto, cioè l’uso dell’informatica nelle attività giuridiche. - il diritto dell’informatica, cioè la disciplina giuridica dell’informatizzazione.
CAPITOLO 1: Il diritto e la società dell’informazione 1) La società dell’informazione
Nel corso degli ultimi decenni abbiamo assistito ad una intensa rivoluzione ri voluzione tecnologica, economica e sociale, socia le, caratterizzata dal passaggio dalla società industriale alla società dell’informazione. Così come l’industrializzazione (l’impiego delle macchine nell’elaborazione della materia) determinò il passaggio dalla società agricola alla società industriale, così così l’informatizzazione (l’impiego delle macchine nell’elaborazione di informazioni) sta determinando la formazione di un nuonuovo modello sociale, la società dell’informazione. È possibile cogliere analogie e differenze tra la rivoluzione industriale e quella informatica: - entrambe le rivoluzioni hanno posto nuovi problemi e richiesto un nuovo diritto. Diritto del lavoro, della previdenza sociale, dell’impresa, dell’ambiente, dell’ambiente, ecc, la rivoluzione industriale. Diritto dei dati, dei documenti elettronici, ecc, la rivoluzione informatica. - le due rivoluzioni, invece, sono assai diverse per quanto attiene al loro impatto sui modi in cui si svolge il lavoro del giurista: a questo riguardo fu molto limitato l’impatto della rivoluzione industriale, profondo e pervasivo è quello è quello della rivoluzione informatica. La rivoluzione industriale lasciò immutati gli strumenti di lavoro del giurista, infatti l’automazione dei processi di manipolazione della materia non può avere impatti sul lavoro giuridico, poiché esso non consiste nel nel costruire oggetti materiali ma nell’elaborare informazioni. La informazioni. La rivoluzione informatica, invece, attenendo all’elaborazione delle informazioni, incide direttamente sull’attività del giurista. - i nuovi aspetti della rivoluzione industriale poterono essere disciplinati con relativa autonomia da parte dei diversi ordinamenti statali; invece la risposta giuridica all’informatizzazione, un all’informatizzazione, un fenomeno di portata mondiale, non può essere confinata ad un solo ordinamento statale, ma le soluzioni giuridiche adottate devono coordinarsi per adattarsi alla dimensione globale dell’informatizzazione. Diversi sono gli aspetti della società dell’informazione e delle nuove tecnologie: - operano su informazioni di input producendo informazioni di output, cioè producono informazioni per mezzo di informazioni (l’informazione è la loro materia prima). - favoriscono l’interconnessione. - sono flessibili, nel senso che sono riprogrammabili e permettono di riorganizzare continuamente i sistemi tecnologico-organizzativi ed i loro collegamenti. - tendono alla convergenza, cioè tendono a formare un unico insieme di dispositivi che comunicano. - gli effetti delle nuove tecnologie sono pervasivi, perché incidono su ogni ogni aspetto della vita individuale e sociale. Si parla anche di società della rete (network society) per indicare il nuovo tipo di organizzazione sociale ed economica reso possibile dalle tecnologie dell’informazione, un modello in cui le attività produttive e culturali prescindono ampiamente dalle distanze geografiche ed in cui le interazioni personali possono essere distribuite su tutte la terra. L’inclusione delle perpersone nei rapporti sociali ed economici è determinata dalla loro possibilità di inserirsi nei diversi flussi d’informazione: colocoloro che concorrono a determinare i contenuti e le direzioni dei flussi d’informazione sono detti networker, mentre colore che
accedono passivamente all’infrastruttura tecnologico-informativa tecnologico-informativa sono detti networked. Si usa il termine digital divide (divario digitale) per indicare la contrapposizione tr a chi è in grado di utilizzare le tecnologie dell’informazione e chi invece non è in grado di farlo. La capacità di incidere sui flussi di informazione, peraltro, dipende anche da altri fattori: i ruoli sociali, le competenze professionali, i livelli culturali, le risorse economiche (secondo alcuni le nuove tecnologie riducono le disuguaglianze, mentre secondo altri tendono ad accentuarle). La società dell’informazione tende a realizzare il famose detto del filosofo George Berkeley, “esistere è essere percepito”. Nel nostro caso potremmo dire che “esistere è essere percepiti dai sistemi informatizzati”. Ovviamente ”. Ovviamente gli eventi della realtà umana e sociale mantengono anche nella società dell’informazione la propria concretezza, concretezza, tuttavia tali eventi producono le conseguenze sociali loro proprie (hanno cioè effettività sociale) solo attraverso la loro rappresentazione informatica: gli eventi sociali vengono rappresentati in sistemi informatizzati e tale rappresentazione determina processi economici, amministrativi, politici, processi che possono modificare la realtà stessa. In particolare, gran parte della attività dotate di implicazioni giuridiche (nell’economia i pagamenti, nella pubblica amministrazione l’irrogazione di sanzioni, sanzioni, ecc) vengono oggi rappresentate nei sistemi informatici, e sulla base di tali rappresentazioni vengono attivate le attività consequenziali (l’invio della merce, l’invito a pagare una contravvenzione, contravvenzione, ecc). Non è stata certo l’informatica l’informatica ad avere inventato dati, registri ed ed archivi; tuttavia, nella società dell’informazione il rapporto tra gli eventi e le loro rappresentazioni simboliche si pone in modo profondamente diverso, diverso, per due ragioni: - l’enorme crescita della quantità di informazioni disponibili, consentita dall’economicità del tr attamento attamento informatico dei dati rispetto al trattamento manuale. Nell’epoca preinformatica la gestione dell’informazione richiedeva la scritscrittura su supporto cartaceo, la conservazione in ampi spazi e la ricerca; oggi i dati sono registrati su supporti informatici, sono conservati in spazi ridottissimi e possono essere estratti automaticamente. - i sistemi informatici facilitano l’impiego delle informazioni raccolte e quindi ne accrescono l’incidenza sulla vita; nell’epoca preinformatica era invece era invece necessario l’intervento l’intervento dell’uomo per registrare mediante la scrittura i fatti sosociali, per elaborare quei dati estraendone conoscenze utili e per adottare qualsiasi azione sulla base di tali dati. Dalla crescente importanza della rappresentazione informatizzata dei fatti individuali e sociali discendono alcune esigenze fondamentali: - assicurare all’individuo il controllo sulla propria rappresentazione informatizzata (la privacy). - garantire la sicurezza dei sistemi e dei dati che c he essi contengono (se si fermano i sistemi informatici, le dinamiche sociali sono oggi paralizzate, giacché la società odierna è fortemente dipendente dal funzionamento dei calcolatori). - prevenire le frodi informatiche. informatiche. - consentire l’accesso ai dati pubblici. - assicurare l’autenticità e l’integrità dei l’integrità dei documenti informatici. Per raggiungere tali scopi l’intervento del diritto è sicuramente necessario. Nella società dell’informazione l’individuo acquista a cquista nuove capacità, grazie a svariati strumenti informatici che potenzia-
no ed integrano le sue capacità capacità naturali. Le tecnologie dell’informazione non si limitano a fornire al singolo le informazioni e le elaborazioni di cui ha bisogno nella vita privata e professionale, ma mediano e talvolta sostituiscono le interazioni personali. Grazie a tali tecnologie tecnologie l’individuo acquista nuove opportunità di relazioni sociali, e di conseguenza egli tende a staccarsi dalle comunità geografiche di appartenenza. La società dell’informazione dell’informazione si caratterizza per la presenza di tendenze apparentemente contrastanti: da un lato lato le nuove possibilità aperte dalla tecnologia dell’informazione esaltano il ruolo dell’individuo e la sua autonomia nel creare e comunicare nuovi contenuti, mentre dall’altro l’individuo sperimenta la pr oo pria solitaria impotenza di fronte all’enorme quantità quantità dei contenuti accessibili. L’informatizzazione ha investito tanto il settore economico quanto quello politico ed amministrativo. Come l’informatizzazione di un’organizzazione economica investe tanto le attività produttive e gestionali interne (il back back office), quanto le interazioni con i clienti e fornitori (il front office), così l’informatizzazione delle organizzazioni pubbliche investe investe tanto i processi politici ed amministrativi interni, quanto le interazioni con i cittadini, le imprese, gli enti pubblici e pri vati. Ricordiamo in particolare: - e-commerce (commercio elettronico): effettuazione di scambi commerciali utilizzando reti telematiche. - e-governance (direzione elettronica): uso delle tecnologie dell’informazione nella dell’informazione nella direzione, pianificazione e controllo delle organizzazioni pubbliche e private. - e-government (governo elettronico ): uso delle tecnologie dell’informazione dell’informazione nella gestione degli enti pubblici e nello svolgimento delle loro funzioni. - e-democracy (democrazia elettronica): uso dell’informatica dell’informatica nella comunicazione politica e nel dibattito pubblico. - e-partecipation (partecipazione elettronica): uso delle delle tecnologie dell’informazione all’esterno delle strutture pubbliche per partecipare partecipare alla vita politica. Nella società dell’informazione dell’informazione si manifesta il cosiddetto effetto di rete (network effect): quanto più una rete è ampia ed intensamente sfruttata, tanto più quella rete acquista valore, cioè, tanto maggiore diventa l’utilità che ciascuno può trarre da essa . Ciò vale in particolare per le reti usate nella comunicazione: quante più persone usano una certa rete, come la rete telefonica o Internet, tante più persone sono raggiungibili mediante la stessa rete, e quindi tanto più utile è per ciascuno partecipare ad essa. Possiamo notare come l’effetto di rete caratterizza anche la rete che si instaura tra gli utenti e gli svisv i-
accedono passivamente all’infrastruttura tecnologico-informativa tecnologico-informativa sono detti networked. Si usa il termine digital divide (divario digitale) per indicare la contrapposizione tr a chi è in grado di utilizzare le tecnologie dell’informazione e chi invece non è in grado di farlo. La capacità di incidere sui flussi di informazione, peraltro, dipende anche da altri fattori: i ruoli sociali, le competenze professionali, i livelli culturali, le risorse economiche (secondo alcuni le nuove tecnologie riducono le disuguaglianze, mentre secondo altri tendono ad accentuarle). La società dell’informazione tende a realizzare il famose detto del filosofo George Berkeley, “esistere è essere percepito”. Nel nostro caso potremmo dire che “esistere è essere percepiti dai sistemi informatizzati”. Ovviamente ”. Ovviamente gli eventi della realtà umana e sociale mantengono anche nella società dell’informazione la propria concretezza, concretezza, tuttavia tali eventi producono le conseguenze sociali loro proprie (hanno cioè effettività sociale) solo attraverso la loro rappresentazione informatica: gli eventi sociali vengono rappresentati in sistemi informatizzati e tale rappresentazione determina processi economici, amministrativi, politici, processi che possono modificare la realtà stessa. In particolare, gran parte della attività dotate di implicazioni giuridiche (nell’economia i pagamenti, nella pubblica amministrazione l’irrogazione di sanzioni, sanzioni, ecc) vengono oggi rappresentate nei sistemi informatici, e sulla base di tali rappresentazioni vengono attivate le attività consequenziali (l’invio della merce, l’invito a pagare una contravvenzione, contravvenzione, ecc). Non è stata certo l’informatica l’informatica ad avere inventato dati, registri ed ed archivi; tuttavia, nella società dell’informazione il rapporto tra gli eventi e le loro rappresentazioni simboliche si pone in modo profondamente diverso, diverso, per due ragioni: - l’enorme crescita della quantità di informazioni disponibili, consentita dall’economicità del tr attamento attamento informatico dei dati rispetto al trattamento manuale. Nell’epoca preinformatica la gestione dell’informazione richiedeva la scritscrittura su supporto cartaceo, la conservazione in ampi spazi e la ricerca; oggi i dati sono registrati su supporti informatici, sono conservati in spazi ridottissimi e possono essere estratti automaticamente. - i sistemi informatici facilitano l’impiego delle informazioni raccolte e quindi ne accrescono l’incidenza sulla vita; nell’epoca preinformatica era invece era invece necessario l’intervento l’intervento dell’uomo per registrare mediante la scrittura i fatti sosociali, per elaborare quei dati estraendone conoscenze utili e per adottare qualsiasi azione sulla base di tali dati. Dalla crescente importanza della rappresentazione informatizzata dei fatti individuali e sociali discendono alcune esigenze fondamentali: - assicurare all’individuo il controllo sulla propria rappresentazione informatizzata (la privacy). - garantire la sicurezza dei sistemi e dei dati che c he essi contengono (se si fermano i sistemi informatici, le dinamiche sociali sono oggi paralizzate, giacché la società odierna è fortemente dipendente dal funzionamento dei calcolatori). - prevenire le frodi informatiche. informatiche. - consentire l’accesso ai dati pubblici. - assicurare l’autenticità e l’integrità dei l’integrità dei documenti informatici. Per raggiungere tali scopi l’intervento del diritto è sicuramente necessario. Nella società dell’informazione l’individuo acquista a cquista nuove capacità, grazie a svariati strumenti informatici che potenzia-
no ed integrano le sue capacità capacità naturali. Le tecnologie dell’informazione non si limitano a fornire al singolo le informazioni e le elaborazioni di cui ha bisogno nella vita privata e professionale, ma mediano e talvolta sostituiscono le interazioni personali. Grazie a tali tecnologie tecnologie l’individuo acquista nuove opportunità di relazioni sociali, e di conseguenza egli tende a staccarsi dalle comunità geografiche di appartenenza. La società dell’informazione dell’informazione si caratterizza per la presenza di tendenze apparentemente contrastanti: da un lato lato le nuove possibilità aperte dalla tecnologia dell’informazione esaltano il ruolo dell’individuo e la sua autonomia nel creare e comunicare nuovi contenuti, mentre dall’altro l’individuo sperimenta la pr oo pria solitaria impotenza di fronte all’enorme quantità quantità dei contenuti accessibili. L’informatizzazione ha investito tanto il settore economico quanto quello politico ed amministrativo. Come l’informatizzazione di un’organizzazione economica investe tanto le attività produttive e gestionali interne (il back back office), quanto le interazioni con i clienti e fornitori (il front office), così l’informatizzazione delle organizzazioni pubbliche investe investe tanto i processi politici ed amministrativi interni, quanto le interazioni con i cittadini, le imprese, gli enti pubblici e pri vati. Ricordiamo in particolare: - e-commerce (commercio elettronico): effettuazione di scambi commerciali utilizzando reti telematiche. - e-governance (direzione elettronica): uso delle tecnologie dell’informazione nella dell’informazione nella direzione, pianificazione e controllo delle organizzazioni pubbliche e private. - e-government (governo elettronico ): uso delle tecnologie dell’informazione dell’informazione nella gestione degli enti pubblici e nello svolgimento delle loro funzioni. - e-democracy (democrazia elettronica): uso dell’informatica dell’informatica nella comunicazione politica e nel dibattito pubblico. - e-partecipation (partecipazione elettronica): uso delle delle tecnologie dell’informazione all’esterno delle strutture pubbliche per partecipare partecipare alla vita politica. Nella società dell’informazione dell’informazione si manifesta il cosiddetto effetto di rete (network effect): quanto più una rete è ampia ed intensamente sfruttata, tanto più quella rete acquista valore, cioè, tanto maggiore diventa l’utilità che ciascuno può trarre da essa . Ciò vale in particolare per le reti usate nella comunicazione: quante più persone usano una certa rete, come la rete telefonica o Internet, tante più persone sono raggiungibili mediante la stessa rete, e quindi tanto più utile è per ciascuno partecipare ad essa. Possiamo notare come l’effetto di rete caratterizza anche la rete che si instaura tra gli utenti e gli svisv i-
luppatori che adottano certi software o certi prodotti: ad esempio, il software elaboratore di testi Microsoft Word è usato dalla grandissima maggioranza degli utenti, poiché questi debbono frequentemente scambiarsi documenti elettronici, e tali scambi sono facilitati dall’impiego del medesimo elaboratore di testi (i documenti che il mittente invia possono essere utilizutilizzati dal ricevente senza la necessità di conversioni). Crescendo l’utilità della rete per i singoli, tanti più singoli si collegano alla rete stessa, il che accresce ancora di più l’utilità della rete per il singolo partecipante, e quindi aumenta l’incentivo l’incentivo a fare parte della rete per chi non si sia ancora ancora collegato. Di conseguenza, le reti solitamente si avviano lentamente, lentamente, ma quando una rete ha successo, e cioè supera la soglia critica al di là della quale l’utilità per l’utilizzatore supera nettamente i costi della costi della partecipazione, la crescita diventa sempre più accelerata. Secondo la legge di Metcalfe, l’utilità che ciascun utente può trarre da una rete è proporzionale al quadrato del numero degli utenti . Anche se l’effetto di rete non si verifica solo nel campo dell’informatica, tale effetto è potenziato da d a alcune caratteristiche dell’informatica stessa: - le tecnologie dell’informazione sono caratterizzate da costi fissi molti alti e costi marginali molto bassi. Per realizzare la prima copia di un nuovo prodotto bisogna sostenere costi molto elevati (i costi di progettazione e svilup po), ma la produzione di ulteriori copie dello stesso prodotto ha in generale costi bassissimi (nel caso del software il costo della produzione di una ulteriore copia si avvicina allo zero). Di conseguenza, chi controlla una parte più am pia del mercato è avvantaggiato, poiché può suddividere i propri costi fissi tra una base più ampia di utenti, e quindi può offrire il proprio prodotto prodotto ad un prezzo prezzo più basso. - passare dall’una all’altra soluzione informatica i nformatica comporta costi elevati, e di conseguenza l’utente tende a diventare prigioniero della tecnologia tecnologia che ha adottato (lock-in). L’effetto di rete può dare può dare luogo a fenomeni importanti im portanti sul mercato dell’informatica: - la tendenza monopolistica, intesa come monopolio orizzontale (gli utenti utenti tendono a convergere sull’uso di poche di poche soluzioni tecnologiche, che rappresentano le reti più estese, come ad esempio Windows, iPhone, Google, ecc) e monopolio verticale (che domina un certo settore tende ad estendere il proprio controllo anche sui settori connessi). A questo riguardo, negli anni scorsi, si è discusso del comportamento commerciale di Microsoft che, sulla base del proprio assoluto dominio nel campo dei sistemi operativi operativi per PC, aveva acquisto una posizione dominante anche nel campo dei software software per l’elaborazione di testi testi e la navigazione su Internet; Microsoft, rifiutandosi di fornire le informazioni necessarie per l’interoperabilità tra i propri prodotti e quelli sviluppati da al tre aziende, era stata accusata di abuso della propria posizione dominante. - il fatto che ogni produttore ha interesse ad anticipare il più possibile il rilascio di nuovi prodotti , perché se un prodotto riesce ad acquistare un’ampia u n’ampia diffusione sul mercato prima dell’arrivo dei prodotti concorrenti, l’effetto di rete giocherà a suo favore (ciò spiega perché vengano spesso diffusi prodotti ancora prematuri, ricchi di errori ed imperfezioni). - l’asimmetria nell’informazione, cioè la differenza tra le conoscenze possedute da chi fornisce un prodotto e da chi lo utilizza (chi fornisce un prodotto informatico normalmente ha maggiori conoscenze di chi lo utilizza). Tale situazione può pregiudicare i consumatori, ma può altresì incidere sul corretto funzionamento dei mercati: - si avrà un mercato dei limoni : se l’utilizzatore non non è in grado di distinguere i prodotti che hanno buone prestazioni di quelli che hanno prestazioni peggiori, i prodotti scadenti tenderanno a prevalere, in quanto preferiti dai consumatori in ragione del loro prezzo più basso. - si avrà una situazione di selezione avversa: quando l’utente non è in grado di distinguere servizi buoni e servizi scadenti, i fornitori possono dotarsi di un indice di qualità non veritiero, in particolare i peggiori fornitori saranno maggiormente interessati ad avere una falsa reputazione per nascondere la bassa qualità dei loro servizi. L’economia della società dell’informazione è anche caratterizzata da tendenze di diversificazione dei prodotti e dall’apertura dei mercati : - grazie ai bassi costi di distribuzione è possibile commercializzare anche prodotti di nicchia, cui è interessata solo una frazione molto ristretta del mercato (questo è il fenomeno della d ella coda lunga, long tail). Realizzare e commercializzare prodotti destinati ad una scarsissima diffusione diventa conveniente solo quando i costi della distribuzione di quei prodotti si mantengano molto bassi, b assi, come avviene nella distribuzione mediante Internet. Per esempio, un’ampia quota delle vendite dei siti che forniscono film o musica on-line è rappresentata da prodotti di nicchia, normalmente non disponibili nei negozi, che solo mediante Internet possono essere commercializzati con profitto. - il diminuito rilievo del capitale fisico, cioè delle macchine, rispetto al contributo umano. Gli elevati costi dei macchinari dell’economia industriale limitavano l’attività produttiva alle organizzazioni che disponevano del capitale necessario ad acquistare i dovuti macchinari, ed inoltre richiedevano che i prodotti fossero commercializzati a prezzi di mercato idonei a coprire tali costi. Nell’economia costi. Nell’economia dell’informazione, dell’informazione, invece, gli strumenti di produzione sono gegeneralmente accessibili a basso costo; diventano così possibili nuovi modi di produzione commerciale, nei quali progetti di ampie dimensioni possono attuarsi mediante la partecipazione decentrata di individui o piccole unità produttive (allargamento del mercato ). 2) Il diritto nella società dell’informazione
L’uso delle nuove tecnologie determina mutamente sociali, sociali, i quali richiedono una nuova disciplina giuridica. Il diritto non si limita a reagire alle trasformazioni indo tte dalle tecnologie, ma contribuisce a determinare i modi dell’utilizzo delle
tecnologie informatiche (ad esempio, la disciplina della protezione dei dati incide sulle soluzioni tecnologiche adottate nel-
le attività amministrative). L’informatica del diritto ricopre i seguenti settori: - fonti di cognizione del diritto (documentazione giuridica informatica). Si realizzano fonti elettroniche di cognizio-
ne del diritto: la legislazione, la giurisprudenza e la dottrina sono trasferite in banche dati, i cui contenuti possono essere selezionati ed estratti automaticamente. Si sviluppano nuovi metodi per la ricerca delle informazioni giuridiche, e sulla base dei testi originali si producono automaticamente nuove forme testuali rispondenti alle esigenze del giurista. - sistemi informativi giuridici. Diversi modi nei quali le organizzazioni organizzazioni giuridiche (gli organi legislativi, i tribunali, le pubbliche amministrazioni, ecc) possono avvalersi dell’informatica per conservare, e strarre, strarre, elaborare, condividere e fare circolare le informazioni. - redazione di documenti. Si predispongono software che agevolano la creazione di documenti do cumenti giuridici in genere. - prove informatiche. Si individuano tecniche per gli accertamenti che riguardano oggetti informatici (come le memorie elettroniche), o sono effettuati mediante strumenti informatici (come le intercettazioni telefoniche). - apprendimento elettronico del diritto. Si studia l’uso delle tecnologie t ecnologie informatiche nell’insegnamento del diritto. - modelli informatici del diritto. Si traducono in modelli precisi le strutture della conoscenza giuridica (regole, casi, fattori, principi, concetti, ecc). - determinazioni giuridiche. Si realizzano sistemi informatici che agevolano la qualificazione giuridica dei casi concreti, applicando in modo interattivo o automatico le conoscenze giuridiche. - deontologia ed epistemologia . Si studia l’impatto delle tecnologie sulla pratica del diritto: come dobbiamo usare il diritto nell’informatica? come cambia la comprensione del diritto in seguito all’uso dell’informatica? d ell’informatica? Le realizzazioni informatiche sono destinate ad essere applicate applicate in diversi ambiti del diritto: - informatica legislativa. - informatica giudiziaria. - informatica amministrativa . - informatica delle professioni giuridiche. L’informatica del diritto può svolgere diverse funzioni nelle attività e nella cultura del giurista: - accrescere l’efficienza del lavoro giuridico, in quanto offre al giurista alcuni strumenti per svolgere prima e meglio alcuni aspetti del proprio lavoro. - la razionalizzazione e riorganizzazione delle attività giuridiche, ricordiamo infatti che l’utilità dell’informatica resta limitata se le attività giuridiche continuano a svolgersi secondo forme preinformatiche. - l’efficacia assiologia (dal greco “axios” axios”, “che ha valore” valore”), giacché le tecnologie informatiche possono efficacemente contribuire a fondamentali valori giuridici come la certezza del diritto, la partecipazione informata alle scelte pubbliche, la comunicazione comunicazione tra i professionisti del diritto, ecc. - formare l’autocoscienza del giurista g iurista, il quale, quando è chiamato ad applicare le tecnologie informatiche al servizio dei valori giuridici, o quando simula il modo in cui si accosterebbe a casi ipotetici, è altresì portato ad interrogarsi sulla natura del diritto e sul modo in cui avviene la trattazione dei problemi giuridici. Il diritto dell’informatica dovrebbero svolgere le seguenti funzioni: - prevenire l’uso delle tecnologie informatiche contro i valori giuridici (per esempio, per restringere la libertà dei singoli o per causare danni ai loro beni). - risolvere i conflitti di interessi inerenti all’impiego di tecnologie informatiche (per esempio, il conflitto di interessi tra creatori e utilizzatori di software). - promuovere l’uso dell’informatica per realizzare i diritti individuali e le esigenze sociali. Nel diritto dell’informatica si si possono distinguere i seguenti seguenti profili: - proprietà intellettuale informatica. La fruizione dei beni informatici immateriali (quali o programmi per calcolatore e l opere d’ingegno digitalizzate) viene disciplinata nel tentativo di conciliare gli interessi dei produttori e degli utilizzatori di tali beni, di favorire lo sviluppo dell’economia della conoscenza ma anche la diffusione del sapere. - tutela dei dati. Il tr attamento attamento dei dati personali, cioè l’elaborazione delle informazioni che riguardano gli individui, è divenuto oggetto di regolazione giuridica. Il diritto cerca di bilanciare la tutela della libertà e della dignità dei singoli con il diritto di informazione e di comunicazione. - documenti digitali. Il diritto ha stabilito le condizioni per la validità giuridica dei documenti digitali e delle firme elettroniche; ilil diritto disciplina inoltre l’uso di documenti e supporti informatici quali elementi di prova. - presenza virtuale. Il diritto cerca di disciplinare la presenza di individui e organizzazioni nel mondo virtuale della rete (in particolare, ha affrontato l’uso dei nuovi segni distintivi impiegati nelle reti informatiche, quali i nomi di dominio, e ha disci plinato plinato il loro rapporto con i tradizionali tradizionali segni distintivi della persona persona e dell’impresa). - commercio elettronico . Il diritto disciplina la formazione e l’esecuzione dei contratti telematici, nonché lo svolgisvolgimento delle attività economico-giuridiche attraverso Internet. - governo elettronico. Il diritto disciplina l’impiego dell’informatica nelle strutture pubbliche e nei rapporti di queste con i cittadini, al fine f ine di accrescere l’efficienza degli apparati pubblici.
-
reati informatici. Il diritto penale sanziona i reati che riguardano beni informatici o sono commessi mediante stru-
menti informatici (le frodi informatiche, il danneggiamento informatico, la diffusione di virus, ecc). informatica e Costituzione. L’informatizzazione incide sull’esercizio delle liber tà fondamentali, sulla relazione tra cittadino e poteri pubblici, sull’equilibrio tra i poteri dello Stato e sul rapporto tra Stato, regioni ed enti territoriali. Di qui l’esigenza che la regolamentazione giuridica delle libertà costituzionali e delle istituzioni tenga conto dei rischi derivanti dall’informatica, ma anche delle opportunità che essa offre per lo sviluppo delle libertà individuali e della democraticità ed efficienza delle istituzioni.
Possiamo vedere come lo studio di questi temi presuppone la conoscenza dei metodi e delle tecnologie dell’informatica, una conoscenza che è precondizione necessaria per poter correttamente interpretare le norme giuridiche. Inoltre, in taluni settori, le questioni del diritto dell’informatica sono strettamente connesse con quelle dell’informatica del diritto: ciò avviene quando il diritto regoli l’uso dell’informatica in certe attività giuridiche. 3) Breve storia dell’informatica del diritto
La ricerca dei precursori dell’informatica giuridica potrebbe spingersi assai indietro nel tempo, in particolare Gottfried Leibniz già nel 17° secolo avanzava l’idea del ragionamento quale tecnica calcolabile (cioè eseguibile mediante calcoli numerici). Se ci limitiamo invece agli studiosi che espressamente si richiamano alle moderne tecnologie dell’informazione, possiamo trovare l’idea dell’informatica giuridica in alcuni contributi pubblicati nella seconda metà degli anni ’40. Si usa indicare Lee Loevinger come il fondatore dell’informatica giuridica, il quale nel 1.949 pro pose l’uso del termine giurimetria per indicare un nuovo modo di accostarsi al diritto, ispirato al metodo scientifico. Aspetto essenziale della giurimetria, accanto all’uso di tecniche logiche e matematiche nella trattazione dei problemi giuridici, è l’im piego di strumenti informatici per elaborare dati giuridici (soprattutto al fine di prevedere decisioni future alla luce dei precedenti e dei comportamenti dei giudici). Negli anni ’50 alle intuizioni fanno seguito le prime proposte operative e le prime realizzazioni. Nel 1.956 ha luogo la prima digitalizzazione delle fonti del diritto , presso il Centro di Diritto Sanitario (Health Law Center) dell’Università di Pi ttsburgh. Il problema che il legislatore della Pennsylvania deve risolvere attiene alla correttezza politica ed in particolare all’esigenza di evitare l’uso di espressioni avvertite come offensive o umilianti da parte degli interessati: bisogna sostituire in tutta la legislazione dello Stato della Pennsylvania il termine “bambino ritardato” con il termine “bambino particolare”. In considerazione del fatto che la lettura dei testi da parte dell’uomo non garantisce l’esatto compimento di tutte le sostituzioni, si decide di ricorrere all’informatica: si registra tutta la normativa in materia di sanità su un supporto leggibile dal calcolatore (schede perforate) e si affida al calcolatore il compito di individuare i punti nei quali compariva il termine da sostituire. La prima applicazione dell’informatica giuridica attiene quindi alla redazione di un nuovo testo legislativo. Tuttavia, una volta che i dati sono disponibili su un supporto magnetico, si ha l’idea di utilizzarli quale fonte elettronica di cognizione del diritto nella ricerca giuridica: anziché limitarsi a chiedere al sistema di estrarre i testi che contengono il termine “bambino ritardato”, è possibile chiedere ad esso di estrarre i testi che contengano una qualsiasi parola. Nasce così il primo strumento per la ricerca giuridica in testo integrale, mentre gli indici tradizionali consentivano di individuare nel testo le sole pagine che contengono i termini scelti dall’autore dell’indice, il calcolatore consente di ricercare i contesti dove compare qualsiasi parola il ricercatore ritenga significativa. Nel corso degli anni ’60 e ‘70 si moltiplicano le iniziative nel campo dell’informatica giuridica (si ha anche la nascita delle prime riviste e volumi in materia). Negli USA entrano in funzione i primi sistemi commerciali gestiti da privati per la ricerca informatizzata dei testi giuridici. In Europa, invece, sono i pubblici poteri a prendere le prime iniziative nel campo della informatizzazione delle fonti di cognizione del diritto. In particolare in Italia: - nella seconda metà degli anni ’60 ha inizio l’esperienza del sistema Italgiure, presso l’Uf ficio Massimario della Corte di Cassazione (un progetto tutt’ora attivo). - vengono create banche dati del Senato e della Camera dei deputati. - negli anni ’70 vengono create le prime banche dati della pubblica amministrazione, in particolare nell’ambito dell’amministrazione finanziaria. Iniziano anche le prime esperienze sull’automazione degli uffici giuridici. Durante gli anni’70 l’informatica giuridica si arricchisce di un’ulteriore dimensione, rappresentata dagli studi di intelligenza artificiale e diritto . Negli anni ’80 e ’90 l’informatica giuridica passa dai primi prototipi sperimentali alle realizzazioni operative utilizzate da una larga parte degli operatori del diritto. Tale passaggio è stato facilitato da due grandi innovazioni: il PC (il calcolatore a basso costo destinato all’uso individuale) e la telematica (la congiunzione tra informatica e telecomunicazioni). Il PC si diffonde in ogni ambito della vita sociale (all’inizio il suo utilizzo si limitava a funzionalità non specificatamente giuridiche). Esso facilita la distribuzione delle banche dati informatiche, perché può essere usato per accedere ad esse senza la necessità di terminali a ciò dedicati; a questo riguardo ha grande importanza la disponibilità di nuovi strumenti telematici per la comunicazione a distanza: grazie al modem, che trasforma i segnali informatici in onde che viaggiano su linee telefoniche, o-
gni cavo telefonico può essere usato per collegarsi a calcolatori remoti. La crescita della cerchia degli utenti dà grande im pulso allo sviluppo delle banche di dati giuridici. Negli anni ’80 l’informatizzazione della pratica del diritto si estende al di là della ricerca delle fonti: sono sviluppati numerosi software per la gestione degli studi legali e notarili e negli uffici giudiziari si hanno alcune esperienze nella gestione informatizzata dei registri di cancelleria. Accanto alle realizzazioni pratiche crescono anche gli studi teorici sull’informatica giuridica e, sempre negli anni ’80, ha inizio l’attività didattica di tale materia. All’inizio degli anni ’90 si diffondono i CD (compact disk, disco compatto), supporti ottici dotati di capacità di memorizzazione molto elevata a fronte di un costo molto basso: essi possono essere usati sui normali PC senza la necessità di collegamenti telematici. Le opere già disponibili su supporto cartaceo possono essere ora trasferite su disco compatto, e di conseguenza possono essere riprodotte e distribuite a costi molto inferiori. Le fonti di cognizione elettroniche del diritto si estendono quindi al di là della giurisprudenza (in massime) e della legislazione, diventano accessibili in formato elettronico anche articoli di dottrina e sentenze in testo integrale. Nella seconda metà degli anni ’90 si verifica un’ulteriore importante rivoluzione nell’informatica giuridica, rappresentata dall’avvento di Internet. Le fonti elettroniche del diritto possono trasferirsi sulla rete e diventare accessibili a tutti, Internet diventa progressivamente la principale fonte di cognizione del diritto. La rete, in particolare grazie alla posta elettronica, viene utilizzata dagli operatori del diritto quale mezzo di comunicazione. Gli studi notarili si dotano di una loro rete telematica, con elevate prestazioni di sicurezza, ed utilizzano la rete per trasmettere informazioni ai registri immobiliari e delle imprese. Gli enti pubblici utilizzano sempre più la rete per presentare sé stessi e per dare informazioni ai cittadini, comunicare con i soggetti interessati, fornire talune prestazioni, ecc. Con l’inizio del nuovo millennio l’informatica del diritto si è ulteriormente arricchita. Ormai essa si estende al di là della documentazione e della gestione, abbracciando gli ambiti dell’organizzazione e della comunicazione (esempio tipico di questo fenomeno è rappresentato dal processo civile telematico, termine con cui si indica lo scambio bidirezionale di documenti elettronici tra gli operatori del processo). Negli ultimi anni si è assistito anche ad importanti realizzazioni operative basate sull’intelligenza artificiale: sistemi che assistono l’uomo nell’applicazione di regole, nella preparazione di nuove normative, nella ricerca e nell’utilizzo dei precedenti, nell’effettuazione di scelte giuridiche ed amministrative, ecc. 4) Breve storia del diritto dell’informatica
Il diritto dell’informatica diventa uno specifico tema di indagine giuridica all’inizio degli anni ’60, quando il software diventa oggetto di specifici contratti di fornitura e di pretese di autonoma tutela giuridica, separandosi dall’hardware. Inizia allora negli USA il dibattito sulla protezione giuridica del software, sia in base all’interpretazione del diritto vigente sia in vista di riforme legislative. Fin da allora si contrappongono le opzioni della tutela brevettuale e di quella mediante diritto d’autore del software; quest’ultima è la soluzione che sembra prevalere ed infatti i giudici statunitensi affermano che il software è da considerarsi opera letteraria, protetta deal diritto d’autore (copyright). Si tratta tuttavia di un dibattito che continuerà fino ai giorni nostri. Nel corso degli anni ’70, emerge un nuovo importante tema, quello della tutela dei dati personali, ossia della tutela della persona rispetto ai rischi derivanti dalla raccolta ed elaborazione delle informazioni che la riguardano. Negli anni ’80 la tendenza a proteggere il software mediante il diritto d’autore si consolida in numerosi Paesi, anche attr averso esplicite previsioni legislative. In Italia passeranno alcuni anni prima che il legislatore si decida ad entrare nel campo del diritto dell’informatica con interventi di una certa ampiezza ed organicità. I temi del diritto dell’informatica, peraltro, cominciano ad emergere nella giurisprudenza, che deve confrontarsi con un numero sempre maggiore di controversie ad oggetto informatico; in particolare in ambito civilistico si segnalano le numerose sentenze che assimilano il software alle opere letterarie, applicando ad esso la tutela del diritto d’autore. Il primo testo normativo specificamente dedicato al diritto dell’informatica, improntato su temi di hardware, risale alla fine degli anni ’80. All’inizio degli anni ’90, invece, l’attenzione del legislatore passa dall’hardware al software: in attuazione di una direttiva dell’Unione Europea relativa alla tutela giuridica dei programmi per elaboratore, il d.lgs. 518/1.991 prevede espressamente che il software sia protetto mediante diritto d’autore, rafforzando tale tutela con previsioni specifiche. Dopo questo decreto, gli interventi legislativi nel campo del diritto dell’informatica si moltiplicano, tutti per lo più posti in essere in adempimento di direttive europee. Nel 1.993 si ha la creazione di una sorta di diritto penale dell’informatica: la legge introduce nel Codice Penale alcune fattispecie specificatamente connesse con il mondo dell’informatica. Nel 1.996 l’Italia, uniformandosi alle più esigenti legislazioni europee, si dota di una penetrante disciplina sulla tutela dei dati (ricordiamo che il Codice della privacy è del 2.003). Nel 1.997, infine, il nostro legislatore, anticipando la normativa europea, disciplina l’impiego della firma digitale. Negli ultimi anni, a partire dal nuovo millennio, si è assistito ad un’ulteriore accelerazione degli interventi legislativi nel campo del diritto dell’informatica, sia attraverso leggi e decreti del governo, sia attraverso numerose disposizioni regolamentari e provvedimenti di autorità indipendenti (il Garante della tutela dei dati, l’Autorità delle telecomunicazioni, ecc). Il diritto dell’informatica si segnala, forse più di ogni altro settore del diritto, per la sua dimensione globale: sembra che il diritto possa bilanciare con efficacia i diversi interessi in conflitto nella società dell’informazione solo se esso preveda soluzioni comuni (si pensi, ad esempio, alla possibilità che dati personali o contenuti illeciti siano trasferiti in Paesi dove manca
una efficace disciplina giuridica). Quasi tutti gli interventi legislativi nel diritto dell’informatica nascono dall’iniziativa del legislatore europeo, e si tratta di interventi unificati da un obbiettivo politico-legislativo unitario, quello dello sviluppo della società dell’informazione. Temi di diritto dell’informatica sono oggi trattati anche ai livelli più alti delle relazioni internazionali: per esempio, la tutela del software e dei contenuti digitali ha costituito il tema principale delle più recenti trattative presso l’Organizzazione Mondiale del Commercio (World Trade Organisation, WTO).
CAPITOLO 2: Il calcolatore Il protagonista della scena dell’informatica, l’artefice dell’informatizzazione, è il calcolatore digitale o calcolatore tout court (detto computer o elaboratore), la macchina dedicata all’elaborazione automatica delle informazioni digitali. Le principali caratteristiche del calcolatore sono: - compiere operazioni matematiche ad altissima velocità. - registrare enormi quantità di informazioni in spazi ridottissimi e ritrovare i dati richiesti con un’incredibile rapidità. - trasmettere informazioni a grandi distanze e con enorme velocità. - governare dispositivi meccanici che compiono operazioni di precisione (i robot). - eseguire programmi che svolgono funzioni molteplici (elaborazione di testi, gestione di archivi, calcolo, gestione della contabilità, ecc). 1) Macchine e algoritmi per elaborare informazione
Il funzionamento del calcolatore è dovuto alla combinazione di due componenti: - l’hardware: insieme dei dispositivi materiali (elettronici, meccanici, ottici) che elaborano l’informazione. - il software: insieme dei programmi informatici che governano il funzionamento del calcolatore, indicando in modo preciso ed univoco le elaborazioni da eseguire. Possiamo quindi trovare le radici dell’informatica e del calcolatore in due linee di ricerca convergenti: - il tentativo di realizzare macchine capaci di elaborare informazioni. - il tentativo di definire procedimenti precisi ed univoci, cioè algoritmi, per elaborare informazioni. L’idea di utilizzare dispositivi materiali per elaborare informazioni non è nuova: l’abaco (il pallottoliere) risale a circa 7.000 anni fa. Anche l’idea di definire metodi precisi per elaborare informazioni ha una storia antica: il nome algoritmo deriva dal matematico persiano Mohammed al-Khwarizmi, vissuto nel 9° secolo, i cui scritti contribuirono ad introdurre in Europa i numeri decimali e l’algebra. In particolare egli indicò le regole precise, da seguire passo dopo passo, che usiamo fin dalle scuole elementari per aggiungere, sottrarre, moltiplicare e dividere i numeri decimali. Si tratta di p rocedure, algoritmi, che ci sembrano ovvie e banali ma che rappresentano un’enorme progresso rispetto alle precedenti tecniche per eseguire calcoli numerici. Blaise Pascal costruì, nel 17° secolo, la Pascalina, una macchina per compiere addizioni e sottrazioni. Gottfried Leibniz perfezionò la Pascalina, costruendo un apparecchio in grado di eseguire anche le moltiplicazioni. Tanto la Pascalina quanto l’apparecchio di Leibniz erano calcolatrici automatiche ma non elettroniche: esse funzionavano grazie ad ingranaggi e ruote dentate, non mediante il passaggio di elettroni. Queste macchine potevano eseguire di volta in volta solo una delle operazioni di cui erano capaci (per esempio una sola addizione); quindi esse non erano programmabili, perché non potevano eseguire automaticamente un’intera combinazione di operazioni sulla base di indicazioni fornite in anticipo. Per trovare l’elemento della programmabilità si deve uscire dall’ambito della matematica e della filosofia, e ci si deve spostare in ambito tecnologico ed industriale. All’inizio dell’800 l’artigiano francese Joseph Marie Jacquard inventò un nuovo tipo di telaio, che era in grado di tessere da solo, cioè automaticamente, diversi tipi di trame. A questo tipo di telaio si sarebbe ispirato il matematico inglese Charles Bobbage: egli concepì il Motore Analitico, una macchina dotata di competenza generale, capace di eseguire qualsiasi calcolo. La peculiarità del Motore Analitico era la programmabilità: oltre ad essere in grado di compiere operazioni aritmetiche di base, esso era in grado di eseguire qualsiasi combinazione di tali operazioni. La combinazione delle operazioni da eseguire (il programma) si specificava mediante istruzioni riportate su schede perforate. Le istruzioni indicate nelle schede venivano registrate nella memoria interna al Motore Analitico, che avrebbe preceduto poi alla loro esecuzione, restituendone il risultato. Nel Motore Analitico l’organo di calcolo (che effettuava le operazioni aritmetiche) e l’organo di memoria (che registrava istruzioni e dati) erano affiancati da un organo di controllo (che stabiliva quale dovesse essere la prossima istruzione da eseguire, sulla base delle istruzioni già eseguite e dei risultati ottenuti). Tuttavia, Bobbage non riuscì a superare alcuni problemi tecnici ed il suo Motore Analitico rimase solo un progetto. Tra gli antenati del moderno calcolatore si suole menzionare anche la macchina calcolatrice, anch’essa meccanica e basata su schede perforate, costruita dall’ingegnere americano Herman Hollerith ed utilizzata per i calcoli attinenti al censimento americano del 1.890. Lo stesso Hollerith sarà poi il fondatore di IBM (International Business Machines). Negli anni ’30 si ottennero alcuni risultati fondamentali nel campo della teoria degli algoritmi. Inoltre si realizzò la possibilità di costruire macchine universali, cioè capaci di elaborare qualsiasi algoritmo espresso in un programma per quella macchina: tali macchine eseguono una procedura esattamente definita ed astratta, cioè non finalizzata ad un risultato partico-
lare, che consiste nell’eseguire qualsiasi programma (descrizione di algoritmo) che sia fornito alla macchina, applicandolo ai dati di input. I moderni calcolatori devono la loro universalità alla loro capacità di accogliere i dati ed anche i programmi. Per ritrovare i primi calcolatori moderni, digitali ed elettronici, dobbiamo spostarci al tempo della seconda guerra mondiale, quando i primi calcolatori furono inventati nei Paesi belligeranti. In Inghilterra un gruppo di matematici ed ingegneri, guidato da Alan Turing, realizzò nel 1.941 il Colossus, un calcolatore elettronico ma non programmabile, che fu impiegato con successo nel decifrare i codici utilizzati per la comunicazione dell’esercito tedesco. In Germania, Konrad Zuse, tra la fine degli anni ’30 e l’inizio degli anni ’40, realizzò il primo calcolatore programmabile basato sul sistema binario (ma la sua invenzione fu sottovaluta ed il governo non ne seppe cogliere l’importanza). All’inizio degli anni ’50 avvenne il salto tecnologico che consentì di passare ai primi veri calcolatori moderni: si tratta della registrazione del programma stesso nella memoria del calcolatore . Ciò consentiva di accedere con rapidità alle singole istruzioni da eseguire, e soprattutto di compiere salti condizionati (cioè eseguire o saltare cert e istruzioni del programma sulla base dei risultati precedentemente ottenuti). I calcolatori di oggi sono costruiti sulla base del modello della macchina di von Neumann (matematico statunitense), con il programma memorizzato internamente al calcolatore. Secondo questo modello l’unità di controllo e l’unità di calcolo costituiscono l’unità centrale di elaborazione (central processing unit, CPU), detta anche processore. Esse operano in modo collegato: l’unità di controllo identifica l’istruzione da eseguire ed i relativi dati, mentre l’unità di calcolo esegue l’operazione. Dati ed istruzioni vengono prelevati dalla memoria centrale, nella quale vengono trasferiti anche i risultati delle elaborazioni. La memoria centrale è un dispositivo di memorizzazione ed al ta velocità di lettura e scrittura, tipicamente volatile (si cancella quando il calcolatore si spegne). Essa deve essere distinta dalle memorie di massa (dette anche secondarie o esterne o periferiche), consistenti in dispositivi, solitamente dischi magnetici od ottici, capaci di contenere permanentemente grandi quantità di informazioni. Affinché le informazioni contenute nelle memorie di massa (sia i dati che i programmi) possano essere elaborate dall’unità centrale di elaborazione, esse devono essere trasferite, cioè riprodotte, nella memoria centrale, che è la sola direttamente accessibile all’unità centrale di elaborazione. Ciò significa che l’esecuzione di un software residente sul disco di un computer ne comporta la duplicazione, poiché il software deve essere copiato nella memoria centrale. L’unità centrale di elaborazione di un calcolatore può considerarsi costituita da una complessa combinazione di interruttori, azionati dal calcolatore stesso, che cambiano posizione nel corso dell’elaborazione, lasciando passare la corrente elettrica o interrompendone il flusso. Per realizzare e connettere tali interruttori sono state utilizzate, nel corso degli anni, tecnologie sempre più avanzate, che hanno consentito di ridurre le dimensioni dei calcolatori e di aumentarne la potenza: - i relay (usati negli esperimenti degli anni ’30): apparecchiature elettromagnetiche che, sotto l’effetto della corrente elettrica, muovono una linguetta metallica attivando un contatto. - le valvole termoioniche (usate nei primi calcolatori elettronici). - i transistor: dispositivi formati da materiali semiconduttori che lasciano passare la corrente elettrica se magnetizzati in certi modi. - i circuiti integrati inseriti in un chip (frammento) di silicio: consistono in migliaia di transistor di piccolissime dimensioni combinati in circuiti elettrici miniaturizzati. In un circuito integrato possono essere riunite, a costi molto minori, funzioni in precedenza svolte da molte componenti elettroniche distinte. La grande invenzione degli anni ’70 fu il microprocessore: un circuito integrato che comprende l’unità centrale di elaborazione realizzata su un unico chip. Gli anni seguenti hanno visto una rapidissima crescita sia nel numero di transistor inclusi in un microprocessore, sia nella velocità dei microprocessori stessi. Questo ha consentito la realizzazione di microcalcolatori (calcolatori la cui unità centrale di elaborazione è costituita da un microprocessore) sempre più potenti e sempre meno costosi. I microcalcolatori si sono presto diffusi negli ambienti di lavoro e nelle case, divenendo calcolatori personali (personal computer, PC ), destinati all’uso individuale. Essi hanno consentito l’ingresso dell’informatica in tutti gli ambiti della vita individuale e sociale e, in particolare, nelle attività giuridiche (uffici pubblici, tribunali, studi legali e notarili). Il microprocessore, grazie alla sua estrema miniaturizzazione, ha potuto introdursi nei più svariati macchinari e dispositivi tecnologici (automobile, lavatrice, telefonino, carta di credito, ecc). I microprocessori hanno avuto una straordinaria rapidità di sviluppo. L’enunciazione più famosa al riguardo è la legge di Moore, formulata nel 1.964 da Gordon E. Moore, co-fondatore dell’Intel, l’impresa che oggi domina il mercato dei microprocessori: la potenza dei calcolatori raddoppia circa ogni 2 anni. Anche se questa affermazione più di una vera e propria legge rappresenta un’indicazione sulla tendenza,fino ad oggi è stata confermata. Si discute sulla continuazione di tale crescita, che dovrà scontrarsi, prima o poi, con i limiti fisici della miniaturizzazione (ad un certo punto si raggiungeranno dimensioni tanto piccole da rendere impossibile la realizzazione o il funzionamento dei circuiti). Resta aperta peraltro la possibilità che una crescita ulteriore sia consentita dal passaggio a tecnologie completamente diverse da quelle attuali. L’altra faccia dello sviluppo tecnologico nel settore dei microprocessori è la seconda legge di Moore: il costo dello sviluppo di un circuito integrato raddoppia ad ogni nuova generazione di microprocessori. Questa legge spiega perché pochissime imprese siano in grado di progettare nuovi microprocessori per microcalcolatore: non più di 3 o 4 imprese dominano il mercato dei microprocessori ed una di esse, l’Intel, ne copre circa il 90%. Lo sviluppo delle prestazioni dei microcalcolatori ha determinato una profonda trasformazione nell’hardware e nell’industria informatica: i microcalcolatori hanno sostituito i calcolatori di mag-
giori dimensioni, e di conseguenza i tradizionali produttori di hardware, che un tempo dominavano il mercato dell’informatica grazie alla produzione di grandi elaboratori, sono stati affiancati e spesso sostituiti da nuove impr ese, capaci di produrre microcalcolatori. Il rapporto tra i calcolatori : Modello dell’informatica individuale. L’invenzione (PC), il microcalcolatore destinato all’uso da parte del
del microprocessore ha consentito la nascita del personal computer singolo individuo, nella sua attività professionale o domestica. I primi PC non erano collegati in rete, chi ne comprava uno lo faceva per un uso proprio. Modello della rete di calcolatori . Il PC dava avvio all’era dell’informatica individuale, caratterizzata dall’interazione esclusiva tra il singolo ed il suo calcolatore personale. Prima dell’avvento del PC si poteva accedere a risorse informatiche solo collegandosi attraverso terminali a grandi calcolatori, i cosiddetti mainframe, condivisi da più utenti e gestiti da un centro di calcolo: vi era la possibilità di accedere a risorse condivise e comunicare con gli altri utenti del centro di calcolo. Grazie al PC, invece, ogni individuo poteva disporre in piena autonomia delle proprie risorse informatiche, senza la possibilità di condividere risorse e comunicare con altri. Negli anni successivi l’isolamento dei PC sarebbe stato superato, il micr ocalcolatore si sarebbe dotato di dispositivi di comunicazione in modo di potersi collegare ad altri calcolatori. Ciascun calcolatore ha conservato la propria capacità di elaborazione autonoma e ciascun utente ne ha mantenuto il controllo, ma è inoltre divenuto possibile connettere i singoli calcolatori per comunicare e condividere risorse. In questo modo si sono realizzate, in una nuova sintesi, sia le esigenze di integrazione e collegamento, sia le esigenze di autonomia. Modello client-server. Lo sviluppo delle reti informatiche è stato favorito dalla crescita accelerata delle prestazioni dei microcalcolatori e dall’esigenza di fare comunicare i computer . Accanto ai microcalcolatori destinati all’utilizzo individuale, i PC, si sono quindi diffusi microcalcolatori destinati a fornire servizi di rete, i server: il PC diventa quindi un cliente (client) che si rivolge ad un servitore ( server) quando necessita di tali servizi (servizi di rete, dati, programmi, posta elettronica, pagine web, ecc). I calcolatori dedicati al ruolo di server non si distinguono essenzialmente dai PC per quanto attiene all’architettura informatica, ma offrono più elevate prestazioni per quanto attiene alla potenza di calcolo, alla capacità di memoria ed alla sicurezza. Grazie al collegamento dei diversi calcolatori in reti il singolo utente, dal proprio calcolatore, può accedere a risorse disponibili presso altri calcolatori. Ciò non significa tuttavia che il singolo utente debba essere consapevole di entrare in contatto con certi calcolatori. Ovviamente ogni processo che l’utente attiva dovrà essere svolto da uno o più calcolatori determinati, ma di ciò l’utente non si occupa: la rete informatica gli si presenta come un ambiente virtuale, dove sono presenti entità software che mettono a disposizione diverse funzioni e servizi. Chi richiede tali servizi (ad esempio, l’estrazione di informazioni mediante un motore di ricerca o l’acquisto di un bene da un sito) non ha in genere alcuna consa pevolezza di quali sono la natura, la configurazione e la collocazione dei calcolatori che svolgono le elaborazioni necessarie a rispondere alle sue richieste. Chi usa il computer è interessato solo alla possibilità di attivare le funzioni di cui ha bisogno: l’architettura nella quale egli opera non è l’architettura fisica della rete di calcolatori che compiono le elaborazioni, ma è l’architettura dello spazio virtuale. Modello peer-to-peer. Il modello client-server ha trovato la propria antitesi nel modello peer-to-peer (da pari a pari), frequentemente abbreviato in p2p. Nelle reti peer-to-peer viene meno la distinzione tra server (fornitore di servizi) e client (utilizzatore di servizi). Ogni calcolatore che partecipa alla rete, detto nodo, svolte entrambe le funzioni: mette a disposizione degli altri calcolatori una porzione delle proprie risorse (software, dati, spazio disco, potenza di calcolo, trasmissione di dati, ecc) ed utilizza le risorse messe a disposizione dagli altri calcolatori, cioè offre ed acquista servizi, quindi ogni computer è sia client che server (ad esempio skype). Il modello peer-to-peer ha trovato diverse applicazioni, tuttavia le più importanti realizzazioni si trovano nell’ambito della condivisione di file (file-sharing: i calcolatori di una rete peer-to-peer condividono i file residenti sulle proprie memorie). I sistemi peer-to-peer (ed in particolare il loro utilizzo per il file-sharing) sono stati al centro di intense discussioni. Tra le ragioni a sostegno di tali sistemi c’è il fatto che essi consentono a tutti, anche con r isorse limitate, di partecipare attivamente ad Internet, ed alcuni hanno abbracciato tali sistemi anche per ragioni politiche, i peer-to- peer sono infatti basati su un’organizzazione egualitaria e sono ispirati all’idea della reciprocità indiretta. Altri invece si sono opposti al modello peer-to-peer, sulla base di ragioni sia tecniche che giuridico-politiche: dal punto di vista tecnico si è osservato che il file-sharing comporta lo spostamenti di grandi quantità di dati e quindi può condurre al sovraccarico delle reti informatiche, mentre dal punto di vista politico-giuridico c’è da considerare che molti documenti delle reti peer -to peer sono protetti dal diritto d’autore e la loro cir colazione avviene in violazione dei diritti di proprietà intellettuale. Diverse tesi al riguardo di come risolvere gli inconvenienti del peer-to-peer si oppongono. Accanto a chi richiede l’applicazione di sanzioni rigorose tali da scoraggiare ogni uso non autorizzato di opere protette dal diritto d’autore, vi sono quanti ritengono che anziché adottare soluzioni repressive (perché impediscono nuove efficientissime forme di condivisone della conoscenza) bisognerebbe abbandonare o rivedere profondamente il dir itto d’autore, privo ormai di una valida funzione economicosociale, almeno nella sua attuale conformazione giuridica. Altri ancora ritengono possibili soluzioni di compromesso, quali abbonamenti a modico prezzo, che rendano lecita la condivisione di opere protette in reti peer-to-peer, facendo salvi tuttavia gli interessi economici degli autori e dell’industria culturale. Oggi continuano ad esistere sia modelli di client-server che modelli di peer-to-peer. Modello cloud computing. La possibilità di realizzare architetture virtuali ha determinato, negli ultimissimi anni, una rinnovata tendenza verso la centralizzazione. Mentre negli anni ’90 si era assistito allo snellimento delle apparecchiature hardware, cioè la sostituzione dei macrocalcolatori con microcalcolatori, i primi anni del 2.000 sono stati caratterizzati dal ritorno dei macrocalcolatori nei centri di calcolo più avanzati. I nuovi macrocalcolatori sono macchine di enorme potenza, in grado di sostituire decine di server di piccola o media taglia, i quali vengono virtualizzati: significa che i piccoli o medi
server non esistono più come entità reali distinte (macchinari elettronici fisici), ma hanno invece un’esistenza meramente virtuale che risulta dai processi eseguiti dal macrocalcolatore. Quest’ultimo è in grado di simulare contemporaneamente il funzionamento di molteplici microcalcolatori, eseguendo tutti i programmi che sarebbero stati eseguiti da questi. Lo svilup po delle tecnologie per la virtualizzazione e la migliorata velocità della rete hanno determinato un’evoluzione dei sistemi informatici che va sotto il nome di cloud computing, cioè, letteralmente, di elaborazione della nuvola (“cloud”). Con il termine nuvola si fa riferimento alle risorse informatiche disponibili su Internet, risorse che nel loro insieme appaiono all’utente quali aspetti di una realtà unitaria, priva di dimensione fisica, a cui egli può accedere ovunque si trovi. Nel modello del cloud computing l’utente rinuncia al possesso di proprie risorse hardware e software (al di là della strumentazione minima necessaria per accedere alla rete), ed accede alle infrastrutture hardware (potenza di calcolo, spazio di memoria) ed al le applicazioni software acquisendole attraverso Internet, secondo i propri bisogni. Gli utenti evitano quindi di acquistare e mantenere apparecchiature costose. Nel modello del cloud computing trova piena applicazione l’idea del passaggio dalla proprietà ai diritti di accesso, quale modello organizzativo e giuridico volto a governare l’utilizzo delle risorse. La fornitura di servizi di cloud computing è concentrata in poche imprese, le quali offrono un’ampia gamma di funzioni ai propri clienti, grazie a grandi infrastrutture di calcolo distribuite. Gli utenti non sanno dove siano collocati i sistemi che essi utilizzano: la nuova di un grosso fornitore di cloud computing (Amazon, Google, ecc) è il risultato dell’attività di numerosi data center (centri di elaborazione dati), ciascuno dei quali può consistere in centinaia o migliaia di calcolatori (server farm, fattorie di server). Oltre a poter fruire di specifiche applicazioni informatiche gli utenti possono acquistare dal fornitore di servizi di cloud computing spazi di memoria o computer virtuali: nel primo caso l’utente acquista la disponibilità di una certa quantità di spazio disco (che risiederà su uno o più dei computer della nuvola) nel quale registrare i propri dati, mentre nel secondo caso l’utente acquista un computer virtuale (risultante dall’attività di uno o più server della nuvola) da utilizzare per le pro prie elaborazioni. L’utente potrà accedere ai propri dati o al proprio computer virtuale semplicemente collegandosi ad Internet, ovunque egli si trovi. Accanto ai notevoli vantaggi, non mancano le preoccupazioni collegate alla diffusione del modello cloud computing: - rischio dell’oligopolio di poche imprese che offrono questo tipo di servizi (in gran parte statunitensi). - rischio per la privacy di ciascuno, di fronte all’enorme quantità di dati presenti nell’infrastruttura del fornitore. - perdita del pieno controllo sul proprio sistema di elaborazione da parte degli utenti, in quanto il fornitore del servizio viene a disporre di un potere di fatto (il controllo tecnico sulle macchine e sui programmi) che potrebbe usare anche per limitare l’attività degli utenti o indirizzarla verso i propri interessi, compromettendo la libertà dei singoli e la creatività di Internet. I profili giuridici del cloud computing sono oggi ancora largamente inesplorati, ma sembra certo che un’adeguata disciplina sia necessaria affinché si possa godere dei vantaggi offerti da questa nuova tecnologia, evitando i rischi con essa connessi. Ricordiamo che oggi i computer operano interagendo sempre di più con l’ambiente in modo automatico, cioè facendolo in modo diretto e senza che vi sia la necessità di un intervento umano come mediazione. 2) I calcolatori quali macchine elettroniche digitali
La storia del moderno calcolatore è stata caratterizzata da uno sviluppo rapidissimo, ma nonostante ciò le sue caratteristiche principali sono rimaste fondamentalmente immutate. I moderni calcolatori sono: - digitali: elaborano informazioni espresse in numeri, in particolare in numeri binari. - elettronici: sfruttano il comportamento degli elettroni (le particelle atomiche che ruotano attorno al nucleo dell’atomo), i quali si spostano sui circuiti elettrici e determinano la creazione di campi magnetici. - programmabili: operano seguendo le indicazioni di programmi informatici, i quali esprimono, in linguaggi com prensibili da parte del calcolatore, degli algoritmi, cioè precise istruzioni delle elaborazioni da eseguire. - universali: ogni calcolatore è in grado di eseguire, in linea di principio (cioè prescindendo dalle limitazioni del tem po e della memoria di cui dispone), ogni algoritmo. Uno dei fenomeni più importanti del nostro tempo è il passaggio dalla tecnologia analogica alla tecnologia digitale. Si confrontino, per esempio, un vecchio registratore a nastro di cassette ed un moderno masterizzatore di CD. Il registratore è dotato di una testina che percorre il nastro realizzando su di esso una struttura fisica, cioè una traccia, le cui caratteristiche corrispondono alle caratteristiche delle onde sonore riprodotte, quelle rilevate dal microfono o da una testina di lettura, per cui si può dire che la traccia è analoga alle onde sonore. Il passaggio opposto si compie quando a partire dalla traccia si riproduce il suono corrispondente, e le onde magnetizzate sono trasformate in onde sonore analogiche. La traccia analogica è continua, cioè essa non procede per gradini. Il masterizzatore di CD, invece, registra il suono in una struttura che non assomiglia al fenomeno sonoro, il suono è invece espresso mediante una sequenza di numeri interi. A partire da questi numeri, il lettore (con l’aiuto delle casse) riproduce il suono corrispondente. Pertanto, la registrazione su CD comporta la digitalizzazione, ossia la trasformazione di grandezze continue (le caratteristiche fisiche del suono) in quantità digitali (numeri interi distinti). In sintesi: - la tecnologia analogica riproduce un certo fenomeno sotto forma di una traccia che riproduce il funzionamento del fenomeno originario, cioè riproduce il fenomeno originario in modo analogo ad esso. - la tecnologia digitale rappresenta il fenomeno originario attraverso una sequenza di numeri e poi lo riproduce provvedendo alla lettura di tale sequenza.
La rappresentazione digitale sembra più imprecisa e rozza di quella analogica, tuttavia è possibile offrire una rappresentazione sufficientemente precisa per i fini che si perseguono (quando un’immagine è raffigurata sullo schermo di un calcolatore ciò avviene mediante la composizione di puntini distinti, ciascuno dei quali ha un preciso colore, e tali puntini sono talmente piccoli che il nostro occhio non riesce a percepirli singolarmente, cogliamo solamente il risultato complessivo della loro combinazione). La rappresentazione digitale offre tre vantaggi importanti rispetto a quella analogica: - è riproducibile con assoluta precisione (la riproduzione è in tutto e per tutto identica all’originale). Ogni nuova ri produzione di una rappresentazione analogica comporta una perdita parziale dell’informazione originaria: anche i più leggeri difetti del meccanismo di riproduzione, le più leggere variazioni nelle condizioni in cui la riproduzione ha luogo, comportano differenze della copia rispetto all’originale, differenze che si sommano di riproduzione in r i produzione. Tale perdita non avviene invece nella riproduzione di rappresentazioni digitali, poiché qui basta riprodurre gli stessi numeri per avere una copia perfetta. - non si danneggia con il passare del tempo (per via del motivo visto sopra). - è direttamente elaborabile dal calcolatore. In particolare, il sistema di rappresentazione digitale adottato nell’elaborazione automatica dell’informazione è il sistema binario. Si tratta di un sistema che trova la sua giustificazione nella facilità del suo uso per memorizzare ed elaborare le informazioni mediante sistemi informatici. Il sistema di rappresentazione dei numeri da noi comunemente adottato è il sistema decimale, che utilizza le dieci cifre (0,1,2,3,4,5,6,7,8,9). Il sistema decimale è un sistema posizionale: ogni cifra di un numero rappresenta un valore che dipende dalla posizione della cifra stessa, posizione calcolata a partire dalla fine del numero ed iniziando a contare da zero (ogni posizione india una potenza del 10). Grazie alla sua natura posizionale il sistema decimale consente di rappresentare qualsiasi numero utilizzando sempre gli stessi dieci simboli numerici. Anche il sistema binario è un sistema posizionale, il quale, a differenza del sistema decimale, usa solamente due cifre (0 e 1) ed ogni posizione esprime una potenza del 2 (la cifra nella posizione 0, l’ultima, indica sempre le unità). Perché il sistema binario è usato dai computer? Non vi sono ragioni di principio che vietino di adottare nei calcolatori il sistema decimale, e quindi di rappresentare anche all’interno dei calcolatori l’informazione mediante strutture fisiche dotate di dieci posizioni possibili. Tuttavia, nei calcolatori, è molto più facile utilizzare componenti fisiche (elettroniche) dotate della capacità di assumere due sole posizioni: un interruttore può essere acceso (lascia passare la corrente) o spento (interrompe il flusso di corrente). Per queste ragioni nei moderni calcolatori le informazioni non sono rappresentate mediante cifre decimali, ma mediante cifre binarie. La singola cifra binaria è detta bit, ed è l’unità minima dell’informazione registrata od elabor ata da un calcolatore: il bit può assumere uno dei due possibili valori del sistema binario, la cifra 0 o la cifra 1. Una sequenza di 8 bit prende il nome di byte. Il byte, a sua volta, ha i seguenti multipli: il kilobyte o KB (circa 1.000 bytes), il megabyte o MB (circa 1.000 KB), il gigabyte o GB (circa 1.000 MB), il terabyte o TB (circa 1.000 GB). Nel sistema binario la rap presentazione di un valore numerico richiede un numero di posizioni superiore a quello richiesto nel sistema decimale, per questo motivo la numerazione binaria non è adatta all’uomo, che non è in grado di memorizzare agevolmente lunghe sequenze di cifre. Il calcolatore invece non ha tali problemi, essendo dotato di una grande capacità di memoria. Il calcolatore stesso si occupa di tradurre i numeri dalla rappresentazione decimale a quella binaria quando riceve un input numerico dall’uomo, e dalla rappresentazione binaria a quella decimale quando trasmette un output numerico all’uomo. Attraverso le cifre binarie è possibile rappresentare qualsiasi oggetto (numeri interi, numeri decimali, simboli di ogni tipo come lettere dell’alfabeto, simboli matematici e logici, ecc): basta stabilire precise corrispondenze tra i numeri binar i e gli oggetti da rappresentare. I numeri binari consentono di rappresentare non solo caratteri, ma anche altri tipi d’informazione: per esempio un’immagine in bianco e nero può essere rappresentata mediante una mappa di bit (bitmap), ciascuno dei quali corrisponde ad un punto di quell’immagine, così se il punto è nero il bit è 1 e se il punto è bianco il bit è 0 (rappresentazioni più complesse consentono di riprodurre immagini a colori). Anche i suoni possono essere rappresentati in forma binaria. Un ulteriore vantaggio del sistema binario è costituito dal suo parallelismo con la logica: come nel sistema binario una cifra può assumere due soli possibili valori tra loro alternativi (0 o 1), così nella logica una proposizione può assumere due soli valori tra loro alternativi (essere vera o essere falsa). È possibile stabilire una perfetta corrispondenza tra le cifre binarie e le proposizioni, se si conviene di fare corrispondere la verità con la cifra 1 (anziché dire che una proposizione è vera, diciamo che essa vale 1) e la falsità con la cifra 0 (anziché dire che una proposizione è falsa, diciamo che essa vale 0). A questo proposito è importante considerare gli studi di George Boole (1.815 - 1.864). Egli notò che le combinazioni tra le proposizioni obbediscono a regole ben definite, di cui si può dare una formulazione precisa, regole simili a quelle che governano le operazioni dell’aritmetica. Tali regole determinano il funzionamento dei connettori logici, le congiunzioni che servono a collegare le singole proposizioni in strutture più complesse (i connettivi principali corrispondono alle congiunzioni italiane “e”, “o”, “non”, cioè “and”, ”or”, ”not”). Come è fatto l’interno di un computer? Abbiamo detto che certe espressioni che usiamo nel linguaggio (“e”, “o”, “non”) hanno un certo significato e rispondono a regole logiche ben precise (le regole risultanti dagli studi di Boole). Claude Shannon ebbe l’idea di realizzare dei dispositivi elettronici operanti proprio come i connettori logici, detti porte logiche (esse sono in grado di realizzare operazioni logiche tra diverse variabili che possono assumere solamente due valori, vero o falso cioè 1 o 0). Le porte logiche possono essere combinate in reti logiche capaci di svolgere tutte le operazioni logicomatematiche (anche complesse) di cui abbia bisogno un calcolatore universale. Una rete logica complessa può costituire, in
particolare, il microprocessore di un calcolatore (un microprocessore contiene milioni di porte logiche, cioè di transistor, tra loro collegate): milioni di porte logiche vengono combinate su una piastrina di silicio. Reti logiche specifiche possono rappresentare un’alternativa rispetto allo sviluppo di programmi software: una medesima elaborazione (i medesimi output ottenuti dai medesimi input) si può ottenere sia attraverso l’esecuzione di un programma da parte di un calcolatore universale, quindi attraverso un software, sia attraverso una rete logi ca, quindi attraverso una componente hardware. L’elaborazione effettuata mediante una rete logica sarà più veloce di quella effettuata mediante un calcolatore universale guidato da un software, ma lo sviluppo della rete logica comporterà costi maggiori rispetto allo sviluppo del software e la rete non sarà modificabile. Da ultimo, ricordiamo che l’unità centrale di elaborazione (il processore) del calcolatore può essere utilmente utilizzata solo se è integrata da numerosi dispositivi ausiliari: - dispositivi di input e output: consentono al calcolatore di interagire con l’utente, ricevendo informazioni o comunicandole all’esterno (schermo, tastiera, mouse, stampante, scanner, microfono, altoparlanti, scheda video o audio, videocamera, ecc). - dispositivi di memorizzazione: sono le memorie di massa che consentono di registrare e conservare permanentemente dati e programmi. - dispositivi di connessione: consentono al calcolatore di interagire con altri sistemi informatici (modem, scheda di rete, ecc).
CAPITOLO 3: Algoritmi e programmi L’informazione non è solo la materia prima (input) ed il risultato (output) dell’elaborazione automatica: l’informazione specifica anche lo svolgimento del processo della propria elaborazione, essa governa la macchina che la produce. Le indicazioni impartite ad un calcolatore prendono il nome di algoritmo, il modo in cui queste indicazioni sono formulate è il programma. 1) Lo spirito oggettivo della società dell’informazione
Negli anni precedenti i concetti, una volta espressi in forma linguistica, potevano rivivere solamente grazie alla mediazione della mente umana, che coglieva e ricreava i significati espressi in forma linguistica. Da soli, senza la mediazione dell’uomo, i testi erano inerti e privi di ogni operatività. Nella società dell’informazione questo non succede più. Nella società dell’informazione i testi possono vivere e diventare operanti senza la mediazione dell’uomo, guidando il calcolatore. Non tutti i contenuti possono acquisire questa forma di vita, ma solo quelli che possano costituire dati o programmi per ca lcolatore. I programmi per calcolatore sono creazione dell’uomo, sono testi simili a quelli che usiamo per comunicare tra di noi, formulati in una lingua le cui espressioni hanno significato e possono essere comprese dall’uomo. Questi testi, tuttavia, non sono destinati solo alla comunicazione umana, ma hanno un’ulteriore modalità di utilizzazione: sono destinati a governare il funzionamento del calcolatore. La possibilità di creare testi suscettibili di esecuzione automatica rappresenta un vero salto nell’evoluzione culturale: il contenuto concettuale si separa dall’uomo e diventa capace di autonoma operatività. L’esecuzione del software da parte del calcolatore realizza processi computazionali, che possono dare vita ad attività controllate dal calcolatore stesso (ad esempio, il funzionamento di una lavatrice) e a fenomeni immateriali della realtà virtuale (ad esempio, immagini che appaiono sullo schermo). Ciò comporta un aspetto duplice: - un grande potenziamento delle capacità di creazione dell’uomo. Le idee dell’uomo, una volta tradotte in un linguaggio comprensibile ed eseguibile da parte del calcolatore, possono trovare realizzazione operativa ed impiego in realtà virtuali, senza un’ulteriore intervento umano e senza la necessità di input materiali. - l’alienazione e l’estraneazione dell’uomo, determinata dalla possibilità di creare realtà virtuali mediante testi eseguibili. Infatti ciascuno di noi sperimenta la realtà virtuale, risultante dal funzionamento dei software, come un am bito non modificabile con il proprio intervento individuale. 2) Programmi e algoritmi
L’hardware del calcolatore è un esecutore generale di algoritmi: esso è in grado di compiere qualsiasi operazione che conduca da certi input a certi output, una volta fornito di un algoritmo che specifichi come compiere tale trasformazione. Un algoritmo è una sequenza finita di istruzioni ripetibili non ambigue, una sequenza che, se eseguita con determinati dati di ingresso (input) produce in uscita dei risultati (output), risolvendo una classe di problemi in un tempo finito (l’algoritmo è una procedura chiara ed univoca, tanto precisa da poter essere attuata da un esecutore automatico senza che ad esso debbano essere fornite ulteriori indicazioni). Gli algoritmi per computer non riguardano attività materiali ma servono per l’elaborazione dell’informazione, ed essi indicano come ottenere cer ti output da certi input. L’algoritmo è dotato delle seguenti proprietà: - finitezza: l’algoritmo deve portare alla soluzione in un numero finito di passi. - generalità: l’algoritmo non risolve un solo problema, ma una classe di problemi.
-
non ambiguità: le istruzioni indicate sono specificate univocamente, cosicché la loro esecuzione avviene sempre
nello stesso modo indipendentemente dall’esecutore. - ripetibilità: dagli stessi dadi di input l’algoritmo deve fornire gli stessi dati di output. Gli algoritmi per calcolatore devono essere espressi in linguaggi comprensibili per il calcolatore (linguaggi di programmazione), diversi da quelli usati nella comunicazione tra persone. Il programmatore, tuttavia, può trovare conveniente esprimere un algoritmo nel linguaggio naturale, prima di tradurlo in un linguaggio di programmazione. La pseudocodifica consiste nel formulare gli algoritmi usando il linguaggio naturale (la pseudocodifica non è ancora un programma per calcolatore). Gli algoritmi presuppongono alcune competenze nel calcolatore esecutore: - le competenze atomiche, sono quelle che il calcolatore è direttamente in grado di svolgere con un unico atto, senza la necessità di scinderne l’attuazione in atti più semplici. - le competenze molecolari, sono quelle che il calcolatore può svolgere in seguito all’acquisizione di un nuovo algoritmo, risultando dalla combinazione di più atti secondo le istruzioni contenute in un determinato algoritmo (l’acquisizione di algoritmi comporta quindi un aumento delle competenze dell’esecutore). È importante distinguere tra: - l’algoritmo, cioè la specificazione delle elaborazioni da compiere. - il processo di esecuzione dell’algoritmo, cioè l’attività mediante la quale l’esecutore svolge l’algoritmo. In generale non c’è rapporto tra la lunghezza dell’algoritmo e la lunghezza del processo della sua esecuzione, nel senso che anche un algoritmo molto corto può dare luogo ad elaborazioni molto lunghe. Bisogna inoltre distinguere tra: - l’algoritmo. - l’idea o invenzione algoritmica. La medesima idea o invenzione algoritmica può trovare applicazione in algoritmi significativamente diversi e per risolvere un medesimo problema possiamo usare diversi algoritmi, ispirati a diverse idee o invenzioni algoritmiche. Gli algoritmi non sono tutti uguali: - alcuni conducono a soluzioni corrette, altri invece producono risultati errati (per alcuni dei loro possibili input). Quello della correttezza è un requisito preliminare ed inderogabile degli algoritmi. - non esiste, né è possibile realizzare, un algoritmo di validità universale (applicabili ad ogni possibile algoritmo) capace di dirci se l’algoritmo si arresterà, applicato a un qualsiasi input. Inoltre non esiste alcun algoritmo di validità universale capace di dirci se un altro algoritmo contenga errori. - non è possibile verificare la correttezza di un algoritmo applicandolo preventivamente ad ogni input possibile, perché questi potrebbero essere infiniti o comunque troppo numerosi. - un algoritmo può operare correttamente nella maggior parte dei casi, ma cadere in errore rispetto ad input particolari. Non mancano gli esempi di errori algoritmici con conseguenze molto gravi. In ambito sanitario errori negli algoritmi destinati a guidare il funzionamento di apparecchiature delicate possono causare (ed hanno causato in qualche caso) la morte del paziente. Per non parlare dei possibili effetti di un errore negli algoritmi secondo i quali operano i sistemi informatici di un aeroplano, di una nave o di una centrale nucleare. L’errore algoritmico pone difficili pr o blemi al giurista che debba affrontare gli aspetti inerenti alla conseguente responsabilità penale, civile o contrattuale: l’errore non è del tutto evitabile ed i suoi effetti sono difficilmente prevedibili e quantificabili, bisogna bilanciare l’esigenza di tutelare l’utente e quella di non onerare eccessivamente lo sviluppatore del software. - alcuni algoritmi sono più efficaci di altri, nel senso che producono il proprio risultato con uno sforzo minore e quindi in un tempo minore. Anche l’efficienza è un as petto molto importante degli algoritmi. Per misurare l’efficienza di un algoritmo non basta considerare il suo comportamento in relazione a un input particolare; di regola, tutti gli algoritmi corretti danno risposte sufficientemente rapide se applicati ad input di piccola dimensione, e quindi il problema nasce quando l’input diventi di dimensioni notevoli. Per questa ragione, nel valutare l’efficienza degli algoritmi se ne considera la complessità computazionale, che consiste nel rapporto tra due elementi: - l’aumento dell’ampiezza dell’input di un algoritmo. - l’aumento della lunghezza del processo di esecuzione dell’algoritmo stesso. Negli algoritmi con bassa complessità computazionale, l’aumento dell’ampiezza dell’input determina un piccolo aumento della lunghezza del processo di esecuzione. Negli algoritmi con media complessità computazionale, la lunghezza del processo di esecuzione cresce in modo proporzionale all’ampiezza dell’input. Negli algoritmi con alta complessità computazionale, l’aumento dell’ampiezza dell’input determina un aumento più che proporzionale (accelerato) della lunghezza del processo di esecuzione, tanto che ad un certo punto diventa impossibile eseguire l’algoritmo in un tempo ragionevole. In questi ultimi casi si dice che l’algoritmo ha una complessità esponenziale, perché al crescere della dimensione dell’input non solo il processo di esecuzione si allunga, ma lo fa con un’accelerazione sempre maggiore. Pertanto, al crescere dell’input gli algoritmi con complessità esponenziale danno luogo a processi di esecuzione talmente lunghi da diventare intrattabili, nel senso che nemmeno gli esecutori più veloci (cioè i più potenti calcolatori oggi disponibili) riescono ad eseguirli in tempi ragionevoli.
3) Dagli algoritmi ai programmi per calcolatore
In campo informatico gli algoritmi non vanno trattati isolatamente, ma dobbiamo sempre tener presente che essi hanno un rapporto con l’esecutore automatico destinato ad eseguirli: gli esecutori automatici elaborano e trattano informazioni guidati dagli algoritmi. Nel considerare il rapporto tra il calcolatore e gli algoritmi è necessario porsi due quesiti: - quali algoritmi possono essere eseguiti da un calcolatore? - in che modo ed in quale linguaggio bisogna esprimere gli algoritmi affinché essi siano comprensibili ed eseguibili da parte di un calcolatore? Per dare una risposta alla prima domanda è necessario presentare due tesi: - secondo la prima tesi, ogni algoritmo riguarda un particolare tipo di calcolatore. - secondo la seconda tesi, ogni calcolatore è una macchina algoritmica universale ed è in grado di eseguire qualsiasi algoritmo, espresso in un programma da esso leggibile, gli venga sottoposto. La conciliazione delle due tesi deriva dalla seguente considerazione. Un’azione complessa può essere vista come un’azione molecolare, ch risulta dalla combinazione appropriata di azioni atomiche più semplici, combinazione specificata mediante un algoritmo. Di conseguenza, se il calcolatore è capace di eseguire le azioni atomiche ed apprende l’algoritmo per combinare queste nell’azione molecolare, esso sarà in grado di eseguire anche l’azione molecolare. Apprendendo un algoritmo il calcolatore amplia la propria competenza, ed acquisendo l’algoritmo in modo permanente (cioè registrandolo nella propria memoria) esso acquista la capacità di eseguire da solo, senza l’intervento di terzi, l’azione molecolare. Un calcolatore può acquistare la capacità di eseguire nuove azioni, che non rientrano nella lista delle azioni (atomiche) ad esso innate, qualora gli si forniscano algoritmi opportuni, che realizzano le nuove azioni mediante la combinazione delle azioni atomiche de l calcolatore. L’hardware di un calcolatore è in grado di compiere poche operazioni atomiche con numeri binari. Dato che i ca lcolatori non sono tutti uguali, l’insieme delle operazioni atomiche che il calcolatore è in grado di svolgere varia a seconda del modello (i calcolatori sono dotati di diverse unità centrali di elaborazione). In base a questa considerazione possiamo vedere come i calcolatori moderni siano macchine universali, cioè essi sono in grado di eseguire qualsiasi algoritmo, purché esso sia espresso in un linguaggio a loro comprensibile La risposta alla seconda domanda è data dalla programmazione. Un programma informatico (o software) consiste in un testo eseguibile da parte di un calcolatore , cioè nell’insieme di formulazioni algoritmiche espresse in un linguaggio comprensibile e eseguibile dal calcolatore. Il testo del programma consiste in una sequenza di caratteri alfabetici e numerici (sotto questo aspetto un programma non è diverso dai testi comunemente usati dagli esseri umani per registrare i propri pensieri e comunicarli ad altri). La specificità dei programmi sta nel fatto che essi sono suscettibili di essere eseguiti automaticamente da parte di un calcolatore; a questo proposito non tutti i testi rappresentano dei programmi: non sono programmi i testi formulati nel linguaggio naturale che usiamo comunemente per comunicare con altri, bensì i programmi sono solo quei testi espressi in linguaggi comprensibili da parte del calcolatore. Il fatto che i programmi per calcolatore siano destinati all’esecuzione automatica non deve farci dimenticare che essi sono destinati anche alla comunicazione umana. Le due facce del programma per calcolatore (verso l’uomo e verso la macchina) sono necessariamente connesse: quale intermediario tra uomo e macchina, il software non può essere ridotto ad una sola dimensione. Esso non opera solo nella comunicazione tra persone e macchine, ma anche nella comunicazione tra le persone che si occupano del medesimo problema informatico: il software è governato dalla macchina, ma è anche una forma di manifestazione del pensiero dell’esperto di informatica, è espressione del mondo della scienza e della cultura. La funzione comunicativa del software non è priva di profili giuridici. Al software appartengono: - il codice sorgente, cioè il testo redatto dal programmatore e leggibile da parte dello stesso. - il codice oggetto o eseguibile, cioè il risultato dalla traduzione automatica del codice sorgente in un testo eseguibile da parte della macchina, ma non più, o molto più difficilmente, comprensibile all’uomo. - la documentazione, cioè l’insieme delle indicazioni accessorie intese ad agevolare la comprensione e valutazione del software da parte dell’uomo (esse illustrano l’architettura complessiva del software, la funzione svolta da ogni componente, ecc). Detto questo, si capisce come il contratto per lo sviluppo di un software non potrà considerarsi esattamente e completamente adempiuto fino a quando non siano state sviluppate tutte queste componenti. La dimensione rappresentativa e comunicativa del software è alla base dello sviluppo dei linguaggi e delle metodologie della programmazione, la cui evoluzione risponde soprattutto all’esigenza di facilitare la comprensione dei programmi informatici. A questo fine i linguaggi di programmazione si sono progressivamente avvicinati al linguaggio proprio dell’uomo, pur garantendo al tempo stesso un’efficiente esecuzione automatica. Esistono oggi numerosi linguaggi di programmazione. Agli albori dell’informatica, però, la scelta dei programmi era limitata se non addirittura esclusa: chi voleva governare un calcolatore doveva utilizzare direttamente il linguaggio macchina, di conseguenza, i programmi dovevano consistere nelle sole istruzioni atomiche proprie al calcolatore impiegato (quelli a disposizione dell’hardware di quel calcolatore), istruzioni che prescrivono semplici operazioni riguardanti i numeri binari. Ovviamente scrivere algoritmi in questa forma è molto difficile e richiede molto tempo. Non solo la redazione, ma anche la comprensione successiva di un programma scritto in linguaggio macchina richiede un notevole sforzo. Di conseguenza, il
livello di complessità affrontabile mediante il linguaggio macchina è molto basso, solo algoritmi semplici e brevi si possono esprimere in questa forma. A ciò si aggiunge la dipendenza dalla macchina: diversi calcolatori sono in grado di eseguire diverse istruzioni atomiche, specificate usando diversi codici binari. Un programma scritto nel linguaggio macchina di un calcolatore deve infatti indicare solamente azioni atomiche di quel calcolatore, usando la corrispondente codifica; pertanto un programma in linguaggio macchina può funzionare solamente su un particolare tipo di calcolatore. Per eseguire la medesima elaborazione su un diverso calcolatore sarebbe necessario riformulare il programma, trasformandolo in una combinazione di azioni atomiche di tale diverso calcolatore, espresse con i relativi codici binari. Il superamento dei limiti del linguaggio macchina si ottiene formulando le istruzioni destinate al calcolatore in un linguagg io più facilmente comprensibile all’uomo, ed affidando al calcolatore stesso il compito di tradurre tale formulazione nel pro prio linguaggio macchina. Ovviamente il calcolatore può essere capace di compiere tale traduzione solo se è governato da un apposito programma traduttore (scritto nel linguaggio macchina). Così il programmatore predispone una formulazione algoritmica usando un linguaggio a sé comprensibile, poi tale elaborato diventa l’input di un processo computazionale eseguito dal calcolatore seguendo le istruzioni di un programma traduttore, infine la traduzione ottenuta è direttamente eseguita dal calcolatore (si tratta infatti di una formulazione algoritmica nel proprio linguaggio macchina). All’inizio la differenza tra il programma in linguaggio macchina e la sua riformulazione in un testo più comprensibile all’uomo era minima: i numeri che indicavano un’operazione erano sostituiti da parole che evocano l’o perazione corrispondente, ed i numeri binari erano sostituiti da numeri decimali. Il linguaggio ottenuto in questo modo è chiamato assembler o assemblatore. Il passo successivo consistette nella creazione dei linguaggi di alto livello, i quali si pongono in una posizione intermedia tra il linguaggio umano ed il linguaggio macchina. I linguaggi di alto livello sono indipendenti da particolari calcolatori: il medesimo programma informatico espresso in un linguaggio di alto livello può essere tradotto nei diversi linguaggi macchina di diversi calcolatori, e quindi può essere eseguito da ciascuno di quei calcolatori (dopo un’opportuna traduzione). Un programma scritto in un linguaggio di alto livello non può essere eseguito direttamente dall’hardware, poiché non indica azioni atomiche dell’hardware stesso, cioè non consiste di istruzioni nel linguaggio macchina; è possibile però tradurlo in istruzioni del linguaggio macchina, che possono essere eseguite direttamente dall’hardware. Esistono due tecniche per effettuare tale traduzione: - la compilazione. Con questa tecnica, l’intero programma formulato in un linguaggio di alto livello, il codice sorgente, è trasformato in un programma equivalente in linguaggio macchina, il codice oggetto. Il risultato della compilazione, cioè il codice oggetto, può essere registrato sul disco del calcolatore e può essere utilizzato successivamente senza la necessità di risalire al sorgente. Il procedimento di creazione del software segue queste fasi: sviluppo del sorgente, compilazione di quest’ultimo, vendita del codice oggetto, esecuzione di quest’ultimo da parte dell’acquirente. Con questo metodo è necessario risalire al sorgente ogni volta che si debba intervenire sul software dopo la sua compilazione per modificarlo. In questo caso, una volta modificato il sorgente, lo si ricompilerà, producendo una corrispondente modifica del codice oggetto. È necessario inoltre accedere al sorgente quando si voglia comprendere in modo approfondito il funzionamento del software, senza limitarsi ad osservarne il comportamento osservabile; chi ha accesso al solo codice oggetto non è in grado di esaminare il contenuto logico del programma e quindi è incapace di conoscerne con precisione il funzionamento interno. - l’interpretazione. Con questa tecnica, il programma sorgente è tradotto in linguaggio macchina istruzione per istr uzione, con l’immediata e contemporanea esecuzione di ogni istruzione. A differenza della compilazione, l’interpretazione non da luogo ad una versione permanente del software in linguaggio macchina, sicché per eseguire nuovamente il software bisogna interpretarlo un’altra volta. In linea di massima, qualunque linguaggio di programmazione potrebbe essere tanto compilato quanto interpretato, ma le due tecnica di traduzione comportano diversi vantaggi e svantaggi. Il principale vantaggio della compilazione è la maggiore velocità d’esecuzione del programma compilato rispetto a quello interpretato. Il principale vantaggio dell’inter pretazione è la maggiore agilità con cui si può provvedere alla correzione ed alla modifica del programma; è possibile modificare il programma interpretato ed eseguirlo immediatamente, così da verificare l’effetto delle modifiche apportate, mentre la modif ica del programma compilato richiede la correzione del programma sorgente ed una nuova compilazione. Inoltre, i programmi interpretabili hanno il vantaggio di poter essere eseguiti su diversi tipi di calcolatore, grazie all’indipendenza dei linguaggi di alto livello rispetto alla macchina; ciascuno di quei calcolatori avrà a disposizione il proprio interprete, che tradurrà il programma nel linguaggio macchina di quel calcolatore. Un programma compilato (codice oggetto), invece, essendo espresso nel linguaggio macchina di un particolare tipo di calcolatore, potrà funzionare solo su quel tipo di calcolatore. La compilazione offre invece un importante vantaggio nella distribuzione commerciale, consentendo di separare il codice oggetto dal codice sorgente. Il produttore può scegliere di distribuire solo il codice oggetto (il compilato) mantenendo segreto il codice sorgente, o di distribuire entrambi i codici a condizioni diverse. Mantenendo segreto il codice sorgente il produttore impedisce a concorrenti ed utenti di riutilizzarlo, in tutto o in parte, in nuovi software. Inoltre egli mantiene l’esclusiva di fatto sulla modifica del codice oggetto (che richiede modifica del sorgente e nuova compilazione), la quale si aggiunge all’esclusiva giuridica garantita dal diritto d’autore. La distribuzione del solo codice oggetto consente inoltre di circondare di maggiore sicurezza il software. Per conciliare i vantaggi commerciali della compilazione con l’esigenza di distribuire un’unica versione del software funzionante su ogni tipo di macchina, si è recentemente resa disponibile la possibilità di realizzare una precompilazione indipendente dalla macchina: viene creata una versione intermedia tra codice sorgente e codice oggetto, che come l’oggetto non è comprensibile e modificabile da parte dell’uomo, e come il sorgente può essere utilizzata su ogni tipo
di macchina (dovendosi ulteriormente compilare nel linguaggio macchina dello specifico calcolatore, prima di essere eseguita). Lo sviluppo del software è un’attività articolata, che si volge in fasi successive: - analisi e specificazione dei requisiti. È la fase più importante di realizzazione del software, consiste nell’indicare gli obbiettivi da realizzare ed i modi in cui raggiungerli. Il momento dell’analisi dei requisiti consiste nell’individuazione delle funzioni che il software dovrà realizzare interagendo con i futuri utenti , ed il momentodella specificazione dei requisiti consiste nell’individuazione precisa delle caratteristiche del software e delle modalità del suo inserimento nell’organizzazione a cui è destinato. - progettazione di architettura ed algoritmi . Consiste nel definire l’articolazione del software in moduli, il rapporto tra i vari moduli e le forme della loro comunicazione, nonché gli algoritmi inerenti agli stessi mo duli. Esistono numerosi metodi e linguaggi per l’analisi e la progettazione del software, tra i più diffusi si ricorda l’UML (Unified Modelling Language). - programmazione o codifica. Consiste nella scrittura dei programmi che realizzano i singoli moduli. La programmazione può apparire come l’attività principale, ma in realtà le competenze più elevate sono destinate all’analisi ed alla progettazione, mentre la programmazione è un’attività prevalentemente esecutiva. - verifica. Consiste nell’accer tare che il software sia privo di errori e risponda adeguatamente alle esigenze , bisognerà testare il funzionamento del programma con i più diversi input e casi d’uso. - documentazione. Consiste nella stesura dei documenti volti ad illustrare la struttura ed il funzionamento del software; si tratta di documenti importanti per chi utilizza il sistema, ma anche per agevolare il compito di chi debba intervenire successivamente su di esso per correggere gli errori, aggiornarlo od estenderlo. - manutenzione. È una fase che si ha solamente dopo che il software sia entrato in funzione (dopo la consegna) e consiste in tutti quegli interventi intesi a migliorare il funzionamento del software. Al riguardo si può distinguere tra manutenzione correttiva (volta a rimediare agli errori realizzati durante lo sviluppo del software e sfuggiti alla fase di verifica) e manutenzione integrativa (volta ad arricchire il software di nuove funzioni). Questo tipo di modello di sviluppo del software, seguito in molti grossi progetti, è detto sviluppo a cascata: ciò sta ad indicare che bisognerà risalire la cascata delle diverse fasi se emergono problemi, fino al livello al quale i problemi possono essere risolti. Il modello a cascata presuppone che lo sviluppo del software proceda ordinatamente sulla base di un piano glo bale. Tuttavia, esso espone al rischio che eventuali errori nelle fasi iniziali si manifestino solo molto tardi, quando il so ftware è ormai completo. Questo modello, inoltre, sembra implicare un’organizzazione centralizzata e gerarchica ed in qualche modo autoritaria del lavoro, nella misura in cui le diverse fasi dello sviluppo sino affidate a soggetti diversi, dotate di com petenze decrescenti. Nel software possiamo distinguere diverse componenti: - componente concettuale. È costituita dagli algoritmi e dall’architettura del software (i moduli che lo compongono e la loro articolazione). Nell’ambito di questa componente è possibile distinguere le idee innovative, cioè le invenzioni algoritmiche o invenzioni di software capaci di dare luogo ad algoritmi che migliorano rispetto allo stato dell’arte. - componente testuale. È costituita dal programma che esprime la componente concettuale in una forma elaborabile automaticamente. Il programma originale è il frutto dell’opera del programmatore, mentre il programma derivato è quello che risulta dalla traduzione o dalla modifica del programma originale. Anche la documentazione fa parte di questa componente. - componente materiale. È costituita dalla registrazione della componente testuale (programma e documentazione) su un determinato supporto fisico. - componente virtuale. È costituita dalle elaborazioni che risultano dal processo di esecuzione della componente materiale. Dal punto di vista della funzione, si possono distinguere diverse tipologie di software: - software di sistema. È un software che offre le funzioni di base per il funzionamento del sistema informatico. Ad esso appartiene il sistema operativo, che sovraintende al funzionamento del calcolatore, provvedendo ad attivare l’esecuzione dei programmi, a gestire il funzionamento della memoria, ad offrire un’interfaccia verso l’utente, ecc. Esso comprende inoltre i moduli che realizzano varie funzioni utili (utility) per controllare il funzionamento del calcolatore (diagnostica) e gestire le apparecchiature periferiche. - software per la programmazione. È un software destinato alla realizzazione di applicazioni informatiche, allo sviluppo dei programmi e dei sistemi. Esso comprende l’interprete o il compilatore, necessari per rendere eseguibile il programma sorgente. - software applicativo. Comprende i programmi che svolgono le diverse funzioni di cui l’utente ha bisogno. Dal punto di vista del loro utente, i software possono distinguersi in: - pacchetti standardizzati. Sono destinati a rispondere alle esigenze di una vasta cerchia di utenti, ed offerti ad essi in un’unica forma. - software su misura. Sono sviluppati per soddisfare le esigenze specifiche di uno o più clienti.
4) Il software: modelli giuridico-economici
Il software come bene economico, sia nella sua componente concettuale sia in quella testuale, è una realtà astratta (una configurazione di simboli ed idee) e per questo lo si assimila agli altri oggetti della proprietà intellettuale. L’uso del software è non rivale: più individui possono utilizzare lo stesso software, senza che diminuisca l’utilità che ciascuno trae da tale uso. L’uso del software è anche, in linea di principio, non escludibile: non si può impedire ad altri di utilizzare un software una volta che essi abbiamo accesso ad esso, se non adottando misure giuridiche o tecnologiche che limitino l’accesso al bene (il soggetto che viene in possesso di un software privo di protezioni giuridiche o tecnologiche, lo potrà usare su suo computer indipendentemente dalla volontà altrui). Le misure giuridiche e tecnologiche fanno del software un bene escludibile: - la disciplina giuridica della proprietà intellettuale subordina il lecito utilizzo di un software al consenso del titolare dei diritti di sfruttamento economico sullo stesso. Se non vi fosse la proprietà intellettuale sarebbe possibile utilizzare qualsiasi software senza violare la legge. Attraverso la disciplina della proprietà intellettuale viene creato un monopolio temporaneo a favore del titolare dei diritti di sfruttamento economico: il software può essere usato solo con il consenso del titolare (secondo la disciplina attuale tale monopolio è estremamente ampio, estendendosi fino a 70 anni dalla morte dell’autore). - le misure tecnologiche possono impedire ai terzi gli usi non autorizzati; in particolare, la distribuzione del solo software compilato impedisce all’utente di modificare il programma per svilupparlo o adattarlo alle proprie esigenze. La protezione del software con misure giuridiche o tecnologiche si giustifica principalmente con considerazioni economiche attinenti alle esigenze della produzione: in mancanza di una protezione volta ad impedire usi non autorizzati, l’autore di un software non potrebbe ottenere guadagni sufficienti a coprire i costi dello sviluppo, infatti i potenziali clienti preferirebbero ottenere copie non autorizzate (piratate) a prezzi inferiori. Chi diffonde copie non autorizzate potrebbe infatti offrire ai consumatori un prezzo inferiore, non avendo l’esigenza di recuperare i costi sostenuti per lo sviluppo del software. Di conseguenza, in mancanza di una tutela efficace la produzione di software sarebbe inferiore a quanto necessario per soddisfare il bisogno. Il principale modello giuridico per la protezione del software è quello del diritto d’autore, impostatosi su scala mondiale a partire dagli anni ’60. Il diritto d’autore rende il software un bene escludibile, conferendo a titolo originario all’autore del software una posizione giuridica che include due gruppi di diritti, i diritti morali ed i diritti patrimoniali. I diritti morali (che spettano sempre all’autore e sono inalienabili ed irrinunciabili) non determinano l’escludibilità, infatti l’opera può essere tranquillamente usata pur riconoscendo la paternità altrui. Il diritto morale più importante è il diritto alla paternità dell’opera, cioè il diritto ad esserne riconosciuto l’autore. L’escludibilità deriva invece dalla componente economica del diritto d’autore, che è costituita da un’insieme di diritti esclusivi: - il titolare dei diritti economici ha il permesso di effettuare le utilizzazioni rientranti nei diritti esclusivi. - le utilizzazioni dell’opera sono precluse ad ogni altro soggetto, se non autorizzato dal titolare dei diritti. - il titolare dei diritti economici ha il potere di autorizzare altri ad effettuare le utilizzazioni rientranti nei propri diritti esclusivi, nei limiti e nei modi da egli stabiliti. Nel caso del software i diritti esclusivi attengono alla duplicazione ed alla esecuzione del programma (che presuppone la duplicazione del software nella memoria centrale del computer), nonché la sua modifica e distribuzione al pubblico: tali attività possono essere compiute lecitamente solo dal titolare del diritto o da chi sia stato autorizzato dallo stesso. L’autorizzazione all’uso del software viene solitamente conferita ai consumatori mediante un contratto chiamato licenza d’uso: il titolare dei diritti di sfruttamento economico (il licenziante) conferisce all’altra parte l’autorizzazione ad usare il software entro certi limiti ed in certe forme, mentre l’utente (il licenziatario) si impegna a pagare un corrispettivo ed a rispettare i limiti stabiliti nella licenza. Il titolare dei diritti può fornire egli stesso una copia del software, in particolare nel caso in cui questo venga scaricato dal sito del produttore, ed in questo caso egli riceverà il corrispettivo direttamente dall’acquirente-licenziatario; in altri casi, il titolare dei diritti sarà compensato dal venditore del software, il quale cede copie del software agli acquirenti, per esempio un CD o un DVD nel quel il programma è registrato, verso un corrispettivo. Normalmente al licenziatario è trasferita una copia del solo software compilato, cioè del codice oggetto (il sorgente rimane presso il titolare dei diritti), e l’autorizzazione comprende solo la facoltà di installare tale codice oggetto sul proprio calcolatore e di eseguirlo. Il codice compilato è chiuso, nel senso che all’utente è preclusa la possibilità di accedere al codice sorgente: di conseguenza egli non è in grado di capire il funzionamento del software dall’interno, né di modificarlo per adattarlo alle proprie esigenze o perfezionarlo in vista di altre utilizzazioni. Tali attività sono duplicemente impedite: sono impe dite giuridicamente (sono vietate dalla legge perché rientrano nei diritti esclusivi del licenziante, il quale non ha prestato la sua autorizzazione a tali attività) e sono impedite di fatto (l’utente ha a disposizione il solo programma compilato). Oltre alla compilazione, il titolare dei diritti può adottare ulteriori misure tecnologiche volte ad impedire che i possessori di copie del software ne facciano uso in modi non autorizzati, ed in particolare per impedire che il software venga illecitamente duplicato (per esempio, oggi si usa frequentemente la tecnologia consistente nel richiedere che il software si colleghi ad Internet per poter funzionare, il che attiva un controllo volto a verificare se il software sia dotato di valida licenza). Le misure tecnologiche godono a loro volta di una tutela giuridica: non solo è vietato compiere attività non autorizzate dopo avere superato tali misure, ma è anche vietato e sanzionato realizzare o diffondere strumenti idonei a superare tali misure. Tale disciplina trova alcune deroghe: - l’utilizzatore ha il diritto di fare una copia di riserva (backup) del software quando necessaria.
-
l’utilizzatore può tentare di decompilare il software solamente al fine di realizzare nuovi prodotti con esso interoperabili. - l’utilizzatore ha il diritto di correggere un softwar e malfunzionante, qualora il produttore non risponda alle sollecit azioni in tal senso. Questa disciplina configura il modello del cosiddetto software proprietario: il titolare dei diritti usa una combinazione di clausole contrattuali e misure tecnologiche per restringere l’uso del software nei limiti dell’autorizzazione conferita all’utente. Tale autorizzazione di solito non comprende la possibilità di duplicare il software, poiché il titolare intende conservare a sé il monopolio sulla creazione e distribuzione di nuove copie, un’attività che gli consente di continuare a ricevere un compenso a fronte della concessione di ulteriori licenze per l’uso del proprio software. Inoltre il titolare conserva il monopolio sulla modifica e sullo sviluppo del proprio software, il quale gli consente di poter trarre ulteriori guadagni dalla vendita delle versioni successive (il monopolio sulle modifiche ed i miglioramenti è protetto, più che dal diritto d ’autore che pure vieta ai terzi tali attività, dal fatto che il titolare distribuisce il solo codice oggetto, che non può essere modificato nemmeno da esperti programmatori). Tale modello presenta alcuni aspetti problematici: - limita l’uso del software a coloro che abbiano potuto pagare il prezzo richiesto dal titolare dei diritti. - la diffusione del software nella sola versione compilata (solo il codice oggetto) comporta una perdita nella diffusione della conoscenza. Questa situazione comporta l’impossibilità di sviluppare il software, di perfezionarlo o di usarne le componenti nello sviluppo di altri software. Chi fosse interessato a questi usi di un software altrui potrebbe contattare il titolare dei diritti e chiedergli l’autorizzazione a creare software derivati a fronte di un corrispettivo o di una compartecipazione agli eventuali guadagni futuri. Tuttavia, a tal fine l’interessato dovrebbe essere certo che il software può essere sviluppato adeguatamente, pur non potendo conoscerne in anticipo il contenuto, e che il mercato darebbe il risultato atteso, mentre il titolare dei diritti dovrebbe essere certo che l’interessato ha le capacità e l’affidabilità necessaria, dal momento che l’attuazione del contratto richiede la consegna del codice sorgente. In mancanza di tali certezze, l’affare non si concluderà e le opportunità di sviluppo andranno perdute. - può comportare una perdita di libertà e democraticità. Si tratta anzitutto della libertà dello sviluppatore e dello st udioso: lo specialista di informatica cui sia precluso l’accesso a questi software viene privato della libertà di conoscere l’aspetto della realtà sociale cui è interessato (libertà di informazione), ed inoltre della libertà di dare il proprio specifico contributo allo sviluppo culturale (libertà di partecipare alla cultura) ed alle discussione delle strutture sociali e politiche (libertà politica). Queste perdite di libertà non riguardano solo gli informatici: anche chi non abbia le competenze per studiare il software, o non sia interessato a farlo, potrebbe individuare difetti e prospettive di sviluppo, avanzare critiche e proporre soluzioni. I problemi inerenti al software proprietario, pur nell’apparente invincibilità dell’argomento economico a suo favore (quello della mancanza di un incentivo a sviluppare software in assenza di una tutela proprietaria), hanno determinato la nascita di un modello alternativo, basato su una diversa impostazione giuridica ed economica, il software open source. Alle origini del movimento open source vi è l’attività di Richard M. Stallman. Egli era uno sviluppatore di software degli anni ’70, periodo in cui si diffuse il modello proprietario: i software, che prima erano forniti dai produttori dell’hardware in versione sorgente ed erano liberamente modificabili, divennero chiusi (forniti solo nel codice oggetto) e protetti dalle esclusive del diritto d’autore. Stallman decise di ribellarsi a tale assetto economico-giuridico, che lo privava della libertà di conoscere e modificare i programmi informatici, e di condividere le proprie conoscenze, scoperte ed innovazioni; egli divenne promotore di un diverso modello, che garantisse all’utente le quattro libertà (negate dal modello proprietario): - libertà 0: libertà di eseguire il programma per qualsiasi scopo. - libertà 1: libertà di studiare come funziona il programma per adattarlo alle proprie necessità (per questo l’accesso al codice sorgente è necessario). - libertà 2: libertà di distribuire copie del software in modo da aiutare il prossimo. - libertà 3: libertà di modificare il programma, per migliorarlo e diffondere tali miglioramenti, arrecando un beneficio a tutto la comunità (per questo l’accesso al codice sorgente è necessario). Stallman coniò il termine di software libero per indicare i programmi informatici in cui fossero garantite queste quattro li bertà, ed elaborò un meccanismo giuridico volto a garantirle, la licenza GPL (General Public Licence). Anche la disciplina del software libero trae origine dal diritto d’autore, ed in particolare dal potere del titolare di autorizzare altri all’esercizio delle facoltà inerenti ai propri diritti esclusivi e di regolare i modi di tale esercizio; la licenza GPL, però, prevede un’autorizzazione tanto ampia da fare venire meno l’esclusività di quei diritti, conferendo irrevocabilmente la pienezza delle quattro libertà al licenziatario del software ed ai successivi soggetti a cui sia trasferita una copia dello stesso. È importante precisare che software “libero” non vuol dire “non-commerciale” o “gratuito”. Benché molti software liberi siano gratuitamente accessibili (è possibile a chiunque scaricarne una copia attraverso Internet), la copia di un software libero può essere fornita dall’autore o da altri a fronte di un pagamento, sempre che chi riceve la copia conservi le quattro lib ertà. Tuttavia, è sicuramente vero che il modello del software libero limita le possibilità di guadagno dell’autore (del titolare dei diritti patrimoniali): per la prima copia l’autore può chiedere un prezzo elevato, ma per le copie successive egli non è più in grado di farlo, perché i potenziali acquirenti potranno rivolgersi ai successivi cessionari, i quali possono fornire copie dello stesso software ad un prezzo inferiore a quello proposto dall’autore od anche gratuitamente. Di conseguenza, o l’autore riesce a recuperare tutti i propri costi ed il profitto con la prima cessione o rischia di lavorare in perdita. Questo rischio, tuttavia, può essere superato in due modi: o l’autore è mosso da motivazioni diverse dal vantaggi economico (desiderio di pa rtecipare ad un certo progetto, di inserirsi nella comunità degli sviluppatori, ecc) o l’autore si aspetta un’appropriazione indi-
retta (vantaggi economici derivanti da attività successive, come contratti retribuiti per consulenze sull’uso del software li bero sviluppato o per adattamenti allo stesso, futuri impieghi grazie alla reputazione conseguita, ecc). Alle clausole che garantiscono le libertà degli utenti si unisce, nella disciplina della GPL, la clausola del copyleft (permesso d’autore): i programmi che risultano dalla modifica di un software soggetto a GPL possono essere trasferiti ad altri solamente se assoggettati anch’essi alla disciplina del GPL (che garantisce le quattro libertà). Chi ha operato delle modifiche su un software soggetto a GPL non potrà quindi fare valere il proprio diritto d’autore sulle modifiche per impedire l’esercizio delle quattro libertà a chi riceva una copia della versione modificata, né potrà distribuire il software solo in versione compilata. Lo scopo della clausola copyleft è fare si che il patrimonio del software libero si espanda progressivamente. I software disciplinati dalla GPL non sono completamente sottratti al diritto d’autore: essi sono soggetti alla componente morale del diritto d’autore (il riconoscimento della paternità dei suoi autori, che deve essere obbligatoriamente indicata anche quando si distribuiscono versioni modificate) ed al vincolo del copyleft. La possibilità di modificare liberamente il software (anche se soggetta alla disciplina del copyleft) è una garanzia antimono polistica della libertà d’impresa: se i partecipanti di un progetto di software libero sono insoddisfatti della direzione presa dal progetto, possono dotarsi di una copia del software e sviluppare un nuovo progetto, anche in concorrenza con quello da cui ci sono distaccati. Nel 1.984, Stallman fondò la Free Software Foundation, allo scopo di promuovere la crescita del software libero ed iniziò a sviluppare il progetto di un sistema operative non-proprietario che chiamò GNU. Nel 1.991 il progetto aveva fatto molti passi avanti, ma mancava ancora il nucleo del sistema operativo, indispensabile per il suo funzionamento. In quell’anno Linus Torvald, un giovane informatico finlandese, pubblicò su Internet il nucleo di un sistema operativo, assoggettando il relativo software alla licenza GPL, ed invitando tutti gli interessati a sperimentarlo ed a contribuire al suo sviluppo. Al nucleo fornito da Torvald furono unite alcune componenti di GNU e, grazie alla collaborazione di un crescente numero di svilupp atori, il sistema operativo GNU/Linux fu completato. Fin dalla seconda metà degli anni ’90, Linux divenne un concorrente dei sistemi operativi proprietari più diffusi, diffondendosi presso una cerchia sempre più ampia di utenti sulle diverse piattaforme hardware. Nello sviluppo tradizionale (quello a cascata) del software proprietario si adotta il metodo della cattedrale, basato sulla gerarchia, la centralizzazione e la distinzione dei ruoli; nello sviluppo del software libero si adotta invece il metodo del bazar, nel quale coesistono diverse aspettative ed iniziative, manca una netta distinzione dei ruoli, il progetto è suddiviso in moduli distinti e sviluppati in relativa indipendenza e diverse versioni parallele, le decisioni sono decentrare e dinamiche, il coordinamento è fornito dal fatto che tutti rendono disponibili su Internet i risultati del loro lavoro ed i commenti sui lavori altrui. Nello sviluppo del software open source, quindi, si procede prevalentemente dal basso verso l’alto, anziché dall’alto verso il basso: ne risulta uno sviluppo incerementale-evolutivo, anziché pianificato, dove la comunità degli sviluppatori e degli utenti stabilisce, con le proprie autonome scelte, quali proposte avranno successo e quali incideranno sullo sviluppo e sull’articolazione del progetto complessivo. Si tratta di una funzione di guida e controllo che non si basa su gerarchie giuridicamente definite, ma piuttosto sul prestigio dei coordinatori del progetto. L’idea che il software debba essere distribuito anche in forma sorgente e che maggiori diritti debbano essere consentiti agli utenti ha trovato un’accettazione ampia, che va al di là di quanti si identificano con le tesi rigorose e l’intransigente impostazione politico-ideologica di Stallman (tesi che corrispondono al modello del software libero). Pertanto, alcuni progetti di sviluppo di software, che pure tendono a realizzare software distribuiti in codice sorgente che garantiscano agli gli utenti le quattro libertà, preferiscono autoqualificarsi usando l’espressione software open source (a sorgente aperta), anziché software libero. Si suole affermare che per il movimento del software libero la garanzia delle libertà degli utenti è una scelta etica e determinata anche da motivazioni politico-ideologiche, mentre per il movimento del software open source, cui partecipano anche grandi imprese, la garanzia di tali libertà è prevalentemente motivata da ragioni tecniche, economiche o commerciali. Il software open source ha conosciuto un grandissimo sviluppo nel corso degli ultimi anni. Tra gli esempi più significativi possiamo ricordare: il sistema operativo Linux , il browser Firefox, il software per l’ufficio e la redazione di testi OpenOffice. Anche imprese di grandi dimensioni, che operano a fini di profitto, partecipano a progetti di software open source, ma per quale motivo un’azienda che opera a fini di profitto dovrebbe investire per realizzare dei prodotti sui quali non può vantare diritti di sfruttamento economico, prodotti anzi a tutti accessibili e spesso distribuiti gratuitamente? Perché anche le imprese (e non solo i singoli) possono trarre vantaggi dalla partecipazione a progetti di software open source: mantenere il contatto con gli utenti e gli sviluppatori, stimolare la domanda di offerte complementari, facilitare la collaborazione con a ltre imprese, ridurre i costi di sviluppo, ecc. Infine, c’è da dire che i modelli del software proprietario e del software open source non sono necessariamente in conflitto, ma possono svolgere ruoli complementari: per esempio, numerose imprese sviluppano software con doppia licenza, una versione libera e limitata alle funzioni di base, ed una versione proprietaria ed arricchita di funzionalità ulteriori, disponibile a pagamento. Dal punto di vista della loro disciplina giuridica, i software si distinguono in: - software proprietario. L’uso di questi software è ristretto dalle esclusive del diritto d’autore, e viene conferito secondo una licenza che limita le libertà dell’utente. Tale licenza conferisce al licenziatario, di regola, la sola facoltà di usare il software, senza poterlo modificare o distribuire. Di regola il software proprietario è chiuso, cioè di esso viene fornito solo il codice oggetto (il compilato), mentre il licenziante trattiene presso di sé il sorgente. - software open source. L’uso di questi software è concesso con una licenza che conferisce al licenziatario la piena libertà di eseguire, studiare, modificare e distribuire il software stesso. La libertà di distribuire un software open
source può essere soggetta alla sola condizione del copyleft, cioè all’obbligo di assoggettare a licenza open source anche le modifiche di tale software. La licenza GPL include la clausola copyleft, che invece non è compresa in altre licenze open source. Esistono inoltre dei particolari modelli di software: - software di pubblico-dominio. Si ha quando il titolare dei diritti rinunci irrevocabilmente ai propri diritti economici, come avviene per il software open source, e non limiti la distribuzione del software con la clausola del copyleft; in questa situazione chiunque potrà usare, modificare e distribuire il software, e potrà inoltre avanzare il proprio diritto d’autore sulle versioni che includano le proprie modifiche, nonché distribuire tali versioni con licenze proprietarie ed esclusivamente nel codice oggetto. In questo caso possiamo dire che il software è di pubblico-dominio perché è del tutto sottratto alla disciplina del diritto d’autore per quanto riguarda gli aspetti economici (essendo i diritti morali irrinunciabili nel nostro ordinamento). - software freeware (software gratuito ). Si indicano i programmi ottenibili gratuitamente, che possono essere usati e distribuiti dagli utenti, ma non possono essere modificati (il loro codice sorgente non è reso accessibile). - software shareware (software condiviso). Si indicano i programmi distribuiti gratuitamente, ma solo per un tempo determinate o con funzioni limitate, al fine di indurre l’utente ad acquistare la versione definitiva o completa. - sofware-come-servizio (software-as-a-service). Si ha quando il software viene usato dall’utente senza che questi ne abbia ottenuto una copia, per questo il software non è installato nel computer dell’utente ma su in server remoto a cui l’utente può accedere attraverso Internet. 5) Sviluppo della programmazione
Secondo il modello tradizionale il calcolatore è un utile idiota, un fedele esecutore di un algoritmo concepito dall’uomo ed espresso in un programma informatico: esso riceve in input il programma che esprime l’algoritmo ed i dati, esegue l’elaborazione attraverso calcoli binari, consegna i risultati di output, e resta quindi in attesa di un nuovo input. Ormai il mondo dell’informatica è un ambiente densamente popolato, dove coesistono numerosi prodotti software in grado di rispondere a gran parte delle esigenze, e dove molti problemi si possono risolvere solo grazie alla cooperazione e coordinazione dei diversi software esistenti. Ciascuno di questi software, di tanto in tanto, prende il controllo dell’unità centrale di elaborazione, facendo eseguire ad essa porzioni di programma; l’alternarsi dei diversi software sarà regolato da algoritmi che si occupano di coordinare i diversi processi contemporaneamente attivi all’interno del calcolatore. L’esigenza di coordinamento, peraltro, si pone anche nell’ambito di singole applicazioni informatiche: un grande sistema di software è comprensibile all’uomo solamente se modulizzato, cioè suddiviso in unità indipendenti di dimensione ridotta, padroneggiabili dalla mente umana. Gli attuali sistemi informatici devono rispondere a tante esigenze, perciò diventa difficile progettare un software di ampie dimensioni come un oggetto unitario (si tratterebbe di un’unica, lunghissima, combinazione di istruzioni). Il singolo programmatore sviluppa singoli moduli di un progetto complessivo a cui partecipano molti altri programmatori; i singoli moduli spesso risultano dalla combinazione di software preesistenti ed il programmatore si limita ad integrare tali software ed a sviluppare le porzioni eventualmente mancanti. Un software di ampie dimensioni diventa più facilmente com prensi bile se concepito ed organizzato secondo un’architettura composta da un insieme di oggetti indipendenti, che interagiscono scambiandosi messaggi; ciascuno di tali oggetti dispone di piccoli programmi, chiamati metodi, e contiene propri dati, che rappresentano degli attributi dell’oggetto. Lo sviluppo di un sistema di software consiste pertanto nella creazione di un ambiente nel quale i diversi oggetti possano interagire e poi nella definizione di ciascuno di essi, specificandone l’interfaccia verso l’esterno (i messaggi che esso emette d accetta) ed i programmi ed i dati che contiene. Negli ultimi anni, si parla del passaggio da un’architettura basata sugli oggetti, ad un’architettura basata sui servizi: l’oggetto del software esplica la sua funzione all’interno del programma complessivo, mentre il servizio presta le proprie funzioni a chiunque lo richieda (a certe condizioni). Ciò implica che l’oggetto del software, anziché essere racchiuso nell’ambito di un particolare sistema, dovrà essere capace di interagire con qualsiasi persona o programma ne richieda il servizio, secondo convenzioni condivise; l’oggetto del software diventa quindi il fornitore di un servizio. Lo sviluppo di architetture software basate su servizi presenta un particolare interesse per il giurista: nel momento in cui un servizio può essere offerto a più utenti, anche esterni all’organizzazione che possiede il sistema fornitore, diventano giuridicamente rilevanti i rapporti in base ai quali tale servizio è prestato.
CAPITOLO 4: I dati informatici 1) Dati e modelli concettuali
I dati informatici sono valori che possono essere elaborati da un calcolatore elettronico. L’input di ogni processo computazionale è costituito da dati strutturati secondo una particolare concettualizzazione, secondo la quale debbono essere conformati anche gli algoritmi destinati ad operare su quei dati. Quando diverse applicazioni informatiche debbano interagire, operando sugli stessi dati o scambiandosi dati, è necessario che esse posseggano una concezione comune di quei dati, cioè che qui dati esprimano una categorizzazione operata secondo concetti condivisi, o almeno comunicabili.
In ambito informatico il modo attualmente diffuso per rappresentare i dati (per rappresentare le basi di dati) è il modello relazionale: il principio che sta alla base di tale modello è che tutte le informazioni sui dati siano rappresentate da valori inseriti in tabelle, che dal punto di vista tecnico prendono il nome di relazioni (le relazioni rappresentano determinate classi di oggetti ed i loro rapporti, cioè le associazioni). Le varie componenti del modello relazionale sono le seguenti: - le classi o entità, indicano un concetto generale usato per denotare oggetti particolari. - le caratteristiche o attributi della classe, le informazioni che s’intendono fornire sugli elementi appartenenti ad essa. Nel determinare gli attributi di una classe di dati si determina il filtro attraverso il quale il software vedrà la realtà, si prestabilisce cosa esso considererà rilevante e cosa irrilevante, che cosa potrà influire o meno nelle operazioni del sistema. Tali scelte hanno considerevoli implicazioni giuridiche e pratiche (ad esempio la qualità dei dati informatici può dipendere in modo decisivo dalla scelta degli attributi). Quando si rappresenta un certa classe di oggetti in un sistema informatico, è opportuno che vi sia un attributo o una combinazione di attributi che corrisponda in modo univoco ad uno e uno solo degli oggetti rientranti nella classe di riferimento; tale attributo può fungere da chiave per quella classe, infatti specificando un determinato valore di quell’attributo si individua un unico membro della classe. - un’istanza della classe, la rappresentazione di uno degli oggetti a cui fa riferimento il concetto generale, e si ottiene specificando valori determinati per gli attributi. - le associazioni, rappresentano i rapporti tra le varie classi (i dati contenuti in un sistema informatico descrivono le caratteristiche delle classi ed anche i loro rapporti). Esistono linguaggi avanzati per l’interrogazione delle basi di dati relazionali, che consentono di specificare i dati che si desidera recuperare traendoli da una o più tabelle, e consentono di estrarre tabelle virtuali sulla base delle tabelle, le relazioni, registrate nel database. 2) L’organizzazione dei dati
La memoria centrale del computer è volatile, nel senso che essa contiene i dati necessari per l’elaborazione in corso e viene liberata quando tale elaborazione ha termine. Di conseguenza, per mantenere i dati nel tempo è necessario registrarli su dispositivi di memoria (di solito dischi magnetici) che consentano la registrazione permanente di grandi quantità di dati, detti memorie di massa . La registrazione dei file su tali memorie ha un aspetto logico (modo nel quale le informazioni sono organizzate dal programmatore) ed un aspetto fisico (modo in cui i dati sono materialmente disposti nei supporti fisici). Il file è il livello più basso dell’organizzazione logica dei dati, è una raccolta di dati identificata da un unico nome (il nome del file). Dal punto di vista materiale, invece, un unico file potrebbe benissimo essere scritto su più zone diverse del supporto fisico che lo ospita. Si distinguono due principali tipi di file: - gli archivi (file strutturati: un archivio contiene un’insieme di schede dotate della medesima struttura). Gli archivi sono file composti da uno o più file insieme a metadati (dati su altri dati, cioè informazioni che descrivono un insieme di dati per fini diversi). In un archivio le istanze di una classe sono registrate in modo uniforme, a ciascuna istanza è dedicato un record (scheda). Ogni record è suddiviso in settori, detti campi, ciascuno dei quali contiene il valore di un particolare attributo della classe (si parla di formato di record per indicare la suddivisione di un record in determinati campi). La registrazione dei record nei supporti fisici dipende dal particolare software utilizzato per creare od aggiornare l’archivio, e di regola sfugge al controllo dell’utilizzatore, il quale accede all’archivio solo utilizzando il relativo software. Si possono adottare diverse tecniche per esprimere la strutturazione della scheda in modo che essa sia riconoscibile da parte della macchina (tali tecniche normalmente sono applicate automaticamente dal software usato per la gestione dell’archivio, senza che l’utente se ne debba occu pare). - i file di testo liberi o testi (file non strutturati: un testo contiene una sequenza non strutturata di caratteri alfabetici e numerici). I file di testo consistono in componenti testuali, ossia sequenze di parole, accompagnate da indicazioni sulla loro presentazione a video o a stampa , cioè da indicazioni per la formattazione, la visualizzazione, la strutturazione delle componenti testuali (ad esempio l’indicazione che una certa sequenza di parole è in corsivo). In particolare, appartengono alla categoria dei file di testo libero i documenti che realizziamo utilizzando software per la redazione di testi, i cosiddetti elaboratori di testi. Negli elaboratori di testi oggi maggiormente usati le indicazioni attinenti alla presentazione dei contenuti testuali non sono espressamente inserite dall’utente, né vengono visualizzate allo stesso: è il software che si occupa di registrare tali indicazioni quando l’utente fornisce il comando corrispondente (ad esempio, cliccando il bottone per il corsivo dopo avere selezionato una parola) e di visualizzare immediatamente sullo schermo il risultato dell’applicazione delle stesse indicazioni (nell’esempio, la parola in corsivo). La forma nella quale sono registrate le indicazioni attinenti alla presentazione non è di regola facilmente leggibile dall’utente, essendo destinata alla elaborazione automatica. In alcuni casi l’illeggibilità è completa, nel senso che il tentativo di leggere il documento registrato nella memoria del computer (nel disco rigido), cogliendovi le indicazioni per la presentazione, richiederebbe uno sforzo enorme, paragonabile allo sforzo necessario per comprendere il funzionamento di un programma in linguaggio macchina (ciò si verifica, ad esem pio, nel formato DOC di Microsoft Word). Ci sono anche formati in cui si ottiene una migliore leggibilità. Esistono anche sistemi per la redazione di testi nei quali l’utilizzatore inserisce all’interno del testo le indicazioni per la presentazione, spe-
cificando direttamente le modalità di presentazione delle componenti testuali (in questo caso i comandi per la formattazione sono più comprensibili). In questo caso per visualizzare il risultato ottenibile a stampa bisognerà procedere ad una sorta di compilazione, detta composizione: sulla base del file sorgente prodotto dall’autore, comprensivo del testo e delle i ndicazioni di formattazione, viene automaticamente prodotto il file visualizzabile e stampabile, nel quale le indicazioni per la presentazione non sono più leggibili da parte dell’uomo ma sono comunque utilizzabili dal computer (le successive revisioni del testo si dovranno compiere sempre sul file sorgente). La registrazione dei dati informatici avviene in base a cere regole, che definiscono il formato degli stessi. Innanzitutto
bisogna stabilire come passare dal formato binario a quello alfabetico o decimale necessario alla lettura dei dati da parte dell’uomo. A ciò provvedono particolari tabelle di conversione, che stabiliscono un rapporto biunivoco tra caratteri alfabetici-numerici e certe sequenze di cifre binarie. Occorrono inoltre convenzioni secondo le quali esprimere ulteriori informazioni: rispetto agli archivi bisogna specificare la funzione di ogni dato, rispetto ai file di testo bisogna specificare la forma tipografica in cui presentare le parole che compongono il testo (grassetto, corsivo, spaziature, ecc). I dati elaborati in un certo formato possono essere elaborati solo da software specificatamente pr edisposti in modo da trattare quel formato. Di conseguenza, chi ha registrato i dati in un certo formato li può condividere con altre persone o altri sistemi informatici solo se anche queste utilizzano un software adeguato a quel formato. In molti casi vi è un unico software che corrisponde pienamente ad un certo formato di dati, per cui utilizzare i dati con un altro software richiede una conversione (i cui risultati raramente sono perfetti). Ciò pone in una posizione di debolezza gli utilizzatori: chi abbia accumulato una notevole quantità di dati in un certo formato è vincolato all’utilizzo dell’unico software predisposto per leggere quel formato se non vuole affrontare i costi ed i disagi relativi alla trasformazione in un altro formato, e chi intenda condividere dati con altri soggetti è vincolato a predisporre quei dati in un formato accettato dai software impiegati da quei soggetti. Questi vincoli contribuiscono a determinare l’effetto di rete (network effect) visto precedentemente: la tendenza all’ulteriore diffusione dei formati maggiormente diffusi e dei software compatibili con tali formati (è così per i file di testo, nei quali domina il formato DOC di Microsoft Word). Il problema è particolarmente grave quando si tratti di un formato proprietario, sulla cui evoluzione decide un soggetto privato, cioè il soggetto che detiene il diritto d’autore sui software che producono i dati in quel formato. Questo soggetto, anche quando non possa vantare diritti di proprietà intellettuale sul formato stesso, ne controlla l’evoluzione e l’utilizzo: egli, quando possegga una posizione dominante nel mercato dei software che utilizzano quel formato, può spiazzare eventuali concorrenti che abbiano iniziato ad usare lo stesso formato, semplicemente modificando il formato prodotto dal proprio software, in modo che i software dei concorrenti non riescano più a trattare la versione modificata. Per di più, non è sempre disponibile una specifica del formato dei dati, cioè la precisa indicazione di come i dati debbano essere codificati per essere utilizzabili dai programmi che adottano il formato stesso (lo sviluppatore del programma può mantenere occulta la specifica o può fornirla solo a pagamento o comunque a determinate condizioni). Ricostruire la specifica di un formato è difficile: dall’esame dei file dotati di quel formato bisogna ricostruire il linguaggio usato per indicare le modalità di presentazione e la struttura del file (tale ricostruzione, inoltre, va ripetuta per ogni nuova versione d el software che produce il formato, il quale di regola è in grado di leggere i file prodotti nei formati precedenti ma produce i nuovi file in un formato leggermente diverso). Per rimediare ai problemi determinati dall’uso di formati proprietari (chiusi) sono nati formati aperti, la cui definizione ed evoluzione è affidata ad organismi imparziali e le cui specifiche sono rese pubblicamente disponibili, e che possono essere utilizzati da chiunque via abbia interesse. 3) Basi di dati e information retrieval
L’elaborazione informatica dei dati offre nuove e straordinarie possibilità rispetto al trattamento dei dati su supporti cartacei: - la possibilità di aggregare, disaggregare, combinare, ecc informazioni registrate su diversi archivi, attraverso i sistemi per la gestione di basi di dati. - la possibilità di ricercare elementi testuali compresi all’interno di raccolte documentali, attraverso i sistemi per l’information retrieval (recupero di informazioni). Nel linguaggio legislativo, il termine banca di dati (sinonimo di base di dati) indica una qualsiasi raccolta di opere, dati od altri elementi indipendenti sistematicamente o metodicamente disposti ed individualmente accessibili mediante mezzi elettronici o in altro modo . Il termine base di dati è usato soprattutto per denotare raccolte di dati evolute, costituite
da più archivi tra loro integrati, i cui dati sono elaborabili in modo da offrire ai diversi utenti le informazioni di cui hanno bisogno; a tal fine occorre uno specifico tipo di sistema informatico, detto sistema per la gestione di basi di dati (DataBase Management System , DBMS), il quale funge da intermediario tra gli archivi di dati e gli utilizzatori (umani o automatici). Il DBMS consente di rappresentare i dati in modo indipendente dai programmi destinati ad usare quei dati; a tale fine esso mantiene dei dizionari di dati, ossia delle raccolte di metadati (dati intesi a descrivere altri dati) che specificano il significato e la struttura dei diversi tipi di dati registrati nella base di dati, e le convenzioni usate nella loro registrazione. Grazie alle indicazioni fornite dai dizionari è possibile realizzare diversi software che usano coerentemente i contenuti della base di dati, richiedendoli al DBMS; vengono così risolti i difficili problemi di coordinamento e compatibilità che esistevano quando ogni programmatore definiva individualmente gli archivi per i propri programmi, secondo regole che restavano implicite nella struttura di tali archivi. Oltre a facilitare l’accesso ai dati, un DBMS può contribuire ad assicurar e la qualità dei dati stessi, sotto i seguenti profili: - coerenza dei dati: il DBMS permette a diverse applicazioni di usare gli stessi dati, riducendo le duplicazioni.
-
integrità: il DBMS contribuisce a fare sì che la base di dati sia integra, cioè contenga solo dati corretti (il DBMS
non può garantire la corrispondenza dei dati alla realtà rappresentata, ma può imporre il rispetto di certi vincoli). - ripristino: il DBMS comprende procedure automatiche per il ripristino della base dei dati in caso di errori e malf unzionamenti imputabili all’hardware o al software, permette in particolare la ricostruzione di uno stato anteriore all’evento della base di dati. - sicurezza: il DBMS controlla l’intera base di dati, per questo può garantire che ad essa si acceda solo secondo certe modalità e procedure o dopo avere ottenuto idonee autorizzazioni. - riservatezza: l’uso di un DBMS può facilitare il rispetto della riservatezza dei soggetti a cui i dati si riferiscono (so prattutto quando si debbano trattare grandi quantità di dati), infatti il DBMS può limitare l’accesso ai dati, consentendolo solo a chi abbia diritto di accedere ad essi e fornendo ad ogni utente la vista sui dati che corrispondono ai suoi diritti di accesso. Vi sono diversi modelli di basi di dati, gestiti da diversi tipi di DBMS, il modello relazionare (visto precedentemente )è quello più diffuso. I software per l’information retrieval (recupero di informazioni) servono a recuperare le informazioni testuali estraendole da grandi masse di documenti. La loro funzione fondamentale consiste nel fornire all’utente tutti i documenti che rientrano nel suo interesse, cioè tutti i documenti che rispondono alle sue esigenze informative. Normalmente l’utente è interessato a tutti i documenti che vertono su un certo tema o concetto, egli dovrà pertanto formulare un quesito che specifici il tema di interesse, ed il sistema risponderà al quesito fornendo i documenti attinenti a quell’argomento. Nella ricerca di informazioni hanno importanza fondamentale gli aspetti linguistici, ancora oggi nell’ipotesi più diffusa la ricerca avviene in modo sintattico, cioè ricercando tutti i testi che contengano i termini specificati nel quesito; si ha invece una ricerca in modo semantico quando il sistema non si limita a ricercare i documenti che contengono le parole specificate nel quesito, ma cerca tutti i testi che esprimono il concetto specificato nel quesito, in qualsiasi forma esso sia espresso (anche con altre parole). La ricerca automatica di informazioni testuali si avvale solitamente di indici; un sistema per la ricerca mediante indici consta di due componenti fondamentali: - l’indicizzatore, per la creazione degli indici. - il motore di ricerca , il quale sulla base degli indici individua ed estrae le informazioni richieste. Esistono tecniche estremamente raffinate per la creazione e l’utilizzo di indici. Il caso più semplice e più comune è l’indice detto file invertito: esso elenca tutte le parole contenute nei documenti e riporta per ogni parola la collocazione dei documenti che la contengono (in questo caso l’indicizzatore dovrà estrarre le parole dai testi ed inserirle nell’indice, provvedendo inoltre ad indicare per ogni parola la collocazione dei testi che la contengono). Se si sono specificati più termini di ricerca, il sistema combinerà i risultati relativi a ciascuno di essi nel modo opportuno. I sistemi che trattano basi documentarie particolarmente ampie provvedono inoltre ad ordinare i risultati ottenuti sulla base della loro rilevanza (misurata da appo siti indizi), così da indirizzare l’utente verso i documenti più promettenti. Nella valutazione delle prestazioni dei sistemi per l’information retrieval vi sono due parametri fondamentali, dalla cui combinazione risulta l’accuratezza delle ricerche compiute dal sistema: - il richiamo, cioè la quantità di documenti pertinenti ritrovati, in rapporto a tutti i documenti pertinenti contenuti nella base documentale. - la precisione, cioè la quantità di documenti pertinenti ritrovati, in rapporto a tutti i documenti recuperati. Per valutare le prestazioni di un sistema di information retrieval non si dovrà considerare un singolo quesito, ma si dovrà valutare il comportamento medio in relazione ad un campione di quesiti abbastanza ampio: - il silenzio è il difetto nel richiamo, e risulta dal rapporto tra i documenti pertinenti non recuperati e tutti i documenti pertinenti contenuti nel database. - il rumore è il difetto nella precisione, e risulta dal rapporto tra la quantità di documenti recuperati non pertinenti e tutti i documenti recuperati. È possibile utilizzare la logica anche per compiere interrogazioni complesse mediante un motore di ricerca. In questo caso, al posto di specificare una sola condizione di ricerca, si formulano interrogazioni booleane, consistenti nella combinazione logica di più condizioni. Gli operatori booleani (“and”, “or”, “not”), tuttavia, non esauriscono quelli comunemente disponi bili. Di regola i motori di ricerca offrono anche la possibilità di intervenire su tali connessioni logiche: - consentono di specificare che i termini compresenti, cioè richiesti in “and”, debbano essere adiacenti. - consentono di ricercare termini incompleti. A questo proposito si ricordano due tipi di operatori:: - l’operatore di troncamento consente di indicare solo l’inizio dei vocaboli cercati, cioè si richiedono tutti i voca boli che iniziano con l’espressione troncata. - l’operatore di mascheramento consente di sostituire uno o più caratteri della chiave di ricerca con un jolly che indica un qualsiasi attributo del carattere; così la ricerca verte su tutti i termini che coincidono con la chiave nei restanti caratteri (non ha rilievo il carattere collocato nella posizione jolly) ed ogni documento che contenga uno di questi termini soddisferà la condizione specificata mediante il carattere jolly. 4) I linguaggi di marcatura
Negli ultimi anni le distinzioni che opponevano gli archivi di file di testo e le basi di dati da un lato, ai sistemi per l’information retrieval dall’altro hanno perso importanza. Ciò è dovuto al fatto che si sono sviluppate nuove tecniche per la
gestione dei dati, che consentono di organizzare e rendere riconoscibili al computer anche i dati contenuti all’interno di file di testo. Questo risultato si ottiene mediante l’utilizzazione di linguaggi per la marcatura (markup language), che consentono di individuare le componenti di un documento testuale racchiudendole all’interno di etichette (tag) riconoscibili au-
tomaticamente e di inserire ulteriori informazioni all’interno del documento, distinguendole rispetto al suo contenuto testuale (in questo modo i testi possono essere arricchiti con indicazioni per la loro stampa, visualizzazione e per l’estrazione e d elaborazione delle informazioni in essi contenute). Un linguaggio di markup è un linguaggio che consente di descrivere dati tramite dei marcatori , i tag. Possiamo distinguere i linguaggi di marcatura a seconda dei diversi tipi di markup cui danno luogo. - markup proprietari. Sono definiti e controllati da uno o più produttori di software (anche nel caso in cui essi non possano vantare diritti di proprietà intellettuale sullo standard). - markup non proprietari (pubblici). Sono definiti e controllati da enti imparziali, di solito organizzazioni internazionali che si occupano di standardizzazione. e - markup leggibile. Si ha quando una persona può, senza notevole sforzo, cogliere le indicazioni di marcatura ed individuare le porzioni di testo a cui si riferiscono. - markup non leggibile. Si ha quando la lettura di un linguaggio di marcatura è impossibile o richiede uno sforzo notevole. e - markup procedurale. Consiste nell’inserire nel documento istruzioni per la presentazione del testo (per esempio, ingrandire i caratteri, usare il corsivo, ecc). - markup dichiarativo. Consiste nel caratterizzare le porzioni del testo a seconda della loro funzione nel testo stesso, a seconda della loro funzione semantica (ad esempio, indicare che una porzione di un testo normativo è un comma, ecc). e - linguaggi di marcatura. Specificano le etichette (o tag) ed i comandi da utilizzare nella marcatura di un testo. - metalinguaggi di marcatura . Consentono al loro utilizzatore di definire ed usare il proprio linguaggio di marcatura, cioè di definire etichette o più in generale modelli documentali che corrispondono ai propri bisogni. Prendiamo in considerazione due esempi: - il linguaggio HTML (HyperText Markup Language, linguaggio per la marcatura dell’ipertesto), normalmente utilizzato nella predisposizione di pagine web e quindi nella preparazione di testi destinati ad essere visualizzati in rete. - il metalinguaggio XML (eXtensible Markup Language, linguaggio estensibile per la marcatura), utilizzato soprattutto per caratterizzare le componenti strutturali dei documenti. I due linguaggi hanno un comune antenato, SGML (Standard for Generalised Markup Languages), definito agli inizi degli anni ’80. Tale comune origine si rivela in alcuni aspetti condivisi: entrambi i linguaggi si basano sull’idea di qualif icare gli elementi del testo raccogliendoli entro etichette, racchiuse tra parentesi angolari (un elemento di un documento marcato è pertanto rappresentato da un’etichetta di apertura, un contenuto ed un’etichetta di chiusura; l’etichetta di chiusura consiste del simbolo “/” seguito dalla ripetizione dell’etichetta di apertura). I due linguaggi si distinguono invece sotto due profili: - HTML è uno strumento di markup procedurale, in cui si specifica direttamente la presentazione grafica del testo. XML è invece uno strumento di markup dichiarativo, in cui si specifica la funzione semantica degli elementi testuali. - HTML è un linguaggio di marcatura , perché specifica un determinato insieme di etichette da introdurre nel testo da marcare. XML è un metalinguaggio di marcatura , perché specifica come l’utilizzatore possa creare le proprie etichette che poi inserirà nei testi da marcare (consente di creare diversi linguaggi di marcatura). HTML deve il suo nome (linguaggio di marcatura ipertestuale) alla possibilità di inserire all ’interno dei documenti link (collegamenti) ipertestuali, cioè collegamenti con altri documenti e più in generale con pagine web. XML offre la possibilità di predefinire in modo preciso e rigoroso tutti gli elementi da usare nella marcatura di un testo; tale definizione si chiama DTD (Document Type Definition, definizione del tipo di documento). La definizione della DTD è importante perché determina la scelta delle etichette da impiegare nel testo e di impostarle in modo coerente, ed inoltre consente di verificare automaticamente se il testo presenti la struttura stabilita nella DTD (di conseguenza è possibile “costringere” il redattore a rispettare la DTD, giacché il documento che non la rispetti può essere automaticamente respinto dal sistema). All’interno di un documento XML sono chiaramente identificate, così da essere riconoscibili anche da parte della macchina, non solo le componenti strutturali del testo riportato nel documento ma anche molti dati significativi associati a quel testo (ciò significa che quei dati potranno essere rilevati ed elaborati automaticamente, potranno essere utilizzati nella ricerca). La marcatura XML non specifica le modalità della presentazione del testo (essa non indica, cioè, quali parti del testo saranno presentate in corsivo, quali in grassetto, ecc): se si desidera ottenere un risultato grafico di un certo tipo bisogna indic are espressamente come debbono essere visualizzati i diversi elementi individuati dalla marcatura XML. Il fatto che l’XML consenta l’elaborazione automatica dei dati documentali, ne fa il primo e finora il principale strumento per la realizzazione del cosiddetto web semantico, cioè per far sì che il significato dei dati disponibili su Internet sia indicato con precisione, in mo-
do che quei dati ed i documenti a cui si riferiscono possano essere elaborati automaticamente in coerenza con il loro significato. 5) Indicizzazione semantica
Per superare i limiti della ricerca sintattica, cioè basata sull’estrazione dei testi che contengono le parole specificate nel quesito, sono state sviluppate numerose tecnologie, tra cui le più importanti sono: - i soggettari. I soggettari sono liste di termini che individuano i temi o gli argomenti rilevanti, sul modello delle voci che possiamo trovare negli indici analitici e sommari dei manuali giuridici; questi termini possono essere utilizzati come descrittori dei documenti, cioè associando un termine ad un documento se ne descrive il contenuto. Tale associazione può essere compiuta da un documentalista umano oppure in modo automatico, ricorrendo ad un software in grado di analizzare il contenuto dei testi e di associarlo ai descrittori opportuni. L’uso del soggettario nella ricerca automatica presuppone che tutti i documenti siano stati indicizzati usando i termini nel soggettario e che il soggettario stesso sia noto a chi compie la ricerca. Il collegamento tra descrittori e documenti può essere posto in vario modo. Possiamo trasformare la lista dei descrittori in un indice, in cui accanto ad ogni descrittore compaiono i riferimenti dei documenti a cui il descrittore è applicato. Un’altra possibilità consiste nell’inserire i descrittori all’interno dei documenti a cui essi si riferiscono (racchiusi tra opportune etichette che indicano che si tratta di descrittori del testo, anziché di parole appartenenti al testo). Nel mondo di Internet è preferibile inserire i descrittori documento, ed una volta che essi sono stati inseriti è possibile costruire automaticamente gli indici necessari. Il soggettario diventa maggiormente utile, poiché può consentire una maggiore precisione nella ricerca documentale, quando esso sia strutturato in modo gerarchico , cioè quando indichi che certi termini di portata più ampia sono sovraordinati a certi termini di portata più ristretta, in quanto la materia indicata dal termine più ampio comprende al suo interno la materia indicata dal termine più specifico. - i thesauri. I thesauri si hanno quando il soggettario, cioè l’elenco di termini che individua temi o argomenti contenuti in u n determinato documento, comprende anche una specificazione dei sinonimi di questi ultimi. Il motore di ricerca che utilizzi un thesaurus può estendere la propria ricerca al di là dei documenti che contengono i termini indicati dall’autore, infatti può ricercare automaticamente i documenti descritti da sinonimi del termine indicato, o quelli descritti con termini più specifici, o quelli descritti con termini associati, ecc. Collegando insiemi vocaboli strutturati in lingue diverse si ottengono thesauri multilinguistici: gli strumenti informatici per il multilinguismo giuridico sono particolarmente utili per lo studio del diritto dell’Unione Europea, che deve tener conto della diversità dei sistemi giuridici degli Stati membri, espressi nelle diverse lingue nazionali. - le ontologie. Si ha un’ontologia quando il sistema terminologico, cioè la specificazione del significato dei termini e dei loro rapporti, fornisca un vero e proprio modello concettuale, che indica quali sono le classi rilevanti, quali classi sono incluse in quelle più ampie, quali sono le condizioni per l’appartenenza ad una classe, e le relazioni tra le diverse classi. Nelle ontologie formali i contenuti sono definiti con precisione logica, e per questo sono elaborabili automaticamente. Se disponiamo di un’ontologia formale, possiamo individuare con precisione il concetto che ci interessa e richiedere tutti i documenti attinenti a quel concetto o ai concetti che si trovano in una particolare connessione con esso. Un’ontologia formale può essere utilizzata per fare ragionare i sistemi informatici. Esempio: se l’ontologia indica al sistema informatico che la documentazione è parte del software, e che il software è un’opera d’ingegno, e che le parti delle opere d’ingegno non possono essere riprodotte senza l’autorizzazione del titolare del diritto d’autore, il sistema potrà concludere che la documentazione di un software non può essere riprodotta senza l’autorizzazione del titolare del diritto d’autore sul software. Un’ontologia può essere utilizzata anche per far comunicare sistemi informatici che utilizzano diverse terminologie. Esempio: se il sistema dell’impresa acquirente usa il termine “ordine d’acquisto” per indicare l’atto che il sistema dell’impresa fornitrice indica come “proposta d’acquisto”, ma nei due sistemi i due termini sono collegati al medesimo concetto di un’ontologia condivisa, quando il sistema della seconda impresa riceve un atto qualificato come “ordine d’acquisto”, lo potrà elaborare secondo le procedure previste per le “proposte d’acquisto”. Esistono ontologie fondazionali: si occupano dei concetti più astratti dell’essere (identità, differenza, somiglianza, parteci pazione, ecc). Esistono anche ontologie di dominio: si occupano di particolari ambiti della conoscenza e possono mirare a coprire un intero ambito disciplinare (la biologia, la chimica, la medicina, l’ingegneria, ecc) o possono limitarsi ad un particolare aspetto della realtà (cibo, computer, aeroplani, ecc); si parla di ontologie del nocciolo di un dominio per indicare le ontologie che si limitano a rappresentare i concetti più importanti all’interno di un particolare ambito. Lo sviluppo di ontologie formali in ambito giuridico si collega all’opera di tanti giuristi e filosofi del diritto che hanno cercato di caratterizzare con precisione le categorie giuridiche e di specificare l’architettura delle loro relazioni. Le nuove teorie e tecniche sviluppate nelle ricerche sulle ontologie formali offrono notevoli opportunità per lo studioso del diritto, modelli tratti dalla ricerche ontologiche possono infatti consentire allo studioso del diritto di perfezionare le analisi dei concetti giuridici, di rappresentare con precisione le diverse strutture concettuali in uso, nonché di precisare i contenuti di queste e di coglierne i difetti formulando poi proposte di revisione. Le moderne tecniche per la costruzione di ontologie formali, consentendo di unire espressività e precisione nella rappresentazione dei concetti, possono collegare analisi giuridiche e realizzazioni informatiche.
6) La crittografia e l’informatica
Le tecnologie informatiche liberano le informazioni dalla loro dimensione fisica, e così ne favoriscono la conoscibilità e la modificabilità: le informazioni digitali possono essere riprodotte istantaneamente e trasmesse a distanza a velocità immediata, inoltre possono essere modificate a piacimento di chi interviene su di esse. Vi sono però dei casi in cui i soggetti sono interessati a limitare la conoscibilità di certe informazioni, a mantenere riservati certi messaggi; in altri casi i soggetti sono interessati all’autenticità ed all’integrità dei documenti informatici che invano o che gli pr ovengono (quando inviamo un testo vogliamo essere certi che il destinatario lo riceverà nella sua integrità, e quando riceviamo un testo vogliamo essere sicuri che si tratta del testo che ci è stato inviato da chi ne appare essere il mittente e senza interventi da parte di terzi). Ciò vale in particolare, ma non solo, per i testi che documentano fatti giuridicamente rilevanti (ad esempio un’offerta contrattuale). Esistono tecnologie informatiche per soddisfare tali esigenze, la più importante delle quali è la crittografia (essa ha trovato numerose applicazioni informatiche, alcune delle quali, come la firma digitale, hanno grande rilevanza per il diritto ). La crittografia, dal greco “kryptos” (“nascosto”) e “graphia” (“scrittura”), è la disciplina che si occupa della cifrazione (o codifica) e della decifrazione (o decodifica) dei testi. Le tecniche crittografiche consentono di trasformare un testo leggibile (testo in chiaro) in un testo non più comprensibile al lettore (testo cifrato), e di risalire dal testo cifrato al testo in chiaro. La crittografia esiste da più di 2.000 anni, già Giulio Cesare usò un semplice metodo crittografico per trasmettere i messaggi segreti. All’inizio del ‘900 si cominciò a ricorrere a dispositivi meccanici per la crittografia: un esempio particolarmente significativo è rappresentato da Enigma, la macchina usata per le comunicazione nell’esercito tedesco durante la seconda guerra mondiale, i cui messaggi furono decifrati con i contributi dei matematici polacchi ed inglesi, e grazie al calcolatore Colossus. I calcolatori consentono di eseguire algoritmi per la cifrazione/decifrazione dei testi molto complessi, tali algoritmi compiono la cifrazione/decifrazione sulla base di parametri detti chiavi. Una volta tradotti tali algoritmi in un programma informatico, potremo affidare direttamente al computer la cifrazione o la decifrazione di un messaggio. Esistono due tipi di sistemi crittografici: - sistemi a chiave simmetrica, che usano la stessa chiave sia per la cifrazione sia per la decifrazione del messaggio. In questi sistemi chi è un grado di compiere una delle due operazioni, cifrazione o decifrazione, è necessariamente in grado di compiere anche l’altra operazione, poiché la chiave che usa è la stessa. - sistemi a chiave asimmetrica , che usano due chiavi diverse e tra loro complementari, una per la cifrazione ed una per la decifrazione del messaggio. In questi sistemi le operazioni di cifrazione e di decifrazione sono indipendenti, infatti chi conosce solo una delle due chiavi non può svolgere entrambe le funzioni. La crittografia asimmetrica consente di realizzare i sistemi a chiave pubblica, nei quali ciascuno dei soggetti che si scambiano informazioni ha la titolarità di una diversa coppia di chiavi: una chiave della coppia, la chiave privata rimane segreta e conosciuta solo al titolare, mentre l’altra chiave della coppia, la chiave pubblica è resa pubblicamente accessibile e conoscibile a tutti coloro che intendono comunicare con il titolare. Questi sistemi consentono i garantire tanto la riservatezza delle comunicazioni, quanto l’autenticità e l’integrità dei messaggi. Alcuni anni fa le tecniche crittografiche più avanzate erano riservate agli usi militari e ne era vietata la comunicazione al pubblico. Si temeva infatti che la disponibilità di queste tecniche avrebbe messo a rischio la sicurezza nazionale, poiché essere avrebbero consentito alle reti criminali o spionistiche di comunicare liberamente, sottraendosi alle indagini di polizia. Le esigenze delle comunicazioni elettroniche e la facile disponibilità di software per la crittografia hanno però reso, negli anni successivi, impraticabile tale divieto ed oggi i potenti sistemi crittografici sono accessibili a tutti. Le tecniche crittografiche possono essere usate per l’invio di messaggi segreti, in quanto anche se il messaggio viene intercettato esso non potrà essere letto se non se ne conosce la chiave di decifrazione. I sistemi a chiave asimmetrica offrono maggiori garanzie di sicurezza rispetto ai sistemi a chiave simmetrica. Nei sistemi a chiave simmetrica è necessario che entrambe le parti posseggano la stessa chiave, pertanto prima che le parti possano comunicare usando la chiave condivisa è necessario che esse si scambino tale chiave, e chi è in grado di intercettare le comunicazioni tra le parti potrà ottenere la conoscenza della chiave intercettando il messaggio in cui essa è trasmessa, e grazie ad essa potrà decifrare le comunicazioni successive. Nei sistemi a chiave asimmetrica, invece, il destinatario del messaggio rende nota una delle sue chiavi (che svolge quindi la funzione di chiave pubblica) ed invita il mittente ad usarla nell’invio dei massaggi a lui rivolti; anche se il terzo riesce ad intercettare un messaggio diretto al destinatario e conosce la chiave pubblica dello stesso, non potrà decifrare il messaggio, perché a tale fine è necessaria la chiave privata del destinatario, che questi ha mantenuto segreta non comunicandola ad alcuno. La crittografia asimmetrica può essere usata anche per garantire l’autenticità e l’integrità del messaggio. Il mittente può cifrare il testo usando la propria chiave privata ed inviare al destinatario sia il testo cifrato sia il testo in chiaro da cui il testo cifrato è stato tratto. Il destinatario del messaggio può quindi decifrare il testo cifrato usando la chiave pubblica del mittente: se la decifrazione del testo cifrato dà un risultato identico al testo in chiaro ricevuto il destinatario può avere sia la certezza che il messaggio è stato inviato dal titolare della chiave privata corrispondente alla chiave pubblica usata per la decifrazione, sia la certezza che quel messaggio non è stato modificato da terzi. Poiché le due chiavi del mittente operano in coppia, se il testo cifrato fosse stato ottenuto usando una chiave diversa dalla chiave privata del mittente, dal testo cifrato non si sarebbe
potuti risalire al testo originario usando la chiave pubblica del mittente, e se il testo in chiaro fosse stato modificato da terzi esso non coinciderebbe con il risultato della decifrazione del testo cifrato. La firma digitale, basata sulla crittografia asimmetrica, è la tecnologia che meglio garantisce l’autenticità e l’integrità dei documenti elettronici. La tecnologia della firma digitale usa la doppia chiave nel modo sopra descritto, con una particolarità: la cifrazione asimmetrica non viene applicata a tutto il testo in chiaro, ma solamente ad un’abbreviazione di questo, la sua impronta (digest), estratta automaticamente a partire dal testo in chiaro. La formazione della firma digitale segue quindi una sua procedura: - il mittente crea l’impronta del testo in chiaro, utilizzando una procedura informatica denominata funzione di hash, la quale garantisce l’univocità dell’impronta (ciò significa che da testi diversi la funzione di hash estrae sempre im pronte diverse). - il mittente cifra l’impronta usando la propria chiave privata, ottenendo così la firma digitale del testo in chiaro, la quale viene inviata al destinatario assieme al testo in chiaro. Ogni testo su cui una persona apponga una firma digitale ha una diversa firma digitale, che risulta dalla codifica dell’univoca impronta di quel testo con la chiave privata del mittente. - il destinatario applica al testo in chiaro ricevuto la funzione di hash, estraendone una nuova impronta. A questo punto egli decifra l’impronta cifrata ricevuta con il messaggio, mediante la chiave pubblica del mittente. - il destinatario può verificare l’autenticità e l’integrità del messaggio accompagnato dalla firma digitale in questo modo: egli confronta l’impronta estratta dal testo in chiaro con quella ottenuta attraverso la decifrazione. Se le due impronte sono identiche significa che il messaggio è stato codificato con la chiave privata del mittente e non è stato modificato da alcuno. L’obbiettivo della firma digitale è di fornire al destinatario la garanzia che il messaggio proviene effettivamente da chi ap pare esserne il mittente. Non esistono soluzioni tecnologiche capaci di prevenire tutti i possibili abusi delle firme digitali. La garanzia che una firma digitale appartenga realmente a chi appare esserne il titolare è fornita da un certificatore (cioè un’autorità di certificazione). Il certificatore fornisce al titolare della firma digitale un certificato, cioè un documento elettronico che attesta la sua identità, la chiave pubblica attribuitagli ed il periodo di validità del certificato stesso. Il titolare della firma allega il certificato ai messaggi firmati, e sulla base di questo il destinatario del messaggio può rivolgersi al certificatore, attraverso il software per il riconoscimento della firma digitale, per verificare l’identità del mittente.
CAPITOLO 5: Internet Le tecnologie informatiche hanno fornito la base per la più grande invenzione degli ultimi decenni: Internet, la rete globale. 1) Internet, la rete globale Internet è una rete di computer che si estende su tutto il pianeta ad accesso pubblico , attualmente rappresentate il prin-
cipale mezzo di comunicazione di massa. Con la parola Internet facciamo riferimento a diversi elementi di una realtà com plessa: - i collegamenti tra i calcolatori , ossia l’intreccio delle linee di collegamento fisiche (cavi ottici, linee telefoniche, ponti radio, ecc) sulle quali viaggiano i segnali elettronici (bit). - le macchine che governano il viaggio dell’informazione su tali linee di collegamento (si tratta di calcolatori spesso destinati esclusivamente a questo compito, i quali indirizzano i messaggi verso la loro destinazione e controllano il funzionamento delle apparecchiature elettroniche della rete). - le regole (protocolli e standard) che stabiliscono come debbano essere formati i dati destinati a viaggiare sulla rete, e come i sistemi della rete debbano interagire (sono le regole condivise che consentono l’interoperabilità tra diverse apparecchiature e diversi programmi, tra diversi hardware e di versi software). - i software di rete, cioè i programmi informatici che, nel rispetto dei protocolli e degli standard, gestiscono i messaggi, indirizzandoli verso la loro destinazione ed elaborandoli in modo appropriato. - i calcolatori connessi in rete (tutti i calcolatori che entrano a fare parte di Internet grazie ad un collegamento di rete). - le entità virtuali esistenti nella rete, come siti, servizi, giochi, ambienti virtuali, applicazioni, ecc che risultano dai processi di elaborazione realizzati dai calcolatori connessi in rete. - le persone e le organizzazioni che usano i calcolatori della rete. - le istituzioni che si occupano delle gestione e dello sviluppo di Internet. A differenza di altre conquiste tecnologiche e scientifiche, rimaste a lungo limitate ad una parte dell’umanità, Internet si è rapidamente estesa fino ad abbracciare una porzione significativa della popolazione mondiale. Internet quindi: - favorisce l’interazione, e ciò deve essere inteso in senso ampio, infatti la dimensione globale di Internet non si limita all’assorbimento passivo delle informazioni, ma ogni nodo della rete può essere sia fruitore sia fornitore di i nformazioni. - è globale e favorisce la globalizzazione, poiché grazie ad essa le distanze diventano irrilevanti nella comunicazione, cosicché interazioni personali e strutture organizzative possono essere distribuite su t utta le Terra. - è pervasiva, nel senso che riguarda ogni settore dell’attività umana.