Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

categoria degli interpreti appartengono i servizi di sistema capaci di interpretare a i

run-time

cosiddetti (macro istruzioni capaci di indirizzare il funzionamento di parti di software,

script

ad esempio i ).

Java-script

Il PASCAL e il FORTRAN sono invece compilatori. La funzione “DEBUG” permette di

interagire per cercare gli errori sparsi (trasforma il programma in una sorta d’interprete

durante l’esecuzione). Si può compilare un programma scritto in PASCAL o FORTRAN

appendendolo al DEBUG. Quando si trova l’errore però si deve tornare nel programma

sorgente, correggere e poi ricompilare. Con questo tipo di funzione DEBUG attivato si perde

in velocità di esecuzione. Le funzioni DEBUG sono poco intuitive in quanto sono incapsulate

dentro il programma eseguibile.

Esistono vari tipi di linguaggi: - Assemblatori [A si SSEMBLER]

- Procedurali

- Non procedurali

1) I Assemblatori sono capaci di rappresentare degli “mnemonici”, a cui poi si

linguaggi

può associare una parola, che verrà tradotta in linguaggio macchina. Sono dei traduttori

“uno a uno” del linguaggio macchina. Sono dei linguaggi che vengono adattati ai

computer a seconda della loro architettura. Gran parte del SO è scritto in

ASSSEMBLER.

2) Esistono diversi linguaggi procedurali, o "imperativi", che sono linguaggi

attraverso i quali si devono specificare esattamente la sequenza di azioni da

eseguire per svolgere una determinata azione. Questi sono i più usati ancora

oggi, quali:

- BASIC => , esiste la

Beginner's All-purpose Symbolic Instruction Code

versione QUICK che è più veloce e più avanzata; nella versione

40

è in grado di manipolare .

Visual-Basic oggetti

- FORTRAN => , versioni (II), V e VI, ANSIXX (con XX

FORmulas TRANslator

si indica l’anno di rilascio). Questo tipo di linguaggio è

particolarmente adatto per tradurre le formule matematiche;

- ALGOL => , è un linguaggio ormai poco usato.

ALGOrithmic Language

Questo tipo di linguaggio è noto per descrivere con la massima

facilità degli algoritmi (ALGORITMO: descrizione procedurale

che permette di arrivare alla soluzione del problema);

- PASCAL => è una forma avanzata dell’ALGOL, adatto per la

. E’ particolarmente adatto alla

programmazione strutturata

mentalità di matematici;

- C/C++ => è un linguaggio formale che assomiglia molto al PASCAL, ma

che anche permette un controllo della macchina come se fosse in

parte un assembler. E’ meno leggibile del PASCAL ed è

40 Gli oggetti sono dei moduli software che permettono un più rapido e sicuro sviluppo (scrittura) di programmi

riutilizzando dei “pezzi”, dei moduli, già scritti e provati diffusamente. Tali moduli vengono visti ed utilizzati

come “scatole chiuse” delle quali è fornita la descrizione in termini di (informazioni di configurazione

proprietà

dentro l’oggetto, accessibili solo tramite operazione controllate dall’oggetto stesso) e (azione

incapsulate metodi

che l’oggetto può svolgere se sollecitato dal programma o in risposta ad predefiniti).

eventi

U. Biader Ceipidor 29/29

considerato un linguaggio da professionisti; nella versione C++

40

(o -C) è in grado di manipolare ;

Visual oggetti

- Java => è un linguaggi proposto dalla Sun-Microsystems negli ultimi anni

per applicazioni di rete; sintatticamente è simile al C++ (con

alcune restrizioni); la forza del linguaggio è quella di non

compilare il risultato in linguaggio macchina, ma piuttosto in un

intermedio, che è in grado di essere eseguito in varie

byte-code

macchine e sistemi operativi, permettendo la scrittura di

41

applicazioni e intrinsecamente .

platform independent virus free

- Perl un linguaggio “vecchio” di soli pochi anni, nato nel 1987 con

l’obiettivo di essere facile ed aperto, distribuito gratuitamente in

forma di software aperto, particolarmente adatto a integrare

applicazioni Internet e altri linguaggi.

- COBOL=> , questo linguaggio è stato

Common Business Oriented Language

concepito per descrivere le risoluzioni di problemi di

ordinamento e è un linguaggio più gestionale che scientifico; si

42

utilizza ancora per la manutenzione dei sistemi .

legacyi

I linguaggi non procedurali, o "non imperativi", permettono l'esecuzione di azioni

3) specificando il risultato da ottenere piuttosto che i passi mediante i quali ottenerlo. Si

utilizzano specialmente nel campo dell’ (AI) e dei

Intelligenza Artificiale Sistemi

(ES), come pure nel campo dei . La loro discussione esula

Esperti DATA BASE

comunque dalla materia trattata in questa sede.

primo linguaggio "non imperativo", in grado di

- LISP=> LISt Processor, 43

trattare liste di qualsiasi natura, numeri compresi . Un

programma è un insieme di funzioni matematiche composte fra

loro in modo che ciascuna di esse ricavi i propri dati da quella

precedente. Il LISP possiede una sintassi semplice e uniforme che

lo rende ideale per manipolare informazioni e confrontare

problemi.

- PROLOG=> , "Programmare in logica" vuole dire

PROgramming in LOGic

non specificare le operazioni da eseguire per risolvere i problemi

proposti, in quanto le procedure risolutive vengono svolte

automaticamente dal computer. I programmi adottano una tecnica

di ricerca inversa ( ): il PROLOG cerca la soluzione

backtracking

in base a una serie di regole concatenate, ponendosi di volta in

volta un nuovo obiettivo da raggiungere

41 Le applicazioni scritte in Java sono indipendenti dalla piattaforma (platform a patto che su ogni

independent)

piattaforma esista la macchina virtuale (un interprete del Java e che questa si comporti nello stesso

byte code)

modo su ogni altra piattaforma (situazione in divenire, non completamente consolidata). Il è anche

byte code

libero da virus (virus per definizione, dato che non è eseguibile, ma deve essere interpretato dalla macchina

free)

virtuale, che non accetta operazioni di sistema illegali.

42 Si definiscono quei sistemi software, sviluppati e messi a punto nel corso di decenni (come le

legacy

applicazioni bancarie, di sicurezza militare, etc.), che hanno raggiunto un elevato grado di affidabilità e per i

quali è troppo “rischioso” (magari sbaglierebbero i conti in qualche caso particolare con enormi danni

economici) un rifacimento con tecniche e linguaggi moderni.

43 Le liste sono strutture descritte più avanti, che non hanno lunghezza fissa.

U. Biader Ceipidor 30/30

4) In un certo senso appartengono a questa categoria di linguaggi non procedurali anche i

44

linguaggi usati per definire degli script 45 , definito attraverso il

- HTML=> Hyper Text Mark-up Language

46

metalinguaggio SGML ( ),

Standard General Mark-up Language

usato per la definizione di ipertesti che sfruttano le risorse di rete

(internet).

- XHTML=> ( ) , è un’estensione dell’HTML

eXtensible eXtensive HTML

definita attraverso il metalinguaggio XML ( extensible Mark-up

, sottoinsieme del SGML), con la quale si struttura il

Language

documento per una sua più agevole esplorazione.

, permette la creazione di

- VRML=> Virtual Reality Modeling Language

ipertesti (pagine web) tridimensionali.

- J-script=> , per l’esecuzione di (oggetti programma) Java

Java script applet

all’interno di un browser, in modo da animare la pagina web,

assumendone un controllo profondo e non superficiale come con

HTML.

- ActiveX=> Alternativa Microsft alla tecnologia e (di Sun-

Java Java script

Microsystems). Il confronto commerciale è aperto.

, è un linguaggi di , operante dal

- PHP Hypertext PreProcessor script

alto (in modo da non rivelare il codice ai ). Offre agli

server client

sviluppatori di applicazioni web un insieme completo di

strumenti per costruire siti dinamici

Linguaggi di quarta generazione, caratterizzati da una somiglianza ancora più spinta

5) con il linguaggio naturale, la minore rigidità formale e, principalmente l'uso di

un'interfaccia utente più “amichevole” dei compilatori. Sono linguaggi tra i quali si

ricordano i linguaggi associati a prodotti software (gestori di basi di dati, fogli

elettronici e ) e i linguaggi di AI, che utilizzano nuove particolari

word processor

strutture.

1.2.5.3. Script e programmazione

L’uso degli “script” in linguaggi interpretati si sta estendendo grazie al fatto che la potenze

crescente degli elaboratori ha superato il problema della lentezza di esecuzione.

Oggi si programma con queste tecniche in:

• HTML Hyper Text Mark-up Language, definito attraverso il metalinguaggio SGML

(Standard General Mark-up Language), usato per la definizione di ipertesti che

sfruttano le risorse di rete (internet).

• XHTML eXtensible (eXtensive) HTML, è un’estensione dell’HTML definita

attraverso il metalinguaggio XML (extensible Mark-up Language, sottoinsieme del

SGML), con la quale si struttura il documento per una sua più agevole esplorazione.

44 Uno è un che lavora in modalità interpretata (vedi capitolo 1.2.5.2).

script programma

45 Un linguaggio è definito tale perché “aggiunge” proprietà al testo e lo “valorizza”.

markup

46 Un metalinguaggio è in generale un linguaggio che serve a definire linguaggi eseguibili.

U. Biader Ceipidor 31/31

• VRML Virtual Reality Modeling Language, permette la creazione di ipertesti (pagine

web) tridimensionali.

• J-script Java script, per l’esecuzione di applet (oggetti programma) Java all’interno di

un browser, in modo da animare la pagina web, assumendone un controllo profondo e

non superficiale come con HTML.

• ActiveX Alternativa Microsft alla tecnologia Java e Java script (di Sun-

Microsystems). Il confronto commerciale è aperto.

• PHP Hypertext PreProcessor, è un linguaggi di script, operante dal alto server (in

modo da non rivelare il codice ai client). Offre agli sviluppatori di applicazioni web

un insieme completo di strumenti per costruire siti dinamici

Seguono due esempi di programmi, uno in VB e l’altro in HTML, con lo scopo esclusivi di

permettere un , senza pretese di illustrare lgoche di programmazione.

look and feel

Figura 14. Esempio di codice VB

Sub TrovaDoppiCodici()

Ntot = Application.Cells(1, 6)

