Химические и амперные материалы; Materials Engineering
Как выполнить валидацию и проверку в программно-ориентированных инженерных системах
Table of Contents
Введение: почему валидация и проверка важны в инженерных системах
В программно-ориентированных инженерных системах, начиная от аэрокосмических средств управления полетом и автомобильных электронных блоков управления до прошивки медицинского устройства и промышленных платформ автоматизации, стоимость отказа измеряется не только в потерянном доходе, но и в безопасности, соответствии и человеческих жизнях. Валидация и проверка (V &V) являются двумя столпами, которые обеспечивают соответствие системы ее целевому назначению и ведет себя как указано. Без строгого V &V даже самое хорошо разработанное программное обеспечение может вводить катастрофические дефекты. Эта статья предоставляет практическое, всеобъемлющее руководство по выполнению V &V в инженерных контекстах, охватывающих определения, пошаговые процессы, реальные методы и современные инструменты.
Проверка vs. проверка: основное отличие
Прежде чем перейти к конкретным шагам, важно понять фундаментальное различие между валидацией и верификацией. Эти термины часто смешиваются, но выполняют различные роли.
- Проверка отвечает: Мы строим правильную систему? Это гарантирует, что конечный программный продукт удовлетворяет фактические потребности пользователей, заинтересованных сторон и операционной среды.
- Проверка Ответы: Правильно ли мы строим систему? Она проверяет, что каждый промежуточный артефакт — требования, дизайн, код, тестовые случаи — соответствует установленным спецификациям, стандартам и передовой практике.
Аналогия от строительства: проверка проверяет, что чертежи соответствуют строительным нормам и что фундамент выливается на правильную глубину; проверка проходит через готовый дом и подтверждает, что он отвечает потребностям владельца в жизни, работе или хранении.
Различие возникло в стандартах системной инженерии, таких как ISO/IEC/IEEE 15288 и остается краеугольным камнем управления качеством программного обеспечения.В критически важных областях, таких как авиация (DO-178C) или автомобильная (ISO 26262), деятельность V&V требует строгой прослеживаемости.
Шаги для проведения валидации в инженерных системах
Валидация — это непрерывная деятельность, которая начинается во время сбора требований и распространяется на развертывание и эксплуатацию. Ниже приведены ключевые шаги, организованные от планирования до выполнения.
1.Определить критерии принятия
Критерии приемлемости являются измеримыми условиями, которые должны быть выполнены для того, чтобы программное обеспечение считалось действительным. Они вытекают непосредственно из потребностей пользователей, системных требований и нормативных ограничений. Для инженерной системы эти критерии часто включают пороги производительности (например, время отклика до 10 мс), пределы безопасности (например, отказоустойчивое поведение при потере датчика) и факторы юзабилити (например, интерфейс оператора может быть навигирован менее чем за три секунды во время чрезвычайной ситуации). Документировать каждый критерий таким образом, чтобы его можно было объективно протестировать.
2. разработать план проверки
В плане валидации излагаются методы, которые будут использоваться для подтверждения каждого критерия принятия. Общие методы включают:
- Приемочное тестирование пользователя (UAT) — Конечные пользователи управляют системой в реалистичном сценарии.
- Операционное тестирование — система работает в своей целевой среде в номинальных и краевых условиях.
- Симуляция и моделирование — для систем, где испытания в реальном времени опасны или невозможны (например, восстановление остановки самолета, отключение ядерного реактора).
- Демонстрация — Заинтересованные стороны наблюдают ключевые функции, работающие по назначению.
- Проверка операционных процедур — проверка правильности интеграции программного обеспечения с рабочими процессами человека.
Каждому методу проверки должен быть присвоен критерий пропуска/неудачи и ответственная сторона (например, руководитель по обеспечению качества, представитель клиента).
3. Проведение валидационных мероприятий
Например, в системе автомобильного торможения проверка может включать в себя тест-драйвера, применяющего тормоза в различных дорожных условиях, в то время как система приобретения записывает тормозной путь, ощущение педали и время отклика системы. В медицинском инфузионном насосе валидация будет включать клинических пользователей, программирующих устройство с реалистичными протоколами лекарств и проверяющих, что правильная доза доставляется с течением времени. Во время этих действий записывайте все наблюдения, отклонения и отзывы пользователей.
4. Анализ результатов и выявление пробелов
Сравните фактическую производительность с каждым критерием принятия. Если критерий не соблюдается, выполните анализ первопричин: само требование неполно? Неправильное толкование программного обеспечения потребностями пользователя? Недостаточно ли реалистична среда тестирования? Документируйте любые расхождения и обновите требования или дизайн соответственно. Валидация часто обнаруживает недостающие функции или проблемы юзабилити, которые пропущены обзорами требований.
5. Поиск документов и улучшение приводов
Выпустить отчет о проверке, в котором кратко излагаются принятые критерии, которые не были выполнены, и какие корректирующие действия были предприняты. Этот отчет служит доказательством для проведения нормативных проверок и в качестве цикла обратной связи для будущих проектов. В критически важных для безопасности отраслях отчет о проверке является обязательным результатом для сертификации.
Шаги для выполнения проверки в инженерных системах
Проверка - это непрерывный формальный процесс, применяемый к каждому артефакту, произведенному во время разработки. Цель состоит в том, чтобы как можно раньше улавливать дефекты, снижая затраты на переработку и риск расписания.
1. Требования к обзору и дизайн для согласованности и полноты
Перед написанием одной строки кода убедитесь, что системные требования и архитектурный дизайн внутренне согласованы, однозначны и прослеживаемы. Используйте такие методы, как:
- Перовые обзоры — коллеги рассматривают документы на наличие ошибок и упущений.
- Формальные проверки — структурированный, основанный на ролях процесс обзора (например, проверка Фагана) с контрольными списками и регистрацией дефектов.
- Прототипирование и прохождение — моделирование дизайна для выявления логических недостатков.
Например, в системе управления полетом проверка требований может показать, что два избыточных датчика имеют противоречивые режимы отказа, которые конструкция не решает, и поиск этого до реализации экономит огромные усилия.
2. Создать тестовые примеры проверки из спецификаций
Для инженерных систем испытания часто охватывают:
- Функциональная корректность — Вычисляет ли программное обеспечение правильный вывод?
- Ограничения времени и в реальном времени — Соответствует ли программное обеспечение срокам при наихудшей нагрузке?
- Тестирование классов границ и эквивалентности — Как система ведет себя на краях своего операционного диапазона?
- Впрыск отказов — Может ли система изящно справляться с неисправностями датчиков, потерей связи или перебоями в подаче электроэнергии?
Используйте матрицы прослеживаемости, чтобы связать каждое требование с одним или несколькими тестовыми случаями, обеспечивая полное покрытие.
3.Выполнять проверки на нескольких уровнях
Проверка многоуровневая. Стандартная иерархия включает:
- Единичное тестирование — отдельные функции или модули тестируются изолированно (например, с использованием CUnit во встроенном C или pytest в Python).
- Интегрированное тестирование — Комбинированные модули тестируются для проверки интерфейсов и потока данных (например, тесты межпроцессной связи).
- Системное тестирование — Вся программная система работает на целевом оборудовании в лабораторной среде, которая близко имитирует производство.
- Регрессионное тестирование — Существующие тестовые наборы повторно запускаются после любых изменений, чтобы гарантировать отсутствие новых дефектов.
Автоматизированные испытательные рамки необходимы для регрессионных и крупномасштабных интеграционных испытаний. Многие инженерные команды используют трубопроводы непрерывной интеграции (CI), которые выполняют верификационные тесты на каждом фиксе.
4. Анализ результатов теста и анализ первопричин
При неисправности испытания дефект должен быть задокументирован в системе слежения, оценена его тяжесть и определена первопричина.Общие источники сбоев проверки в инженерных системах включают:
- Неправильное толкование временных ограничений в дизайне.
- Целый перелив в обработке данных датчиков.
- Условия гонки в многопоточной петле управления.
- Неправильное обращение с энергонезависимой памятью пишет.
После разрешения тест-кейс выполняется заново. Проверка никогда не бывает действительно «завершенной» — она продолжается через системную интеграцию и поддержку производства, если система получает обновления.
5. Проведение официальных обзоров и инспекций
Помимо тестирования, формальные обзоры кода и артефактов дизайна улавливают дефекты, которые могут пропустить тесты.
- Прохождение кода — автор представляет код сверстникам, которые задают вопросы.
- Статический анализ — Инструментальные проверки на предмет нарушений стандартов кодирования, уязвимостей безопасности и логических ошибок (например, соответствие MISRA-C для автомобилей или использование таких инструментов, как Coverity или SonarQube).
- Формальная проверка — математическое доказательство правильности критических свойств безопасности (обычная в авионике и железнодорожной сигнализации).
В каждом обзоре приводится письменный отчет о найденных проблемах и принятых резолюциях, который является частью доказательств проверки.
Интеграция V&V на протяжении всего жизненного цикла разработки
V&V не является фазой, которая начинается после кодирования; она должна быть переплетена с каждым этапом жизненного цикла разработки программного обеспечения. В следующей таблице показаны типичные действия V&V на фазе (концептуальные, не исчерпывающие):
| Lifecycle Phase | Validation Activities | Verification Activities |
|---|---|---|
| Requirements | User interviews, use case analysis, acceptance criteria definition | Requirements review, consistency analysis, feasibility study |
| Design | Prototyping, early mock-ups for user feedback | Design review, traceability check, formal modeling |
| Implementation | N/A (validation is predominantly later) | Code reviews, static analysis, unit testing |
| Testing / Integration | System-level operational tests, UAT | Integration tests, system tests, regression suites |
| Deployment & Maintenance | Field performance monitoring, user satisfaction surveys | Change impact analysis, re-verification of modified components |
В инженерных системах процесс V&V также должен учитывать взаимодействия аппаратно-программного обеспечения. Например, обновление программного обеспечения, которое изменяет сроки цикла управления, может потребовать повторной проверки всей электромеханической системы.
Инструменты и автоматизация для эффективного V&V
Современные инженерные команды полагаются на набор инструментов для масштабирования деятельности V&V без ущерба для качества.
- Инструменты управления требованиями (например, IBM DOORS, Jama Connect) для поддержания прослеживаемости и контроля версий требований.
- Платформы управления тестированием (например, TestRail, qTest) для организации тестовых случаев, выполнения и результатов на нескольких уровнях проверки.
- Непрерывная интеграция/непрерывное тестирование (например, Jenkins, GitLab CI) для автоматизации верификационных тестов на каждой сборке.
- Статический анализ и формальные инструменты проверки (например, Polyspace, Frama-C) для проверки ошибок во время выполнения и доказательства свойств кода.
- Среды моделирования (например, Simulink + Embedded Coder, dSPACE) для ранней проверки алгоритмов управления до того, как аппаратное обеспечение будет доступно.
Автоматизация особенно ценна для регрессионного тестирования — по мере развития системы набор тестов проверки растет, а ручное повторное выполнение становится непрактичным. Однако автоматизированные инструменты дополняют, но не заменяют человеческое суждение. Ручное исследовательское тестирование и обзоры заинтересованных сторон остаются необходимыми для выявления проблем, которые игнорируются автоматизированными проверками.
Лучшие практики для эффективного V&V в инженерных системах
Опираясь на многолетний опыт в аэрокосмической, автомобильной и промышленной областях, мы предлагаем наиболее эффективные методы для формирования сильной стратегии V&V.
Начать V&V Early
Интеграция V&V-деятельности с начала проекта. Ранние требования и обзоры дизайна улавливают двусмысленности, прежде чем они каскадируются в дорогостоящие дефекты кода. Применяется принцип «сдвиг-левый»: перемещайте задачи проверки, такие как прототипирование и обратная связь с пользователем, и автоматизируйте проверку как можно раньше.
Создайте цепочку отслеживания
Связь каждого требования с элементами дизайна, которые его реализуют, и тестовыми случаями, которые подтверждают и проверяют его. Эта цепочка прослеживаемости доказывает аудиторам и заинтересованным сторонам, что все потребности удовлетворены. Такие инструменты, как DOORS или Jama, делают это управляемым даже для проектов с тысячами требований.
Постоянно привлекать заинтересованных лиц
Валидация не может проводиться исключительно инженерами. Привлекать конечных пользователей, инженеров по безопасности, экспертов в области и регулирующие органы на протяжении всего жизненного цикла. В разработке медицинских устройств, например, клиницисты должны участвовать в тестировании на валидацию, чтобы убедиться, что программное обеспечение соответствует реальным клиническим рабочим процессам.
Независимые команды V&V
Для систем, имеющих критический характер с точки зрения безопасности или высокой степени целостности, команда по проверке должна быть отдельной от команды разработчиков. Эта независимость снижает риск смещения подтверждения и обеспечивает объективную оценку. Такие стандарты, как DO-178C, требуют этой независимости для самых высоких уровней программного обеспечения.
Сохранение комплексной документации
Каждая деятельность по программе V&V — каждый результат обзора, выполнения тестов, проверки и анализа — должна записываться с версией, датой, результатом и любыми корректирующими действиями. Эта документация поддерживает нормативные сертификаты, посмертный анализ и аудит. Она также служит базой знаний для будущих проектов.
Итеративность и постоянное совершенствование процесса
После каждого проекта или крупного выпуска проводите ретроспективу эффективности V&V. Какие тесты выявили наиболее критические дефекты? Где были узкие места? Были ли критерии принятия полными? Используйте ответы для уточнения контрольных списков, обновления тестовых случаев и улучшения интеграции инструментов. Зрелые организации рассматривают V&V как живой процесс, а не фиксированный контрольный список.
Обычные подводные камни и как их избежать
- Спутать валидацию с верификацией — Система, которая проходит все верификационные тесты, но не отвечает потребностям пользователей, непригодна для использования. Всегда валидируйте рано и часто с реальными заинтересованными сторонами.
- Более высокая зависимость от автоматизированного тестирования — Автоматизированные тесты могут только проверять то, что они запрограммированы для проверки. Они пропускают возникающие модели поведения, проблемы юзабилити и несоответствия окружающей среды. Автоматизация дополнений с ручным поисковым тестированием и пользовательскими испытаниями.
- Недостаточное покрытие испытаний — Сосредоточение внимания только на сценариях «счастливого пути» оставляет незамеченными критически важные для безопасности кромочные случаи.
- Выполнение V&V слишком поздно — Задержка проверки до тех пор, пока системная интеграция не может привести к дорогостоящей переделке.
- Плохая документация — Без надлежащих записей невозможно доказать соответствие или повторить тесты после изменений.
Вывод: Создание V&V как краеугольный камень инженерного совершенства
Проверка и проверка не являются бюрократическими накладными расходами; это инженерная дисциплина, которая превращает сложное программное обеспечение в надежные, безопасные и эффективные системы. Понимая различные роли V & V, интегрируя деятельность на протяжении всего жизненного цикла, разумно используя автоматизацию и придерживаясь проверенных лучших практик, команды могут значительно снизить риск при поставке высококачественных продуктов. Независимо от того, строите ли вы систему наведения космического корабля, стек восприятия автономного транспортного средства или программное обеспечение управления медицинским устройством, инвестирование в строгий V & V - самый верный путь к успеху.
Для дальнейшего чтения изучите стандарт ISO/IEC/IEEE 15288 на процессах жизненного цикла системы, Руководство по V&V в системной инженерии и практическое руководство из INCOSE Systems Engineering Handbook.