Процедура верификации. Для разработки программного обеспечения

Очень часто путают два понятия валидация и верификация. Кроме того, часто путают валидацию требований к системе с валидацией самой системы. Я предлагаю разобраться в этом вопросе.

В статье «Моделирование объекта как целого и как композиции» я рассмотрел два подхода к моделированию объекта: как целого и как конструкции. В текущей статье нам это деление понадобится.

Пусть у нас есть проектируемый функциональный объект. Пусть этот объект рассматривается нами как часть конструкции другого функционального Объекта. Пусть есть описание конструкции Объекта, такое, что в нем присутствует описание объекта. В таком описании объект имеет описание как целого, то есть, описаны его интерфейсы взаимодействия с другими объектами в рамках конструкции Объекта. Пусть дано описание объекта как конструкции. Пусть есть информационный объект, содержащий требования к оформлению описания объекта как конструкции. Пусть есть свод знаний, который содержит правила вывода, на основании которых из описания объекта как целого получается описание объекта как конструкции. Свод знаний – это то, чему учат конструкторов в институтах – много, очень много знаний. Они позволяют на основе знанию об объекте спроектировать его конструкцию.

Итак, можно начинать. Мы можем утверждать, что если правильно описан объект как целое, если свод знаний верен, и если правила вывода были соблюдены, то полученное описание конструкции объекта, будет верным. То есть, на основе этого описания будет построен функциональный объект, соответствующий реальным условиям эксплуатации. Какие могут возникнуть риски:

1. Использование неправильных знаний об Объекте. Модель Объекта в головах у людей может не соответствовать реальности. Не знали реальной опасности землетрясений, например. Соответственно, могут быть неправильно сформулированы требования к объекту.

2. Неполная запись знаний об Объекте – что-то пропущено, сделаны ошибки. Например, знали о ветрах, но забыли упомянуть. Это может привести к недостаточно полному описанию требований к объекту.

3. Неверный свод знаний. Нас учили приоритету массы над остальными параметрами, а оказалось, что надо было наращивать скорость.

4. Неправильное применение правил вывода к описанию объекта. Логические ошибки, что-то пропущено в требованиях к конструкции объекта, нарушена трассировка требований.

5. Неполная запись полученных выводов о конструкции системы. Все учли, все рассчитали, но забыли написать.

6. Созданная система не соответствует описанию.

Понятно, что все артефакты проекта появляются, как правило, в завершенном своем виде только к концу проекта и то не всегда. Но, если предположить, что разработка водопадная, то риски такие, как я описал. Проверка каждого риска – это определенная операция, которой можно дать название. Если кому интересно, можно попытаться придумать и озвучить эти термины.

Что такое верификация? По-русски, верификация – это проверка на соответствие правилам. Правила оформляются в виде документа. То есть, должен быть документ с требованиями к документации. Если документация соответствует требованиям этого документа, то она прошла верификацию.

Что есть валидация? По-русски валидация – это проверка правильности выводов. То есть, должен быть свод знаний, в котором описано, как получить описание конструкции на основе данных об объекте. Проверка правильности применения этих выводов – есть валидация. Валидация - это в том числе проверка описания на непротиворечивость, полноту и понятность.

Часто валидацию требований путают с валидацией продукта, построенного на основе этих требований. Так делать не стоит.

Кажущаяся или реальная анонимность в интернете – это фактор, за который многие пользователи любят всемирную сеть, и ищут всяческие способы для сохранения и поддержания инкогнито (по разным причинам).

Cодержание:

Определение

Следуя энциклопедическим или словарным определениям, можно сказать, что верификация – это подтверждение реальности и истинности личности или групп личностей (например, в группах организаций в социальных сетях, совершении каких либо банковских операций и т. п.).

Данный термин произошел от латинского слова veritas – истина, дословно переводится как «делать истинным», то есть подтверждать.

Таким образом, процесс верификации – это непосредственный процесс снятия инкогнито с личности или организации.

Однако не только конкретные люди или организации подвергаются верификации. Этот термин применим и к различным иным сферам.

Подтверждение номера телефона или адреса электронной почты посредствам отправки на него определенного кода или ссылки – это также верификация, но не человека, а данных.