Dim TbD(2000) As Integer

ND = 0

N = 0

For i = 3 To Ntot + 1

r$ = Format(i, "#")

a0$ = UCase(Application.Cells(i, 7))

a1$ = UCase(Application.Cells(i - 1, 7))

If a0$ = a1$ Then

rr$ = r$ + ":" + r$

Rows(rr$).Select

N = N + 1

With Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

End With

' Selection.EntireRow.Hidden = True

End If

Next i

ris = MsgBox("Doppioni " + Format(N, "0#"), vbOKCancel)

End Sub

U. Biader Ceipidor 32/32

Figura 15. Esempio di codice HTML

<html>

<head>

<meta http-equiv="Content-Language" content="it">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">

<meta name="ProgId" content="FrontPage.Editor.Document">

<title>Nuova pagina 1</title>

</head>

<body>

<p>Prova di HTML nella pagina</p>

</body>

</html>

1.2.5.4. I costi del software

Dall’inizio delle prime applicazioni dell’informatica, che si possono far risalire agli anni ’50,

il mondo ha assistito a due fenomeni distinti, dei quali solo il primo visibile ai “non addetti ai

lavori”, ma ugualmente importanti:

• i costi della componente hardware sono drasticamente andati diminuendo (alcuni

elementi sono riportati in Tabella 6);

• la componente software è passata da un peso trascurabile ad un peso determinante sul

costo totale dei sistemi informatici (in Figura 16 è riportato il peso progressivo delle

due componenti in un grafico qualitativo).

Figura 16. Incidenza costi hardware (HW) e software (SW) sul totale.

100% HW

50% SW

0%

1950 1960 1970 1980 1990 2000 2010

Le ragioni di questo cambiamento di peso tra software e hardware sono abbastanza semplici:

U. Biader Ceipidor 33/33

• da un lato la costruzione delle apparecchiature elettroniche ha visto una drastica

diminuzione dei costi di produzione, legata ad un costante aumento nelle società

occidentali del costo del fattore lavoro rispetto al fattore capitale:

un continuo aumento dei livelli di automazione della produzione ha permesso

o di ridurre sempre di più il costo del lavoro,

un continuo aumento dei volumi di produzione, dovuto alla larga diffusione

o delle tecnologie elettroniche, ha ridotto sensibilmente anche il costo del fattore

capitale attraverso le economie di scala (quando il capitale viene utilizzato per

produrre tanti pezzi, il suo ammortamento grava di meno sul costo di ogni

pezzo);

• dall’altro lato il progressivo aumento del tenore di vita dei paesi industrializzati ha

fatto aumentare il costo del software, dove il fattore lavoro è rimasto determinante in

quanto non si sono inventate macchine capaci di scrivere automaticamente software.

Per queste ragioni negli ultimi 20 anni molto è stato fatto nel tentativo di creare strumenti

(software) che fossero capaci di ridurre lo sforzo (il tempo) necessario per sviluppare

software. I linguaggi non procedurali avevano promesso la creazione di strumenti che fossero

quasi capaci di scrivere automaticamente del software: il successo è stato limitato. Sono state

tentate varie vie per creare generatori di applicazioni, strumenti CASE (

Computer Aided

). Il contributo maggiore al contenimento dei costi di sviluppo del

Software Engineering 40

software, negli ultimi 5-10 anni è però venuto dalla programmazione ad , che ha

oggetti

trasformato il lavoro di sviluppo software: un programma viene realizzato non più a partire da

zero ma con una tecnica (si pensi al gioco del Lego o all’edilizia modulare che

modulare

costruisce grattacieli sovrapponendo piani già fatti) che mette insieme e utilizza ,

oggetti

programmi autonomi, provati e funzionanti, che non necessitano di tempi di sviluppo né di

lunghe operazioni di test.

1.2.5.5. Copyright e protezione

Il tema della protezione dei diritti d’autore riguarda le limitazioni all’esecuzione di copie di

documenti e programmi software. Il termine inglese sta proprio a significare “diritti di copia”.

L’autore in generale deve essere protetto dalla distribuzione di copie illegali e tale protezione

si può esprimere in modi diversi, a seconda delle scelte dell’autore. E’ importante capire che

una diffusione “pirata” di copie non autorizzate riduce, e talvolta annulla, il legittimo ritorno

economico atteso dall’autore. A nessuno può essere chiesto di lavorare “gratis” e il mancato

rispetto del copyright si traduce, in ultima analisi, in un impedimento dell’autore a continuare

il proprio lavoro. Troppo spesso si confondono motivi ideologici con elementi socio-

economici: a nessuno verrebbe in mente di rispolverare la schiavitù, imponendo a medici e

paramedici di lavorare gratis per il bene della collettività. Semmai una sorta di volontariato

dovrebbe essere accettata liberamente dagli interessati.

Lo stesso “software libero” è quello che è distribuito in forma gratuita, ma per scelta degli

autori. Quello copiato illegalmente è solo “pirata”.

Prima del XVIII secolo non esisteva un vero e proprio diritto d'autore, ma solo privilegi agli

autori e soprattutto ai librai, che per pubblicare dovevano sostenere delle spese. Nel XVIII

secolo però il sistema di produzione contadino/artigianale diventa industriale capitalista e

esplode il problema della difesa dei prodotti industriali. Nascono i brevetti sui prodotti

materiali, capaci di garantire la proprietà privata. Il copyright sulle opere creative nasce per

difendere la proprietà intellettuale.

U. Biader Ceipidor 34/34

La protezione dei diritti d’autore era all’inizio favorita dalle difficoltà tecnologiche di fare

copie. Ma col XX secolo gli strumenti a disposizione resero agevoli le operazioni di

riproduzione, tanto che si passò da una riproducibilità relativa a quella estesa.

Riproducibilità relativa

Anche dopo Gutenberg (XV sec.) la riproduzione delle opere letterarie non era comunque alla

portata di tutti; servivano attrezzature complesse e costose, materiali altrettanto costosi...

Riproducibilità estesa

A partire dalla fine del XX sec. la tecnologia ha reso la riproducibilità molto più semplice:

audiocassette

registratori VHS

fotocopiatrici

Personal Computer

Internet

Per il software, la Convenzione di Berna ha stabilito che un programma non può essere

distribuito né modificato senza l'esplicito consenso degli autori. Due sono i livelli di

autorizzazioni necessari per 47

• Distribuire soltanto un programma come software (eseguibile e non modificabile )

grazie a un programma di installazione.

• Modificare un programma per ottenerne uno diverso, magari anche migliore; è

necessario accedere al col consenso dell’autore, per introdurre le

sorgente,

mdodifiche.

Il software viene generalmente distribuito con una delle seguenti limitazioni alla

riproduzione:

• A pagamento: si paga ogni copia (licenza d’uso).

• Freeware: l’eseguibile può essere liberamente e gratuitamente copiato, non modificato

(sorgente chiuso). Es: Adobe Acrobat reader

• Shareware: può essere copiato e distribuito liberamente, ma non può essere più

utilizzato, senza pagarlo, dopo un primo periodo di prova. Alcuni di questi programmi

smettono di funzionare dopo il periodo di prova, o forniscono funzionalità ridotte fino

all'acquisto di una chiave che li sblocchi. Es. programmi Macromedia

• Open Source: deve essere rilasciato in formato sorgente, modificabile; può essere

anche freeware (ma non necessariamente). Es. Linux

Il software viene sempre distribuito con un documento che ne specifica la licenza d’uso: in

base alle norme sul diritto d'autore, specifica diritti e doveri di chi riceve il programma. Di

solito le licenze proprietarie sono scritte in un linguaggio legale, per addetti ai lavori e

nessuno la legge per intero, pur sottoscrivendola (obbligatorio). Le licenze libere o semilibere

- tra le altre cose - hanno invece cercato di rendere il linguaggio con cui sono scritte più

comprensibile.

Le “libertà” offerte da una licenza sono codificate come_

47 La modifica di un eseguibile è praticamente impossibile per la difficoltà di comprendere l’insieme di

istruzioni in linguaggio macchina. Complesse operazioni spesso non producono risultati

di reverse engineering

apprezzabili in quanto risalire alla logica dal codice macchina è un po’ come pretende re di “rifare il maiale

dalle salsicce”.

U. Biader Ceipidor 35/35

0. Libertà 0 (Libertà fondamentale): eseguire il programma, per qualunque scopo.

1. Libertà 1: studiare il programma, adattarlo alle proprie necessità.

2. Libertà 2: redistribuirne copie.

3. Libertà 3: migliorare il programma, ridistribuire pubblicamente i miglioramenti.

Un programma distribuito con una licenza software che conceda le quattro libertà è detto

software libero. Le libertà 1 e 3 richiedono accesso al codice sorgente del programma.

Attenzione: il software libero non necessariamente è gratuito (in inglese indica entrambe

free

le cose ed induce in equivoco).

Licenze libere di distribuzione sono:

• BSD (derivato da ). Licenza libera non persistente

Berkeley Software Distribution

(nessun obbligo, ma con scadenza)

• 48

GPL (in italiano Licenza Pubblica Generica) Licenza libera persistente - copyleft

(obbligatoriamente aperto). Una declinazione molto nota è l’ , dove si

Open source

sottolineano i vantaggi del software libero (facilità di adattamento, l'affidabilità, la

sicurezza, …) puntando su assistenza, amichevolezza d’uso, programmi open

compatibili con quelli proprietari (in grado di gestire formati proprietari).

Accanto alle licenze, esistono accordi particolari, né distribuzione libera, né con meccanismi

proprietari.

• Accordo di non divulgazione NDA ( ). Impegno a non

Non Disclosure Agreement

divulgare certe specifiche informazioni sul programma. Comune nei casi in cui il

sorgente sia distribuito per uso individuale (ad esempio nel quadro di un progetto

comune tra più partner), ma senza poter essere ulteriormente ridistribuito.

• Clausole di uso limitato. Senza fini di lucro, per uso non commerciale, per uso

personale, per uso accademico, per uso scolastico, non trasferibile (che impedisce la

libera redistribuzione). Programmi e documenti di questo genere possono essere

accompagnati o meno dal sorgente, ma di solito non lo sono

La (Università di Stanford) società per

Stanford Law School Center for Internet and Society

azioni non-profit, ha codificato 4 attributi (nella versione 2.0), che possono essere combinati

