Что произойдет с продуктами Microsoft в ночь с 31 декабря 1999 на 1 января 2000

Новичков Александр
novichkov@interface.ru


Конечно, лучше было бы озаглавить статью несколько по-иному, а именно: "что может произойти:.". Хотя эта частность может остаться незамеченной (не пережитой) большинством пользователей, применяющих программные решения компании Microsoft, ведь данная компания одной из первых начала тестировать программные продукты на соответствие 2000 году (корректной работы).

Все новые продукты, и практически все "взрослые" давно научились правильно воспринимать и переход в новое тысячелетие, и верно распознавать и выделять високосный год.

Честно говоря, такого количества проблем и такой шумихи в прессе можно было избежать, если б на заре развития электронных машин среди научной общественности доминировали разработчики-романтики, а не прагматики. Ведь, как известно, основная проблема 2000 связана с тем, что внутренне представление даты, а точнее года, сводится к запоминанию только последних двух цифр - это факт общеизвестный и не требующий дополнительных разъяснений.

Такое положение возникло по причине дороговизны оперативной памяти в первых компьютеров, и разработчики-прагматики решили, что двух чисел для даты хватит вполне, а потом разберемся:

Вот зто самое "потом" наступило, и что?! В Голливуде полным ходом снимают фильмы-катастрофы, да в такой спешке, будто их камеры и компьютеры точно "вырубятся" в Новый год. Журналисты наперебой пугают обывателей событиями и последствиями ошибки 2000: то атомные станции взорвутся, то в банках счета обнуляется, то ракеты с ядерным зарядом самопроизвольно стартанут, нанеся вероятному противнику сокрушительное поражение.

Самое обидное в слышимом и видимом не то, что большая часть неправда, а то, насколько люди плохо понимают саму проблему. Давайте попытаемся проанализировать все, что может случиться с программным обеспечением от компании Microsoft

Итак, первое успокоение от Microsoft: "Стремясь более полно учесть потребности наших пользователей, мы по многим нашим продуктам предлагаем подробные сведения об их способности правильно работать с датами.
Корпорация "Майкрософт" будет продолжать работу по сбору, проверке и публикации этой информации. Информация о проблеме 2000 года, предоставляемая корпорацией "Майкрософт", будет относиться как к деловым, так и к техническим аспектам проблемы.
В процессе работы с нашими пользователями мы определили три основных вопроса, на которые они ждут ответа от "Майкрософт".
 

Далее компания предлагает четкую классификацию своих продуктов на отсутствие в них проблемы 2000. То есть компания проводит тестирование всей линейки своих продуктов на отсутствие в них ошибки, и в случае возникновения таковых - исправляет их и ставит пользователей в известность. В случае если продукт относится к категории "не соответствует", "Майкрософт" будет предоставлять информацию о том, каким образом организации могут обеспечить соответствие этого продукта установленным требованиям.
 

Если продукт соответствует всем предъявляемым нормам перехода в новое тысячелетие, компания делает такое заявление: " Программный продукт "Майкрософт", соответствующий требованиям 2000 года, будет без ошибок обрабатывать даты при переходе к новому году (с 31 декабря 1999 г. к 1 января 2000 г.) в случае, если номер года используется в сочетании с правильно введенными датами в соответствии с документацией к продукту, а также рекомендациями и особыми случаями, указанными в "Руководстве "Майкрософт" по продуктам и их соответствию требованиям 2000 года" ("Year 2000 Product Guide"). Необходимо учитывать, однако, что и все остальные продукты (другие программы, программно-аппаратные и технические средства) при работе с данным продуктом "Майкрософт", должны обеспечивать правильный обмен данными, представляющими даты. Продукт "Майкрософт", соответствующий требованиям 2000 года, будет определять 2000 год как високосный.

Заявление о соответствии требованиям относится к продукту, произведенному и поставленному корпорацией "Майкрософт". Оно не распространяется на функциональные компоненты, настраиваемые пользователем, а также на добавочные ("надстроечные") функциональные компоненты и продукты третьих компаний, включая макросы и доступные пользователю средства программирования и форматирования. Заявление корпорации "Майкрософт" о соответствии требованиям не является гарантией, оно не расширяет условий и не продлевает срока какой-либо из действующих гарантий. Гарантии, предоставленные на продукты корпорации "Майкрософт" (при их наличии), изложены в лицензионном соглашении с конечным пользователем, которое прилагается к продукту, либо в условиях лицензионного соглашения, на основании которого вы пользуетесь продуктом "Майкрософт".

Теперь давайте обратим внимание на то, какие именно компоненты вычислительных систем наиболее подвержены ошибке 2000. Таких компонентов (дыр в системе) получается ровно шесть:

  1. Аппаратное обеспечение.
  2. Операционная система.
  3. Библиотеки времени исполнения.
  4. Приложения.
  5. Пользовательский код.
  6. Обмен данными

