Компьютер-Информ || Архив || Рубрики || Поиск || Подписка || Работа || О "КИ" || Карта
B настоящее время, наверное, не существует ни одного человека, который бы не слышал о проблеме 2000 года. Многочисленные мифы и слухи порождают, с одной стороны, предположения о том, что "меня это не касается", с другой - панические настроения типа "встретим Новый 2000 год при свечах". Подобные утверждения не имеют ничего общего с реальностью, однако, проблему нельзя недооценивать. Если учесть масштаб затронутых проблемой 2000 года систем и процессов, то можно с уверенностью сказать, что проверка вычислительных систем и устранение ошибок, связанных с проблемой 2000 года, требует значительных временных и материальных ресурсов. Осознавая масштаб и потенциальные последствия Проблемы 2000, Астро Софт уделяет большое внимание комплексам мер по обеспечению совместимости базовых программно-аппаратных ресурсов требованиям 2000 года. Уже проводя соответствующие мероприятия и оказывая услуги по решению Проблемы 2000 для своих клиентов, Астро Софт готовит серьезный комплекс услуг для предоставления их в массовом порядке всем нуждающимся. Информация об этом - в ближайших номерах "КИ". А этой статьей открывается цикл публикаций, посвященных общим подходам к решению проблем.
Содержание проблемы 2000 года
Перед тем, как начать обсуждение походов к решению проблемы 2000 года, необходимо договориться, что будет пониматься под термином "Проблема 2000 года". Названия "Проблема 2000 года" (Year 2000 Problem, Y2K), "Ошибка тысячелетия" (millenium bug) и т. п. недостаточно полно отражают суть вопроса, хотя большая часть ошибок программного обеспечения, характерных для проблемы 2000 года, действительно начнет проявляться в 2000 году. Каноническое определение проблемы 2000 года выглядит следующим образом: под "Проблемой 2000 года" понимается комплекс проблем аппаратного и программного обеспечения, связанных с неправильной обработкой и интерпретацией дат.Основные причины возникновения ошибок при обработке дат:
2000 год является во многом исключительным. Вспомним, как определяется, например, високосный год: если значение года без остатка делится
на 4, то он високосный. При этом не стоит забывать, что раз в сто лет, значение года делится без остатка на 100, тогда за 28 февраля следует 1 марта. Но если значение года без остатка делится на 400, то год все же високосный. Поэтому в 2000 году 366 дней, но некоторые об этом забыли, в том числе и программисты, реализовавшие неполный алгоритм определения високосного года. Чтобы лучше понять, почему применение двухзначных дат действительно является проблемой, попробуйте ответить на вопрос: "Какому году соответствует дата 1/1/00?" Правильным ответом будет: ..., 1900, 2000, 2100 и т. д. Люди привыкли использовать двухзначные даты и при этом практически никогда не ошибаются, восстанавливая оставшиеся две цифры года, исходя из контекста, в котором употребляется та или иная дата. Вспомните, когда вы последний раз писали значение года полностью? Почему же нужно требовать этого от программистов? Поэтому в приложениях с двухзначным представлением дат зачастую предполагается, что все даты относятся исключительно к текущему столетию. Поэтому в таких приложениях дата 1/1/00 интерпретируется как 1/1/1900, даже если пользователь трактует ее как 1/1/2000. Очевидно, что при выполнении операций над датами, относящимися к следующему столетию, в таких приложениях возникают ошибки. Например, 2000 - 1999 = 1, а 00 - 99 = -99 (или 99, если отрицательные числа считаются недопустимыми).
Многие устаревшие приложения используют в полях дат специальные значения (чаще всего 9/9/99, но этим список не ограничивается), указывающие на то, что данные требуют специальной обработки. Например, специальное значение даты может означать, что данные следует "хранить вечно" или что их необходимо автоматически удалить через определенный срок. Данный подход применялся с целью повышения эффективности выполнения приложений, а также для экономии памяти. При этом предполагалось, что данные, не требующие специальной обработки, никогда не будут иметь в поле даты специальное значение. Однако уже в сентябре приложения, использующие специальные значения дат, могут вызвать ошибки при обработке информации.
Истоки проблемы
По своей сути проблема 2000 года не нова. Примерно такая же проблема существовала в конце 60-х годов. Напомним, что в 60-х годах многие приложения в целях экономии памяти использовали для хранения даты только одну цифру года (тогда проблема была решена довольно легко, поскольку применялось не так много приложений, к тому же они являлись скорее вспомогательными инструментами, чем основными, да и степень проникновения информационных технологий в повседневную жизнь не была столь высокой). На заре развития вычислительных систем оперативная память и устройства хранения данных были очень дорогостоящими, и использование двухзначного формата и специальных значений для дат считалось вполне приемлемым решением. Никто не предполагал, что приложения и алгоритмы, созданные в 70-х будут использоваться через 30 лет по принципу: "Не трогай - это работает!". В результате, неверный расчет жизненного цикла программного обеспечения привел к возникновению столь острой проблемы.
Безусловно, изложенные выше причины возникновения проблемы 2000 года не являются единственными, ведь даже некоторые современные приложения некорректно оперируют датами, относящимися к 2000 и последующим годам. В большинстве случаев это вызвано ошибками, внесенными на этапе разработки приложения. Высокая сложность современных приложений не позволяет в краткие сроки провести полномасштабное тестирование, которое бы могло выявить все ошибки. Поэтому некоторые скрытые ошибки выявляются уже на этапе эксплуатации приложения.
Наконец, последней причиной проблемы 2000 года, о которой хочется упомянуть, является то, что пользователи привыкли работать с двухзначными датами. Они более естественны, их быстрее вводить и т. д. В принципе, разрешить ввод двухзначных сокращений для дат не сложно, нужно только определить, каким образом программа будет преобразовывать их в четырехзначные (т. е. как программа будет определять, к какому веку относится та или иная двухзначная дата). Однако поскольку критерии, которыми руководствуются разные приложения, могут отличаться друг от друга, этот метод может стать источником ошибок при обмене данными между приложениями.
Возможные последствия
Давайте на секунду представим себе организацию (например, торговую), в которой отказались решать проблему 2000 года, посчитав, что она не
значительна и не затронет информационной инфраструктуры организации. Что произойдет, если сотрудники этой организации ошиблись, и проблемы, связанные с обработкой дат, все-таки начнут возникать? Рассмотрим лишь несколько весьма показательных сценариев.
Не стоит сбрасывать со счетов и юридические последствия нарушения работы вычислительных систем. До сих пор у юристов нет единого понимания о трактовке возможных последствий: форс-мажор или вредительство. Никто не освободит организацию, нарушившую условия подписанного контракта (например, путем сдвига сроков платежей) по причине сбоя вычислительной системы, от возмещения ущерба, оговоренного в контракте.
Прежде всего, хочется еще раз подчеркнуть, что проблема 2000 года затрагивает все вычислительные системы без исключения. Безусловно, мэйнфреймы и устаревшие приложения являются наиболее уязвимыми, но это не означает, что современные рабочие станции, операционные системы и приложения свободны от ошибок, связанных с обработкой дат. Что касается сложности решения проблемы 2000 года, необходимо принимать во внимание, что, во-первых, в настоящее время бесперебойная работа вычислительных систем является критичным моментом в деятельности многих организаций. Недопустимой считается не только остановка, но и кратковременная пауза в работе вычислительной системы, поскольку это может привести к огромным убыткам. Поэтому решение проблемы 2000 года в таких организациях требует использования специальных подходов. Во-вторых, современные вычислительные системы состоят из множества компонентов, которые должны работать в тесной взаимосвязи, поэтому только на полное тестирование может уйти несколько месяцев, а ведь в случае выявления ошибок их нужно еще и исправить.
Уязвимые компоненты
В той же степени, в которой проблема 2000 года относится к различным программно-аппаратным платформам, эта проблема относится и к различным компонентам (слоям) конкретной вычислительной платформы. Поскольку все эти компоненты работают в тесной взаимосвязи, для решения проблемы 2000 года требуется, прежде всего, корректная работа каждой компоненты в отдельности, а уже потом их правильное взаимодействие. В противном случае слой, являющийся источником ошибок, может свести на нет все затраты на тестирование и исправление ошибок вычислительной системы.
Для платформы ПК выделяют 6 основных слоев, критичных к проблеме 2000 года.
Понимая всю важность и масштабность проблемы 2000 года, Астро Софт проводит для своих заказчиков цикл работ, связанных с решением этой проблемы для базовых программно-аппаратных средств информационных систем любого масштаба - от одного компьютера до корпоративных систем. Информация о подходах и методиках, используемых специалистами Астро Софт, появится в следующих выпусках газеты.
Анкета || Рубрики || Работа || Услуги || Поиск || Архив || Дни рождения
О "КИ" || График выхода || Карта сайта || Подписка
Главная страница
Сайт газеты "Компьютер-Информ" является зарегистрированным электронным СМИ.
Свидетельство Эл ╧ 77-4461 от 2 апреля 2021 г.
Перепечатка материалов без письменного согласия редакции запрещена.
При использовании материалов газеты в Интернет гиперссылка обязательна.
Телефон редакции (812) 118-6666, 118-6555.
Адрес: 196084, СПб, ул. Коли Томчака, д. 9
Пейджер 238-6931(аб.3365)
e-mail:
Для пресс-релизов и новостей