К 2000 году будь готов!...
Часть II.

Вадим Халепский, MCSE+Internet, Астро Софт

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

Системное время

В критических для современного бизнеса системах особенно важна правильная работа системных часов. В ПК для отсчета системного времени используется три вида часов:

Показания часов CMOS базируются на результатах отсчета микросхемы реального времени (Real Time Clock - RTC). Она обеспечивает отсчет времени при выключенном электропитании и передает значения даты и времени при включении. Например, одна из наиболее распространенных микросхем RTC Motorola MC146818 хранит значение года в двух регистрах. В регистре 9 представлены две последние цифры значения года (т.е. для хранения отведен один байт). В регистре 32 хранится значение столетия, однако его значением управлять невозможно, поэтому всегда значение года, передаваемое часами CMOS, будет в двадцатом столетии. По оценкам экспертов, до 75% рынка европейских компьютеров, поставленных до середины 1997 г., используют именно эту микросхему RTC.
Если часы CMOS некорректно обрабатывают смену столетия, то исправление такой ошибки допускается некоторыми моделями BIOS. Средства, позволяющие правильно интерпретировать показания часов CMOS, реализованы только в последних версиях BIOS ведущих производителей (Award, AMIBIOS, Phoenix и др.).

Помимо того, что в BIOS могут отсутствовать средства, исправляющие показания часов CMOS, практически все версии BIOS, выпущенные до 1995 г. (это относится также к BIOS сомнительных производителей, выпускаемых в настоящее время), являются потенциальным источником проблемы 2000 г. В частности, такие реализации BIOS неправильно обрабатывают смену столетия при включенном компьютере, устанавливая текущую дату на 1900 г. вместо 2000.
Рекомендуется тщательно протестировать системные часы CMOS, BIOS и ОС в каждом ПК в организации. В случае, если BIOS не прошел тесты на правильную работу с датами, относящимися к 2000 и последующим годам, его следует заменить более новой версией. Обычно сделать это не очень сложно, если BIOS обладает возможностью перепрограммирования.

Критерии соответствия программных продуктов

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

Другие поставщики формулируют критерии соответствия по-другому. Например, SUN определяет продукт как совместимый, если он не выдает ошибок при смене даты с 31 декабря 1999 г. на 1 января 2000 г. и корректно определяет високосный год. Продукты IBM, по определению производителя, являются совместимыми с 2000 г., если при корректном использовании в соответствии с документацией, продукт правильно получает, обрабатывает и выдает даты в XX и XXI столетии, при условии получения корректного значения даты от других компонентов, в том числе программного и аппаратного обеспечения.
По уровню соответствия требованиям 2000 г. продукты Microsoft попадают в одну из пяти категорий, установленных производителем.
Большинство продуктов Microsoft попадают в категории, соответствующие требованиям 2000 г. с незначительными проблемами, но они и вызывают наибольшее число вопросов. Возникающие "незначительные проблемы" носят в основном чисто косметический характер. Так, например, в Windows NT 4.0 File Manager значение года, превышающее 2000, представляется в шестнадцатеричном формате, что не влияет на общую работоспособность системы. После применения исправления, доступного на Web-узле Microsoft, значение даты представляется корректно.
Однако не следует полагаться на то, что совокупность незначительных проблем не приведет к последствиям более серьезным. Строго говоря, не исследовано поведение всех программных систем с незначительными проблемами в совокупности, так что лучше избавиться от возможных неприятных новогодних подарков.