Вот конкретное описание всех возможных проблем словами Microsoft:

Аппаратное обеспечение.
Наиболее типичная аппаратная проблема связана с базовой системой ввода-вывода (BIOS) для платформы РС. Эта система отвечает за информацию нижнего уровня, требующуюся компьютеру для инициализации. В ней также содержится один из основных тактовых генераторов (системных часов), используемых в РС. Наиболее распространенной проблемой, связанной с переходом в 2000 год, является правильное изменение двух первых цифр года с "19" на "20" при смене столетия. Необходимо отметить, что любая система BIOS, даже затронутая этой проблемой, начнет нормально функционировать после того, как дата будет правильно установлена на 2000 год. Ниже рассмотрено несколько вариантов правильной настройки BIOS на 2000 год.

Системные часы реального времени, имеющиеся в РС, отсчитывают время и дату. Система BIOS получает от них данные о времени и дате в двузначном представлении и добавляет необходимые биты для сохранения даты в четырехзначном представлении. Когда год меняется с "99" на "00", а разряды столетия не меняются с "19" на "20", операционная система воспринимает новый года как 1900, а не 2000. Операционные системы "Майкрософт" не распознают 1900 год и автоматически устанавливают системные часы на 1980 год, являющий нашей базовой датой. Внезапное изменение даты на 1980 г. является одним из наиболее явных признаков того, что источник данной проблемы - в BIOS. Зная, какие последствия вызывает эта ошибка, организация сможет быстро выявить проблемные компьютеры, после чего устранить неполадку в этих системах.

Во всех более новых операционных системах "Майкрософт" предусмотрено средство для исправления этой аппаратной ошибки BIOS. В Windows NT 3.51 (sp5), Windows NT 4.0, Windows 98, Windows NT 5.0 встроены логические алгоритмы, распознающие 1900 в поле года как ошибку и автоматически переустанавливающие дату на 2000. Применяемое "Майкрософт" средство коррекции BIOS решает только указанную наиболее распространенную проблему, связанную с BIOS.

С BIOS связаны и другие проблемы, которые мы не корректируем. Например, некоторые версии BIOS сбрасываются на 1900 г. при каждой перезагрузке. В течение всего 2000 года средство исправления, предусмотренное "Майкрософт", будет устанавливать системные часы на 2000 при каждой загрузке. Когда системное время перейдет в 2001 год и система установит часы на 1901, средство исправления, предусмотренное "Майкрософт", не распознает это как проблему 2000 года и сбросит часы на базовый 1980 год. В других версиях BIOS встроена процедура обработки ошибок, которая устанавливает часы на год, начинающийся с "19", до того, как наша операционная система начинает взаимодействовать с BIOS. Если эта дата оказывается действительной, (например, "1993"), операционная система "Майкрософт" воспримет ее как правильную. Для обеспечения правильного функционирования системы после наступления 2000 года "Майкрософт" рекомендует выявить и протестировать все использующиеся версии BIOS.

Операционные системы.
Руководство "Майкрософт" по продуктам описывает специфику обработки дат операционными системами "Майкрософт".

Все операционные системы "Майкрософт" хранят даты и обращаются с ними в четырехзначном формате. Кроме того, системные часы разработаны так, чтобы воспринимать 2000 год как високосный. Внутри операционной системы в файловых системах также предусмотрена работа с датами после 2000 года. 16-битная и 32-битная версии файловой системы File Allocation Table (FAT), используемые операционными системами MS-DOS, Windows, Windows 95 и Windows NT, воспринимают даты вплоть до 2108 года. File Allocation Table для операционной системы Windows CE воспринимает даты вплоть до 2999 года. Файловая система Windows NT (NTFS) воспринимает даты до 29601 года.

Приложения.
Некоторые приложения имеют внутренние календари, которые могут неправильно вычислять високосные годы; другие могут поддерживать дату только в двузначном формате. Приложения "Майкрософт", хранящие и обрабатывающие даты, делают это с использованием четырех знаков. Мы считаем 2000 год високосным. Мы не используем никаких специальных значений даты.

Библиотеки времени исполнения.
Библиотеки времени исполнения - это модули, предоставляющие свою функциональность прикладным программам. Пользователи не обращаются к библиотекам времени исполнения напрямую; однако их используют приложения в связи с действиями пользователей. Между библиотеками времени исполнения и приложениями существует тесная взаимная зависимость. Загружая приложение Windows, вы используете библиотеки времени исполнения. Возможно, что вы работаете с приложением (например, с Excel), а потом добавляете продукт независимого производителя, предоставляющий еще одну библиотеку времени исполнения. В этом случае отношение зависимости изменяется. Если библиотека времени исполнения неправильно обрабатывает даты, неважно, работают ли правильно приложение, операционная система и BIOS. Система в любом случае не сможет обрабатывать даты. Возможен случай, при котором библиотека времени исполнения, произведенная не "Майкрософт", будет использована совместно с приложением "Майкрософт" и нарушит его функциональность.

