Прежде всего, хотелось бы уточнить предмет дискуссии. Мне кажется, в предложенной теме существует, по крайней мере, три вопроса:
1. Что по сути обозначают термины Varification and Validation?
2. Как правильнее перевести их на русский язык или какие традиционно используемые русскоязычные инженерные термины можно применить для этих целей?
3. Как строго определить соответствующие понятия?
Конечно, все эти три вопроса сильно пересекаются. Но начать их всё-таки следует обсуждать последовательно, не перескакивая в обсуждении с одного вопроса на другой- иначе нам, вообще, трудно будет о чём-то договориться. Отдельно стоит вопрос, что куда входит: Тестирование в V&V или наоборот. Но это уже предмет другого разговора, тем более, что я не встретил возражение против моей позиции, что Тестирование- это только одна из задач V&V, хотя очень многие англоязычные авторы придерживаются противоположной позиции.
Сразу скажу, в обсуждении третьего вопроса(строгое определение) я вряд ли участвовать буду. Просто считаю это не предметом данного форума. А вот в обсуждении первых двух с удовольствием поучаствую. И начать предлагаю с первого вопроса.
Алексей пишет:
Позиция Анатолия Мильнера:
"верификация" – это упреждающая оценка, в отличие от validation суть "технический контроль"- подтверждающая оценка
Хочу извиниться за самоцитирование, но так как эта дискуссия в этой теме является продолжением начатой ранее в теме Русскоязычная терминология, и я не уверен, что все ещё помнят, о чём там говорилось, то хочу в подлиннике объяснить, что Анатолий Мильнер считает:
Второй спорный вопрос: а где проходит граница между Verification and Validation? Причём ответ на этот вопрос не зависит от ответа на первый вопрос (что и куда входит- Тестирование в V&V или наоборот). Все приведённые Вами источники, как и большинство известных мне, дают, с моей точки зрения, очень невразумительный ответ на второй вопрос типа приведённого Вами в последней цитате. Или я чего- то не понимаю, или недостаточно знаю английский, чтобы уловить нюансы, но объясните мне, пожалуйста, на конкретных и реальных примерах, чем отличается "Правильно ли построен наш объект?"( Verification) от "Делаем ли мы то, что нужно?" (Validation). Поэтому я являюсь сторонником, подхода, изложенно в [1]. Что интересно, автор этой книги, являясь, к сожалению для меня, сторонником формулы V&V = Testing, и приведя не совсем вразумительные(с точки зрения человека, для которого английский не является родным языком) определения, очень похожие на цтируемые Вами, когда доходит до иллюстрирующих схем, ссылается на некоторую Software Development Technologies/SDT Dotted- U Model, о которой я ничего ранее не слышал. Эта графическая модель несколько специфически отражает, в общем то, известный нам Жизненный Цикл ПО, привязывая к каждому его этапу соответствующие работы либо по Verification, либо Validation(а может эту привязку сделал сам автор [1], не знаю). Так вот, в резульатате получается как раз то, что декларируется в моём Курсе, а именно: Verification/ Верификация - упреждающая оценка, Validation/ Технический контроль- подтверждающая оценка (естественно, русскоязычные определения мои). Отсюда я могу сделать предположение (пока только предположение), что англоязычные авторы большинства известных нам определений этих двух понятий подразумевают то же, что и я, просто в русских переводах некоторые нюансы английского языка теряются, и мы имеем то, что имеем. Кстати, давайте заглянем в словари: одним из переводов слова Verification является «предсказание» (чем ни «упреждающая оценка»?), а Validation - «утверждение» (чем ни «подтверждающая/утверждающая оценка», что, в свою очередь, соответствует ГОСТ’вскому «техническому контролю»?). Может быть для англоязычных авторов такая трактовка в данном контексте является очевидной, а для нас – нет? Если Вы захотите, я вышлю Вам соответствующие выдержки из упомянутого мной источника, связанные с описанием SDT Dotted- U Model.
После этого своего выступления я выслал Алексею соответствующие материалы, на что получил следующий ответ(цитирую с любезного согласия Алексея):
Если честно, то я не нашёл в ней существенных отличий от любой другой модели. Кроме того, я не нашёл почти никаких расхождений с моей трактовкой понятий Verification & Validation, особенно с учётом дополнительных пояснений, которые я дал на форуме. Левая половина модели - первая подзадача, правая половина - вторая подзадача
Получается, что по сути обсуждаемых терминов разногласий, оказывается, то и нет, а используемая Алексеем формула может быть положена в основу строгого, но не сутевого, определения этих понятий (хотя, честно говоря, я не понимаю, что на практике обозначает проверка его Подзадачи 1: «разработать Требования, отражающие ожидания Пользователя»).
Косвенно с этим соглашается и Victor, который пишет:
О валидации.В переводе уже упомянутой книги Rapid Testing термин Validation рассматривается как "аттестация", а аттестация это есть "определение качества продукции" (по www.km.ru) , о чем, кстати, далее в книге и говорится.И, на мой взгляд, это правильно, так как этот термин не подразумевает только техническую оценку, или технические действия по оценке.Теперь о верификации .Верификацию программного продукта, выполняемую на этапе разработки, действительно можно понимать как упреждающую оценку, так как дает она нам возможность с некоторой долей вероятности оценить качественность продукта, лишь анализируя результат последней на данный момент стадии разработки и предыдущей. Иными словами, если качественно соблюден процесс разработки, разве не можем мы ожидать (с некоторой долей вероятности ), что полученный продукт "обладает хорошим качеством" ? Ожидать можем, называть - нет. Поэтому, на мой взгляд, верификация - есть верификация , не случайно слово это уже проникло в русский язык, правда, теперь его значение несколько расширяется.
Алексей также пишет:
Да, иногда термин верификация используется для обозначения способов формального, математически строгого доказательства правильности, в то время как валидация означает все остальные способы проверки. Такая трактовка, например, широко распространена среди тестировщиков аппаратного обеспечения, в частности интегральных схем (ASIC, SOC).Однако, в литературе, посвящённой разработке ПО, я такого подхода ни разу не встречал. Возможно, тестировщики безопасности позаимствовали свою терминологию у аппаратчиков, а не у программистов?
Согласен с этим утверждением, кроме одного, у программистов также часто встречается трактовка термина верификация как формальнеого доказательства. Я об этом пишу в своей Презентации курса.
Отсюда беру на себя смелость сделать вывод, что пока, большинство активных участников этого обсуждения согласны с тем, что:
Verification - это
любая проверка(специально использую универсальное слово «проверка»)
любых промежуточных результатов, которые могут появиться в процессе проектирования(идеи - задокументированные или нет, документы или эскизы документов, схемы или коды, макеты и т.п.), которые сами разработчики не относят к окончательным результатам проектирования и ни при каких условиях не готовы передать это заказчикам/ пользователям. Проверка осуществляется на предмет того, что эти промежуточные результаты отражают правильное направление движения от постановки задачи (Технического задания) на разработку продукта/изделия к самому этому продукту/изделию.
Validation- это
любая проверка
любых окончательных результатов проектирования (документы, схемы или коды, сами изделия и т.п.), которые сами разработчики готовы при тех или иных условиях передать заказчикам/ пользователям. Проверка осуществляется на предмет того, что эти результаты соответствуют постановке задачи (Технического задания) на разработку продукта/изделия.
Если в том или ином виде согласиться с выше сформулированным отнюдь не строгими определениями, то нам только остаётся «привесить» к ним русскоязычные ярлычки- дать им названия и со временем попытаться сформулировать более строгие определения. Для этого, мне кажется, надо начать с традиционной в русскоязычной инженерии терминологии. Оказывается для термина Validation вообще не существует никаких проблем - это испокон веков используемый для обозначения соответствующего понятия термин «технический контроль». Хуже обстоит дело с Verification. Здесь я не нашёл нужного русскоязычного эквивалента. Но поскольку слово «верификация» давно прижилось в русском языке, почему бы его и,действительно, не оставить.