Лекция 9. Аналитическая проверка корректности программ. Верификация программ
Корректность является статическим свойством программы, поскольку она не зависит от времени (если, конечно, не изменяются цели разработки) и отражает специфику ошибок разработки программ (ошибок проекта и кодирования).
Различают два типа проверки корректности:
· валидация (validation) – установление соответствия между тем, что делает программа, и тем, что нужно Заказчику;
· верификация (verification) – установление соответствия между программой и ее спецификацией.
Определение верификациии симметрично ввиду относительного характера свойства корректности: если программа не соответствует своей спецификации, то либо программа, либо спецификация, либо оба этих объекта содержат ошибки. Перефразируя известное изречение Э.Дейкстры о тестировании программ, можно сказать, что верификация способна доказать отсутствие ошибок в программе, но не всегда доказывает их присутствие.
В отличие от тестирования верификацияпредполагает аналитическое исследование свойств программы по ее тексту (без выполнения программы). Таким образом, для проведения верификации необходимо построить формально-логическую систему, в которой были бы формально определены свойства корректности программы. Для этих целей наиболее широкое применение получило исчисление предикатов первого порядка, расширенное аксиоматической арифметикой.
Что такое верификация и валидация? В чем различие?
Можно сказать, что верификация – это вычисление истинности предикатаот двух аргументов: программы и спецификации. Истинность этого предиката устанавливает свойство корректности программы, если спецификация не содержит ошибок, однако, его ложность, вообще говоря, не означает наличие ошибок в программе, а требует более точного разбора.
Учитывая специфику проявления ошибок в программах в процессе их выполнения на ЭВМ, целесообразно выделить в понятие корректности программы два свойства:
· частичную корректность – удовлетворение внешним(входной и выходной) спецификациямпрограммы при условии завершения выполнения программы;
· завершенность – достижение в процессе выполнения выхода программы при определенных входной спецификацией данных.
Свойство завершенностине является тривиальнымдля такого объекта, как программа, ввиду возможности циклических и рекурсивных вычислений, а также наличия частично-определенных операций. Случаи, когда свойство завершенности не удовлетворяется, довольно обычны для программ с ошибками, и приводят к заведомо некорректным программам независимо от спецификации выхода.
Каждое из двух выделенных свойств корректности программы может удовлетворяться или не удовлетворяться. Таким образом, можно выделить шесть основных задач анализа корректности программы:
· частичная корректность (при условии завершенности);
· тотальная корректность (частичная корректность и завершенность);
· частичная некорректность (некорректность при условии завершенности);
· некорректность (незавершенность или частичная некорректность).
ВЕРИФИКАЦИЯ. Что это? Объяснение в картинках
Разделение свойств частичной корректности и завершенности следует рассматривать как методологический прием, направленный на уменьшение сложности верификации программ.
Рассмотрим формальные постановки задач анализа корректности.
Введем ограничение: будем рассматривать программы, начинающиеся оператором START(первый выполняемый оператор) и заканчивающиеся оператором STOP(последний выполняемый оператор).
Спецификацию программы Prgm будем определять путем приписывания индуктивных утвержденийточкам разреза графа потоков управления программы (точкам между операторами программы). При этом выходу оператора STARTприписываетсявходной предикат (предусловие) программы P(x), определяющий множество допустимых значений исходных данных x(xдопустимо, еслиP(x): true), а входу оператора STOPприписываетсявыходной предикат (постусловие) Q(x,y), определяющий целевую функцию программы (связь между входными и выходными данными программы).
Тогда свойство частичной корректности программы определяется следующей формулой логики предикатов:
PCOR(Prgm, P, Q): «x ( P(x) Ù fin(x) Þ Q( x, f(x) ) ),
где fin(x) –предикат завершения программыPrgm, начатой в состоянииx;
f(x) –функция, вычисляемая программойPrgm,
свойство завершенности может быть определено формулой:
FIN(Prgm, P): «x ( P(x) Þ fin(x) ),
а свойство тотальной корректности формально выражается как одновременное присутствие свойств частичной корректности и завершенности:
TCOR(Prgm, P, Q): «x ( P(x) Þ Q(x, f(x) ) Ù fin(x) ).
Аналогичным образом могут быть формализованы и другие перечисленные выше свойства корректности (записать самостоятельно).
Заметим, что для произвольных программ каждое из этих свойств (завершенность и частичная корректность) является алгоритмически неразрешимым, т.е. не существует алгоритма, позволяющего оценить истинность соответствующих формул логики предикатов. Однако для отдельных классов программ в настоящее время разработаны достаточно эффективные методы верификации, позволяющие вручную или автоматически проводить соответствующие доказательства. Такие методы могут рассматриваться как составная часть процессов разработки и отладки программ, обеспечивая логическую завершенность этих процессов.
Наиболее распространенным методом доказательства частичной корректности программ является метод индуктивных утверждений, предложенный Флойдом. Он позволяет свести доказательство частичной корректности программы к доказательству некоторого конечного числа утверждений, записанных на языке исчислений предикатов первого порядка и имеющих интерпретацию в соответствующей проблемной области.
Рассмотрим метод индуктивных утверждений для программ с конечным множеством простых переменных < x1, x2, … xn >, где n³1, а операторами являются:
· операторы присваивания вида xi := f (x1, x2, … xn);
· составной оператор вида A ; B;
· оператор условного перехода if a(x1, x2, … xn) then L+ else L–,
где L+,L– – метки операторов, которым передается управление;
· начальный оператор START;
· конечный оператор STOP.
Такой состав структурных компонентов вполне достаточен для представления произвольного алгоритма и поэтому не ограничивает общности излагаемого метода.
Установление частичной корректности осуществляется за четыре последовательных шага.
Шаг 1.Разрезание циклов программы
Очевидно, что при выполнении программы для различных исходных данных возможны различные последовательности операторов, начинающиеся оператором STARTи оканчивающиеся оператором STOP. Назовем такие последовательности трассами вычислений.
Сложность анализа частичной корректности программы разбиением на трассы заключается в том, что при наличии циклов в программе он не может быть выполнен непосредственным перебором всех трасс. Эта сложность может быть преодолена путем включения в граф потока управления программы конечного числа точек, называемых точками разреза, таким образом, что каждый цикл содержит одну такую точку, которая “разрезает” циклические пути на два:
· путь через тело цикла;
· путь к выходу из цикла.
Источник: studopedia.ru
Верификация: что это простыми словами, принципы и примеры
Простыми словами верификация — это проверка пользователя на достоверность внесенных данных. Термин происходит от двух латинских слов verus «истинный» и facere «делать», что в буквальном переводе означает «сделать что-либо настоящим».
Процедура обработки персональной информации называется аутентификацией. Классический пример — сравнение введенного пароля с паролем, привязанным к этому аккаунту.
А теперь Вы поняли, что значит верификация?
Проголосовало: 499
Код верификации: что это такое
Скорее всего, вы неоднократно сталкиваетесь с кодом верификации в повседневной жизни, когда при регистрации на ваш телефон или e-mail приходил специальный пароль для входа в личный кабинет. Таким образом, администрация сайта удостоверяется в подлинности внесенных данных.
Принципы верификации
После того как мы узнали, что такое верификация и для чего она нужна, познакомимся с ее основными принципами.
№1
Первостепенный принцип верификации выглядит следующим образом: данные должны быть подтверждены экспериментальным путем и не должны противоречить общепринятым фактам.
Рассмотрим пример. Банковская карта принадлежит И. И. Иванову. Данные подтверждаются, когда клиент внес в банкомат свою карту. Но этого недостаточно. Ко всему прочему необходимо ввести специальный пароль, который знает только владелец карты.
№2
Сведения должны быть познаваемыми. К примеру, невозможно подтвердить информацию о том, что существует реальный Человек-Паук. Его никто не видел, а значит, нельзя провести верификацию.
№3
Информация должна быть объективной. Возьмем за пример Аню и Толю. Если мы захотим верифицировать утверждение «Толя любит Аню», то ничего не получится. Мы не можем «залезть в душу» к Толе, поэтому невозможно проверить это утверждение на достоверность.
КСТАТИ
Зарегистрируйтесь в нашем сервисе голосовых рассылок Zvonobot и получите первые 20 звонков — бесплатно!
Цели верификации
Цель верификации весьма понятна — защитить аккаунт от посторонних лиц. После успешного прохождения аутентификации пользователю предоставлен доступ к продукту. Конечный результат должен соответствовать требованиям разработчиков.
Также выдвинутые предположения о том, что аккаунт принадлежит пользователю, должны соответствовать научным фактам.
Чем верификация отличается от валидации
Слова верификация и валидации довольно схожи по смыслу, поэтому непримечательный читатель может не заметить разницы.
Ниже представлена таблица, в которой подробно расписаны основные отличия этих понятий.
Диапазон использования верификации достаточно широкий, поэтому мы рассмотрим лишь основные направления, где проверка информации на достоверность является неотъемлемым процессом работы.
Верификация в производстве
После того как продукт выпущен, отдел технического контроля (ОТК) проверяет изделие на соответствие с требуемыми параметрами, а именно:
- государственным стандартам,
- отраслевым стандартам,
- техусловиям,
- проекту,
- нормативами.
Это еще не все. ОТК отправляет продукцию в отдел менеджмента качества для сравнения с сертификацией ИСО. Данное подразделение отвечает за технологические и экологические параметры выпущенного изделия.
Пример
На некоторой фабрике выпускается кожаная обувь. Работники компании из отдела контроля качества сверяют изготовленную пару обуви с документацией, в которой прописаны физико-механические параметры продукта (деформация, гибкость, прочность и т. д). Как правило, верификации подлежит лишь несколько пар из всей партии обуви. Бракованную обувь снимают с производства.
Верификация в интернет-технологиях
Технологии в просторах интернета подразделяют на 4 направления:
- Верификация пользователя. Например, «галочка» в Инстаграме означает, что данный аккаунт подлинный и, действительно, принадлежит известному человеку.
- Верификация ПО. Продукт, созданный на основе программного обеспечения, должен содержать все сборные части и запускаться при нажатии. Что касается самой работы программного обеспечения, то уже это проверяется с помощью валидации.
- Верификация сайта. Чтобы доказать собственность сайта, необходимо вставить в код специальный файл HTML или использовать другие способы подтверждения.
- Верификация электронной цифровой подписи (ЭЦП). Такая подпись используется для передачи документов в электронном виде. Благодаря специальным верификационным сервисам, можно проверять истинность указанных сведений.
Верификация в медицине
Излечение болезней — основная задача медицины. Один неверный шаг может привести к губительным последствиям. Поэтому сфера здравоохранения подлежит тщательной проверке: от производства медикаментов вплоть до предписаний лечащего врача. К примеру, на фармацевтической фабрике изготовленный препарат сравнивается с химическим составом в соответствии с ТЗ.
Верификация карты (кредитной, дебетовой)
Это один из самых популярных видов верификации. Чтобы оплатить услугу или товар с банковской карты, необходимо указать пин-код от нее или ввести секретный пароль, который отправляется на привязанный телефон клиента. Также подтвердить собственность аккаунта можно через приложение банка или звонка оператора.
Для повышения безопасности своих клиентов банки все чаще начали использовать двухфакторную верификацию. Здесь в дополнение к основной требуется еще один этап подтверждения. Это может быть также код из СМС-сообщения или любой другой способ.
Верификация в платежных системах
Чтобы зарегистрироваться в любой из платежных систем, нужно пройти процесс валидации: отправить сканы документов для подтверждения личности. Для входа в личный кабинет интернет-кошелька необходимо верифицироваться. Как правило, платежные системы требуют логин и пароль.
Верификация в философии и науке
В философии термин верификация означает выяснение теоретических знаний с помощью практического исследования. Мы уже знаем, что основным критерием верификации является познаваемость. Если мы захотим верифицировать утверждение «Собаки не умеют говорить», то фраза пройдет проверку. Законы биологии и физики не позволяют четвероногим друзьям воспроизводить человеческую речь.
Верификация «ВК» и «Инстаграм»
Для подтверждения собственности странички звездам в популярных социальных сетях «ВКонтакте» и «Инстаграм» используются специальный значок в виде голубой галочки. Это помогает отличить официальную страничку/группу от фейковых.
Заключение
Верификация — это очень важный процесс, который регулирует различные сферы нашей жизни. Благодаря ей можно выявлять технологические нарушения в области производства, корректировать лечение пациентов, а также защищать персональные данные от мошенников.
Стоит отметить, что многие не понимают всю значимость и необходимость верификации. Важно уточнить, что это формальный и объективный процесс. Например, если по каким-либо причинам вы указали неверный пароль, то сотрудник банка не может отходить от предписаний и выдать вам деньги.
Источник: zvonobot.ru
Цель верификации и валидации в тестировании программного обеспечения
Тестирование программного обеспечения позволяет оценить новое приложение, чтобы убедиться в том, что после запуска оно работает так, как задумано. Составление плана тестирования помогает предотвратить ошибки, снизить затраты на разработку и повысить производительность приложения. В современной цифровой среде люди сильно зависят от программного обеспечения и приложений, поэтому надежность — одно из самых важных качеств.
Верификация и валидация при тестировании жизненно важны для обеспечения того, чтобы разработчики использовали передовые методы создания программного обеспечения. Цель состоит в том, чтобы избежать сбоев в работе приложений на критическом этапе и гарантировать, что они продолжают работать на благо пользователя. Давайте сравним верификацию и валидацию и то, как они влияют на конечный продукт.
Что такое верификация?
При верификации команда разработчиков изучает документы для создания программного обеспечения или приложения. Цель состоит в том, чтобы убедиться, что разработчик, которому поручен проект, соблюдает все изложенные требования. Логика кода должна соответствовать проектной документации независимо от языка программирования.
Процесс верификации
Он включает следующие этапы:
- Проверка требований: команда проекта подтверждает правильность всех пунктов в требованиях на основе данных, полученных от бизнеса. Заказчики должны иметь возможность вносить любые изменения или удалять ранее запрошенные. Команда должна получить окончательное одобрение от всех соответствующих заинтересованных сторон, чтобы убедиться, что конечный результат отвечает их потребностям.
- Проверка дизайна: команда тестировщиков должна проанализировать дизайн программного обеспечения, включая макеты и прототипы. Охватывают ли логические модели баз данных все соответствующие поля для обработки данных, передаваемых туда и обратно между приложениями? Доволен ли заказчик удобством предлагаемого интерфейса? Прежде чем приступить к работе, необходимо прийти к единому мнению о достоверности проектной документации.
- Проверка логики кода: команда проверяет код, чтобы убедиться в его полноте и согласованности. Они также должны проверить исходный код и связанные с ним артефакты, например дизайн базы данных, и убедиться, что они соответствуют требованиям.
После того как команда подтверждает, что все вышеперечисленное соответствует требуемым стандартам, начинается процесс верификации:
- Планирование: команда изучает взаимосвязи между различными требованиями, затем определяет все задачи, которые должны быть выполнены в ходе верификации. Назначаются ответственные за другие задачи, включая демонстрацию того, насколько хорошо функционируют различные компоненты, проверку обеспечения качества или выявление и составление отчетов о дефектах.
- Выполнение: команда выполняет поставленные перед ними задачи и документирует результаты верификации.
- Отчет: все результаты, полученные в ходе верификации, собираются в отчеты. Команда проверяет, функционирует ли приложение так, как задумано.
Что такое валидация?
Валидация включает в себя проверку приложения на разных этапах разработки, чтобы убедиться, что оно соответствует требованиям. Если в документе требуется веб-страница с функцией живого чата, то разработчик должен создать именно ее. Если что-то отсутствует или не соответствует запросу клиента, это следует выявить и исправить, чтобы получить ожидаемый продукт.
Процесс валидации важен, поскольку он не дает команде разработчиков отклониться от намеченного пути. Необходимо часто проверять документы, включая требования и диаграммы таблиц базы данных. Постоянная проверка документов помогает разработчикам найти упущенные функции, которые необходимо добавить, или противоречивые запросы, которые необходимо решить с клиентом.
Процесс валидации
Он включает следующие этапы:
На этом этапе команда описывает все бизнес-требования конечного пользователя. Затем составляется план валидации для каждого пункта, прежде чем подтвердить готовность программного обеспечения к разработке. После этого команда может получить одобрение от высшего руководства перед началом тестирования.
Команда пытается установить приложение в соответствии с планом валидации. Цель состоит в том, чтобы убедиться, что процесс установки и все необходимое системное оборудование соответствуют требованиям проекта. Кроме того, тестировщики подтверждают, что тестовая среда функционирует аналогично производственной среде.
Тестировщики подвергают продукт различным сценариям тестирования, чтобы убедиться, что он соответствует заданным пользовательским требованиям. Цель — проверить все доступные функциональные возможности, чтобы определить, работает ли программное обеспечение в соответствии с требованиями заказчика. Команда полагается на план валидации, чтобы убедиться, что тестовая среда подходит для реализации сценариев, описанных в требованиях. Таким образом, они могут гарантировать, что конечный результат соответствует ожидаемому и способен удовлетворить потребности клиента.
Тестирование производительности показывает, что программное обеспечение может функционировать так, как это необходимо бизнесу в реальных условиях. Клиенты могут сами проводить бета-тестирование, чтобы получить представление о продукте и понять, был ли он разработан в соответствии с их требованиями. Взгляд со стороны помогает выявить ошибки и дефекты, которые команда разработчиков могла пропустить.
После завершения всех других этапов процесса валидации продукт считается готовым к релизу. Это означает, что команда разработчиков может двигаться вперед, выпуская программное обеспечение в производственную среду. Любые дефекты, обнаруженные после выпуска продукции, устраняются с помощью обновлений программного обеспечения.
Зачем проводится верификация и валидация?
Процесс верификации и валидации помогает убедиться, что конечный программный продукт соответствует потребностям клиента, изложенным в его требованиях. Многие компании используют автоматизацию, чтобы справиться с более рутинными задачами тестирования. Ниже перечислены некоторые из основных причин, по которым необходимо использовать верификацию и валидацию.
Уменьшить количество дефектов в реальном продукте
Если новая часть программного обеспечения при выпуске не работает так, как предполагалось, качество продукта может пострадать. Заказчики и команда будут чувствовать себя более уверенно в том, что приложение будет работать без ошибок, если они тщательно его протестировали, используя тестовые сценарии, описанные в процессе верификации и валидации.
Убедиться, что дизайн соответствует техническим условиям
Последнее, чего хочет команда разработчиков — это вызвать недовольство клиента тем, что полученный продукт не соответствует его запросам. Регулярная проверка требований во время верификации и валидации помогает разработчикам не упустить критически важные функциональные и проектные требования, отмеченные в документации.
Заметные различия между верификацией и валидацией
Проверки верификации и валидации происходят на разных этапах цикла разработки программного обеспечения. Например, верификация происходит до того, как разработчик завершает создание программного обеспечения. Это помогает проектным группам выявить ошибки до того, как они попадут в конечный продукт, где их исправление становится более дорогостоящим.
Валидация обычно происходит после того, как программное обеспечение создано и ожидает интеграционного тестирования и производственного релиза. Процесс валидации определяет удобство использования приложения в его текущем состоянии. Тестировщики смотрят на продукт глазами пользователя и пытаются выявить проблемы с функционированием программного обеспечения и недостающие функции. Как правило, валидационные проверки не могут проводиться до тех пор, пока продукт не пройдет процесс верификации.
Когда следует выбрать верификацию?
Верификация должна проводиться до и во время фазы сборки билда. Разработчики должны иметь всю документацию, необходимую для начала создания приложения. Они должны основывать код на требованиях и подтверждать, что они используют логику, соответствующую потребностям пользователя. Это включает в себя частые проверки любого завершенного кода для получения обратной связи от коллег.
Когда следует выбрать валидацию?
Процесс валидации должен проводиться после того, как команда разработчиков завершит разработку продукта. Цель состоит в том, чтобы предоставить клиенту продукт, который он ожидал. Тестировщики работают над тем, чтобы убедиться в правильности работы приложения, используя такие методы проверки, как:
- Тестирование методом белого ящика: при тестировании методом белого ящика изучается внутренний код программного обеспечения. Тестировщики должны понимать логику кода и искать такие проблемы, как дыры в безопасности и неработающие функции. Некоторые используют алгоритмы анализа для поиска проблем. Тестирование методом белого ящика можно проводить на разных уровнях разработки программного обеспечения для проверки работы кода приложения.
- Тестирование методом черного ящика: тестирование методом черного ящика рассматривает только внешнее функционирование программного обеспечения. О внутреннем устройстве приложения ничего не известно. Тестировщики ищут несоответствия в том, как функционирует программное обеспечение по сравнению с тем, что запросил клиент.
Преимущества верификации
Верификация — это контрольная точка для различных этапов процесса разработки. Команда следит за тем, чтобы разрабатываемый продукт продолжал соответствовать потребностям клиента на основе проектной и технической документации. Проще и дешевле выявить проблемы до того, как они достигнут более поздних стадий жизненного цикла программного обеспечения. Это означает, что команде приходится устранять меньше дефектов во время системного или модульного тестирования.
Преимущества валидации
Валидация помогает команде убедиться, что работа соответствует ожиданиям заинтересованных сторон. Она также дает им последний шанс устранить любые дефекты или несоответствия между приложением и требованиями. Программное обеспечение становится более надежным и менее склонным к сбоям, потому что ошибка не была обнаружена до выпуска продукта.
- software testing
- verification
- validation
- тестирование по
- тестирование веб-приложений
- тестирование мобильных приложений
- Тестирование IT-систем
- Тестирование веб-сервисов
- Тестирование мобильных приложений
- Тестирование игр
Источник: habr.com
Верификация — это процесс проверки программного продукта
В одном из обновлений сайт «ВКонтакте» удивил пользователей появлением особых галочек рядом с именем владельца страницы. Она означает, что администрация социальной сети официально подтвердила личность хозяина аккаунта. Среди прочих страничек подражателей представительство в «ВКонтакте» подтвердили многие знаменитости.
Принцип верификации в методологии науки
Термины «верификация» и «валидация» очень часто используются в технической литературе и связаны с анализом качества любого программного обеспечения. В научной литературе можно встретить различные трактовки данных понятий. Итак, попробуем разобраться в этом вопросе.
Наиболее правильным, с нашей точки зрения, является следующее определение. Валидация и верификация – это виды деятельности, которые направлены на проведение контроля качества программного продукта с целью обнаружения на ранних стадиях ошибок в нем. Казалось бы, они имеют общую цель. Но все-таки эти виды обладают различиями в источниках проверяемых свойств, ограничений и правил, несоблюдение которых может считаться ошибкой.
В каких случаях сообщается о недействительности сертификата сервера? Про что это говорит? И что.
Верификация – это проверка соответствия программного обеспечения технической документации, представленной техзаданием, архитектурой или моделью предметной области. В «обязанности» данного термина включается и сопоставление процедуры расчетов с процессом их разработки, правилами и стандартами.
Верификация данных может выполняться для установки соответствия функционирования программы установленным нормам, требованиям, проектным решениям и пользовательской документации. При этом обязательной предварительной проверке подлежат те документы, с которыми проводится сравнение на соответствие их стандартам и нормативам, установленным в той стране, где эксплуатируется программное обеспечение. Необходимо принимать во внимание и соблюдение всех последовательностей выполняемых операций.
Идентификация и аутентификация являются основными понятиями современного программирования, но.
В случае обнаружения ошибки или дефекта в работе программы либо же обнаружения противоречия между указанными выше документами и действующим функционированием программы принятие решения о выборе документа для исправления должно быть решением отдельной задачи.
В отличие от верификации валидация отвечает за проверку соответствия разрабатываемых или сопровождаемых программных продуктов потребностям либо нуждам заказчиков или пользователей. Указанные нужды зачастую не фиксируются ни в какой документации. Именно поэтому валидация менее формализована, чем верификация. Это процесс, в котором участвует представитель заказчика, пользователя, а также может присутствовать аналитик или эксперт в предметной области. Другими словами, те, которые могут выразить конкретные потребности и реальные нужды заинтересованных лиц.
Верификация – это ответ на вопрос «Выполнено ли программное обеспечение правильно?», а валидация – «Сделано ли правильное программное обеспечение?».
При поиске ответа на поставленные вопросы можно обнаружить, что валидация (или аттестация) по содержанию имеет значение несколько шире, чем проверка (верификация). Однако верификация достаточно тесно связана с обеспечением контроля за качеством программного продукта.
Например, верификация компьютерной программы предусматривает процесс, в котором за основу ставится цель по обеспечению удовлетворения требований данных, полученных в определенном жизненном цикле продукта, тем, которые были получены на предыдущей стадии.
Если же вести речь о верификации модели, то здесь речь пойдет о проверке правильности отображения данной вычислительной модели необходимой концептуальной либо математической моделям.
При верификации системного кода проводится анализ кодировки источника и проверка соответствия его документальному описанию.
В процессе верификации могут включаться операции, содержащие альтернативные расчеты. Проводится сравнение технической и научной документаций нового проекта с соответствующей документацией уже существующего проекта, обязательное тестирование, апробация нового программного продукта и демонстрация результатов.
Источник: autogear.ru