Подтверждения истинности, по сути, может требовать любая информация, любые данные, любые личности или организации. В некоторых сферах является обязательной, в других – желательной, в третьих – необязательной и т. п. в определенных случаях она может давать определенные бонусы или возможности.

Сферы применения термина

Данное понятие применяется во многих сферах, но наибольшее распространение получило в финансовой сфере и в интернете.

В финансовой сфере оно наиболее необходимо потому, что именно в ней происходит наибольшее число мошеннических действий, а она всегда проводится с целью избегания мошенничества.

4 Верификация бывает нужна в целях избегания появления страниц-клонов с развлекательной целью или с информацией, портящей репутацию человека (особенно это актуально для публичных личностей, но свои аккаунты подтверждают не только они);

5 Все преимущества и особенности предыдущего пункта распространяются не только на персональные аккаунты , но и на паблики организаций или просто популярные сообщества в интернете;

6 В большинстве случаев нужна для обеспечения мнимой безопасности пользователей , например, при обнаружении угроз в чей либо адрес, человека, который их выдвигал проще привлечь к ответственности, если его аккаунт верифицирован (хотя фактически эта система почти не работает);

7 При оформлении платных подписок на сайт, аудиотеку, видиотеку или библиотек у. Регистрации в подтверждение реальности нужно для урегулирования возможных денежных споров и избегания мошеннических действий со стороны пользователей;

8 Почти все сайты, работающие с системами электронных денег , также в этих целях проводят процедуру верификации, особенно, если речь идет об обороте более или менее значительных сумм (например, реализует несколько ступеней подтверждения аккаунта, при этом, на каждой новой ступени пользователю предоставляется доступ к более расширенному функционалу системы).

Не все пользователи знают, что многие социальные сети, хотя и не требуют верификации по умолчанию, могут провести ее по запросу пользователя. Например, на сайте можно обратиться в Службу поддержки для того, чтобы провести такую процедуру если вы по той или иной причине видите в ней необходимость. Таким способом можно верифицировать аккаунт или паблик.

Подтверждение аккаунта

В каких случаях стоит подтвердить свой аккаунт или паблик?

1 При появлении у вас достаточно большого количества подписчиков во избежание появления клонов;

2 При регулярной организации каких либо встреч и/или мероприятий, так как подтвержденный аккаунт вызывает больше доверия ;

3 Про совершении каких либо финансовых манипуляций или размещении просьбы о них (например, при сборе средств на благотворительность), по тем же причинам;

4 При наличии цели раскрутки аккаунта или паблика, по тем же причинам ;

5 При размещении текстов, изображений, музыки и т. п. собственного сочинения, другой интеллектуальной собственности с целью хотя бы незначительной защиты авторских прав ;

6 При политической или активистской деятельности (хотя многое здесь зависит от типа активизма);

7 При работе и размещении информации от лица компании или организации и т. п.

8 По сути, верифицировать можно любой аккаунт. У администрации, например, ВКонтакте, обычно не возникает вопросов, с какой целью или по какой причине делается подтверждение.

Хотя важно учитывать, что она имеет и ряд негативных последствий . И в первую очередь это отсутствие анонимности – грубо говоря, вы несете чуть большую ответственность за размещенные материалы и информацию. Хотя отсутствие анонимности все равно не позволит вам размещать, например, так как и без подтверждения аккаунта место нахождение и личность пользователя выяснить достаточно легко, если задаться такой целью.

Как получить?

Проводится верификация различными способами и зависит от того, для каких целей ее необходимо получить.

Подтверждения номера мобильного телефона, например, проводится путем пересылки на него , который нужно ввести на странице сайта, назвать сотруднику организации и т. п.

Подтверждение электронной почты требуется, обычно, только на каких либо сайтах.

Причем, в большинстве случаев, если адрес электронной почты подтвержден не будет, то зарегистрироваться на сайте не получится.

Сложнее обстоит дело с верификацией аккаунтов в социальной сети. По умолчанию большинство сетей этого не требует – достаточно лишь подтверждения адреса электронной почты и/или номера телефона. При этом, вы можете создать аккаунт с любым именем или любого содержания.