Пользовательский код.
Части программы, создаваемые и подключаемые пользователем, представляют наибольший риск с точки зрения проблемы 2000 года для любой платформы. Во многих организациях штатные или приглашенные программисты разрабатывают приложения для решения конкретных задач. Из-за повсеместного использования нестандартных приемов программирования обработка данных в таких приложениях бывает несогласованна и должна проверяться в каждом приложении отдельно.

Например, если разработчик поместил дату с двузначным годом в текстовую строку, а затем включил эту дату в алгоритм вычислений, продукт "Майкрософт" может оказаться не в состоянии интерпретировать эти данные как дату, и вычисления будут сделаны неправильно. Даже при правильной работе приложения (например, Excel) с датами, добавочные функциональные компоненты, созданные на базе VBA, могут привести к его сбою.

Обмен данными.
Комплексная инвентаризация и анализ ? лучший способ понять проблемы, связанные с обменом данными. Платформа PC в организации может корректно работать с 2000 годом. Однако, если происходит обмен данными между PC и архаичными системами на больших компьютерах, неправильно обрабатывающими даты, информация, попадающая в среду PC, может оказаться неверной.

В некоторых организациях платформа РС является лишь одной из многих составных частей процесса обработки информации. В этом случае, так же как и во всех других ситуациях, следует разобраться в сопряжении платформы РС с другими платформами, проанализировать эти интерфейсы, исправить ошибки и провести тестирование".

И еще одна цитата от Майкрософт, касающаяся конкретных программных продуктов в конкретных областях, с их ошибками: "Пользовательский код. В любой компьютерной среде пользовательский код в наибольшей степени подвержен проблемам, связанным с 2000 годом.

Электронные таблицы Excel. Из всех приложений, поставляемых корпорацией "Майкрософт", Excel наиболее подвержен влиянию пользовательских настроек. Более того, использование дат в Excel очень распространено.

Аппаратное обеспечение. Хотя корпорация "Майкрософт" производит очень немного аппаратуры, эта аппаратура зависит от решений проблемы 2000 для платформы PC.

Персональный компьютер предоставляет доступ к данным со всего мира. Если сервер баз данных работает неправильно, то неверные данные будут переданы на PC пользователей и поначалу может сложиться впечатление, что ошибка возникает именно на клиентской машине. В результате может показаться, что проблему вызывают программные продукты "Майкрософт". Однако, на самом деле, проблема кроется в чем-то другом"

Вдобавок к вышеупомянутому, хочется привести еще цитату, имеющую отношение к рекомендации Майкрософт о том, какой формат даты лучше всего применять:
"Многие организации требуют, чтобы во всех их системах применялся согласованный формат дат. К сожалению, от организации к организации этот формат бывает различным. Двузначные сокращения, так же как и настраиваемые форматы дат наших продуктов, были предназначены для максимального соответствия различным требованиям.

Функциональность. В наших приложениях логика обработки двузначных дат применяется в случае необходимости для обеспечения специальной функциональности. Например, если вы используете программу Outlook для составления расписаний, представление даты отличается от представления даты дней рождения в папке контактов. Причина в том, что две эти функции требуют разного представления для оптимального соответствия потребностям пользователя.

Эффективность. Другой важной причиной использования двузначного формата является социальный аспект использования дат. Программисты заинтересованы в написании приложений с такими интерфейсами, которые более адекватно соответствуют потребностям пользователя. Если вы создаете страховую форму, которую тысячам людей нужно будет заполнять 250 раз ежедневно, выбор между необходимостью для них вводить "1997" или "97" становится очевиден. Во-первых, пользователи естественно мыслят двузначными обозначениями года, так что это более привычно для них. Во-вторых, ввод двузначных номеров занимает меньше времени. Наконец, всего две цифры занимают меньше места на машине базы данных.

Рекомендация. "Майкрософт" рекомендует использовать для ввода четырехзначный формат представления дат в тех случаях, когда это возможно. Такой подход позволит обеспечить наибольший уровень надежности при вычислениях, связанных с датами"
 

И, наконец, заключительная цитата, относящаяся на сей раз к рекомендациям по решению проблемы 2000 для компьютеров платформы РС: "Комплексная инвентаризация и анализ. Прежде чем приступать к исправлению ошибок, замене и (или) снятию систем с эксплуатации, рекомендуем вам начать программу работы над проблемой 2000 года с комплексной инвентаризации и анализа имеющейся программной и аппаратной базы по всей цепочке обмена информацией.

