Millennium bug, conosciuto anche come Y2K bug, è il nome che è stato attribuito ad un potenziale difetto informatico (bug) che avrebbe dovuto manifestarsi al cambio di data dalla mezzanotte del 31 dicembre 1999 al 1º gennaio 2000 nei sistemi di elaborazione dati, sia personal computer che grandi elaboratori (mainframe) e controllori di processo dedicati embedded. Principalmente, il rischio derivava dalla possibilità che fossero ancora in uso rappresentazioni sintetiche della data, con le sole ultime due cifre per indicare l'anno. Questo metodo era stato in effetti molto utilizzato nella "preistoria" informatica, quando la memoria era scarsa e costosa. In queste condizioni, un sistema affetto dal bug avrebbe frainteso "2000" con "1900", con conseguenze difficili da immaginare. Già nella metà degli anni ottanta la comunità internazionale iniziò ad interessarsi al problema. Temendo conseguenze catastrofiche per l'economia o la salute, quali ad esempio il blocco delle centrali elettriche o nucleari, istituti bancari o reti di telecomunicazione, vi furono ingenti investimenti volti alla rimozione delle cause del bug. Il British Standards Institution (BSI) istituì la certificazione di conformità all'anno 2000 (Y2K compliance, in inglese) per i sistemi esenti o corretti in modo appropriato e che integrava anche il tema degli algoritmi per il calcolo degli anni bisestili. Al cadere della data critica non fu registrato nessun evento significativo dagli osservatori preposti; secondo alcuni, grazie a questo sforzo, secondo altri, invece, il rischio era stato largamente sopravvalutato. Il problema fu il soggetto del libro "Computers in Crisis" di Jerome e Marilyn Murray, pubblicato nel 1984 da Petrocelli e ripubblicato nel 1996 da McGraw-Hill con il titolo più esplicito "The Year 2000 Computing Crisis". Il primo articolo pubblicato su usenet che menziona questo problema è apparso nel newsgroup net.bugs a firma di Spencer Bolles il 19 gennaio 1985.
Il British Standards Institution (BSI) offrì un metodo chiaro per indirizzare gli sforzi in fase di revisione dei sistemi. Si può riassumere nelle quattro regole seguenti:
Regola 1: Nessun valore di data corrente causerà alcuna interruzione di funzionamento (No value for current date will cause any interruption in operation).
Regola 2: Funzionalità basate sulla data dovranno avere un comportamento coerente con date precedenti, in corso o successive l'anno 2000 (Date-based functionality must behave consistently for dates prior to, during and after year 2000).
Regola 3: In tutte le interfacce e nei dati memorizzati, il secolo di tutte le date deve essere specificato esplicitamente oppure mediante algoritmi non ambigui o regole deducibili (In all interfaces and data storage, the century in any date must be specified either explicitly or by unambiguous algorithms or inferencing rules).
Regola 4: L'anno 2000 deve essere considerato un anno bisestile (Year 2000 must be recognized as a leap year).
|