Но например, если вы захотите сменить имя или фамилию, указанные в профиле в социальной сети, например, может затребовать верификацию аккаунта для смены имени.

Документы

Проводится верификация аккаунта путем предоставления фотографии документов – обычно, основного разворота паспорта, на котором хорошо видны имя и фамилия пользователя.

Для подтверждения официальных страниц групп может быть затребована та или иная информация.

В зависимости от статуса организации, в том числе и свидетельство о регистрации юридического лица.

Требует предоставлять фото различных документов в зависимости от ступени подтверждения – от и других финансовых документов.

Важно! Прежде чем отправлять фото документов администрации, убедитесь в надежности сайта. Учтите, что если возникают даже мин6имальные сомнения в репутации сайта, то отправлять фото документов нельзя. Кроме того, перед тем, как отправлять фото, проверьте по ссылке в адресной строке, не является ли сайт клоном, фишинговым и т. п.

Термины «валидация» и «верификация» появились в русской речи не так давно. Их проникновение в наш язык связано с внедрением стандартов ISO 9000, связанных с новыми требованиями к качеству управленческой сферы.

Помимо , эти понятия стали активно употребляться и в других областях жизни, например в банках и электронных платежных системах. Что же такое «валидация» и «верификация»? И в чем разница между ними?

По одной из версий, понятие «верификация» происходит от латинских слов verus (истинный) и facere (делать). Существует и другое мнение, согласно которому слово взято из позднелатинского языка, где термин verificatia означает «подтверждение» .

Понятие «валидация» тоже имеет латинские корни и связано со словом validus , которое переводится как «сильный, действенный» .

На первый взгляд, валидация и верификация , но каждый из терминов имеет собственное значение. Под верификацией понимают подтверждение соответствия какого-либо продукта определенным требованиям.

Если говорить простым языком, то этим словом компания, производящая продукцию или оказывающая услуги, подтверждает правильность и качество своего продукта. Иными словами, результатом верификации становится ответ на вопрос – соответствует ли продукция (услуга) предъявляемым к ней требованиям?

К примеру, если организация производит автомобили, то верификацией будет их проверка на наличие всех комплектующих и соответствие стандартам качества.

Валидация – это приведение доказательств того, что продукт (или услуга) удовлетворяют требованиям конечного потребителя. Результатом термина становится ответ на вопрос – изготавливаем ли мы правильную продукцию?

Если говорить об автомобилях, то они будут валидированы после того, как заказчик проверит их в действии, прокатится, оценит технические характеристики, а затем признает такими, которые удовлетворяют его потребностям.

В сфере интернет-услуг под верификацией понимают подтверждение пользователем предоставляемой им информации. Если человек заполняет какие-либо документы, созданные в электронном формате, то определение достоверности указанных сведений и будет называться верификацией данных.


Таким подтверждением могут быть отсканированные копии оригинальных документов или простой переход по ссылке, которая высылается на е-мейл при регистрации на каких-либо ресурсах.

В нашей стране имеется множество категорий граждан, которые получают социальные выплаты. К ним относятся пенсионеры, инвалиды, ветераны, переселенцы, матери-одиночки и другие.

В большинстве случаев право на выплаты подтверждается один раз при первоначальном оформлении документов (например, при выходе на пенсию или при рождении ребенка). Однако по прошествии определенного времени государственные органы могут потребовать вновь подтвердить это право, то есть верифицировать социальные выплаты повторным предоставлением соответствующих бумаг.

Верификацией банковской карты называют меры безопасности, посредством которых финансовые учреждения желают удостовериться, что именно вы являетесь собственником данной карточки.

Процесс проверки достаточно прост. Банк блокирует на счету небольшую сумму и просит владельца карты указать ее размер. Если вы даете верный ответ, то деньги автоматически разблокируются.

Несмотря на схожесть валидации и верификации, между ними существуют некоторые отличия. Валидация проводится человеком, тестирующим продукцию или услугу и предполагает личностную оценку качества работы.

Верификация осуществляется разработчиками и основывается на объективной оценке товара (услуги) в соответствии с общепринятыми требованиями. Верификация всегда происходит раньше и предусматривает проверку на наличие всей функциональности продукции, тогда как валидация проводится во вторую очередь и позволяет оценить, правильно ли реализована данная функциональность.


