Piazza Mercato | Aziende | Shopping | Annunci | Software
Indice
Millennium Bag »
Home

Millennium Bag

Affrontare Y2K sembra semplice: basta portare le codifiche degli anni da due a quattro cifre. Ma questa procedura richiede più tempo di quanto ne resti a disopsizione.

Una spiegazione delle radici psicologiche da cui è nato il problema informatico dell'anno 2000 si può scovare in un posto sorprendente: Alice nel Paese delle meraviglie di Lewis Carroll. Nel famosissimo classico per bambini, il Cappellaio matto domanda: "Il tuo orologio segna anche l'anno?" e Alice replica: "Naturalmente no, perché l'anno rimane lo stesso così a lungo...".

Pochi decenni fa lo "spazio" digitale scarseggiava: la memoria dei computer era costosa e le schede perforate erano larghe solo 80 colonne.

Si sosteneva anche che le abbreviazioni consentivano di ridurre il tempo di immissione dei dati da tastiera. Un sistema della Amway Corporation, multinazionale produttrice di saponi e altri articoli per l'igiene personale, respinse prodotti che per errore erano stati considerati vecchi di un secolo. E alcuni registratori di cassa computerizzati sono andati in tilt quando i clienti hanno cercato di utilizzare carte di credito con data di scadenza 00. In realtà, secondo uno studio condotto un anno fa su varie aziende, più del 40 per cento delle organizzazioni ha già avuto qualche tipo di inconveniente legato all'anno 2000 o, per usare una sigla ormai divenuta famosa, al Y2K.

Il cuore del problema Y2K

Ma che cosa, esattamente, sta causando questi problemi? Un esempio eloquente è quello dei risparmi versati su un deposito nel 1999 e ritirati nel 2000. Se il programma presso la banca calcola gli interessi maturati cominciando a sottrarre 99 da 00, il computer crederà che il denaro sia stato depositato per 99 anni!