ottenendo 6 licenze possibili (perché il primo attributo è obbligatorio e gli ultimi due

esclusivi). Offre una possibilità agli autori di porsi a metà strada tra e

copyleft copyright

" " (Metti a disposizione ciò che vuoi, tieni per te

Share what you want, keep what you want

quel che vuoi).

In conclusione i contenuti digitali, programmi, ma anche testi, suoni, immagini, possono

essere rilasciati con una delle seguenti licenze:

• PDL ( ) aperta e non persistente (senza obblighi sulle

Public Documentation Licence

modifiche del sw)

• GFDL (GNU, “not unix”, ): con e opzioni che la

Free Documentation License copyleft

rendono adatta a un prodotto come un libro (copertine, risvolti, quaderno delle

modifiche, sezioni immutabili).

48 Gioco di parole per indicare senza copyright, dato che la parola inglese vuol dire anche destra, oltre che

right

diritto, e sinistra, è l’opposto della destra.

left,

U. Biader Ceipidor 36/36

• BSD (origine da ) Licenza libera non persistente

Berkeley Software Distribution

(nessun obbligo)

• GPL (Licenza Pubblica Generica) Licenza libera persistente - copyleft

(obbligatoriamente aperto)

• CCPL ( ).

Creative Common Public License Stanford Law School Center for Internet

, / , 6 livelli

and Society copyleft copyright

1.3. Struttura contenuti digitali

I contenuti digitali sono considerati genericamente dei . Fisicamente ogni file è solo una

file

sequenza di bit, ma ogni file ha una sua struttura logica che ne permette la lettura/scrittura

secondo un certo disegno. In una metafora è come considerare il contenuto di moduli cartacei

dove sono conservati solo i caratteri scritti sul modulo: senza conoscere il module è ben

difficile interpretare la sequenza di caratteri.

1.3.1. I dischi “memoria di massa”

La struttura fisica dei dischi viene presentata all’utente, tramite il sistema operativo, con una

visione più comprensibile ed agevole. I descrittori fisici (testina, traccia, settore) che

logica

compongono l’indirizzo, scompaiono alla vista dell’utilizzatore e vengono invece presentati

nella struttura logica a .

directory

1.3.1.1. File e directory

Una directory è una tavola di corrispondenza tra nomi (simbolici) e indirizzi fisici. I nomi

simbolici possono indicare (blocchi omogenei di informazioni), ma possono anche

file

indicare altre directory (sotto- ). Queste sotto-directory sono degli speciali file,

directory

riconosciuti dal sistema operativo come contenenti altre tavole di corrispondenza nome-

indirizzo. Directory (che contengono file)

DIRECTORY File (documento) il cui nome in DOSS viene identificato da

un massimo di 8 caratteri seguiti dall’estensione (3 caratteri)

XXXXXXXX.YYY.

La ROOT directory (directory radice) è una particolare directory, riservata al sistema

operativo. I file nella ROOT non possono essere più di quelli contenibili nello spazio

riservato dal sistema operativo alla stessa ROOT.

Per superare questo limite si può creare nella ROOT uno o più file directory (e in queste

sotto- ), che possono arrivare ad occupare anche tutto lo spazio disponibile su disco.

directory

La struttura logica delle informazioni si presenta come struttura ad albero.

U. Biader Ceipidor 37/37

ROOT FILE

FILE

DIRECTORY FILE

FILE FILE

DIRECTORY

In tale struttura ad albero i rami sono le directory e le foglie sono i file. Ogni file

naturalmente deve essere univocamente identificato (cioè non ci devono essere delle

ambiguità) da un cammino (PATH) nell’albero (TREE) e quindi dal nome, unico, all’interno

del ramo di appartenenza.

L’organizzazione ad albero è di tipo gerarchico. Un esempio di organizzazione gerarchica

può essere l’invio di una informazione da un’unità ad un’altra in un esercito. L’informazione

andrà dalla prima unità al suo diretto superiore che a sua volta invierà l’informazione al

superiore della seconda unità che, per terminare, passerà finalmente l’informazione alla

seconda unità.

1.3.1.2. Qualificazione dei file in MS-DOS/WINDOWS

Quando si scrive in un file si memorizza una struttura informativa la cui interpretazione è

suggerita dall’estensione del nome (nome ). Senza assegnare il significato all’estensione,

.EXT

il file, che fisicamente è in ogni caso una sequenza di , non potrebbe essere letto/scritto, né

bit

compreso.

U. Biader Ceipidor 38/38

- i file testo sono file in cui sono

Testo contenuti una sequenza di byte

ciascuno dei quali codificati mediante

il codice ASCII.

Esempi di estensione:

.TXT è un file generico

.FOR è un file contenete un programma

Fortran

.BAS è un file contenete un programma

Basic

.PAS è un file contenete un programma

Pascal

.PHP è un file contenete una serie di script

(programma) PHP

- Applicazione specifica

<strutture dati proprie> questi file contengono strutture dati

standardizzate che, in generale, sono

interpretate (lette/scritte) solo da

certe applicazioni o da quelle che si

sono adattate (filtri, , etc).

viewer

Esempi di estensione:

.EXE è un programma eseguibile.

.COM è un file binario, nato come set di

comandi per il SO.

.BAT è una sequenza “batch” di comandi di

SO.

.DOC è un documento di MS-Word.

.XLS è un cartella di MS-Excel.

.PDF è un file di documento Acrobat.

.HTM è un ipertesto di MS-Communicator o

di Netscape Navigator.

.PPT è una presentazione di MS-

Powerpoint.

1.3.1.3. Immagini digitali

La memorizzazione di un’immagine in forma digitale richiede una sorta di scomposizione

secondo un’immaginaria “carta quadrettata”, con quadretti piccoli quanto si vuole

(risoluzione). Ogni quadretto, o ( ) è poi riempito col colore (o livello di

pixel picture element

grigio) che gli compete, per dare una riproduzione fedele dell’oggetto.

U. Biader Ceipidor 39/39

La forma più semplice e immediata di memorizzazione è quella di conservare il valore del

colore di ogni pixel, per tutti i pixel presenti in ordine di riga, detto formato (come la

raster

televisione) o anche semplicemente .

bitmap

Un’alternativa è quella di ricorrere alla memorizzazione di parametri di geometria analitica,

per lo più segmenti di retta, per poter ricostruire in riproduzione i pixel colorati nella loro

posizione.

Figura 17. Formato immagine: a) bitmap e vettoriale; b) rappresentazione discreta

a) b)

• Raster (bitmap)

00000000000000000

00000000000000000

00000000000000000

00000000000000100

00000000000001000

00000000000110000

00000000001000000

00000000010000000

00000000100000000

00000011000000000

00000100000000000

00011000000000000

00100000000000000

01000000000000000

00000000000000000

00000000000000000

00000000000000000

• Vettoriale (x,y)

(1,3)-(16,15)

Naturalmente la scelta di un formato o dell’altro ha un impatto importante sull’utilizzo delle

immagini: ogni formato ha vantaggi e svantaggi, nessuno dei due è in assoluto migliore ed

entrambi sono usati, a seconda delle circostanze.

U. Biader Ceipidor 40/40

Tabella 12. Caratteristiche dei due formati immagine fondamentali

Bitmap (raster) Vettoriale

Completa: il calcolo analitico

Assente: si può ridurre la può essere spinto al livello di

dimensione, raggruppando i precisione necessario per

pixel (es. 4 in 1), ma non si “calcolare” la posizione dei

può ingrandire, dato che non

Scalabilità pixel nella finestra scelta per

esiste procedimento per al rappresentazione

“creare”, ad esempio, 4 pixel

da 1

L’immagine è pronta per la L’immagine richiede il

presentazione. calcolo preventivo della

Rapidità di rappresentazione posizione dei pixel

Proporzionale al

Proporzionale alla riempimento dell’immagine.

risoluzione scelta. In genere In genere maggiore del

maggiore del vettoriale per

Spazio occupato in memoria immagini “tecniche” per immagini

bitmap

“pittoriche”, piene e ricche di

sfumature

Pittoriche, paesaggistiche, Disegni tecnici, cartoons

sfumate. sintetizzati (contorni netti e

Immagini più indicate aree colorate senza

sfumature)

Quello della memorizzazione delle immagini (e dei video) è sicuramente uno degli aspetti più

critici della multimedialità. Per questo è opportuno anche riassumere alcune caratteristiche di

tali formati. 1.3.1.3.1. Formati immagine digitali (raster o bitmap)

Di seguito sono riportati alcuni formati immagine, per le memorizzazioni di tipo raster, con le

relative estensioni.

BMP: bitmap di Windows

Contengono una rappresentazione dei singoli pixel, bit a bit.

PCX: PC Paintbrush

Le immagini supportano la compressione interna RLE (Run Length Encoded).

PNG: Portable Network Graphics

Le rappresentazioni dei pixel sono standardizzate e la riproduzione non dipende dalla

piattaforma utilizzata. Il formato supporta un alto livello di compressione senza perdite di

dati.

JPEG: Joint Photographic Experts Group

Memorizzano un'immagine raster singola a colori a 24 bit. È un formato che non dipende

dalla piattaforma utilizzata e supporta un alto livello di compressione.

GIF: Graphics Interchange Format

Le immagini supportano la trasparenza, la compressione, l'interlacciamento e le immagini

multiple (GIF animate). La compressione GIF è modesta (ha un rapporto di circa 3:1).

U. Biader Ceipidor 41/41

TIFF: Tagged Image File Format

Il formato è il più diffuso nel settore industriale della stampa. Supporta la compressione

facoltativa e è estensibile. La modifica delle specifiche può comportare però

un'incompatibilità tra tipi diversi di immagini TIFF.

PDF: Portable Document Format

E’ un contenitore, utilizzato da Adobe Acrobat. Questo formato può contenere sia immagini

bitmap che vettoriali, oltre che strumenti per ricerca e navigazione in documenti elettronici.

1.3.1.3.2. Formati immagine digitali (vettoriali o miste)

Di seguito sono riassunti alcuni formati per le immagini vettoriali o miste.

DXF: Drawing Interchange File AutoCAD (DWG e DWF sono meno diffusi)

Il formato, basato sull'uso di vettori e scritto in ASCII, è tipico del programma AutoCAD (di

Autodesk). I file AutoCAD sono diffusi in campo architettonico, di progettazione e nel