Термины верификация и валидация связаны с проверкой качества программного обеспечения. Мы используем эти термины в своих статьях и докладах. Неоднократно мы слышали различные комментарии и рассуждения, следует ли относить статический анализ исходного кода программ к верификации и валидации и в чем различие этих понятий. В целом складывается такое впечатление, что каждый вкладывает в эти термины свои понятия, а это приводит к взаимному недопониманию.

Мы решили разобраться с терминологией, чтобы придерживаться наиболее правильного толкования этих понятий. В ходе исследования, мы нашли работу В.В. Кулямина "Методы верификации программного обеспечения" . В ней дается развернутое описание этих терминов, и мы приняли решение в дальнейшем опираться на определения, данные в этой работе. Приведем некоторые выдержки их этой работы, относящиеся к верификации и валидации.

Верификация и валидация являются видами деятельности, направленными на контроль качества программного обеспечения и обнаружение ошибок в нем. Имея общую цель, они отличаются источниками проверяемых в их ходе свойств, правил и ограничений, нарушение которых считается ошибкой.

Для дальнейшего изложения нам необходимо ввести термин "артефакт жизненного цикла ПО". Артефактами жизненного цикла ПО называются различные информационные сущности, документы и модели, создаваемые или используемые в ходе разработки и сопровождения ПО. Так, артефактами являются техническое задание, описание архитектуры, модель предметной области на каком-либо графическом языке, исходный код, пользовательская документация и т.д. Различные модели, используемые отдельными разработчиками при создании и анализе ПО, но не зафиксированные в виде доступных другим людям документов, не могут считаться артефактами.

Верификация проверяет соответствие одних создаваемых в ходе разработки и сопровождения ПО артефактов другим, ранее созданным или используемым в качестве исходных данных, а также соответствие этих артефактов и процессов их разработки правилам и стандартам. В частности, верификация проверяет соответствие между нормами стандартов, описанием требований (техническим заданием) к ПО, проектными решениями, исходным кодом, пользовательской документацией и функционированием самого ПО. Кроме того, проверяется, что требования, проектные решения, документация и код оформлены в соответствии с нормами и стандартами, принятыми в данной стране, отрасли и организации при разработке ПО, а также - что при их создании выполнялись все указанные в стандартах операции, в нужной последовательности. Обнаруживаемые при верификации ошибки и дефекты являются расхождениями или противоречиями между несколькими из перечисленных документов, между документами и реальной работой программы, между нормами стандартов и реальным процессами разработки и сопровождения ПО. При этом принятие решения о том, какой именно документ подлежит исправлению (может быть, и оба) является отдельной задачей.

Валидация проверяет соответствие любых создаваемых или используемых в ходе разработки и сопровождения ПО артефактов нуждам и потребностям пользователей и заказчиков этого ПО, с учетом законов предметной области и ограничений контекста использования ПО. Эти нужды и потребности чаще всего не зафиксированы документально - при фиксации они превращаются в описание требований, один из артефактов процесса разработки ПО. Поэтому валидация является менее формализованной деятельностью, чем верификация. Она всегда проводится с участием представителей заказчиков, пользователей, бизнес-аналитиков или экспертов в предметной области - тех, чье мнение можно считать достаточно хорошим выражением реальных нужд и потребностей пользователей, заказчиков и других заинтересованных лиц. Методы ее выполнения часто используют специфические техники выявления знаний и действительных потребностей участников.

Различие между верификацией и валидацией проиллюстрировано на рисунке 1.

Приведенные определения получены некоторым расширением определений из стандарта IEEE 1012 на процессы верификации и валидации . В стандартном словаре терминов программной инженерии IEEE 610.12 1990 года определение верификации по смыслу примерно то же, а определение валидации несколько другое - там говорится, что валидация должна проверять соответствие полученного в результате разработки ПО исходным требованиям к нему. В этом случае валидация являлась бы частным случаем верификации, что нигде в литературе по программной инженерии не отмечается, поэтому, а также потому, что оно поправлено в IEEE 1012 2004 года, это определение следует считать неточным. Частое использование фразы B. Boehm"а :