Это означает точное понимание того, каким образом данные попадают в систему (пользовательский ввод, электронная передача и т.д.), как они обрабатываются, хранятся, вычисляются, сортируются, упорядочиваются и т.д. в данной среде, какие системы вовлечены в обработку этих данных и, наконец, как данные покидают эту систему (пользовательский интерфейс, печатные копии, электронный интерфейс данных и т.д.). Такой подход означает изучение как программного обеспечения, так и аппаратуры. Технологии "Майкрософт" - это только одна составляющая часть для большинства систем.

Используйте стендовые системы. Мы рекомендуем клиентам НЕ проводить испытания на производственных компьютерах. Средняя настольная система имеет много относящихся к датам функций, о которых пользователи этой системы могут не знать. Произвольная установка часов вперед может произвести непредвиденный эффект. Например, проверка проблемы 2000 года может отрицательно повлиять на автоархивацию в программах составления расписаний или работу систем автоматизированного резервного копирования.

Используйте загрузочный диск MS-DOS для проверки BIOS и системных часов. Корпорация "Майкрософт" рекомендует использование загрузочного диска MS-DOS для проверки работы системы с часами. Это позволит отделить обычную функциональность системы от тестирования работы с датами. После завершения тестирования, обязательно следует перезагрузить машину с загрузочного диска и вернуть часы назад на правильное время.

Проверьте пользовательский код. В любой вычислительной среде пользовательский код в наибольшей степени подвержен проблемам, связанным с 2000 годом. Мы предлагаем, чтобы опытный программист оценил весь пользовательский код в ваших информационных системах. Чтобы найти продукты независимых поставщиков, которые могут помочь в проверке пользовательского кода, следует обратиться к "Справочному руководству по инструментальным средствам и их соответствию требованиям 2000 года".

По возможности используйте средства управления для инвентаризации и распространения исправлений.
Если ваши персональные компьютеры находятся в сети и у вас есть сетевое средство управления, такое как Microsoft Systems Management Server, вы можете использовать функции анализа и инвентаризации этой системы для того, чтобы получить полное представление о том, что есть в вашей среде. Имея эту информацию, можно начинать требуемый комплекс работ. Многие системы управления предоставляют возможность распространения программного обеспечения. Этот механизм при необходимости может быть применен для установки "заплаток" и исправлений"

И под занавес краткий справочник по наиболее популярным продуктам, производимым и внедряемым в жизнь:
 
Наименование продукта Тип операционной системы Дополнительные требования Срок работы Соответствует
Access 2.0 16-разрядная версия Windows обновление для Access 2.0: исправление обработки дат с двузначным обозначением года : 01 января 0100 - 31 декабря 9999 да
Access 2000 32-разрядная версия Windows Отсутствуют : 01 января 200 г. - 31 декабря 9999 г. Да
Access 95 32-разрядная версия Windows OLEAUT32.DLL версии 2.20.4054 или более поздней и программное обновление 2000 года для Office 95 01 января 200 г. - 31 декабря 9999 г. Да
Access 97 32-разрядная версия Windows Office 97 SR2; обновление Microsoft Jet 3.5 01 января 200 г. - 31 декабря 9999 г Да
: Excel 2000 32-разрядная версия Windows Отсутствуют 01 января 200 г. - 31 декабря 9999 г Да
Excel 5.0 16-разрядная версия Windows Отсутствуют : 01 января 1900 г. - 31 декабря 2078 г Да
Excel 95 32-разрядная версия Windows Программное обновление 2000 года для Office 95 : 01 января 1900 г. - 31 декабря 2078 г Да
Excel 97 32-разрядная версия Windows Office 97 SR2 01 января 1900 г. - 31 декабря 9999 г Да
FrontPage 32-разрядная версия Windows   : 01 января 1970 г. - 31 декабря 2036 г. Да
Internet Explorer 4.01 32/16 разрядная версии Windows   01 января 1900 г. - 31 декабря 2035 г. Да
Office 2000 32-разрядная версия Windows     Да
Outlook Express 32/16-разрядные версия Windows     да

К сожалению, объем статьи и время работы над ней ограничены, а, стало быть, я не смогу предоставить всю имеющуюся информацию о Майкрософт. Прочем, это и не надо - компанией уделено много времени и средств на тестирование и исправление собственных продуктов, чтобы можно было волноваться по поводу их дееспособности, а, стало быть, в ночь с 31 на первое ничего страшного не произойдет, просто все компьютеры с программным обеспечением плавно перейдут в следующее тысячелетие:..

 


Interface Ltd.

Tel: 7+(095) 135-55-00, 135-25-19
E-mail: mail@interface.ru
http://www.interface.ru

Подготовили: novichkov@interface.ru
tkachev@interface.ru
Дата: 22.12.99