settore delle incisioni.

CGM: Computer Graphics Metafile

Il metafile può contenere informazioni vettoriali e di bitmap. È un formato di file

standardizzato e internazionale utilizzato da molte organizzazioni ed enti governativi, tra cui

il British Standards Institute (BSI), l'American National Standards Institute (ANSI) e il

ministero della difesa degli Stati Uniti.

CDR: CorelDRAW

Il metafile originato e gestito dal programma di grafica CorelDRAW, può contenere sia

informazioni vettoriali sia informazioni di bitmap.

WMF: metafile di Windows

E’ un formato di metafile a 16 bit, che può contenere sia informazioni vettoriali sia

informazioni bitmap. È ottimizzato per il sistema operativo Windows.

EPS: Encapsulated PostScript

Il formato è un linguaggio proprietario di descrizione della stampa, in grado di descrivere sia

informazioni vettoriali sia informazioni di bitmap.

EMF: Enhanced Metafile

E’ un formato a 32 bit, che può contenere sia informazioni vettoriali sia informazioni di

bitmap. Il formato è estensibile, con la conseguenza di comportare un'incompatibilità tra tipi

diversi di immagini EMF.

1.3.1.4. Oggetti 3D

Gli oggetti 3D sono dei “modelli matematici” attraverso i quali è possibile calcolare le

proiezioni piane di trasformazioni (sezioni, prospettive, etc.), che poi trovano

rappresentazione come immagine discreta (composta di pixel). Non si deve confondere

l’oggetto (modello) con le sue rappresentazioni calcolate in tempo reale a seguito di

traslazioni, rotazioni, sezionamenti, etc, operate con gli algoritmi derivate dalla geometria

piana. L’ottica geometrica fornisce invece gli algoritmi per il calcolo degli effetti luminosi

(ombre, illuminazione, trasparenze, etc.).

U. Biader Ceipidor 42/42

Un oggetto 3D è un modello composto di

• rappresentazione vettoriale di poligoni (facce)

• connessi attraverso lati

• e dotati di proprietà (trasparenza)

La grossa mole di calcoli necessaria per gestire oggetti 3D, nei moderni calcolatori è affidata

a processori specializzati ( grafiche).

workstation

Figura 18. Esempi di rappresentazione di oggetti 3D

1.3.1.5. Compressione dei file

Sia per motivi di occupazione di spazio, sia per motivi di limitato tempo di trasmissione, si

sono individuati dei procedimenti, o algoritmi, capaci di comprimere l’informazione

.

eliminando le ridondanza

In ultima analisi un file è sempre e comunque una sequenza di numeri binari e quindi di bit.

70

La compressione si basa sul riconoscimento di sequenze (pattern) di bit che si ripetono: in

questo caso si definisce un codice per il pattern e, ogni volta che questo si ripresenta, viene

scritto o trasmesso solo il codice relativo.

E’ naturale che il rapporto di compressione (lunghezza in numero di bit del file compresso

rispetto a quella del file originale) dipende dai dati e non è sempre uguale. Solo con una

sequenza di bit rigorosamente casuale non è possibile eseguire alcuna compressione.

Alcune modalità di compressione di immagini, filmati o suoni, applicano dei “filtri” prima

della compressione vera e propria, con l’intento di eliminare le “sbavature”, probabilmente

originate da imperfezioni delle riprese/registrazioni, che, per la loro natura casuale, non

49

permetterebbero di individuare sequenze ( ) ripetitive su cui basare la compressione .

pattern

E’ naturale che queste operazioni, “con perdita di informazione” in qualche caso possono

determinare la perdita di informazioni rilevanti: si immagini di filtrare una foto di famiglia (il

risultato migliora la qualità eliminando i punti neri sul viso, ad esempio) o di filtrare la

riproduzione di un quadro (il risultato può tagliare via giochi di luce importanti e voluti).

Di seguito sono riportati alcuni esempi di estensioni di file che individuano compressioni

“specializzate” per il tipo di file.

.ZIP, .RAR compressione generica (senza perdita

di informazione)

49 Invece delle sequenze di bit originali si può trasmettere un catalogo delle sequenze ripetute, e sostituire ogni

volta la sequenza incontrata con il numero di catalogo.

U. Biader Ceipidor 43/43

50

.JPG, .JPEF compressione di immagini

.MPG, .MPEG compressione filmati

.MP3 compressione audio

In particolare, è utile esaminare più in dettaglio i formati compressi delle immagini e i

video

codec 1.3.1.5.1. Formato immagine compresso

Le compressioni di immagine sono molteplici.

JPEG (Joint Photographic Experts Group)

Supportata dai formati di file JPG, PDF e linguaggio PostScript. Questo tipo di

compressione è la più adatta ad immagini fotografiche. Tecnica "con perdita".

RLE (Run Lenght Encoding)

Supportata dai formati di file Photoshop, TIFF e da alcuni comuni formati di file

Windows. Tecnica "senza perdita".

CCITT (Comitato Consultivo per la Telefonia e la Telegrafia Internazionali)-

E’ un insieme di tecniche di compressione solo per immagini in bianco e nero ed è

supportata dai formati di file PDF ed in linguaggio PostScript. Tecnica "senza

perdita".

LZW (Lemple-Zif-Welch)

Supportata dai formati di file TIFF, PDF, GIF ed in linguaggio PostScript. Tecnica

"senza perdita" utilizzata spesso per immagini con ampie aree di unico colore.

1.3.1.5.2. Codec video

I principali sistemi di codifica/decodifica (Codec) di immagini video (MPEG e H26x),

si basano sul così detto approccio ibrido, combinazione di due tecniche differenti:

• a livello Intraframe, cioè per ciascun frame, viene utilizzata la trasformata

DTC (Discrete Cosine Trasform) per una rappresentazione più efficiente e

compatta dei dati

• a livello Interframe, viene utilizzata una struttura di predizione "ad anello"

(motion compensation mediante vettori di moto) che consente di estrapolare

l'informazione contenuta nel succedersi dei fotogrammi nel tempo, per riuscire

a codificare solo le informazioni che descrivono il moto.

50 Specialmente con le immagini, con i video e anche con i file musicali, si usano dei moduli software, detti

CODEC (Coder/Decoder) capaci di fornire rappresentazioni più o meno compatte, di maggiore o minore

qualità, etc.. Tali moduli sono al confine tra le Utilità e il SO, in quanto “pezzi” autonomi di funzioni che, una

volta, appartenevano ai driver di periferica.

U. Biader Ceipidor 44/44

