Верификация сертифицируемого программного обеспечения. Верификация - это процесс проверки программного продукта Верификация программного обеспечения

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

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

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

Метод индуктивных утверждений.

Для изучения этого метода программа снабжается утверждениями о свойствах её переменных в нкоторых точках:

a) Входные переменные не меняются в процессе исполнения программ;

b) Описываются состояния переменных в промежуточных точках;

c) Выходные переменные описываются с помощью отношениями между переменными после завершения программы.

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

Для верификации программ необходимо три языка:

· Язык записи текстов программ;

· Язык формулировки условий верификации;

· Язык формирования и доказательства корректности.

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

Доказательство корректности имеет следующие преимущества:

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

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

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

4. Выявляет зависимости. В процессе доказательства программ начинает понимать какие предположения о входных данных не явно испытывается в различных частях программы.

Недостатки метода:

1. Сложность; даже для небольших простых программ выкладки очень сложны, что может привести к ошибкам.

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

3. Трудности работы с массивами.

4. Отсутствие мощного математического аппарата.

5. Высокая трудоёмкость.Для проверки программы требуется затраты труда, чем для её написания (в 2 – 6 раз).

6. Отсутствие выразительности. Часто нелегко сформировать выгодно утверждение для того что интуитивно представляетсяочень простым вычислением:

7. Трудность понимания.

8. Необходимостьобучения. Для применении этого метода требуется длительное обучение и тренировка.

Санкт-Петербургский

Государственный Электротехнический Университет

Кафедра МОЭВМ

по дисциплине

“Процесс разработки программных изделий”

“Верификация ПО”

Санкт-Петербург

    Цель верификации………………………………………………………………… стр. 3

    Вводные замечания……………………………………………………………….. стр. 3

    Специальные и общие целевые задачи………………………………………….. стр. 4

    Ожидаемая практика по целевым задачам……………………………………… стр. 4

SG1 Подготовка к верификации………………………………………………..... стр. 4

SG2 Проведение экспертиз (экспертного оценивания)………………………… стр. 7

SG3 Осуществление верификации……………………………………………..... стр. 9

    Приложение 1. Обзор средств автоматизации процесса верификации……….. стр. 11

    Приложение 2. Основные современные подходы к верификации…………….. стр. 12

    Список использованной литературы…………………………………………….. стр. 14

Интегрированнаяя модель совершенства и зрелости

Верификация (Уровень зрелости 3)

    Цель

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

  1. Водные замечания

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

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

    определение соответствия высокоуровневых требований требованиям к системе;

    учет высокоуровневых требований в архитектуре системы;

    соблюдение архитектуры и требований к ней в исходном коде;

    определение соответствия исполняемого кода требованиям к системе;

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

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

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

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

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

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

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

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

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

