Откройте актуальную версию документа прямо сейчас
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение 4
Критерии тестирования соответствия столетию
В основе данного приложения лежит работа корпорации GTE, подготовленная для внутреннего использования. Назначением приложения является представление критериев соответствия 2000 году и приемов для определения влияния 2000 года на операционные системы, трансляторы, ассемблеры, интерпретаторы, системы управления базами данных, локальные сети и заказные приложения.
Четырьмя критериями, определяющими соответствие столетию, являются общая целостность, целостность даты, явное столетие и неявное столетие.
Критерии
Общая целостность
Никакое значение для текущей даты не вызовет прерывания нормальной работы. Наиболее широко известной сменой даты с повышенным риском является переход к 2000 году.
Целостность даты
Все операции со связанными с календарем данными (датами, длительностями, днями недели и т.д.) будут производить желательные результаты для всех имеющих силу значений даты внутри области приложения. Эти операции должны быть надежными только в диапазоне дат, который приложение, как ожидается, должно обрабатывать. Например, обработка торговых заказов может требовать работы с датами пяти прошлых лет и одного будущего года. И напротив, база данных служащих может хранить даты рождения начала XX столетия и даты планируемого ухода на пенсию в XXI столетии.
Явное столетие
Элементы даты в интерфейсах и памяти позволяют определять столетие, исключая неоднозначность даты. Этот критерий, по существу, требует возможности хранить явные значения для столетия. Например, продукты третьей стороны, которые могут использовать год с четырьмя цифрами во всех элементах данных даты, сохраняемых и передаваемых через каждый интерфейс (включая интерфейс пользователя), будут удовлетворять этому критерию. Представление дат с помощью базы и смещения, покрывающее все представляющие интерес столетия, также будет удовлетворять этому критерию. Необходимость использования этой возможности для устранения неоднозначности столетия и является частью последнего критерия.
Неявное столетие
Для любого элемента даты, представляемого без столетия, правильное столетие является однозначным для всех операций, включающих этот элемент. Этот последний критерий требует, чтобы, если столетие не дается в явном виде, его значение определялось со стопроцентной точностью на основе предоставленного значения даты. Например, диапазон значений для "даты счета" редко охватывает более 10 лет. Вследствие того, что столетие может быть всегда правильно угадано для даты счета с годом, представленным двумя цифрами, этот элемент данных даты будет удовлетворять указанному критерию. Обратите внимание на то, что этот критерий допускает компромиссы затрат и рисков, которые минимизируют изменения для существующих форматов даты.
Хотя описанные выше четыре критерия полностью определяют соответствие столетию, оно представляет, скорее, баланс между стоимостью и риском, чем абсолютное "мерило". Такой баланс будет меняться для каждого учреждения согласно его деловым потребностям и технологической основе. Следовательно, потребуется большая детализация, чтобы интерпретировать эти критерии по отношению к конкретному учреждению. Эта интерпретация, задокументированная и распространенная, может гарантировать, что "соответствие столетию" понимается в организации одинаково. Следующие инструкции являются примером того, как учреждение может документировать и тестировать эти четыре критерия для операционных систем, трансляторов, ассемблеров, интерпретаторов, систем управления базами данных, локальных сетей и заказных приложений.
Инструкции по тестированию
Операционная система
Общая целостность
Системная дата может быть установлена на даты с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29.
Повторная инициализация с холодного старта по датам с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29.
Системная дата правильно переходит к датам с повышенным риском:
1998-12-31 -> 1999-01-01
1999-12-31 -> 2000-01-01
2000-02-28 -> 2000-02-29
2000-02-29 -> 2000-03-01.
Правильно ли происходит переход даты как в выключенном, так и во включенном состоянии?
Целостность даты
Ведут ли себя корректно в 19хх и 20хх годах чувствительные к датам функции для системных дат?
Чувствительность к дате относится к функциям, осуществление которых может начаться или остановиться в конкретный день месяца и года, в определенный день недели или по истечении указанного времени.
Чувствительны к дате также функции планирования заданий, учета и администрирования, любая интерактивная команда с датами или переключателями (особенно дисковые и ленточные команды и утилиты), устанавливающие или получающие системную дату через обращение к системе или сообщающие системные данные с датами в них.
Каково наибольшее возможное значение, которое переключатель может представлять для системной даты?
Системная дата правильно появляется при использовании в штампах времени для дат с повышенным риском:
1999-01-01, 1999-12-31, 2000-01-01, 2000-02-28,
2000-02-29, 2000-03-01.
Штампы времени в записях очередей, директориях томов, связи между процессами и связи вне хост-машины.
Явное столетие
Может ли столетие явно вводиться или отображаться в чувствительных ко времени функциях?
Имеются ли функции или обращения к системе, не допускающие явного столетия, формат которых управляется отраслевым стандартом или требованием пользователя?
Неявное столетие
Может ли столетие в любом значении даты в любой чувствительной ко времени функции неправильно интерпретироваться для дат между 1985-01-01 и 2050-12-01?
Компилятор, ассемблер или интерпретатор
Общая целостность
Предоставляет ли язык функцию для получения или установки системной даты на хост-машине или через службу времени?
Возвращает ли эта функция правильное значение для системной даты для дат с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29?
Возвращает ли эта функция правильное значение для системной даты после перехода системной датой дат с повышенным риском:
1998-12-31 -> 1999-01-01
1999-12-31 -> 2000-01-01
2000-02-28 -> 2000-02-29
2000-02-29 -> 2000-03-01?
Целостность даты
Поддерживает ли язык тип данных для значений даты в диапазоне от 1900-01-01 до 2050-12-31?
Обрабатывают ли подпрограммы языка 2000 год как високосный, а 1900 год как невисокосный?
Правильно ли арифметика дат определяет разности между датами, складывает даты и длительности, а также вычисляет день недели?
Правильно ли подпрограммы языка выполняют преобразование представлений даты (YYMMDD в юлианскую и в базу со смещением)?
Работает ли язык с библиотекой подпрограмм даты? Если да, то правильно ли библиотека функционирует для вопросов в предыдущем пункте?
Включает ли система утилиту сортировки/слияния? Если да, то дает ли сортировка или слияние по полю даты правильную последовательность для дат в 19хх и 20хх годах?
Явное столетие
Предусматривает ли тип данных "дата" явные значения для столетия?
Имеются ли функции или обращения к системе, не допускающие явного столетия, формат которых управляется отраслевым стандартом или требованием пользователя?
Неявное столетие
Поддерживает ли тип данных "дата" форматы без явного столетия?
Если значение для столетия не устанавливается явно, то какое значение предполагается при сравнении дат, арифметических операциях, постоянном хранении и т.д.?
Правильно ли столетие определяется во всех случаях, где столетие не является явным?
Система управления базами данных (СУБД)
Общая целостность
Предоставляет ли язык функцию для получения системной даты на хост-машине или через службу времени?
Возвращает ли эта функция правильное значение для системной даты для дат с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29?
Возвращает ли эта функция правильное значение для системной даты после перехода системной датой дат с повышенным риском:
1998-12-31 -> 1999-01-01
1999-12-31 -> 2000-01-01
2000-02-28 -> 2000-02-29
2000-02-29 -> 2000-03-01?
Целостность даты
Поддерживает ли язык тип данных для значений даты в диапазоне от 1900-01-01 до 2050-12-31?
Обрабатывают ли подпрограммы языка 2000 год как високосный, а 1900 год как невисокосный?
Правильно ли арифметика дат определяет разности между датами, складывает даты и длительности, а также вычисляет день недели?
Правильно ли подпрограммы языка выполняют преобразование представлений даты (YYMMDD в юлианскую и в базу со смещением)?
Правильно ли язык сравнивает даты?
Производит ли ключевой индекс, включающий поле даты, правильную последовательность для дат в 19хх и 20хх годах?
Точно ли СУБД находит даты для значений в диапазоне от 1900-01-01 до 2050-12-31?
Явное столетие
Позволяет ли тип данных "дата" устанавливать явные значения для столетия?
Допускают ли функции поиска форматирование дат с явным столетием?
Точно ли СУБД находит даты для значений в диапазоне от 1900-01-01 до 2050-12-31 ?
Неявное столетие
Предусматривает ли тип данных "дата" типы данных без явного столетия?
Если значение для столетия не устанавливается явно, то какое значение предполагается при установке поля даты, сравнении дат, арифметических операциях и т.д.?
Локальная сеть
Общая целостность
Получает ли клиентское программное обеспечение правильную системную дату от хост-машины для дат с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29?
Получает ли сетевое программное обеспечение сервера правильную системную дату от хост-машины для дат с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29?
Получает ли программное обеспечение сетевой администрации правильную системную дату от хост-машины для дат с повышенным риском:
1999-09-09, 1999-12-31, 2000-01-01, 2000-02-29?
Возвращает ли эта функция правильное значение для системной даты после перехода системной датой дат с повышенным риском:
1998-12-31 -> 1999-01-01
1999-12-31 -> 2000-01-01
2000-02-28 -> 2000-02-29
2000-02-29 -> 2000-03-01?
Правильно ли принимает и устанавливает штампы времени в диапазоне от 1985-01 - 01 до 2035-12-31 программное обеспечение локальной сети?
Целостность даты
Поддерживает ли программное обеспечение администрации даты истечения сроков для счетов и паролей пользователя?
Обрабатывает ли календарная логика 2000 год как високосный, а 1900 год как невисокосный?
Правильно ли арифметика дат определяет разности между датами, складывает даты и длительности, а также вычисляет день недели?
Правильно ли подпрограммы языка выполняют преобразование представлений даты (YYMMDD в юлианскую и в базу со смещением)?
Правильно ли язык сравнивает даты?
Точно ли программное обеспечение администрации сети и прикладной интерфейс (API) к сетевому программному обеспечению принимают и ищут все поля даты для значений в диапазоне от 1900-01-01 до 2050-12-31?
Явное столетие
Предусматривают ли штампы времени явные значения столетия?
Допускает ли интерфейс пользователя в программном обеспечении администрации сети явный ввод и отображение столетия во всех полях даты?
Допускает ли прикладной интерфейс к сетевому программному обеспечению явный ввод и поиск столетия во всех полях даты?
Неявное столетие
Правильно ли определяется значение столетия для всех операций над штампами времени для штампов времени без явного столетия?
Какое значение столетия предполагается для полей даты в пользовательском интерфейсе программного обеспечения администрации, если оно не вводится?
Какое предполагается значение столетия для полей даты в API, если приложение его не устанавливает?
-----------------------------------------------
* Материал подготовлен Департаментом информатизации ЦБ РФ
<< Приложение 3. Оценка соответствия системы 2000 году |
>> Заказное приложение |
|
Содержание Рекомендации ЦБР от 14 апреля 1999 г. по решению проблемы 2000 года в информационных системах Банка России |
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.