Целостность данных — валидация и верификация
| English | Русский |
|---|---|
| integrity/ɪnˈteɡrɪti/ | целостность |
| validation/ˌvælɪˈdeɪʃn/ | валидация |
| verification/ˌverɪfɪˈkeɪʃn/ | верификация |
| range check/reɪndʒ tʃek/ | проверкой диапазона |
| check digit/tʃek ˈdɪdʒɪt/ | контрольной цифрой |
| double entry/ˈdʌbl ˈentri/ | двойной ввод |
| parity check/ˈpærɪti tʃek/ | проверка четности |
| checksum/ˈtʃeksəm/ | контрольная сумма |
| cyclic redundancy check/ˈsaɪklɪk rɪˈdʌndənsi tʃek/ | циклический избыточный код |
| parity block check/ˈpærɪti blɒk tʃek/ | проверка блока четности |
Каждая цифра прошла каждую проверку
- В сентябре 1999 года марсоход NASA Mars Climate Orbiter включил двигатель для выхода на орбиту и больше о нем не слышали. Он пролетел на 170 км ниже запланированной высоты и сгорел.
- Программное обеспечение одной команды выдавало значения тяги в секундах-фунтах, тогда как принимающее программное обеспечение ожидало ньютон-секунд. Каждое значение было корректным числом в разумном диапазоне. Каждое значение было неверно в 4.45 раз.
- Никакая проверка формата не могла это обнаружить, так как данные не были некорректно отформатированы. Они просто не соответствовали тому, чем声称_были. $327 миллионов.
- Этот урок касается двух семейств проверок, обеспечивающих целостность: валидации, которая спрашивает, являются ли данные разумными, и верификации, которая спрашивает, скопированы ли они правильно. И пропасти между ними, через которую упал Марс.
Два вопроса
- Данные имеют целостность, когда они точны, согласованы и полны.
- Валидация — это автоматическая проверка того, что введенные данные разумны и соответствуют установленным правилам. Она спрашивает: это логично?
- Верификация проверяет, что данные были введены или переданы правильно, путем сравнения их с источником или пересчитанным значением. Она спрашивает: это скопировано правильно?
- Ни одна из них не гарантирует истинность данных. Нужны обе.
Лаборатория вычислительных концепций
Классифицируйте конкретные примеры по вычислительной идее, которую они демонстрируют.
Методы валидации
| Проверка | Правило | Пример |
|---|---|---|
| проверка диапазона | между двумя пределами | месяц находится в диапазоне от 1 до 12 |
| проверка лимита | по одну сторону от одного порога | возраст ≥ 18 |
| проверка существования (поиск) | значение присутствует в списке или таблице | код продукта существует |
| проверка длины | правильное количество символов | почтовый индекс из 6 символов |
| проверка типа / характера | правильный тип данных | поле телефона допускает только цифры |
| проверка формата | соответствует шаблону | адрес электронной почты содержит @ |
| проверка наличия | обязательные поля не пустые | имя введено |
| контрольная цифра | дополнительная цифра, вычисленная на основе остальных | ISBN, номера карт |
Проверка того, что введенный месяц находится в диапазоне от 1 до 12, является:
Проверка диапазона подтверждает, что значение находится в разумных пределах.
Соотнесите каждую проверку валидации с ее целью.
Наличие = не пусто; формат = соответствует шаблону; контрольная цифра = вычисляется для улавливания ошибочно набранных цифр.
Дополнительная цифра, вычисленная на основе остальных для улавливания ошибочно набранного числа (как в ISBN и номерах карт), называется ______ цифрой.
Контрольная цифра пересчитывается из остальных и сравнивается, улавливая большинство ошибок одиночных цифр и перестановок.
Разобранный пример: назовите проверку, которую выполняет псевдокод
| Псевдокод | Проверка |
|---|---|
IF x < 0 OR x > 10 THEN OUTPUT "Invalid" |
проверка диапазона: между двумя пределами |
IF x = "" THEN OUTPUT "Invalid" |
проверка наличия: не пусто |
IF NOT(x = "Red" OR x = "Yellow" OR x = "Blue") THEN OUTPUT "Invalid" |
проверка существования (поиск): один из списка |
IF LENGTH(x) <> 6 THEN OUTPUT "Invalid" |
проверка длины: шесть символов |
IF MID(x, 1, 1) < "A" OR MID(x, 1, 1) > "Z" THEN OUTPUT "Invalid" |
проверка формата: первый символ — буква |
- Автомобильный регистрационный номер, состоящий из одной буквы, трех цифр и двух букв, требует проверки формата для каждой позиции и проверки длины для шести символов. Дата рождения требует проверки формата (
DD/MM/YYYY), проверки диапазона (месяц от 1 до 12, год не будущий) и проверки наличия.
Соотнесите каждую строку псевдокода с выполняемой ею проверкой валидации.
Проверка пустоты = наличие; подсчет символов = длина; два ограничения = диапазон; список допустимых значений = существование или поиск по справочнику.
Разобранный пример: контрольная цифра и то, чего она не замечает
- Простая схема: контрольная цифра — это остаток от деления суммы цифр на 10, добавляемый к числу. Число
4162имеет сумму цифр 13, поэтому оно сохраняется как41623. - Пользователь вводит
41523: сумма теперь равна 12, контрольная цифра должна быть 2, поэтому ошибка зафиксирована. - Пользователь вводит
14623: первые две цифры поменяны местами, но сумма по-прежнему равна 13, поэтому контрольная цифра совпадает, и ошибка не зафиксирована. Реальные схемы (ISBN, номера карт) присваивают вес каждому разряду, так что перестановка меняет результат.
Что не может сделать проверка корректности
- Проверка выявляет данные с неправильным форматом или вне диапазона.
- Она не может выявить данные, имеющие верный формат, но фактические ошибки. Имя
Bob, введенное вместо имениBib, проходит все проверки; так же, как и каждая фигура астронавта, отправленная на Марс. - Для этого нужна сверка с источником и человек, который прочитает то, что было введено.
Почему валидация все еще может пропускать неверные данные?
Валидация проверяет форму, а не истину — правильно отформатированное, но неверное значение проходит проверку.
Проверка при вводе данных
- Двойной ввод: данные вводятся дважды тем же человеком или двумя разными людьми, компьютер сравнивает две версии и сообщает о любых расхождениях. Это стандартная практика для создания паролей.
- Визуальная проверка: пользователь сравнивает то, что отображается на экране, с исходным документом, и исправляет любые несоответствия перед сохранением.
- Оба метода обеспечивают целостность данных, гарантируя, что сохраненные данные соответствуют источнику.
Предложение пользователю ввести новый пароль дважды является примером:
Двойной ввод сравнивает две введенные копии, чтобы убедиться, что данные введены верно.
Проверка при передаче данных
- Биты могут меняться во время передачи. Контрольная сумма четности добавляет один дополнительный бит к каждому байту так, чтобы количество 1 было четным (четная четность) или нечетным; приемник пересчитывает их, и изменение одного бита приводит к ошибке подсчета.
- Контрольная сумма (checksum) — это значение, вычисленное из блока данных по алгоритму и передаваемому вместе с ним; приемник пересчитывает его и сравнивает. При передаче видеофайлов с камеры на сервер используется именно такой метод: несовпадение означает повторную отправку.
- Циклический код избыточности (CRC) — это более надежная контрольная сумма, использующая деление многочленов, позволяющая обнаруживать значительно больше типов ошибок.