Si consideri un trabocchetto più subdolo: una compagnia di assicurazioni che deve periodicamente cercare le polizze rimaste inattive per almeno cinque anni in modo da cancellarle dal proprio database. Quando il programma prende in esame il valore di ULTIMO-ACCESSO, aggiunge cinque alle due cifre dell'anno. Se il risultato è minore dell'anno in corso, cancella il record. Tuttavia, se ULTIMO-ACCESSO vale 96, si verifica un errore. Se la codifica è a due cifre e tutto ciò che eccede viene troncato, 96 + 5 diventa 01, che è minore di 99.11 risultato sarà un errato annullamento della polizza. (Nella realtà non vengono in genere utilizzati programmi così scadenti come quelli dell'esempio; eppure anomalie di questo tipo si sono verificate).

In altre situazioni, un errore Y2K potrebbe letteralmente avere conseguenze fatali. Ricorrendo a un programma che calcola il dosaggio di certi farmaci, un medico potrebbe digitare "16-03-00" per indicare la data di nascita di un bambino. Il computer potrebbe scambiarlo per un paziente centenario e consigliare un dosaggio ottimale per un anziano, ma mortale per un neonato. Questo, dunque, è il cuore del problema dell'anno 2000. Si sono memorizzati gli anni in modo ambiguo, e la confusione sta prefigurando un disastro. Molte organizzazioni hanno semplicemente sostituito i programmi errati con nuovo software 2OOO-compatibile.

Ma che cos'è una data?

Quando si divenne consapevoli di Y2K, la prima soluzione ipotizzata fu quella apparentemente più semplice e definitiva: se abbiamo tolto due cifre alle date, semplicemente rimettiamole.

Lasciando da parte per un istante la complessità richiesta nella modifica dei terabyte di dati memorizzati nei sistemi di una multinazionale, questa soluzione solleva una questione apparentemente banale, eppure fondamentale: che cos'è una data? Dopo tutto, prima di poter aggiungere due cifre alla codifica di ogni anno, occorre trovare le date.

Va ricordato che i computer non sanno che cosa rappresentino i dati che elaborano. Sono gli esseri umani a dare un significato alle informazioni fornite ai computer e alle risposte ricevute. I dati con valori compresi tra O e 99 potrebbero rappresentare percentuali di una certa quantità, senza contare che spesso anni a due cifre sono nascosti all'interno di altri dati, per esempio all'interno di un lungo numero di serie.

Sono stati sviluppati strumenti automatici per individuare date. Uno dei problemi collegati alla ricodifica degli anni a quattro cifre è che i programmatori dovrebbero ridisegnare il tracciato di certe stampe, documenti e videate per far posto alle cifre aggiunte. Una complicazione più grave è che anche le applicazioni software che fanno riferimento alle date espanse dovrebbero essere modificate.

Si consideri il database del personale di un'azienda in cui i nomi dei dipendenti siano memorizzati dalla colonna 1 alla colonna 30, le date di nascita dalla 31 alla 36, gli stipendi dalla 37 alla 42 e così via. Se la data di nascita è espansa per poter registrare l'anno su quattro cifre, lo stipendio dovrà essere regi-strato due posizioni più a destra; con il risultato che ogni programma che accede a quell'informazione dovrà essere modificato per ottenere i dati dalle posizioni corrette.

Tipicamente, queste modifiche sono fatte sul "codice sorgente" (o "source"), che i programmatori scrivono utilizzando linguaggi come COBOL e C. Il software è quindi convertito in una forma - chiamata modulo oggetto o "load" - che il computer può comprendere. La traduzione è effettuata da un programma denominato compilatore. In certi casi, tecniche di programmazione accettate da una versione precedente del compilatore possono diventare non più valide, in modo molto simile a quanto avviene a documenti creati con la versione 3 di un programma di word processing e rifiutati dalla versione 5 dello stesso prodotto. Di conseguenza, il vecchio codice sorgente recentemente corretto per trattare Y2K potrebbe non essere compilabile correttamente nel nuovo modulo oggetto, a meno di effettuare ulteriori modifiche.

A peggiorare le cose è il fatto che molte aziende hanno perso parte dei loro codici sorgente. Benché la quantità di software mancante sia solitamente inferiore al 3 o 4 per cento, persino questa esigua quantità può essere estremamente problematica, poiché i programmatori non possono modificare diretta-mente un modulo oggetto. Naturalmente l'espansione a quattro cifre condurrebbe, in occasione del passaggio dall'anno 9999 all'anno 10 000, al problema Y1OK, ma questo sarà argomento di un altro articolo...

Windowing: una soluzione

Una soluzione alternativa è insegnare ai computer che 00 significa 2000. I programmatori hanno esteso questa semplice idea fino a una strategia, chiamata "windowing", consistente nel separare gli anni da 00 a 99 in due gruppi rispetto a un numero accuratamente scelto, detto base (45, per esempio). Gli anni a due cifre maggiori o uguali alla base sono considerati del secolo corrente (68 diventa 1968). Gli altri si considerano appartenenti al XXI secolo (13 diventa 2013).

Utilizzando questo criterio, un programmatore può scavare in un codice sorgente, individuare i riferimenti a date e modificare opportunamente i calcoli effettuati su di esse. Inoltre pone problemi allorché le informazioni devono essere trasferite tra sistemi che usino basi diverse.

Per esempio, una base 25 potrebbe essere appropriata per un programma che gestisce fatture di una società fondata nel 1928. Ma un'altra applicazione che effettui proiezioni di vendite a lungo termine per la stessa azienda potrebbe richiedere una base 70. Il problema si pone quando i dati devono passare da un sistema all'altro: l'anno 2031 potrebbe diventare 1931 o meno, generando confusione nei calcoli.

A complicare le cose, i programmatori hanno spesso usato finestre variabili (si parla di "windowing mobile"), in cui la base cambia nel tempo. Ovviamente risulta cruciale tenere traccia della base variabile per evitare conflitti con altri sistemi. Inoltre i programmatori devono rendersi conto che rappresentare l'anno 1968 in un programma con base 70 richiederà ulteriori aggiustamenti al software.

Variare le date

In un'altra strategia per Y2K, si ricorre, con astuzia, all'aritmetica di base. Si consideri il calcolo OO - 99 = - 99. Se l'operazione in-tende rappresentare 2000 - 1999, allora il risultato - 99 è ovviamente sbagliato. Ma si può notare che O0 - 99 è equivalente a (00 + 5) - (99 + 5). Se questa espressione è calcolata su due cifre, diventa 5 - 4 = 1. Sommando 5 sia a OO sia a 99, si sono ricondotte le date al medesimo secolo, cosicché il calcolo 2000 -1999 ha potuto fornire il risultato corretto usando solo due cifre.

Il 1° gennaio del 2000 è un sabato; il 1° gennaio del 2005 no. Quindi la tecnica di sommare 5 a tutti gli anni non funziona nel caso dei programmi che richiedono di distinguere i giorni della settimana. Sostanzialmente esistono due cicli per controllare i giorni della settimana: un ciclo di sette per i diversi giorni e uno di quattro per gli anni bisestili. Moltiplicando i due ci si riconduce a un ciclo complessivo di 28 anni. Il 1° gennaio del 2000 sarà sabato proprio come lo è stato il 1° gennaio del 1972 e come lo sarà il 1° gennaio del 2028. Sfruttando questa regolarità, la tecnica di "incapsulamento" aggiunge 28 agli anni a due cifre prima di effettuare ulteriori calcoli. Una volta completati questi calcoli, dalle date si sottrae 28.

Benché l'incapsulamento possa essere usato per evitare molti problemi Y2K, la tecnica diventa pesante per elaborazioni complesse.

Oltretutto, l'incapsulamento non funziona quando le date sono "sommerse" in altre informazioni in cui determinate cifre servono per processi di validazione. Supponiamo che 7289-47-99-5 sia il numero di codice di un prodotto, in cui 99 rappresenta l'anno di scadenza e l'ultima cifra, 5, sia usata per verificare la correttezza dell'intera sequenza. In questo esempio, il 5 è ottenuto sommando 7289, 47 e 99 e prendendo l'ultima cifra del risultato della somma, 7435. I cosiddetti check-digit sono usati spesso per validare carte di credito, codici a barre e codici fiscali. Ovviamente aggiungere con disinvoltura 28 all'anno a due cifre dovrebbe comportare una modifica anche al check-digit.

Le tre tecniche - espansione della data, win-dowing e incapsulamento - sono state finora impiegate nel 95 per cento dei casi di modifiche al software esistente per il problema Y2K. Molte grandi aziende che possiedono sistemi informatici comprendenti migliaia di programmi hanno adottato una procedura mista.

Sono disponibili strumenti per automatizzare l'applicazione delle tre soluzioni, ma nessuno di essi è esente da errori.

Sembra assurdo, ma un fattore che ostacola pesantemente le attività di modifica deriva dal fatto che parte del software tiene già conto del cambio di secolo. Alcuni programmatori avevano provveduto a utilizzare propri schemi di windowing o di incapsulamento prima che si diffondesse la consapevolezza di Y2K. Attuare ulteriori modifiche a questo software può portare a una confusione digitale, con windowing multipli con basi diverse oppure combinazioni di windowing e incapsulamento sugli stessi dati.

Individuare se un'applicazione software sia stata precedentemente modificata può essere difficile, specialmente se il codice è mal scritto e scarsamente documentato. Il programma dovrà essere riscritto in modo che questa richiesta sia effettuata in maniera diversa.

Un disastro digitale?

Tutti i fattori esaminati, uniti a numerosi altri, hanno portato a una diffusa incertezza e ad animate controversie intorno a Y2K. A un'estremità dello spettro, alcuni esprimono opinioni stupidamente catastrofiste: "C'è la possibilità che non potremo mai più disporre della corrente elettrica..." (espressione realmente utilizzata da un oratore in un recente convegno sull'anno 2000). All'altro estremo c'è un disinformato ottimismo: "Y2K è avvenimento di un giorno. Ogni problema sarà risolto nel giro di un fine settimana".

I primi ignorano la capacità della nostra società di affrontare le sfide.

D'altro canto, coloro che sottovalutano il problema Y2K ignorano la vulnerabilità tecnologica della società moderna, fondata su sistemi complessi e interconnessi. In particolare, singole anomalie locali possono estendersi rapidamente attraverso un sistema, con risultati disastrosi.

Lo scorso anno Galaxy IV, solo uno dei numerosi satelliti impiegati per le comunicazioni, ha avuto un problema, e milioni di cercapersone si sono spenti improvvisamente. Ad Auckland, in Nuova Zelanda, un singolo cavo danneggiato sovraccaricò l'intero sistema e provocò un black-out durato sei settimane.

Questi eventi sono accaduti senza che nessuno se li aspettasse. Il caso Y2K è diverso: è stato previsto. In tutto il mondo informatici professionisti stanno modificando gran parte del software esistente.

Trascurare questo fatto significa dimenticare le lezioni delle batoste informatiche del passato, compresi i fiaschi dei computer alle Olimpiadi di Atlanta e all'aeroporto internazionale di Denver. Le installazioni di sistemi informatici complessi che sono risultate prive di errori sono davvero rare. La preoccupante peculiarità dei progetti Y2K è che la data di completamento non può essere rinviata.

Chi siamo | Scrivici | Privacy | Responsabilità | Servizi | Offerte
Tutto il materiale contenuto in questo sito è tutelato dalla legge sul copyright e sul diritto d'autore. Ogni riproduzione anche parziale è vietata.