Верификация отвечает на вопрос "Делаем ли мы продукт правильно?", а валидация- на вопрос "Делаем ли мы правильный продукт?"

также добавляет путаницы, поскольку афористичность этого высказывания, к сожалению, сочетается с двусмысленностью. Однако многочисленные труды его автора позволяют считать, что он подразумевал под верификацией и валидацией примерно те же понятия, которые определены выше. Указанные разночтения можно проследить и в содержании стандартов программной инженерии. Так, стандарт ISO 12207 считает тестирование разновидностью валидации, но не верификации, что, по-видимому, является следствием использования неточного определения из стандартного словаря .

В заключении хочется заметить, что согласно приведенным определениям статический анализ исходного кода программ соответствует верификации программного обеспечения, как проверка соответствия программного кода различным стандартам кодирования. Статический анализ проверяет соответствие результатов этапа конструирования программной системы требованиям и ограничениям, сформулированным ранее.

Библиографический список

  • В.В. Кулямин "Методы верификации программного обеспечения". Институт системного программирования РАН 109004, г. Москва, ул. Б. Коммунистическая, д. 25.
    http://www.ict.edu.ru/ft/005645/62322e1-st09.pdf
  • IEEE 1012-2004 Standard for Software Verification and Validation. IEEE, 2005.
  • IEEE 610.12-1990 Standard Glossary of Software Engineering Terminology, Corrected Edition. IEEE, February 1991.
  • B. W. Boehm. Software Engineering; R&D Trends and Defense Needs. In R. Wegner, ed. Research. Directions in Software Technology. Cambridge, MA:MIT Press, 1979.
  • ISO/IEC 12207 Systems and software engineering - Software life cycle processes. Geneva, Switzerland: ISO, 2008.
команда включает более двух человек неизбежно встает вопрос о распределении ролей, прав и ответственности в команде. Конкретный набор ролей определяется многими факторами - количеством участников разработки и их личными предпочтениями, принятой методологией разработки, особенностями проекта и другими факторами. Практически в любом коллективе разработчиков можно выделить перечисленные ниже роли. Некоторые из них могут вовсе отсутствовать, при этом отдельные люди могут выполнять сразу несколько ролей, однако общий состав меняется мало.

Заказчик (заявитель) . Эта роль принадлежит представителю организации, заказавшей разрабатываемую систему. Обычно заявитель ограничен в своем взаимодействии и общается только с менеджерами проекта и специалистом по сертификации или внедрению. Обычно заказчик имеет право изменять требования к продукту (только во взаимодействии с менеджерами), читать проектную и сертификационную документацию, затрагивающую нетехнические особенности разрабатываемой системы.

Менеджер проекта . Эта роль обеспечивает коммуникационный канал между заказчиком и проектной группой. Менеджер продукта управляет ожиданиями заказчика, разрабатывает и поддерживает бизнес- контекст проекта. Его работа не связана напрямую с продажей, он сфокусирован на продукте, его задача - определить и обеспечить требования заказчика . Менеджер проекта имеет право изменять требования к продукту и финальную документацию на продукт.

Менеджер программы . Эта роль управляет коммуникациями и взаимоотношениями в проектной группе, является в некотором роде координатором, разрабатывает функциональные спецификации и управляет ими, ведет график проекта и отчитывается по состоянию проекта, инициирует принятие критичных для хода проекта решений.

Тестирование - процесс выполнения программы с целью обнаружения ошибки.

Тестовые данные - входы, которые используются для проверки системы.

Тестовая ситуация (test case) - входы для проверки системы и предполагаемые выходы в зависимости от входов, если система работает в соответствии со спецификацией требований.

Хорошая тестовая ситуация - та ситуация, которая обладает большой вероятностью обнаружения пока еще необнаруженной ошибки.

Удачный тест - тест, который обнаруживает пока еще необнаруженную ошибку.

Ошибка - действие программиста на этапе разработки, приводящее к тому, что в программном обеспечении содержится внутренний дефект, который в процессе работы программы может привести к неправильному результату.

Отказ - непредсказуемое поведение системы, приводящее к неожидаемому результату, которое могло быть вызвано дефектами, содержащимся в ней.