Наиболее характерной проблемой, связанной с обработкой дат, при работе с продуктами Microsoft и многих других поставщиков, является преобразование дат из двухзначного представления в четырехзначное. Как уже отмечалось, все продукты Microsoft, соответствующие требованиям 2000 г., оперируют датами в четырехразрядном представлении. Пользователи привыкли работать с двухзначными датами, поскольку такой формат применяется в большинстве документов и обеспечивает более быстрый ввод даты. Поэтому во многих приложениях Microsoft обеспечивается возможность работы с двухзначными датами. Они преобразуются продуктами Microsoft в четырехзначные в соответствии с логическим диапазоном (окном) дат. Благодаря этому приложение может однозначно определить, к какому веку относится введенная двузначная дата. Логический диапазон дат представляет собой временной интервал длительностью в 100 лет. Например, с 1920 г. по 2019. При этом, если пользователь вводит дату в диапазоне от 20 до 99 г., то дата считается принадлежащей XX веку (т. е. дополняется цифрами 19); если же введена дата от 00 до 19, то она считается принадлежащей XXI веку (дополняется цифрами 20). Проблема заключается в том, что логические диапазоны дат не закреплены и поэтому могут отличаться в разных приложениях. Например, в Excel 95 даты 00-19 соответствуют датам 2000-2019, а даты 20-99 - датам 1920-1999. В то же время в Excel 97 даты 00-29 отвечают датам 2000-2029, а даты 30-99 - датам 1930-1999.

Несоответствие логических диапазонов дат в различных продуктах может вызвать ошибки при вводе дат и при обмене данными между приложениями. Этого можно избежать, если вводить даты в четырехзначном представлении. Поэтому в критических для организации системах рекомендуется полностью перейти на четырехразрядные даты.
Более сложно взаимодействие двух или более программных систем. Вычислительная система практически никогда не бывает однородной и изолированной. Обмен данными между приложениями, а также от клиентов или партнеров является неотъемлемой частью процесса обработки информации и потенциальным источником проблем, связанных с ее неправильным представлением. Предположим, что в БД, работающую на ПК, заносится информация из бизнес-приложения, работающего на мэйнфрейме или UNIX-хосте. Даже при абсолютной совместимости двух систем с 2000 г. нет гарантии правильной передачи и обработки данных - необходимо проанализировать интерфейсы, используемые при обмене. Один из возможных вариантов - искажение данных при передаче, - например, если интерфейс стыковки преобразует четырехразрядное значение года в двухразрядное. Учитывая тот факт, что в некоторых организациях еще существуют "самодельные" программы стыковки ПК и мэйнфреймов, этот аспект совместимости является достаточно актуальным.

Источники официальной информации

Практически любой поставщик программных или аппаратных средств уже давно создал на своем Web-узле раздел, посвященный совместимости своих продуктов требованиям 2000 г. В большинстве случаев, в этом разделе приводится официальная формулировка критериев совместимости с 2000 г. и сведения о степени совместимости для каждого продукта. Кроме того, обычно в этом же разделе публикуются общие рекомендации (так называемые white papers) по приведению в соответствие систем, использующих продукты данного поставщика, - такие разделы являются официальными источниками информации от производителя и в некоторых случаях трактуются как дополнения к документации.
Почему большинство производителей выбрало именно этот путь? Во-первых, это связано с бурным ростом Интернет - достаточно большое число потребителей уже имеют доступ в Интернет и умеют искать в нем нужную информацию. Во-вторых, крайне мало компаний успело включить в состав документации, прилагаемой к продукту, сведения и рекомендации, касающиеся 2000 г. Наконец, никто еще не завершил окончательного тестирования своих разработок, и, в принципе, статус соответствия и связанная с ним информация может измениться на основании результатов тестирования, проводимого поставщиком. Руководство по проблеме 2000 г. от Microsoft носит название Microsoft Year 2000 Product Guide. Он содержит самую полную информацию о продуктах Microsoft, относящуюся к проблеме 2000 г.. В частности, в нем можно узнать:

По мере появления новой информации о продукте Microsoft обновляет сведения в Руководстве по проблеме 2000 г.

Для постоянного информирования клиентов обо всех аспектах проблемы 2000 г., относящихся к технологиям Microsoft, компания создала специальный Web-узел, (www.microsoft.com/year2000), где публикуется:

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

Рекомендации по проведению в организации "Проекта по приведению ИС в состояние готовности к 2000 г.", а также рассказ об используемых Астро Софт методиках - в следующих номерах.

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

КОМПЬЮТЕР-ИНФОРМ