Сергей Бобровский
Приближается 1 января 2000 г. - день, когда многие компьютерные системы начнут неправильно работать из-за так называемой ошибки Y2K. Программисты 80-х годов отводили на хранение года только два десятичных разряда (00 - 99), из-за чего 1 января 2000 г. превратится в 1 января 1900 г. Шансов на то, что удастся исправить большинство компьютерных систем, практически нет, и на Западе уже начинают разрабатывать стратегические программы стабилизации экономики на случай сбоев в ПО.
Эксперты считают, что общемировые потери от нерешенной проблемы Y2K могут достичь 1 трлн. долл. По данным корпорации CSC, за первые пять дней 2000 г. возможные убытки Федерального банка США из-за неверного определения курса доллара в разных странах мира составят от 2,4 до 3,3 млрд. долл., а частного бизнеса - 2,2 млрд. долл. Из-за сбоев в глобальной банковской системе Америка недосчитается еще 5,2 млрд. долл. И это прогноз только на первую неделю!
К началу 1998 г. всего 20% крупнейших компаний США имели продуманную стратегию обработки новых дат. При этом общее число фирм, пытающихся решить проблему Y2K, за 1997 г. выросло менее чем на 10% и приблизилось к отметке 30%. Такие темпы удручают. Более 80% компаний признают, что они недооценили расходы на Y2K (стоимость исправления одной строки кода составляет примерно 1,1 долл.). При этом более 90% компаний отметили, что найти новых сотрудников требуемой квалификации для работы над проблемой Y2K практически невозможно.
Ситуация с Y2K гораздо серьезнее, чем может показаться на первый взгляд. Ошибка в популярном продукте всего одной фирмы может вызвать сбой в работе нескольких отраслей. Непонятно пока, как скажутся ошибки Y2K в сложных системах. Во многих КИС, например, могут “рухнуть” тарифные сетки, так как нередко строки прейскурантов закрываются по дате, но не уничтожаются, а хранятся в базе - а вдруг программа опять начнет их учитывать?
Возникнут проблемы в работе локальных и глобальных сетей, так как роутеры, маршрутизаторы и другая аппаратура обычно синхронизируют потоки информации по текущим дате и времени. Во многих подобных системах, разработанных в 80-х годах, для хранения года используются два разряда.
Совсем плохо обстоит дело с встроенным ПО реального времени. Это касается в первую очередь атомных станций, заводов с непрерывным циклом производства, предприятий добывающей промышленности, в их работе возможны любые сбои вплоть до полной остановки. На таких предприятиях могут использоваться десятки тысяч устройств на базе микропроцессоров (МП; суммарное число реально действующих в промышленности МП превосходит количество ПК примерно в сто раз). При этом некоторые из этих устройств даже не имеют периферийных входов для тестирования.
Правда, военные системы из-под контроля не выйдут и самолеты падать, конечно, не будут, хотя мелкие недоразумения не исключены. Не так страшна и ситуация с бытовой электронной техникой - ее поколения меняются достаточно быстро. Но если вы покупаете бытовую технику с встроенным МП, все же поинтересуйтесь у продавца, поддерживает ли утюг, пылесос или холодильник, определяющие паузы в работе по встроенным таймерам, даты 2000 г.
Программно проблема Y2K решается сравнительно легко. Например, если в базу данных трудно добавить два дополнительных разряда для хранения года, то можно просто периодически сдвигать дату назад (рекомендуется на 28 лет). Но некоторым программам требуется работать со всеми годами столетия или с временным диапазоном более 100 лет. Тогда имеется другой выход - использовать в формате YYMMDD два байта года (YY) как его двоичное, а не десятичное представление, получая диапазон от 0 до 65,535. Есть и другие решения.
К сожалению, при исправлении реальных ошибок Y2K возникают самые непредсказуемые загвоздки. Они связаны с тем, что разрабатывались многие программы давно, их внутренняя логика забыта, во многих продуктах используются разные форматы даты, а при их обработке старые компиляторы могут генерировать некорректный код. Нередко при создании ПО применялись готовые, но давно устаревшие библиотеки без исходных текстов, а найти их автора невозможно и т. д. и т. п. Кроме того, системы обязательно надо тестировать в комплексе с другим ПО и желательно в условиях, максимально приближенных к реальным, но ведь пока даты 2000 г. можно только смоделировать!
Новые продукты для исправления проблемы Y2K выпускаются практически каждый день. Хотя они в принципе не могут дать 100%-ной гарантии работоспособности, но нередко позволяют выявить удивительные ошибки. Так, при использовании системы Validor 2000 фирмы B-Tree, моделирующей даты 2000 г., программа одного из клиентов сообщила, что работает нормально, сначала 31 декабря 1999 г., а потом продолжила “нормальную” работу 32, 33 и 34 декабря...
Конечно, наиболее важные информационные системы Америки к 2000 г. обязательно будут обновлены. Федеральная авиационная администрация объявила, что ее системы управления воздушным движением, основанные на старых мэйнфреймах IBM 3083, будут полностью заменены вместе с компьютерами. Образцово подошли к проблеме Y2K ВВС США, которые планируют переделать все свои системы уже к концу этого года. Данная задача получила у военных высший приоритет, на ее решение выделено 400 млн. долл. Однако большинство госдепартаментов США пока не вышли даже на 30%-ную отметку по числу обновленных систем (по Пентагону в целом переработано около 35% ПО). А совсем ничего не сделано, в частности, в департаментах США по образованию и перевозкам.
Интересно, что, по словам аналитика Лоу Маркоссио из фирмы Gartner Group, ряд крупнейших западных фирм, производящих финансовое ПО и известные КИС (некоторые из них, кстати, продаются в России) еще даже не выделили деньги на решение проблемы Y2K!
Следует прислушаться и к мнению Роберта Мартина, менеджера фирмы Mitre, который предлагает в случаях, когда возможные сбои будут незначительными, не предпринимать ничего, так как при корректировке работающих программ в них можно внести новые ошибки.
Итак, сроки сдачи проекта Y2K приближаются. И перенести или отложить их, увы, не удастся.