Один дополнительный бит делает количество 1 четным; изменение бита нарушает эту четность

Вычислить, отправить, пересчитать, сравнить
Проверка четности работает следующим образом:
Паритетный бит обеспечивает четность или нечетность количества 1; приемная сторона пересчитывает их для обнаружения ошибки одного бита.
Какие методы верификации используются во время передачи данных? Выберите все подходящие варианты.
Четность и контрольные суммы пересчитываются на принимающей стороне. Двойной ввод и визуальная проверка происходят при вводе данных.
Проверка четности байта обнаруживает любую возможную ошибку передачи в этом байте.
Два перевернутых бита не изменяют количество 1, поэтому они проходят без обнаружения. Паритет надежно выявляет только ошибки одного бита.
Разобранный пример: блок четности определяет положение бита
- Проверка блока четности arrangeет байты в сетку: каждый байт содержит бит четности строки, а один дополнительный байт четности хранит четность столбцов для байтов, расположенных выше него.
- Четыре байта передаются с четной четностью, за ними следует байт четности. Подсчитайте количество 1 в каждой строке и каждом столбце: в байте 3 их пять, а в столбце 4 — три, оба значения нечетны.
- Бит, находящийся на пересечении этой строки и этого столбца, является измененным, поэтому он восстанавливается с 1 на 0. Один бит четности обнаруживает ошибку, а блок четности определяет ее место и исправляет.

Неверна одна строка, неверен один столбец: бит находится на их пересечении
Расставьте этапы проверки блока четности по порядку.
Строки обнаруживают, столбцы обнаруживают, пересечение локализует, а переворот исправляет. Это то, что добавляет блок над одиночным битом четности.
Разобранный пример: какая проверка выявляет какую ошибку
- Пользователь вводит дату своего рождения как
31/02/2009, а затем дважды вводит свой адрес электронной почты. Какая проверка выявит каждую ошибку и какова разница? - Валидация: проверка формата или диапазона отклоняет
31/02/2009, так как в феврале никогда не бывает 31 дней. Компьютер проверяет значение на соответствие правилу. - Верификация: двойной ввод сравнивает два адреса электронной почты и сообщает о несоответствии, если они различаются. Компьютер сравнивает две копии, и он принял бы неверный адрес, введенный дважды одинаково.
- Валидация спрашивает, разумны ли данные; верификация спрашивает, были ли они введены правильно.

Разумные или скопированные правильно: два разных вопроса
Какое утверждение верно?
Валидация тестирует разумность согласно правилам; верификация тестирует, что данные были введены/переданы без изменений.
Верификация доказывает, что данные были скопированы или введены без изменений, но не то, что значение фактически корректно.
Двойной ввод / контрольные суммы доказывают, что данные прибыли без изменений; только человек или перекрестная проверка могут подтвердить, что они действительно верны.
Потерянные баллы
- Контрольная цифра — это валидация при вводе; четность и контрольная сумма проверяют передачу данных. Не归类 их под неправильным заголовком.
- Ни одна из проверок не гарантирует истинность данных. Валидация означает «разумно»; верификация означает «совпадает с источником».
- Проверка четности байта пропускает две инвертированные биты в одном байте, так как они компенсируют друг друга. Укажите «ошибки одиночного бита».
- Шифрование является мерой безопасности. Оно ничего не делает для целостности.
Вы поняли
- валидация = автоматические правила при вводе: диапазон, предел, существование, длина, тип, формат, наличие, контрольная цифра; она не может выявить значения правильного формата, но ошибочного содержания
- верификация при вводе = двойной ввод и визуальная проверка; при передаче = четность (байт или блок), контрольная сумма, CRC
- блок четности определяет перевернутый бит на пересечении неудачной строки и столбца
- валидация спрашивает «разумно?»; верификация спрашивает «скопировано правильно?»; ни одна не спрашивает «истинно?»