Основными методами экспертного оценивания являются:

    осмотр

    сквозной структурный контроль

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

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

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

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

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

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

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

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

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

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

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

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

  • 2.1. Интеграционные свойства систем
  • 2.2. Система и ее окружение
  • 2.3. Моделирование систем
  • 2.4. Процесс создания систем
  • 2.5. Приобретение систем
  • 3. Процесс создания программного обеспечения
  • 3.1. Модели процесса создания программного обеспечения
  • 3.2. Итерационные модели разработки программного обеспечения
  • 3.3. Спецификация программного обеспечения
  • 3.4. Проектирование и реализация программного обеспечения
  • 3.5. Эволюция программных систем
  • 3.6. Автоматизированные средства разработки программного обеспечения
  • 4. Технологии производства программного обеспечения
  • Часть II. Требования к программному обеспечению
  • 5. Требования к программному обеспечению
  • 5.1. Функциональные и нефункциональные требования
  • 5.2. Пользовательские требования
  • 5.3. Системные требования
  • 5.4. Документирование системных требований
  • 6. Разработка требований
  • 6.1. Анализ осуществимости
  • 6.2. Формирование и анализ требований
  • 6.3. Аттестация требований
  • 6.4. Управление требованиям
  • 7. Матрица требований. Разработка матрицы требований
  • Часть III. Моделирование программного обеспечения
  • 8. Архитектурное проектирование
  • 8.1. Структурирование системы
  • 8.2. Модели управления
  • 8.3. Модульная декомпозиция
  • 8.4. Проблемно-зависимые архитектуры
  • 9. Архитектура распределенных систем
  • 9.1. Многопроцессорная архитектура
  • 9.2. Архитектура клиент/сервер
  • 9.3. Архитектура распределенных объектов
  • 9.4. Corba
  • 10. Объектно-ориентированное проектирование
  • 10.1. Объекты и классы объектов
  • 10.2. Процесс объектно-ориентированного проектирования
  • 10.2.1. Окружение системы и модели ее использования
  • 10.2.2. Проектирование архитектуры
  • 10.2.3. Определение объектов
  • 10.2.4. Модели архитектуры
  • 10.2.5. Специфицирование интерфейсов объектов
  • 10.3. Модификация системной архитектуры
  • 11. Проектирование систем реального времени
  • 11.1. Проектирование систем реального времени
  • 11.2. Управляющие программы
  • 11.3. Системы наблюдения и управления
  • 11.4. Системы сбора данных
  • 12. Проектирование с повторным использованием компонентов
  • 12.1. Покомпонентная разработка
  • 12.2. Семейства приложений
  • 12.3. Проектные паттерны
  • 13. Проектирование интерфейса пользователя
  • 13.1. Принципы проектирования интерфейсов пользователя
  • 13.2. Взаимодействие с пользователем
  • 13.3. Представление информации
  • 13.4. Средства поддержки пользователя
  • 13.5. Оценивание интерфейса
  • Часть IV. Технологии разработки программного обеспечения
  • 14. Жизненный цикл программного обеспечения: модели и их особенности
  • 14.1. Каскадная модель жизненного цикла
  • 14.2. Эволюционная модель жизненного цикла
  • 14.2.1. Формальная разработка систем
  • 14.2.2. Разработка программного обеспечения на основе ранее созданных компонентов
  • 14.3. Итерационные модели жизненного цикла
  • 14.3.1 Модель пошаговой разработки
  • 14.3.2 Спиральная модель разработки
  • 15. Методологические основы технологий разработки программного обеспечения
  • 16. Методы структурного анализа и проектирования программного обеспечения
  • 17. Методы объектно-ориентированного анализа и проектирования программного обеспечения. Язык моделирования uml
  • Часть V. Письменная коммуникация. Документирование проекта Программного обеспечения
  • 18. Документирование этапов разработки программного обеспечения
  • 19. Планирование проекта
  • 19.1 Уточнение содержания и состава работ
  • 19.2 Планирование управления содержанием
  • 19.3 Планирование организационной структуры
  • 19.4 Планирование управления конфигурациями
  • 19.5 Планирование управления качеством
  • 19.6 Базовое расписание проекта
  • 20. Верификация и аттестация программного обеспечения
  • 20.1. Планирование верификации и аттестации
  • 20.2. Инспектирование программных систем
  • 20.3. Автоматический статический анализ программ
  • 20.4. Метод "чистая комната"
  • 21. Тестирование программного обеспечения
  • 21.1. Тестирование дефектов
  • 21.1.1. Тестирование методом черного ящика
  • 21.1.2. Области эквивалентности
  • 21.1.3. Структурное тестирование
  • 21.1.4. Тестирование ветвей
  • 21.2. Тестирование сборки
  • 21.2.1. Нисходящее и восходящее тестирование
  • 21.2.2. Тестирование интерфейсов
  • 21.2.3. Тестирование с нагрузкой
  • 21.3. Тестирование объектно-ориентированных систем
  • 21.3.1. Тестирование классов объектов
  • 21.3.2. Интеграция объектов
  • 21.4. Инструментальные средства тестирования
  • Часть VI. Управление проектом программного обеспечения
  • 22. Управление проектами
  • 22.1. Процессы управления
  • 22.2. Планирование проекта
  • 22.3. График работ
  • 22.4. Управление рисками
  • 23. Управление персоналом
  • 23.1. Пределы мышления
  • 23.1.1. Организация человеческой памяти
  • 23.1.2. Решение задач
  • 23.1.3. Мотивация
  • 23.2. Групповая работа
  • 23.2.1. Создание команды
  • 23.2.2. Сплоченность команды
  • 23.2.3. Общение в группе
  • 23.2.4. Организация группы
  • 23.3. Подбор и сохранение персонала
  • 23.3.1. Рабочая среда
  • 23.4. Модель оценки уровня развития персонала
  • 24. Оценка стоимости программного продукта
  • 24.1. Производительность
  • 24.2. Методы оценивания
  • 24.3. Алгоритмическое моделирование стоимости
  • 24.3.1. Модель сосомо
  • 24.3.2. Алгоритмические модели стоимости в планировании проекта
  • 24.4. Продолжительность проекта и наем персонала
  • 25. Управление качеством
  • 25.1. Обеспечение качества и стандарты
  • 25.1.1. Стандарты на техническую документацию
  • 25.1.2. Качество процесса создания программного обеспечения и качество программного продукта
  • 25.2. Планирование качества
  • 25.3. Контроль качества
  • 25.3.1. Проверки качества
  • 25.4. Измерение показателей программного обеспечения
  • 25.4.1. Процесс измерения
  • 25.4.2. Показатели программного продукта
  • 26. Надежность программного обеспечения
  • 26.1. Обеспечение надежности программного обеспечения
  • 26.1.1 Критические системы
  • 26.1.2. Работоспособность и безотказность
  • 26.1.3. Безопасность
  • 26.1.4. Защищенность
  • 26.2. Аттестация безотказности
  • 26.3. Гарантии безопасности
  • 26.4. Оценивание защищенности программного обеспечения
  • 27. Совершенствование производства программного обеспечения
  • 27.1. Качество продукта и производства
  • 27.2. Анализ и моделирование производства
  • 27.2.1. Исключения в процессе создания по
  • 27.3. Измерение производственного процесса
  • 27.4. Модель оценки уровня развития
  • 27.4.1. Оценивание уровня развития
  • 27.5. Классификация процессов совершенствования
  • 20. Верификация и аттестация программного обеспечения

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

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

    Верификация отвечает на вопрос, правильно ли создана система;

    Аттестация отвечает на вопрос, правильно ли работает система.

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

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

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

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

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

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

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

    Рис. 20.1. Статическая и динамическая верификация и аттестация

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

    На разных этапах процесса разработки ПО применяют различные виды тестирования.

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

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

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

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

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

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

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

    1. Верификация и аттестация – процесс обнаружения дефектов в программной системе.

    2. Отладка – процесс локализации дефектов (ошибок) и их исправления (рис. 20.2).

    Рис. 20.2. Процесс отладки

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

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

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

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

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

    Дадим несколько определений, определяющих общую структуру процесса сертификации программного обеспечения:

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

    Заявитель - организация, подающая заявку в соответствующий Сертифицирующий орган на получения сертификата (соответствия, качества, годности и т.п.) изделия.

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

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

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

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

    Во втором случае результатом является признание соответствия процессов разработки определенным критериям, гарантирующим соответствующий уровень качества выпускаемой продукции и его пригодности для эксплуатации в определенных условиях. Примером таких стандартов может служить серия международных стандартов качества ISO 9000:2000 (ГОСТ Р ИСО 9000-2001) или авиационные стандарты DO-178B , AS9100 , AS9006 .

    Тестирование сертифицируемого программного обеспечения имеет две взаимодополняющие цели:

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

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

    Например, согласно требованиям стандарта DO-178B, для того, чтобы удовлетворить целям тестирования программного обеспечения, необходимо следующее:

    · Тесты, в первую очередь, должны основываться на требованиях к программному обеспечению;

    · Тесты должны разрабатываться для проверки правильности функционирования и создания условий для выявления потенциальных ошибок.


    · Анализ полноты тестов, основанных на требованиях на программное обеспечение, должен определить, какие требования не протестированы.

    · Анализ полноты тестов, основанных на структуре программного кода, должен определить, какие структуры не исполнялись при тестировании.

    Также в этом стандарте говорится о тестировании, основанном на требованиях. Установлено, что эта стратегия наиболее эффективна при выявлении ошибок. Руководящие указания для выбора тестовых примеров, основанных на требованиях, включают следующее:

    · Для достижения целей тестирования программного обеспечения должны быть проведены две категории тестов: тесты для нормальных ситуаций и тесты для ненормальных (не отраженных в требованиях, робастных) ситуаций.

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

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

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

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

    Существует 5 уровней отказных ситуаций от несущественной до критически опасной. Согласно этим уровням вводится понятие уровня критичности программного обеспечения. От уровня критичности зависит состав документации, предоставляемой в сертифицирующий орган, а значит и глубина процессов разработки и верификации системы. Например, количество типов документов и объем работ по разработке системы, необходимых для сертификации по самому низкому уровню критичности DO-178B могут отличаться на один-два порядка от количества и объемов, необходимых для сертификации по самому высокому уровню. Конкретные требования определяет стандарт, по которому планируется вести сертификацию.

    2024 logonames.ru. Финансовые советы - Портал полезных знаний.