DivX™ (tecnologia DivXNetworks, Inc. (http://www.divx.com/).

Basato sullo standard di compressione MPEG-4; un file AVI con la parte video

DivX™ e la parte audio MP3 (o AC3, codifica Dolby usata nei DVD) è molto ridotto

e quasi di qualità DVD.

• un video compresso con il codec MPEG-2 (film in DVD) può essere ridotto

fino al 10%

• un video di qualità VHS può essere ridotto fino all'1%.

Codec video 9 Series (MS Windows)

Garantisce miglioramenti qualitativi dal 15 al 50% rispetto alla versione precedente.

Ottimizzato per le velocità in bit più alte, questo codec offre una buona qualità a

qualsiasi velocità in bit. Alcune versioni:

Windows Media Video 9

Windows Media Video 9 Advanced Profile

Windows Media Video 9 Screen

Windows Media Video 9 Image

H.26L codificatore ibrido allo stato dell'arte.

Offre un significativo miglioramento delle prestazioni pur mantenendo invariata la

relativa semplicità che caratterizzava gli standard precedenti ITU-T ed MPEG,

aggiungendo migliorie al consolidato sistema ibrido. Utilizza il classico approccio

ibrido con codifica a blocchi, ma con alcune sostanziali differenze rispetto agli

standard precedenti. Alcune delle novità più evidenti si vedono sulla stima del moto

Permette la codifica di video HDTV ( ) nella banda intorno agli 8

High Definition TV

Mbit/s (appicazioni Dvd...) e può essere il nuovo standard per trasmissioni video

wireless, 3GPP e su rete a pacchetto, andando a sostituire H.263+ e MPEG4 .

Anche con una sola linea ISDN (128 Kbps) la qualità video è ottima. ( risparmio sulla

connettività: 1/3, 1/2 del costo attuale).

La denominazione definitiva sarà H.264/AVC (Advanced Video Coding...) e MPEG4

Part 10, a seconda dell'ambito in cui si opera: telefonico la prima, per gli altri la

seconda.

1.3.2. Sicurezza delle informazioni

Le informazioni devono essere trattate con particolare attenzione alla sicurezza. Gli

anglosassoni distinguono tra e , mentre, in italiano, siamo obbligati a parlare di

safety security

e .

integrità sicurezza

• La salvaguardia dell’integrità, cioè dei dati in quanto tali contro una possibile perdita

o alterazione per cause accidentali: rottura del supporto (spesso del disco magnetico),

alterazione per errate o fraudolente sovrascritture, etc.), è affidata a un programma di

frequenti copie di ;

backup

U. Biader Ceipidor 45/45

• Lo strumento per proteggere la sicurezza è invece la crittografia e, in casi particolari,

la steganografia: di seguito sono descritte queste tecniche applicate ai file, in quanto

generici contenitori di informazioni.

1.3.2.1. Crittografia

Le parole chiave, o , sono quelle che permettono la protezione dei documenti da

password

letture non autorizzate o, in certi casi, da manomissioni fraudolente di documenti. All’inizio

le parole chiave erano gestite dai programmi di lettura/modifica, con un livello di sicurezza

piuttosto basso: infatti il programma, prima di consentire l’accesso, confrontava la parola

chiave fornita con quella memorizzata. In questo modo la protezione veniva facilmente

superata in una di due maniere:

1. intervenendo sul programma di lettura/modifica in modo che non eseguisse il test

sulla parola chiave o addirittura usando un programma di lettura/scrittura diverso;

2. scoprendo per tentativi il posto (in memoria di massa) dove era conservata la chiave,

in modo da superare il controllo fornendo la chiave giusta.

Questi metodi sono stati progressivamente abbandonati. Oggi la sicurezza dei documenti è

garantita dalla , un procedimento che utilizza le tecniche della crittografia per

cifratura

rendere inintellegibile il documento, a meno di non possedere la chiave. Senza dilungarsi in

una storia della crittografia, che per usi per lo più militari è vecchia quanto la storia

dell’uomo, si deve affermare che la crittografia moderna si basa su complessi algoritmi

matematici, la cui implementazione ed esecuzione veloce, è resa possibile proprio grazie

all’uso di calcolatori. Tali algoritmi hanno la caratteristica di descrivere funzioni non

51

invertibile : è cioè praticamente impossibile risalire alla chiave esaminando il documento

, ma solo tale documento con la chiave giusta si può ottenere il

criptato decriptando

documento originale in chiaro.

Un esempio banale di crittografia, ma che serve a capire il processo può essere costituito

immaginando di codificare il messaggio

MANGIARE

usando la parola chiave “pippo” utilizzando un algoritmo “a scorrimento” che esplora

ciclicamente (alla fine ricomincia dall’inizio) e da ogni lettera della chiave ottiene un numero

(il numero d’ordine nell’alfabeto) con il quale incrementa il numero dell’alfabeto che

corrisponde ad ogni lettera del testo da codificare (se la somma supera il numero di lettere

dell’alfabeto di 26 allora ricomincia il conto dalla prima lettera). In Tabella 13 è riportato il

dettaglio del processo crittografico.

L’algoritmo più usato oggi (AES), conosciuto anche come

Advanced Encryption Standard

Rijndael, è una sofisticazione del sistema a scorrimento

51 E’ sempre possibile e facile fare delle salsicce da un maiale, ma è praticamente impossibile pensare di rifare il

maiale dalle salsicce.

U. Biader Ceipidor 46/46

Tabella 13. Esempio di crittografia a scorrimento

p i p p o p i p

Par o la ch iave 16 9 16

16 9 16 16 15

C o d ici n u m e r ici m a n g i a r e

T e s t o in ch iar o 13 1 14 7 9 1 18 5

C o d ici n u m e r ici 3 10 4 23 24 17 1 21

C o d ifica co d ici n u m e r ic c j d w x q a u

T e s t o co d if icat o 13 1 14 7 9 1 18 5

De co d ifica m a n g i a r e

T e s t o d e co d if icat o

1.3.2.1.1. Protezione a chiave simmetrica

Il meccanismo di crittografia descritto in precedenza, e le sue versioni più sofisticate,

rappresentano una codifica a chiave simmetrica: la serve sia per codificare che

stessa chiave

per decodificare.

Tale meccanismo è efficace per proteggere dati presenti, ad esempio, sulla memoria di massa,

in quanto è sempre lo stesso attore che codifica e decodifica: la protezione lo garantisce da

intrusioni e azioni di spionaggio. Ma se la codifica deve proteggere un messaggio inviato ad

un altro attore, magari via Internet, è necessario che il corrispondente conosca la chiave.

L’invio della chiave, sia con messaggio separato, sia con altri mezzi, costituisce il punto

debole della comunicazione: la chiave può essere intercettata.

1.3.2.1.2. Protezione a chiavi asimmetriche e firma elettronica

Il meccanismo, detto anche a chiave pubblica, è basato sul concetto che la chiave di codifica

C è dalla chiave di decodifica C . Gli algoritmi sono piuttosto complessi e

diversa

Cod Decod

possono essere trovati sulla letteratura specializzata. La chiave di codifica C e quella di

Cod

decodifica C vengono utilizzate all’interno delle rispettive funzioni e per trasformare

C D

Decod

la sequenza binaria che costituisce un messaggio M nel corrispondente messaggio cifrato X,

risultando:

X = (C ,M) ; M = (C ,X)

C D

Cod Decod

E’ compito di ogni corrispondente (a seconda dei casi trasmittente o ricevente) generare

52

autonomamente la coppia di chiavi: una delle due chiavi viene resa pubblica C e

pubb

trasmessa al corrispondente, mentre l’altra C viene conservata come privata (riservata).

priv

Un intelligente meccanismo, ancora oggi alla base di tutte le codifiche asimmetriche, è quello

RSA, dal nome dei sui “inventori” (R. Rivest, A. Shamir e L. Adleman). Il meccanismo basa

la sua robustezza sull’uso di numeri primi molto lunghi e permette di scambiarsi le chiavi

senza il pericolo che queste vengano intercettate: si scambiano una specie di “mezze” chiavi

che funzionano solo con la metà che resta in possesso delle due stazioni (ricevente e

trasmittente)

52 Il termine pubblica indica che la chiave è trasmessa senza particolari precauzioni, non, come potrebbe essere

erroneamente intuito, che la chiave pubblica è unica, pubblicizzata, e funziona per ogni chiave privata: le coppie

sono comunque univoche.

U. Biader Ceipidor 47/47

Se, in un primo caso, si trasmette un documento riservato ad un corrispondente, la codifica

avviene con la chiave pubblica (C = C ): il corrispondente decifra il messaggio con la

pubb Cod

chiave privata. In questo modo è protetta la segretezza del contenuto, in quanto solo il

possessore della chiave privata può decifrarlo.

Se, al contrario, si vuole trasmettere la propria identità ( ), allora il contenuto

firma elettronica

del messaggio viene codificato con la chiave privata (C = C ) e trasmesso insieme con il

priv Cod

messaggio in chiaro. Il destinatario recupera l’identità del trasmittente usando la chiave

pubblica per decodificare il messaggio e confrontarlo con quello trasmesso in chiaro. Se c’è

coincidenza tra il messaggio decodificato e quello in chiaro, allora il destinatario può

concludere che il messaggio è stato prodotto dal possessore di quella chiave privata C . In

priv

quest’ultimo caso però, affinché si possa parlare di firma elettronica, è necessario che il

possessore di quella chiave privata (usata per la codifica dell’identità) sia proprio

legalmente

quella persona. Esattamente come si fa la firma manuale, la cui appartenenza ad una persona

specifica è stabilita dal deposito presso un notaio (o presso una banca col cartellino di firma),

la firma elettronica è riconosciuta come tale se un ente Certificatore autorizzato certifica

l’identità della persona, cui l’ente stesso ha provveduto ad assegnare (o verificare il possesso)

la chiave privata con trasmissioni sicure.

Con il termine SSL ( ) dello si identifica uno di

Secure Sockets Layer Handshake Protocol

scambio di informazioni sicure attraverso la rete Internet, utilizzando i normali (vedi

browser

capitolo

La legge italiana è tra le più avanzate del settore: DPR 10 novembre 1997, n. 513 e DPCM 8

febbraio 1999, CIRCOLARE 26 luglio 1999, n. AIPA/CR/22 e successive modificazioni e

integrazioni.

1.3.2.2. Steganografia e watermarking

La steganografia ( = nascosto, = scrivere) è diversa dalla crittografia: mentre

stèganos gràfein

quella ha l’obiettivo di nascondere il contenuto di un messaggio (rendendolo inintelligibile),

questa ha l’obiettivo, diverso, di nascondere l’esistenza del messaggio: cioè di fare in modo

che l’osservatore non si renda conto neppure che il messaggio esista.

La steganografia ha origini remote e, per certi aspetti, si è mostrata più efficace della

crittografia: infatti spesso l’esistenza stessa del messaggio sfugge all’osservazione, mentre

con la crittografia il messaggio è palese, anche se “difficile” da decifrare. Molte tecniche

steganografiche sono usate, ad esempio, per la stampa della carta moneta in modo non

falsificabile (filigrana, disegni ologrammatici, etc.).

Gli antichi romani usavano scrivere fra le linee utilizzando un inchiostro invisibile fatto con

sostanze naturali, quali il succo di limone, il latte o l'urina. Ancora oggi i bambini giocano

all'agente segreto, scrivendo messaggi invisibili al succo di limone che poi renderanno

leggibili al calore di una fiamma. Durante la seconda guerra mondiale, i tedeschi

svilupparono il principio del microfilm che consentiva loro di fotografare un testo e ridurlo a

livello di un microscopico puntino.

La funzione steganografica incapsula il messaggio segreto all’interno di un utilizzando

cover

una chiave, che sia la sorgente che la ricevente devono conoscere. Nel file contenitore (cover)

si nasconde così il messaggio ( ). Oltre che a file immagine, la steganografia si

embedded

applica anche a file audio.

U. Biader Ceipidor 48/48

Figura 19. Esempio di cover non modificato e dello stesso contenete un messaggio

Al messaggio steganografico si contrappone una scienza (o un’arte?), la stegoanalisi, che

tenta di scoprirne l’esistenza e di metterne in chiaro il contenuto.

Oggi la steganografia è tristemente usata anche in tutte quelle organizzazioni criminali nelle

quali la presenza stessa del messaggio deve essere occultata, dato che la sua scoperta, anche

se codificato e inintelligibile, potrebbe da sola configurare ipotesi di reato. E’ il caso del

commercio in rete Internet di materiale pedo-pornografico o di ordini di organizzazioni

terroristiche (come Al-Queda).

Il è una tecnica di steganografia specifica, che consente di creare marcature

Watermarking

invisibili, contenenti informazioni di copyright, da includere in immagini e file audio e/o

video. Queste marcature possono essere poi identificate da programmi speciali (in Photoshop,

esiste questa funzione), che ne leggono le diverse informazioni contenute: chi detiene il

copyright, come contattarlo, ecc. In sintesi, mentre con la steganografia si nasconde il

messaggio dentro un “insospettabile”, con il il messaggio è in chiaro e

cover watermarking

53

solo le informazioni sul copyright sono nascoste .

1.3.3. Organizzazione dei dati

I dati sono diventati l’elemento più importante nell’uso dei calcolatori; ne sia esempio la

riflessione sul termine con cui i francesi chiamano il calcolatore, e cioè . Vogliono

ordinateur

infatti privilegiare la capacità di ordinare dati, rispetto a quella di calcolare.

1.3.3.1. Strutture elementari

Alcune strutture elementari entrano a far parte del meccanismo con il quale le strutture più

complesse vengono realizzate. Senza scendere troppo in dettaglio, vengono prese in esame

quelle più semplici, che possono anche fornire elementi per una razionalizzazione e per una

migliore comprensione di alcuni fatti quotidiani,

1.3.3.1.1. Liste e puntatori

Una lista è un insieme di informazioni organizzato in modo che sia riconoscibile il primo

elemento e che, per ogni elemento, sia individuabile il successivo. In questa sede è sembrato

però più opportuno introdurre il concetto di lista in maniera più restrittiva, considerando

l’elemento di lunghezza fissa e utilizzando la serie dei numeri naturali per individuare il

53 Approfondimenti sono disponibili sul sito http://www.digimarc.com)

Digimarc

U. Biader Ceipidor 49/49

primo elemento e il successivo di ogni elemento assegnato. Con queste restrizioni una lista

può essere vista semplicemente come tabella, e cioè come un insieme ordinato di

informazioni (record), ciascuna delle quali contenente uno o più dati ( ).

item

L'elemento record è composto di tutti i sui e, con essi, costituisce un oggetto unico,

item

manipolabile (riordinabile) all'interno della lista "trascinando" sempre però con sé tutti i suoi

.

item

Un esempio di lista può essere costituito da un elenco telefonico, nel quale gli di ogni

item

record siano: - Cognome,

- Nome,

- Indirizzo,

- Numero telefonico.

Il tipo di ordinamento di questa lista potrebbe essere quello alfabetico sul valore del primo

(sul Cognome).

item

In una lista ogni record contiene un numero fisso di ogni è definito attraverso un

item l item

campo di valori a lunghezza fissa (n. di bit o di byte). Questa lunghezza fissa permette di

calcolare la posizione di un record, nella lista, attraverso il suo numero d'ordine (posizione

fisica) nella lista stessa:

.

i = (n-1) l + 1

dove " " è la posizione del primo bit/byte del record, la lunghezza in bit/byte di ogni

i "l"

record, e " " il numero d'ordine del record.

n

Quando una lista cambia ordinamento (nell'esempio si potrebbe considerare un elenco

telefonico riordinato rispetto ai numeri di telefono), possono cambiare i numeri d'ordine dei

record nella lista. Ordinamento

n. Cognome Nome Indirizzo N. Telefono Cognome

1 Abate Mario Via Cima 1 90121710

2 Casale Giuseppe Via Nuova 10 80602110

3 Perini Giulio Via Roma 9 68253055

4 Sandri Lucio Via Assi 2 70121411 Ordinamento

n. Cognome Nome Indirizzo N. Telefono N. telefono

1 Perini Giulio Via Roma 9 68253055

2 Sandri Lucio Via Assi 2 70121411

3 Casale Giuseppe Via Nuova 10 80602110

4 Abate Mario Via Cima 1 90121710

Un " " ( ) è il valore del numero d'ordine di un record nella lista. Costituisce

puntatore pointer

cioè una sorta di "indice puntato" ad identificare univocamente un record. In informatica si fa

spesso ricorso a puntatori per evitare di "muovere" fisicamente grosse moli di dati.

Nell'esempio precedente il nuovo ordinamento, quello per numero telefonico, poteva infatti

essere ottenuto senza creare una seconda tabella di record, ma soltanto creando una tabella di

puntatori:

U. Biader Ceipidor 50/50

n. Puntatore

1 3

2 4

3 2

4 1

Attraverso tale tabella il record 2 della lista ordinata per numero telefonico è il record 3 di

quella ordinata per cognome, il 3 è il 2, e così via.

In questo modo:

- si "spostano" un numero minore di informazioni,

- si riduce lo spazio di memoria occupato (invece delle due tabelle complete ne

esiste una sola, insieme con una tabella di puntatori),

- si eliminano le "ridondanze" e cioè le scritture multiple (due volte in questo caso)

delle stesse informazioni (Cognome, Nome, etc.),

- si garantisce la congruenza dei dati in quanto, essendo questi scritti una sola

volta, non è possibile, ad esempio, che in una tabella sia scritto "Casale" ed in

un'altra "Casali" (con evidenti problemi di confronto).

L'ordinamento di liste, e cioè l'operazione di SORT, è un problema affrontato spesso nella

manipolazione di dati. Un semplice algoritmo, quello "a bolle", che non fa però uso di

puntatori, è illustrato nello schema di Tabella 14.

Tabella 14. Schema di calcolo del bubble sort

Utilizzando un record obiettivo (da trovare):

ƒ Si prende l’elemento intermedio (centrale) della lista

ƒ Si confrontano i valori da ricercare tra obiettivo e intermedio trovato: precedente (<)

o successivo (>); se uguale l’operazione è terminata

ƒ Se non si è trovato (non uguale) l’obiettivo, si riduce a metà la lista

ƒ Quella precedente l’intermedio se valoreobiettivo < valoreintermedio

ƒ Quella seguente l’intermedio se valoreobiettivo > valoreintermedio

ƒ Si ripete il procedimento; quando si riduce a zero la lista, il record obiettivo non è

nella lista

Un caso semplice di uso di puntatori è invece riportato, sempre negli esempi di programmi,

per la ricerca "dicotomica" su una lista ordinata.

Ad una lista ordinata si possono aggiungere record o se ne possono eliminare, secondo criteri

che individuano il record nel suo contenuto.

Ognuna di queste operazioni richiede la conservazione dell'ordine.

Pertanto: - in inserimento, si deve individuare il numero d'ordine del nuovo record e, prima

di effettuare l'inserimento stesso, si deve creare lo spazio spostando di un posto

verso il basso tutti i record già esistenti;

- in cancellazione, si deve individuare il numero d'ordine del record e quindi

spostare di un posto verso l'alto (ricoprendo il record stesso) tutti i successivi.

U. Biader Ceipidor 51/51

1.3.3.1.2. Pile (Stack)

Una pila (stack) può essere vista come una lista dinamica, nella quale un record può essere

inserito o estratto secondo criteri definiti però sulla base dell'ordine di inserimento o

estrazione, e non derivati dalle informazioni contenute nel record.

Due criteri sono disponibili:

- ( ), il record pronto per essere estratto è quello inserito per

FIFO First In First Out

primo;

- . ( ), il record pronto per essere estratto è quello inserito per

LIFO Last In First Out

ultimo.

Alcuni esempi .

Una pila FIFO è la coda ad uno sportello: il e da servire è quello che è entrato per

client

primo.

Una pila LIFO è un ascensore stretto: il primo ad uscire è chi è entrato per ultimo (quello più

vicino alla porta). Anche il caricatore di una pistola automatica è una pila LIFO.

In una pila ad ogni inserimento i record già presenti "scorrono" avanti di un posto rispetto

all'estremo fisso di inserimento. Ad ogni eliminazione "scorrono" indietro di un posto rispetto

all'estremo di estrazione.

Nelle pile LIFO gli estremi di inserimento e di estrazione coincidono, in quelle FIFO sono

opposti.

Figura 20. Pile LIFO/FIFO LIFO Inserimento Estrazione

Estrazione

FIFO Inserimento

Le pile ricorrono spesso nelle architetture dei sistemi informativi automatici. Addirittura

alcune di queste sono implementate nella parte hardware dei calcolatori.

Per evitare spostamenti fisici, e cioè gli scorrimenti in avanti o indietro, pur ottenendo lo

stesso risultato logico, spesso l'implementazione di pile fa ricorso all'utilizzo di puntatori in

una lista.

Se, ad esempio, si definiscono due puntatori, uno P , di estrazione, e uno P di caricamento,

e c

una pila FIFO è una lista dinamica nella quale:

U. Biader Ceipidor 52/52

- la pila è vuota quando P = P e contiene P -P elementi;

e c c e

- l'inserimento ha luogo nella posizione della lista "puntata" da P , e subito dopo P viene

c c

incrementato (P = P + 1);

c c

- l'estrazione ha luogo dalla posizione della lista "puntata" da P , e subito dopo P viene

e e

incrementato (P = P + 1).

e e

... X X X X ...

P

P

e c

Per limitare lo spazio occupato da questa lista dinamica è sufficiente operare l'incremento in

MODULO rispetto alla lunghezza assegnata. Se, ad esempio, la lunghezza assegnata è 10

quando, aggiungendo 1, si raggiunge 11 si riassegna il valore 1 (o zero quando si raggiunge

10).

Allo stesso modo una pila LIFO può essere implementata con un solo puntatore P, in modo

che:

- la pila è vuota quando P = P (es.: P = 0) e contiene P-Po elementi;

o

- l'inserimento ha luogo nella posizione della lista "puntata" da P, e subito dopo P viene

incrementato (P = P+1);

- l'estrazione, dopo aver decrementato P (P = P-1), ha luogo da questa posizione della

lista "puntata" dal valore appena decrementato di P.

... X X X X X ...

P P

o

1.3.3.2. Data base

Una base di dati, in inglese DATA BASE, è una collezione di dati integrata memorizzata in

un sistema di elaborazione utilizzata per mantenere, ed estrarre quando necessario,

informazioni utili.

I dati contenuti nel DATA BASE possono essere consultati, aggiornati o eliminati a seconda

delle esigenze degli utenti. Un sistema per la gestione di basi di dati, o DBMS ( Database

), è un insieme di programmi che consentono di organizzare una base di

Management System

dati e di utilizzarla. Il DBMS, in pratica, è un software che fa da tramite fra i dati e l’utente: il

suo scopo è quello di fornire una rappresentazione logica dei dati. L’utilizzo di questo

software consente di sviluppare applicazione indipendenti dal modo in cui vengono

memorizzate fisicamente le informazioni.

I DATA-BASE sono strutture complesse di dati, organizzate in modo da renderne possibile la

"navigazione" e cioè la ricerca di informazioni (dati tra loro collegati). La struttura di un

DATA BASE fa ricorso ad un insieme di strutture elementari (in particolare di liste) tra loro

collegate attraverso , in modo da consentirne la segmentazione in

logicamente puntatori

gruppi omogenei, riducendo o eliminando le ridondanze.

U. Biader Ceipidor 53/53

Esistono dei commerciali per l'implementazione di DATA BASE che

pacchetti

comprendono:

- utilità per la definizione dello schema fisico, e cioè per la definizione delle liste

- utilità di interrogazione e di stampa di , ad esempio secondo lo standard SQL

report

( ) per i DATA BASE relazionali;

Standard Query Language

- utilità di (salvataggio) e di (ripristino) dei dati, oltre che di

backup restore

caricamento e di cancellazione;

- routine e/o servizi SQL di accesso ai dati attraverso programmi scritti in vari

linguaggi: C, FORTRAN, Pascal, BASIC (anche se in modo più ), etc.

macchinoso

L'organizzazione dei DATA-BASE può essere:

GERARCHICA,

- RETICOLARE,

- RELAZIONALE,

- AD OGGETTI

-

Un prodotto DB commerciale, in ambiente MS-DOS e/o WINDOWS, è ACCESS

(relazionale). Un esempio di altri prodotti relazionali, pensati per o per , ma

main-frame mini

distribuiti anche su PC, è costituito da ORACLE, da INFORMIX, etc.

1.3.3.2.1. DB GERARCHICI

La struttura GERARCHICA è quella in cui ogni dato è collegato ad altri in unico verso (dal

padre al figlio)

Una tale struttura, che è mutuata da quella dell'albero (rami e foglie), permette il

raggiungimento dell'informazione (foglia), partendo da un'altra foglia, soltanto "navigando" a

ritroso fino al genitore comune e ridiscendendo poi lungo l'altro ramo. La struttura di

directory del DOS è un esempio di DB gerarchico, ma anche quella interna di un motore di

54 , del tipo Altavista, Google, Virgilio.

ricerca

54 Quando le interrogazioni sono assai più frequenti che gli inserimenti/cancellazioni, come nel caso dei motori

risulta conveniente pagare il prezzo (in termini di tempo di elaborazione) di una ad

di ricerca, indicizzazione

ogni inserimento: si costruisce per ogni parola (eliminando congiunzioni, avverbi, ecc.) un albero a liveelo di

ogni lettera. Ad esempio per BARCA, un primo percorso individua tutte le parole che hanno B come prima

lettera; fra queste tutte quelle che hanno A come seconda, e così via. Infine segue la lista di tutti i siti

indicizzati che contengono l parola BARCA.

U. Biader Ceipidor 54/54

1.3.3.2.2. DB RETICOLARI

La struttura RETICOLARE aggiunge a quella gerarchica dei legami per permettere passaggi

diretti senza ripercorrere completamente a ritroso fino al genitore comune il percorso di

navigazione.

Un esempio di DB reticolare è quello di una rete telefonica o di un "ipertesto" (quello in cui

da alcune parole evidenziate in un testo si può risalire ai paragrafi descrittivi di quella

parola). 1.3.3.2.3. DB RELAZIONALI

La struttura RELAZIONALE è quella che descrive le informazioni in un modo familiare a chi

opera con matrici. Le informazioni sono organizzate in tabelle. Ad ogni riga corrisponde un

gruppo omogeneo di informazioni, i cui valori sono assegnati in colonna. Un esempio è

costituito da un elenco telefonico o da un qualsiasi foglio organizzato.

I DB relazionali, rispetto ai precedenti, richiedono molto più spazio per essere contenuti

(nell'elenco telefonico ad esempio, i nomi delle vie sono scritti accanto a ogni abbonato e

sono ripetuti per tutti gli abbonati in quella via). Ancora, richiedono uno sforzo superiore per

la navigazione (nello stesso elenco, per trovare tutti gli abbonati in una via, è necessario

leggere tutto l'elenco).

I DB relazionali, che sono di facile e familiare utilizzo, hanno trovato successo solo negli

ultimi 10 anni con l'aumento della potenza dei calcolatori. Anche oggi, però, un DB ben

disegnato deve essere riportato ad una "normalizzazione" fisica che richiama la struttura

reticolare (anche se logicamente appare come una tabella).

E' opportuno ricordare che, talvolta, diverse "formazioni" culturali inducono a usare nomi

diversi per le stesse cose:

U. Biader Ceipidor 55/55

Informatica Ingegneria Matematica

DB relazionali File System

Tabella File Relazione

Righe Record Tuple

Colonne (Field label) Attributi

Item

Valore di colonna Valore (dell’ ) Valore di attributo

item

Tipo di dato Tipo di dato Dominio

esteso

La tecnologia dei DB relazionali si è sviluppata grazie alla sempre maggiore potenza di

elaborazione disponibile. I moderni DBMS ( ) offrono supporti

Data Base Mangement System

sofisticati per le funzioni base di:

• Selezione (Select)

• Ordinamento (Sort)

• Interrogazione (Enquiry)

• Stampa (Report)

Nel DB esiste una Relazione Principale che rappresenta il dei dati:

modello concettuale

• Un elenco di tuple (righe) che rappresentano gli oggetti catalogati

• Ogni oggetto (nella tupla corrispondente) ha i suoi valori degli attributi

• I valori degli attributi sono inclusi nei relativi domini

Tabella 15. Esempio di Relazione Principale

Accanto alla Relazione Principale esistono Tavole di Normalizzazione, che riducono le

ridondanze, garantendo l’allineamento e la salvaguardia di spazio di memorizzazione:

• Definiscono i valori possibili degli attributi nei rispettivi domini

• Codificano tali valori per eliminare ridondanze

• I codici si prestano anche ad essere “chiavi di accesso”

U. Biader Ceipidor 56/56

Tabella 16. Esempio di tabelle di normalizzazione

1.3.3.2.4. DB AD OGGETTI

Il modello orientato ad oggetti ( ) è rappresentato da un insieme di classi, che

object-oriented

definiscono le caratteristiche ed il comportamento degli oggetti del database. Un database

orientato ad oggetti differisce dagli altri modelli elencati per il fatto che in questo tipo di

database gli oggetti memorizzati contengono, oltre ai dati, anche delle informazioni sulle

operazioni possibili. Gli altri modelli invece sono solo dei contenitori di dati, e per

manipolarli bisogna necessariamente ricorrere ad applicazioni utente esterne al database

stesso.

I database ad oggetti sono particolarmente indicati per le applicazioni che richiedono dati

complessi, come ad esempio immagini o suoni. Purtroppo, ad oggi manca un modello per gli

oggetti universalmente accettato e un linguaggio di interrogazione standard. Per questo la

diffusione dei OODBMS ( ) è ancora limitata

Object Oriented Data Base Management System

e riservata ad ambienti ristretti di ricerca ed applicazioni pilota.

1.3.3.2.5. DB con ricerca semantica

In un DB di grosse dimensioni come quelli sottostanti i motori di ricerca, tanto utilizzati in

Internet, è sentito fortemente il problema del reperimento di informazioni con operazioni di

ricerca che forniscano risultati:

• Abbastanza numerose da contenere le informazioni cercate

• Non troppo abbondanti da nascondere, nel “mucchio”, quelle cercate

La tecnica tradizionale dei DB, di cercare per “parole chiave”, sta segnando il passo. Sta

dando invece buoni risultati un tipo di ricerca automatica “intelligente”, capace di identificare

U. Biader Ceipidor 57/57

concetti, oltre che semplici parole. Un esempio è il sistema COGITO© della Semantic

Search, usato anche da Telecom Italia.

55

Sofisticate * , in cui tutti i termini utili per l’analisi di quelle tipologie di documenti

ontologie

sono organizzati attraverso complesse relazioni semantiche, permette di ottenere risultati

promettenti, anche se non ancora del tutto soddisfacenti.

In , ad esempio, Andando su Google e cercando

Telecom Italia

bollette site:www.187.it (ricerca bollette sulle pagine del sito www.187.it)

si ottiene 1 risultato, ossia l’unica pagina del sito che contiene la parola “bollette”; da alcuni

anni, infatti la parola “bolletta” è stata sostituita nel gergo Telecom da “conto telefonico”,

“fattura”, ecc…

Nel sito e cercando (con il motore concettuale Expert System)

www.187.it

bollette

si ottengono circa 70 risultati, cioè le pagine che parlano di bolletta, conto telefonico, fattura.

Figura 21. Esempio di ricerca semantica sul sito 187.it

55 Schema concettuale, esaustivo e rigoroso, definito nell'ambito di un dato dominio; generalmente realizzato

come struttura dati gerarchica, di tutte le entità rilevanti, loro relazioni, regole, assiomi, vincoli del dominio

U. Biader Ceipidor 58/58

In la grande quantità di articoli che il centro di documentazione si trova a gestire

ANSA

quotidianamente è impressionante: a fronte di una tale mole di informazioni in rapida

circolazione, l'attività di catalogazione manuale è molto onerosa in termini di risorse

impiegate e critica per quanto riguarda uniformità e obiettività dei risultati (ci sono più di

3.000 possibili categorie!).

In alcuni casi l'operatore umano può essere più preciso di un programma nel decidere la

categoria giusta, ma è altrettanto vero che è molto difficile ottenere lo stesso risultato di

catalogazione da parte di due operatori diversi per testi assimilabili.

Rispetto alla catalogazione manuale, COGITO® Categorizer presenta il fondamentale

vantaggio di essere consistente (dà sempre lo stesso risultato con gli stessi parametri),

lavorare in continuo (24x7x365), avere prestazioni costanti nel tempo, inserirsi direttamente

nella pipeline documentale, con risultati finali decisamente superiori a quelli di qualsiasi

operatore umano per tempo impiegato e precisione di catalogazione

1.4. Progetto di architettura di sistemi

E’ spesso necessario progettare l’architettura di massima di un sistema. In questo capitolo

sono riportati alcuni elementi guida, prendendo come spunto il progetto di un sistema per un

ufficio pubblico che eroghi servizi al cittadino. Molti esempi si possono riconoscere: una

piccola anagrafe, un assessorato alle politiche del lavoro, un ufficio per la gestione delle

procedure di sicurezza nell’ambiente di lavoro, etc..

1.4.1. Obiettivi

Gli obiettivi sono di efficienza (rispetto alla struttura) e di efficacia (rispetto al servizio

erogato).

• Elementi di efficienza: fornire al personale gli strumenti :

motivazionali

Essere delle informazioni,

confidenti

o Lavorare ,

senza carta

o Coniugare nel tempo e

evoluzione tecnologica sviluppo personale

o

• Elementi di efficacia: offrire agli utenti:

Accesso alle informazioni generali

facile

o Accesso riservato alle informazioni su pratiche personali ( )

trasparenza

o

Tali obiettivi devono essere perseguiti mantenendo costantemente un livello di attenzione

concentrato su:

• Un equilibrio tra risorse operative e risorse informatiche

• Un monitoraggio continuo del livello di soddisfazione degli utenti e di motivazione

del personale.

In Figura 22 è mostrato come una piramide di scelte tecnologiche possa sostenere i due livelli

di attenzione che si concentrano sui risultati attesi: e

motivazione del personale soddisfazione

.

degli utenti

U. Biader Ceipidor 59/59

Figura 22. Piramidi di risultati attesi Personale

Motivato

Supporto da Specialisti

Utenti Esterni

soddisfatti Struttura Informatica

Interna Equilibrata

Trasparenza Operazioni

Rapide e Sicure

Sicurezza

Riservatezza Gestione

Sistema

Accesso

facile e tempestivo Data Base Unico

Degli Utenti

Oggetti e Servizi Specifici

Internet/Intranet

Piattaforma: WINDOWS (MS) o Java (Aperta)

Il progetto di sistema deve infine tenere conto della necessità di trovare un equilibrio tra le

attività svolte “in casa”, con personale della struttura, e quelle affidate “all’esterno”, a

fornitori. Infatti le due alternative offrono vantaggi e svantaggi complementari.

• Attività svolte “in casa”

Vantaggio: Conservazione della conoscenza

o Svantaggio: Scarsa specializzazione

o

• Attività affidate “all’esterno”

Vantaggio: Elevata specializzazione

o Svantaggio: Perdita della conoscenza

o

1.4.2. Architettura client-server

71

Un disegno architetturale deve comprendere alcune funzione distinte, sia per i

client-server

che per i .

server client

• :

Server di DB, con archivi relazionali (MS- , MS-SQL, , Informix,

Server Access Oracle

o etc.) di rete, per la gestione delle abilitazioni (LAN, ) e per accesso

Server intranet

o verso esterno (internet) con protezione ( , )

proxy fire-wall

• , “integrazione” oggetti e servizi:

Client Archivio unico della struttura, con “viste” sui diversi interventi e sulla “storia”

o

U. Biader Ceipidor 60/60

Archivio locale delle “normative” di più frequente consultazione, accesso ai

o DB esterni

Strumenti di Office (informatica Personale): Word (relazioni,corrispondenza),

o Excel (statistiche), PowerPoint (presentazioni), etc.

In Figura 23 è riportato uno schema di sistema basato su una LAN ( o

Local Area Network

56

Rete Locale) aperta all’esterno (via Internet). Se il protocollo di comunicazione usata nella

LAN è lo stesso usato per le comunicazioni Internet (ma sui soli elementi di rete

bloccato

locale) si parla di , riservando alla comunicazione esterne il nome di .

intranet extranet

Figura 23. Esempio di architettura client-server basata su una LAN aperta al mondo esterno

Istituzioni

Intranet

•Paperless office

•Firma elettronica

•Applicazioni “in casa”

Archivio Server di

“unico” degli rete e sito

e delle

utenti WEB

normative Struttura

Informatica interna: Utenti

5-10% del personale

E’ interessante esaminare i costi di un sistema informatico

56 Con il termine di protocollo di comunicazione si identifica un insieme di regole che permettono di definire, in

modo preciso e senza ambiguità, tutte le azioni che i corrispondenti devono intraprendere per comunicare. Ad

esempio un protocollo deve prevedere come si inizia una comunicazione, come si risponde ad una richiesta di

inizio, come si trasmette un messaggio e come si controlla la sua integrità, come si conclude la comunicazione,

anche per (il corrispondente non ha compiuto l’azione attesa entro un tempo massimo e quindi può non

time-out

essere presente in rete, essere guasto, essere sovraccarico, etc.). Vale la pena di ricordare che, anche nel

linguaggio comune, il termine protocollo identifica sempre un insieme di regole: protocollo d’intesa, protocollo

sperimentale, etc..

U. Biader Ceipidor 61/61

Figura 24. Costi tipici di un sistema informatico

HW: hardware e

ƒ 450

software di base (2-4 400

350

K€/persona/mese) 300

SW: sviluppo Oggetti

ƒ 250 Anno I

e Servizi (400-500 200 Anno II

Anno III+

150

M€) 100

Ass/Man.:

ƒ 50

0

assistenza SW (50- HW SW Ass/Man

100 M€/anno) e

manutenzione (10-

15% di HW per anno)

1.4.3. Architettura peer to peer

L’architettura (“da pari a pari”) permette di realizzare una rete di computer in cui

peer to peer

non è definito il ruolo di e, né quello di servitore, ma è comunque definita una

client

possibilità di collegamento “paritetico”, sulla base delle abilitazioni e dei permessi di accesso

che ogni elemento della rete decide di concedere agli altri.

Una simile architettura è molto semplice, limitata a collegamenti “domestici” di poche unità

(20-25), in quanto sensibile ai conflitti di assegnazione di risorse: quando due elementi della

rete richiedono l’uso delle stesse risorse, viene a mancare la possibilità di risolvere il conflitto

attraverso il . Al crescere del numero di unità la rete rallenta drasticamente perché i

server

conflitti devono essere risolti di volta in volta con interrogazioni tra tutti gli elementi.

Le reti geografiche basate su paradigma sono oggetto di studio e ricerca per

peer to peer

sostituire in maniera efficiente quelle basate su , superando i limiti originali.

client-server

1.4.4. Strategie di difesa delle informazioni dai guasti

Un sistema è soggetto a guasti, sia di origine esterna, sia dovuti a rottura casuale di

componenti del sistema.

• Agenti esterni:

Interruzione di alimentazione elettrica

o Errori umani e interventi di personale non autorizzato

o

• Elementi del sistema:

Guasti dei dischi (arresti o rotture irreversibili, con impossibilità al recupero

o dei dati)

Guasti dell’unità centrale e/o delle comunicazioni con le varie periferiche

o Guasti (Crash) del software (sistema operativo o Data Base)

o

U. Biader Ceipidor 62/62

1.4.4.1. Architetture fault tolerant

Si possono attuare diverse soluzioni architetturale a seconda del livello di severità dei guasti

che si ritiene poter tollerare, limitando i costi di investimento e manutenzione.

• Garanzia sui dati:

Si tollera l’interruzione del servizio, e la perdita eventuale dei dati delle

o transazioni in corso al momento del guasto (limitata disponibilità)

Si garantisce che non ci sia perdita di dati archiviati

o

• Garanzia sul funzionamento:

Si garantisce la continuità del servizio, non interrompibile (elevatissima

o disponibilità)

In Figura 25 e in Figura 26 sono riportati rispettivamente gli schemi delle due architetture in

57

grado di offrire una garanzia limitata ai dati o anche alle funzionalità non interrompibili

(continuità del servizio).

Figura 25. Soluzione con garanzia sui dati

Unità Centrale

Doppia Doppia

Scrittura Scrittura

Dischi Dischi

Singola

servizio mirror

Lettura

57 Nelle macchine della classe PC, queste architetture ridondanti sono conosciute come RAID, Redundant Array

All’interno di questa tipologia è noto il RAID-0, che non offre nessuna

of Independent (or inexpensive) Disks.

ridondanza ma solo una distribuzione di settori (appartenenti alla stessa traccia logica) su più piatti fisici, in

modo da accelerare la ricerca su settori diversi (le testine si muovono indipendentemente). Il RAID-1 offre

anche il (duplicazione integrale “a specchio”) completo, mentre il RAID-2 fino al RAID-5 eseguono

mirroring

la copia dei dati scritti in modo compresso (per risparmiare spazio)

U. Biader Ceipidor 63/63

Figura 26. Soluzione con garanzia di non interrompibilità

Periferiche

a Doppio

Controllo

Unità Centrale 1 Unità Centrale 2

Watch Dog

Dischi a

Dischi Dischi Doppio

servizio mirror Controllo

Naturalmente, perché il sistema possa funzionare, anche con le diverse soluzioni che possano

garantire la sicurezza, deve essere assicurata sempre l’alimentazione elettrica, senza

interruzioni neppure di breve durata (basterebbero pochi istanti per vanificare una scrittura in

corso su disco o per “pulire” la RAM. In Figura 27 è riportato lo schema che assicura la

continuità elettrica.

Figura 27. Schema di un gruppo di continuità elettrica Rete Elettrica

L’alimentazione è sempre garantita da batterie

in tampone e inverter

Se viene a mancare l’alimentazione da rete, si

accende il gruppo elettrogeno: la capacità delle

batterie garantisce continuità per pochi minuti

Trasformatore

Raddrizzatore ca

cc Commutatore

Inverter

.

ca Batterie

Gruppo di Continuità Gruppo elettrogeno

L’architettura di un sistema si presenta come in Figura 28.

fault tolerant

U. Biader Ceipidor 64/64

Figura 28. Architettura tipo di un sistema fault tolerant Istituzioni

Intranet

Sistema Fault Tolerant

a Livello di tolleranza Server di

Archivio o scelto rete e sito

Data Base WEB

Alimentazione da gruppo di continuità Utenti

Mentre i costi di sistema salgono in modo consistente

Figura 29. Costi di un sistema fault tolerant

fault tolerant

HW1:

ƒ 200

per i dati 150

fault tolerant

HW2:

ƒ Anno I

per i dati e per le 100 Anno II

funzioni Anno III+

50

0 HW1 HW2

1.4.4.2. Organizzazione contro i guasti

In sintesi, diverse strategie sono utili per contenere i danni derivanti d possibili guasti:

58

• Back-up periodico1 :

58 Il back-up periodico è comunque una necessità: garantisce anche da catastrofi (incendi, furti, crolli, etc.) se i

supporti sono conservati in locali diversi da quelli di servizio.

U. Biader Ceipidor 65/65


PAGINE

83

PESO

1.07 MB

AUTORE

Atreyu

PUBBLICATO

+1 anno fa


DESCRIZIONE DISPENSA

Questa dispensa fa riferimento al corso di Informatica e Tecnologie della Comunicazione Digitale tenuto dal prof. Biader. Qui di seguito sono elencati gli argomenti trattati. Unità di misura dell’informazione; architetture nell’ICT; struttura contenuti digitali; progetto di architettura di sistemi; ICT da strumento a motore dello sviluppo economico.


DETTAGLI
Corso di laurea: Corso di laurea in scienze e tecnologie della comunicazione (POMEZIA, ROMA)
SSD:
A.A.: 2010-2011

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Atreyu di informazioni apprese con la frequenza delle lezioni di INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALE e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università La Sapienza - Uniroma1 o del prof Biader Ceipidor Ugo.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Informatica e tecnologie della comunicazione digitale

Elementi di Informatica - Web
Dispensa
Informatica Generale - Sistemi e logica
Dispensa
Informatica Generale - Tecnologie
Dispensa
Copyright e Aspetti Giuridici
Dispensa