Главная страница

Отчет оформит с помощью текстового редактора Word и загрузит на lms


Скачать 318.91 Kb.
НазваниеОтчет оформит с помощью текстового редактора Word и загрузит на lms
Дата16.06.2022
Размер318.91 Kb.
Формат файлаdocx
Имя файла1654579825.docx
ТипОтчет
#596692

3-задание на практическую работу:

Задание № 3. Составление планов верификации, валидации и инспекции на программный модуль, приведённый в варианте.

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

Результатом выполнения задания является ОТЧЕТ в виде реферата. В отчете необходимо показать следующие пункты:

  1. Титульный лист.

  2. План выполнения задания.

  3. Постановка задачи.

  4. Основная часть выполнения задания.

  5. Выводы.

  6. Использованная литература.

Отчет оформит с помощью текстового редактора Word и загрузит на LMS.

Понятие верификации ПО

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

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

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

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

  • выявление наиболее критичных и наиболее подверженных ошибкам частей создаваемой или сопровождаемой программной системы;

  • контроль и оценка качества программного обеспечения во всех его аспектах;

  • предоставление всем заинтересованным лицам (руководителям, заказчикам, пользователям и пр.) информации о текущем состоянии проекта и характеристиках его результатов;

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

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

  • требования к качеству обработки информации и надежности функционирования (связь с реальным временем и случайными воздействиями из внешней среды и т.п.);

  • сложность функциональных компонентов, являющихся конечными результатами разработки;

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

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

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

Таким образом, в сфере тестирования ПО есть общепринятый постулат о том, что процесс проверки является неотъемлемой частью верификации.

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

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

Понятие валидации ПО

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

Если взглянуть на эти процессы с точки зрения вопроса, на который они могут дать ответ, то в случае верификации это: что было сделано; отвечает ли система озвученным клиентским ожиданиям? А валидация – сделано именно то, что требовалось или всецело ли данная система соответствует тем ожиданиям клиента, что были ранее озвучены?

Различия между верификацией и валидацией

Верификация

Валидация

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

Отвечает на вопрос, создается ли продукт правильно с точки зрения ожиданий клиента.

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

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

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

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

Задачи и цели процесса верификации

В состав задач процесса входит последовательная проверка того, что в программной системе:

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

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

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

  • архитектура ПО и требования к компонентам низкого уровня корректно переработаны в удовлетворяющие им исходные тексты программных и информационных модулей;

  • исходные тексты программ и соответствующий им исполняемый код не содержат ошибок.

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

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

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

Тестовые сценарии предназначены для проверки внутренней непротиворечивости и полноты реализации требований.

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

На выбор эффективных методов верификации и последовательность их применения в наибольшей степени влияют основные характеристики тестируемых объектов:

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

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

  • преобладающие элементы в программах: осуществляющие вычисления сложных выражений и преобразования измеряемых величин или обрабатывающие логические и символьные данные для подготовки и отображения решений.

Различия в понятиях “тестирование”, “верификация” и “валидация

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



Рис. 1 Взаимосвязь и последовательность процессов

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

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

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

Если посмотреть на эти три процесса с точки зрения вопроса, на который они дают ответ, то тестирование отвечает на вопрос «Как это сделано?» или «Соответствует ли поведение разработанной программы требованиям?», верификация (Рис.2) – «Что сделано?» или «Соответствует ли разработанная система требованиям?», а валидация – «Сделано ли то, что нужно?» или «Соответствует ли разработанная система ожиданиям заказчика?»

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



Рис. 2 Мероприятия верификации

Основные понятия синтеза программного обеспечения

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

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

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

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

  • новое определение информатики, где вопросы обработки информации заменены вопросами обработки знаний;

  • определение понятия знание;

  • выделение семи видов представления знания для приближения к естественному языку (ЕЯ);

  • представление и внедрение понятия термина вместо понятия идентификатора, что также обеспечивает приближение к ЕЯ;

  • построена семантическая грамматика русского языка (СеГ), содержащая правила вычисления смысла утверждений (в отличие от известной всем классической синтаксической грамматики (СиГ), содержащей правила построения слов и предложений);

  • понимание и обобщение понятия логического уравнения;

  • построение информатической логики как основания для решения логических уравнений;

  • построение методов решения логических уравнений (алгебраический подход в логике);

  • определение отладки и экологии знания (13 классов ошибок, 8 классов известных и 5 классов новых в программировании);

  • разработка формальных языков (ФЯ) Лейбниц для внутреннего представления знаний и метаязык Марков для представления порождающих грамматик;

  • разработка основ распознающих грамматик для автоматического построения программ, управляемых ФЯ (трансляторов и интерпретаторов);

  • уточнение нового понятия интеллектуальной системы;

  • определение понятия интеллектуального программирования (ИП) и критика процедурного программирования;

  • определение и реализация нового понимания синтеза программ, подпрограмм и пакетов подпрограмм;

  • конструирование программного комплекса инструментария ИП, доступного любому пользователю;

  • разработка и развитие методов добычи знаний и построение БЗ.

  • для разработки метода синтеза программ практически необходимо коснуться каждого пункта показанного пути.

Использование верификации и валидации на практике

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

Итак, есть определенная форма с полями, которые необходимо заполнить.

Форма с полями для заполнения

Для начала выполним верификацию:

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

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

Теперь рассмотрим пример на основе формы входа/регистрации в рамках популярной социальной сети Facebook.



Регистрация на Facebook

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

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



Неверная информация при регистрации на Facebook

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

Какие итоги из всего вышенаписанного можно сделать?

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

  2. При верификации проверяется наличие в продукте этой логики (параметров взаимодействия компонентов).

Формальная верификация

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

Области применения

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

Теоретические основы

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

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

  • формальная семантика языков программирования, например операционная семантика, денотационная семантика, аксиоматическая семантика (логика Хоара), математическая семантика программ;

  • теории и системы типов — в первую очередь, системы с зависимыми типами (см. лямбда-куб);

  • логика разделения (расширение логики Хоара);

  • конечный автомат;

  • помеченная модель состояний и переходов;

  • сеть Петри;

  • временной автомат;

  • гибридный автомат;

  • исчисление процессов;

  • структурированные алгоритмы;

  • структурированные программы.

Подходы к формальной верификации

Существуют следующие подходы к формальной верификации:

  • формальная семантика языков программирования;

  • написание программ, которые верны по построению;

  • проверка моделей (model checking);

  • логический вывод (logical inference);

  • символьное выполнение;

  • абстрактная интерпретация;

  • систематический анализ алгоритмов и программ;

  • технологии доказательного программирования.

Доказательное программирование

Доказательное программирование — использовавшаяся в 1980-х годах в академических кругах технология разработки программ для ЭВМ с доказательствами правильности — доказательствами отсутствия ошибок в программах (понимая, в рамках данной теории, ошибки как несоответствия между задуманным алгоритмом и фактическим алгоритмом, реализуемым программой).

Автоматическая проверка доказательства

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

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


написать администратору сайта