Откройте актуальную версию документа прямо сейчас
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Заказное приложение
Общая целостность
Предоставляет ли язык функцию для получения или установки системной даты на хост-машине или через службу времени?
Возвращает ли эта функция правильное значение для системной даты для дат с повышенным риском:
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хх годах ключевой индекс, включающий поле даты?
Представляет ли приложение дату в любой переменной как смещение от базовых даты/времени? Каково максимальное значение даты для этого представления? Каково минимальное значение даты для этого представления (обычно базовая дата)? Попадает ли ожидаемый диапазон значений для каждой переменной, использующей это представление даты, в эти пределы?
Использует ли приложение присваивание значений даты из одной переменной в другую? Отсекается ли у даты столетие при выполнении какого-либо присваивания? Используется ли значение в целевой переменной в операции над датами, требующей для получения правильных результатов явного столетия?
Использует ли приложение языковые средства, связывающие адрес даты с несколькими переменными (такие как REDEFINE в языке COBOL или COMMON в языке FORTRAN)? Игнорирует или отсекает значение для явного столетия в значении даты какая-либо переменная среди всех псевдонимов для одной и той же области данных? Используется ли усеченное значение даты в операции, которая предполагает, что все значения даты используют то же самое столетие?
Используются ли константы для значений даты (включая день, месяц или год) в какой-либо операции? Относится ли константа к функциональным требованиям или особое значение используется в типе данных "дата" для удобства?
Осуществляет ли приложение точное хранение и поиск дат для значений в диапазоне от 1900-01-01 до 2050-12-31?
Использует ли приложение утилиты сортировки/слияния для упорядочивания содержимого файлов по полям даты или индексированные файловые структуры с ключами по полям даты? Правильна ли упорядоченность для всех значений даты в диапазоне от 1900-01-01 до 2050-12-31?
Полагается ли приложение на первичные или альтернативные индексы структурированной базы данных для поиска, вставки, обновления или удаления, когда какой-либо ключ содержит поле даты? Будет ли правильной упорядоченность индекса для всех значений даты в диапазоне от 1900-01-01 до 2050-12-31?
Инициализируются ли все переменные типа "дата" в соответствии с каким-либо соглашением относительно пустого значения?
Явное столетие
Использует ли приложение язык, инструментальные средства и/или генератор приложений, допускающие явное столетие в типах данных "дата"? Если да, то поступают ли значения для столетия в переменных этих типов путем ввода извне или формируются программным обеспечением?
Использует ли приложение СУБД или другой программный продукт для хранения и поиска данных типа "дата"? Если да, то могут ли эти продукты поддерживать явные значения для столетия в любой хранимой и участвующей в поиске переменной типа "дата"?
Имеет ли приложение внешние интерфейсы (ввод-вывод, API, обращения к внешним подпрограммам и т.д.), содержащие переменную даты с явным столетием? Игнорирует ли программное обеспечение, усекает или дописывает значение столетия в любой такой переменной, когда она переносится логикой программы в любой другой внешний интерфейс? Может ли при таком переносе какая-либо логика изменить значение для столетия каким-то образом, отличающимся от обобщенных операций, основанных на григорианском календаре?
Удовлетворяют ли критериям соответствия столетию все представления даты с явным столетием как внутри приложения, так и во всех интерфейсах?
Неявное столетие
Использует ли приложение язык, инструментальные средства и/или генератор приложений (включая средства построения GUI), допускающие представление даты без явного столетия в типах данных "дата"? Если да, то формируется ли столетие для любых операций или передачи значения даты через любой интерфейс или для постоянного хранения? Если да, то является ли значение для столетия правильным для всех возможных значений дат, которые может содержать каждая переменная?
Использует ли приложение константы для даты или частей даты (например, дня, месяца или года)? Если да, то является ли столетие неявным в значении любой константы полной даты или года? Все ли операции, использующие каждую константу прямо или косвенно (то есть переносимую через переменные в другие операции в программе), производят правильные результаты для всех возможных значений для таких переменных даты?
Использует ли приложение какой-либо прикладной интерфейс (API), такой как SQL, который передает переменные типа "дата"? Если да, то предоставляет ли принимающее программное обеспечение значение столетия, производное или по умолчанию, для любого значения даты, передаваемого через этот интерфейс?
<< Приложение 4. Критерии тестирования соответствия столетию |
||
Содержание Рекомендации ЦБР от 14 апреля 1999 г. по решению проблемы 2000 года в информационных системах Банка России |
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.